NerdKits - electronics education for a digital generation

You are not logged in. [log in]

NEW: Learning electronics? Ask your questions on the new Electronics Questions & Answers site hosted by CircuitLab.

Basic Electronics » A3977 Stepper Motor Driver

August 27, 2013
by Ralphxyz
Ralphxyz's Avatar

I needed another stepper driver so thought I'd try one with the Allegro A3977.

So I purchased a pre-built card off Ebay!

Now I finally looked for any directions on using the card but find them lacking!!

I am stuck with the Input +5V I understand /PU?? /DR possible direction and /EN???

Would I use a common ground? there is a GND terminal with the 24v motor terminal.

So basically what is:

/PU
/DR
/EN

Here is a link to the Allegro A3977 specsheet.

And what the heck is Semi-flow and Full Flow?

Thanks,

Ralph

August 27, 2013
by BobaMosfet
BobaMosfet's Avatar

Ralph, a guess:

PU: Pulse DR: Direction EN: Enable

As for 'Semi-flow' and 'full-flow' this may be related to decay modes.

This may help you:

http://www.allegromicro.com/~/media/Files/Technical-Documents/stp01-2-Microstepping-Motor-Driver-IC.ashx

BM

August 27, 2013
by sask55
sask55's Avatar

Hi Ralph

It does appear to me that there is a bit clarity lost in translation for that board.

For the most part I agree with BobaMosfet, with the possible exception of the full flow semi flow full flow function.

For what it is worth here is my guess as to some of the details you are asking about.

It appears that you have no option but to use a common ground. I cannot see any indication of a separate ground for the logic power (5V) and the motor power ( max 24 volts) on this board. It also appears to me from the A3977 data sheet that the chip functional diagram shows a common ground. So common ground it is.

PU is the pulse or clock signal to control the stepper. With each complete pulse cycle to this input (high/low) the stepper controller will change the motor output by one increment.

DR is the direction of rotation. Set this input high to turn one direction set it low to turn the other direction.

EN is stepper control enable. When this input is low the controller basically ignores all PU pulses and therefore no motor movement is carried out.

Full flow is when the controller always supplies the full current (as set by the user) to the motor coils. So in full flow mode if the current setting is set to 1 Amp the controller will supply 1 Amp to the coils all the time even if the motor is stalled or running very slowly. This may cause the motor coils to heat up at slow motor speeds or when the motor is just holding at one point.

Semi-flow is likely a built in function to reduce motor heating at slow speeds by reducing the current. Without knowing any details, at all, I suspect that there is a predetermined time interval where the current is reduced by some predetermined amount. So perhaps after 250ms if no new PU pulse is received the current will be reduced by 50% to the motor coil. This function will limit the length of time that each coil will be subjected to a continuous max current flow. The idea is that a coil may be able to handle higher current flows, and therefor produce more torque, if the duration of time is held to a short period so that heat will not build up. strangle I don't see any referance to this important and usfull feature in the data sheet.

Current setting – sets the upper limit for each motor coil. Set this to match your stepper specifications.

Set subdivition- The controller is capable of micro stepping, essentially dividing each motor step into a series of partial steps. These two switches set the MS1 and MS2 inputs on the chip. The user can determine the number of PU pulse that will be required to complete one full stepper motor step.

It is not very clear, to me, from the text you posted if the 8-wheeling diodes are included on this board, I cannot see them. I think the statement “ the installation of 8-wheeling diodes” means that there are flyback current diodes on the board or I suppose it could mean you should install some. In any event there should be some used somewhere or your contollor chip may not last long. Perhaps you can see them on the board or have a clearer explanation.

Darryl

August 27, 2013
by sask55
sask55's Avatar

I took another quick look at the A3977 functional diagram. There are diodes on the Hbrige outputs shown within the chip itself. Perhaps these are the only diodes required and are the diodes that are mentioned in the text. Since there is no indication of any external flyback current diodes shown on any of the schematic I assume it is safe for you not to worry about it. I probably should not have mentioned it at all.

Darryl

August 28, 2013
by Ralphxyz
Ralphxyz's Avatar

Thanks Darryl!!

I tried a continuity test off of the 4N26 Opto Isolators:

Pin 4 (E) to motor ground is correct.

Pin 2 (C) to motor ground is false open

Shouldn't pin 2 be to ground?

I'll have to pull the pcb off the heat sink to see the traces unless someone sees something else to test for GRN.

Ralph

August 28, 2013
by sask55
sask55's Avatar

Ralph

Ralph

I think that the small schematic of the optocoupler isolation explains the lack of ground on the signal input. I see now that it appears that the anode (pin 1) on the diode of each of the optocouplers is connected to the 5 volt logic power. That would mean that in order to activate the diode the cathode side of these diodes (pin 2) must be pulled low .ie sink power. So I can see now that there is no need to have a connection to the logic level ground to this board. The logic level low state must be capable of sinking power for this board to work.

I never considered that configuration before it will result in inverted logic when compared to grounding the cathode and supplying control signal voltage to the anode pin. Just as a side topic this may work on my optocoupler USB insulation circuits for the UART /USB connection. If the USB adapter cable will sink power in the low state there would be no need to have the inverter chip in that circuit. That is interesting and so simple.

Darryl

August 29, 2013
by Rick_S
Rick_S's Avatar

That may be why they call out the input lines with a slash in front of them, because they are active low. Normally there would be a straight line over the pin callout such as an upper case E with a line over means enabled low whereas an upper case E w/o the line is enabled high. I'm guessing they used /EN because they couldn't type an "overline/overscore" (if that's what it's called).

I may be wrong on this but I think this is commonly used.

Rick

August 29, 2013
by Ralphxyz
Ralphxyz's Avatar

Now I am confuse, I'll have to look at that isolation schematic better.

I had thought /EN and /DR would be hard wired no controller involved just a resistor to 5v. or to GRN.

Actually I did not want to have a mcu involved I am getting my /EN off of a optical encoder disk so I do not need a mcu for /EN and then stepping mode is hard wired on the board, which is to bad as in other situations I might want to control step mode from a mcu.

Thanks everyone,

Ralph

August 29, 2013
by Ralphxyz
Ralphxyz's Avatar

Ok so here is the Optocoupler Isolation Schematic:

So if:

R1 is connected to /PU (Pulse)
R2 is connected to /DR (Direction)
R3 is connected to /EN (Enable)

I have to pull /PU low to get a pulse (high)?

I have to pull /DR low to get a high?

I have to pull /EN low to get a high?

Is that correct?

So if a pin is not pulled low what happens?

Since there already is a resistor I assume I can just hard wire /DR an /EN to the 5v source ground.

With my optical disc pulse generator idea it looks like I will need to use a inverter.

?????

Thanks,

Ralph

August 29, 2013
by Rick_S
Rick_S's Avatar

Hook +5v to the 5v terminal. Place a 10k resistor from /PU to 5v, another from /EN to 5v, and one also from /DR to 5v. This will keep all pulled high. Then take a wire from /PU and run it through a momentary switch to the ground of the 5v supply. For each press of the button, the motor should step one increment.

August 29, 2013
by Ralphxyz
Ralphxyz's Avatar

Thanks Rick, that makes sense.

Ralph

August 29, 2013
by BobaMosfet
BobaMosfet's Avatar

Ralph,

Look at the opto-coupler. You have a diode and a BJT transistor. The letters of the pins identify the function A & C on the diode is Anode & Cathode. On the Transistor it's BCE, which is (of course) Base, Collector, Emitter.

The schematic of the 'Dime' optocoupler isolation schematic clearly shows all Anodes of the diode tied to +5. Each of the PU, DR, EN are tied to ground with a pull-down resistor to ensure they go to ground. As long as the cathode is grounded, the LED in the optocoupler fires and the transistor passes current. When you raise a signal on PU, DR, or EN, you essentially stop current from flowing through the diode, because it's +5 on both sides (so there is NO voltage drop across the diode). The transistor stops passing current.

You can also use a 4N35.

BM

August 29, 2013
by sask55
sask55's Avatar

A somewhat subtle but I feel important distinction.

I don’t think it is quite correct to say that the PU,DR,EN are tied to ground with pull-down resistors. I believe that the resistors a necessary in the circuit as current limiting resistors. Their function is to limit the current through the internal LED in the optical isolators when the PU,DR,EN connections are grounded. They would only be connected to ground to sink current, acivating the LED, so that the transistor will pass current on the other side of the optocoupler.

Connecting these inputs to nothing at all or connected to the +5V supply should amount to the same think, the transistor would not pass current in ether event.

Darryl

August 29, 2013
by sask55
sask55's Avatar

One more detail about typical optocoupler circuits.

It may not be important for you hear but the logic level is likely inverted on the transistor side of the optocoupler as well. That is to say, that when the transistor is passing current the output to the A3977 pins will be low and when the transistor is not passing current the output is high. It appears that you have a data sheet for the 4N?? optocoupler you may see a typical application “switching schematic” there. The optcoupler make use of an internal transistor to control the output current. For reasons that have bean discussed in several threads on this form, typically a transistor is placed with the Emitter connected directly to the ground and the load connected to the Collector. Transistor usually control current from the low side of the load. I would suspect that there are pull up resistors on the board that hold the output of the optocoupler high until the transistor pulls it to ground.

It gets kind of confusing but I strongly suspect that this result on your board

  Input connections PU,DR,EN  held low (grounded)
 Optocoupler LED active 
 Optocoupler transistor passing current
 OPtocoupler output pull low (ground)
 A3977 input pin held low

 or

Input connections PU,DR,EN  held at 5V or not connected to anything
Optocoupler LED OFF 
 Optocoupler transistor NOT passing current
 OPtocoupler output pulled high by pull up resistor
 A3977 input pin held high

Darryl

August 30, 2013
by Rick_S
Rick_S's Avatar

Ralph, I goofed after I re-re-re-read what I typed.

This "another from /EN to 5v, and one also from /DR to 5v." Should have been " Connect /EN to GROUND of the 5v supply, and Connect /DR to GROUND of the 5v supply."

C'mon guys why didn't one of you call me on that. BigGrin_Green I mean, what is this world coming to when I flub up and don't get called on it!! Bang Head

This should drive it for inverted logic. Now if what Darryl is speculating is correct, you may need to set it up for positive logic, in which case you'd have your resistors on the /DR and /EN lines to +5v, and you would provide a +5V pulse to the /PU line.

Sorry if it caused you any turmoil Ralph...

Rick

August 30, 2013
by sask55
sask55's Avatar

Ralph

I think we should have that A3977 ebay add translated now. The biggest question for me is should you use positive or inverted logic to control it. For the /DR it will not mater at all. It is not likely to matter much for the /PU. It will be very important for the /EN connection.

I personally would be curios what logic is expected. The answer can be determined from testing what state the /EN input connection is in to make a motor move. Rick’s point about the / in front of the connection names makes a lot of sense; from that it seams inverted logic should be expected.

If you get that board working let us know what logic state the /EN connection must be to enable the motor movements.

Darryl

August 30, 2013
by Ralphxyz
Ralphxyz's Avatar

Well just in case someone wanted to see the back side of the pcb I used my Dremel to make a triangle bit.

Sorry about the blur my battery died after the shot.

Ralph

August 30, 2013
by sask55
sask55's Avatar

It looks like there are fly-back current diodes at the motor coil output connections.

Kind of hard to say for sure it may be that the resistors on the right side of the main chip are pull ups on the optocoupelrr outputs.

The simplest way to check the logic would be to hook up motor, repeatedly connect and disconcert the /PU to the ground of the 5 volt supply. Then connect the /EN to the ground of the 5 volt supply and repeatedly connect and disconnect /PU. That should tell you for sure how to enable the motor movements.

The motor rotation direction is arbitrarily assigned when you connect the motor coil wires to the controller. I don’t think it is possible to know without testing which direction the motor will turn with either of the logic states of the /DR input. If for some reason you wish to reassign the rotational direction to the opposite logic this can be easily done by switching polarity of ONE of the motor coils. Ie connect the coil wire that is in B- to B+ and the coil wire that is in B+ to B-.

Darryl

August 30, 2013
by BobaMosfet
BobaMosfet's Avatar

sask55-

Yes, agreed. They are being used as current limiting diodes as well. The image was blurry, but I think they say 330-0hms, which seems reasonable.

BM

August 30, 2013
by BobaMosfet
BobaMosfet's Avatar

sask55-

Sorry, I meant 'current limiting resistors'.... sometimes my fingers have a mind of their own. :P

BM

August 31, 2013
by sask55
sask55's Avatar

BM

I understand exactly what you are saying. Thinking one thing and typing something else. As you probably have noticed I make a lot of really difficult to explain mistakes when I post. Occasionally my spelling, word substitutions and grammatical errors make my posts virtually incomprehensible, even to me, when I re-read them much later. I don’t know why but is seams I don't spot many errors until sometime after I post.

Having said that I do real enjoy this forum. The general tone and atmosphere is great. It is often very informative and interesting.

Darryl

August 31, 2013
by Ralphxyz
Ralphxyz's Avatar

Thanks everyone, I have a lot of things to try, I need a couple of rainy days so I can stay at my desk to try things out.

I know read the specsheet, but I do not understand the need of a pulse /PU and an enable /EN.

I am still working out how to get pulsed low from the optical disk encoder.

Would a NOT High be a low with a pull down resistor to ground to /PU.

Ralph

August 31, 2013
by Ralphxyz
Ralphxyz's Avatar

Well I have it hooked up!

But my motor does not turn I have to have /EN undefined then the motor vibrates.

I turned the Step switches off, this gets a stronger vibration from the motor.

I am using a momentary contact button as Rick suggested for /PU.

Each time I push the button the motor makes a slight move then stalls and vibrates until I push the button again. That is surprising, isn't it?

I will try to increase the amperage possible that is what the motor needs.

The only thing I definetly know is that /EN does not want to be grounded!!

Darn I tried increasing the amperage from 1.25amps to 2amps and now I get nothing the red led is on and the green led used to light with each pulse (button push) now the green led is not lighting!

Ralph

August 31, 2013
by Ralphxyz
Ralphxyz's Avatar

Eventually the green led lights with button push.

I tried setting the jumper to the other pin and got the same results.

It looks like the motor is reversing with each button push this is with /DR to ground or disconnected.

Ralph

August 31, 2013
by sask55
sask55's Avatar

Since I am not certain if the electrical data connections through the optical isolators results in positive or inverted logic, I am going to refer to the logic state at the A3977 enable input pin. Once you have tested the board and established how to enable the motor movement you will know, for sure, what is required at the /EN connection on the board to enable the chip.

/EN – enable.

When the Enable pin is low the chip will not send any current to the motor coils regardless of what else is happening on the other input pins. Pulses on the /PU are ignored. Not being enabled could be thought of as turning the chip outputs off. The motor is using no power and is not holding its position.

When the enable pin is high the chip is sending power to the motor coils. It could be thought of as turning the chip outputs on. The polarity and current level applied to each of the two coils depends on where in the control sequence the controller is. The motor controller will not change or vary the output to the motor. The motor will be stopped in one position and holding that position for as long as the chip is enabled and no new /PU pulse is detected. Current will be going through one or both of the coils for as long as the controller is enabled.

/PU -pulse

Some controller chips refer to this input as the clock. By cycling the pulse input (high then low) the controller is instructed to change the output levels to the motor. With each /PU pulse received the controller moves the motor one increment. In order to make the motor rotate it is necessary to supply a series of pulses (high low high low high …) to the /PU input. A high pulse rate will result in a faster rotation of the motor whereas a slow pulse rate will result in a slow motor speed. If the /PU is not changing, at all, there are no pulses going to the controller and the motor will hold in one position.

Some encoders making use of reflective object sensors while other may use a separated LED and phototransistor to achieve essentially the same thing. Whatever the type the idea is to provide a path for current to go to the 5 volt ground part of the time, and block that path part of the time, depending on the state of the phototransistor. By connecting the Emitter of your phototransistor to the 5 volt ground and the collector to the /EN connection you should be able to start and stop the motor depending on whether the phototransistor is “seeing light” or not i.e. the position of the optical disk. Keep in mind the motor will not move unless there is a series of pulse on the /PU at the same time.

To move the motor the chip requires to things. It must be enabled. To it must be clocked or pulsed on the /PU.

When you get a chance hook up a motor to determine what is require to enable the chip. It will be either no connection or ground to 5 volt ground.

Hope this helps

Darryl

August 31, 2013
by sask55
sask55's Avatar

Ralph

I sent the last post before I noticed your last couple of posts

when you say "The only thing I definetly know is that /EN does not want to be grounded!!" I think this is an indication that /EN not grounded (high)is not enabled. therefor the logic is inverted. grounding input conections (low level input)would therefor be holding the pin level high on the chip.

August 31, 2013
by sask55
sask55's Avatar

Ralph

I would never set your amperage above the amperage level of your stepper motor. 2.5 amps would be a large motor, that is a lot of current for a stepper you could burn out a coil very quickly on most small motors. Assuming your power supply is capable of actually supplying that current. For example the motors on my mill poroject are about 2 inches in daimeter and 5 inches long they feel like they are several pounds each and are rated at 3 amps max.

Without a load your motor should work with far less than 0.5 amp max.

August 31, 2013
by Ralphxyz
Ralphxyz's Avatar

I loaded the Led_Blink program so that I could have a steady pulse.

Operating

You have to download the .AVI file which is a little big.

Ralph

August 31, 2013
by sask55
sask55's Avatar

Ralph

It is hard to say, from your video it looks a bit like your controller is just alternating polarity on one of the coils, with nothing happening on the other coil. You could check the motor coils with a VOM. Make certain that your connections to the A and B coils are correct. Make sure that the two wires on the A- and A+ are one coil by verifying that there is a small resistance ( a few ohms) from one to the other when they are not connected to the board. Do the same with the other two wires.

August 31, 2013
by Ralphxyz
Ralphxyz's Avatar

I installed led's across the coils as Darryl had instructed to do in another stepper motor thread he helped me with.

Only two of the leds get energized!! The A+ and B- coils!!

Operation LEDs

Ralph

August 31, 2013
by sask55
sask55's Avatar

Ralph

For some reason I cannot view either of your AVI file any more. i was able to veiw the first one but can't now.

Just to be clear when you say “I installed led's across the coils “what do you mean.

A led is connected in both direction between the A- and the A+ outputs and also in both direction between the B- and the B+ outputs ?

Or are the leds connected between the outputs and the 24 volt ground?

Or are the leds connected between the output and the 24 volt supply conection?

August 31, 2013
by Noter
Noter's Avatar

I was able to view both the videos but the 2nd one is a 42MB download, takes a while before it starts playing. Youtube is a better alternative for videos because it streams at different bandwidths instead of requiring full download first. Here's a screen shot of the led's from the 2nd video ...

RI

September 01, 2013
by Ralphxyz
Ralphxyz's Avatar

Daryl,"A led is connected in both direction between the A- and the A+ outputs and also in both direction between the B- and the B+ outputs ?"

Yes

Yeah Paul I'll have to try YouTube.

Sorry about the size of the downloads.

I "think" my problem might be wiring!!

It seems like if I wiggle the wires around I get different results.

After adding the LEDs a couple of times I am now get three to light brightly and one real dim.

I am going to make up a header to make sure everything is solid.

Ralph

September 01, 2013
by sask55
sask55's Avatar

Ralph

I got your 2nd video to work. I am on a wide area network for internet it can be painfully slow at times. I had to download using the goggle chrome browser and view it using quick time. The Microsoft software I was using refuses to even try download or show the file.

That is a fairly large motor you are working with, do you have the specifications for the motor. Max amperage, angular movement /step, max voltage, DC coil resistance? Also what are the specifications of the higher voltage power supply (24volt ?) you are using, DC volts, max amperage rating?

The controller will be attempting to achieve the current level that you have selected. The motor coil resistance or more correctly the impedance is used by the controller to determine the PWM ratio used to achieve that current. In order to have the controller output a proper sequence it will be important that there is a coil load on the outputs. I believe that your leds may light up brighter if there is no load across the output and therefore the controller would go to 100% high level voltage in an attempt to push the amperage that is set. In the event that a very low impedance load is placed across he output the led may be very dim as the controller reduces the PWM ratio to control the amperage output. My point is, a bright LED may not be indicating all is well it may be indicating an open load (no conection to a motor coil).

Darryl

September 01, 2013
by Ralphxyz
Ralphxyz's Avatar

Thanks Darryl, I am using a 12v power module that has either a 2 amp or 4 amp rating. I have powered this motor with it previously with a different driver.

Here is a new video on youtube with my new led header (works much better).

The motor still does not turn!

When I left the motor on for 15 minutes it got a little warm definitely not hot.

The motor is a NEMA 17 Wantai Stepper Motor Model: 42BYGHW208 0.4A(U).

I cannot find the motor on the Wantai web site it is a couple of years old.

Ralph

September 01, 2013
by sask55
sask55's Avatar

Ralph

Much better video.

That video is showing a valid sequence to turn the motor. Alternating the A and B coil, changes 90 out of phase. It would seam that somehow the problem is the connection to the motor coils. I would recheck that there is a low resistance measurable on both pairs of motor coil wires when they are not connected to the controller. Secondly make certain that one of pairs of motor wires is connected to the same controller outputs as the two leds on the left side for your video. The other two on the other two controller outputs.

Don't know what else to do. If the two leds on the left are across one coil and the two on right are across the other coil that should turn the motor.

Darryl

September 01, 2013
by Ralphxyz
Ralphxyz's Avatar

Damm this is embarrassing, as a act of desperation I connected a different driver, the one Darryl helped me with last year, and it didn't work!!

Finally I checked the coil resistance and found it open then checked the other wires and found the low resistance expected, tada it works!!

The stepper is a 4 wire bipolar stepper. I had "thought" RED/BLACK GREEN/BLUE, duh.

It is RED/BLUE GREEN/BLACK.

Now I can experiment with all of the options, direction and stepping modes!!

Thanks to Darryl and everyone for the help.

As expected if I ground /DR the direction reverses ungrounded clockwise grounded counter clockwise.

This is just what I neede a pulse driven stepper driver, now to make it fit my project.

You'll be hearing more from me, he he he.

Ralph

September 01, 2013
by sask55
sask55's Avatar

Ralph

That is good news. I was completely out of ideas as to what else could be the problem.

I took a look at your motor specifications.

You are likely aware of most of this information but hear are few things to consider.

42BYGHW208 0.4A(U).

Step angle is 1.8 deg/step or 200 full steps / revolution of the motor. So for example if you wish to turn the motor at 60 RPM (1 rev /second) you will clock the /PU input at 220 Hz. When operating in full stepping mode.

Max safe current is 0.4 amps. I would never set the current level on the controller above that level. Although, it is not really relevant here because 12 volts cannot overdrive this motor.

Coil resistance is 30 ohms/phase (each coil).

Rated voltage is 12 volts

Using ohms law.-- I=V/R - or- I=12 / 30 -or- I =.4 amps

Therefore the max current through the coils at 100% duty cycle of the PWM is 0.4 amps This calculation indicates that this motor would operate on a 12 volt supply without any PWM from the controller.

You are unlikely to require better performance from the motor, higher torque at higher speeds, but if you did you could supply this controller with higher voltage. The controller will handle up to 30 Volts. The higher voltage would be useful for higher motor speed when the coil induction combined with the rapidly alternating coil current results in higher coil impedance and therefore less current (less torque). By supplying the controller with more voltage the controller could increase the effective voltage to the motor coils, using PWM, while maintaining the 0.4 amp max through a wide range of speeds.

Darryl

September 02, 2013
by Ralphxyz
Ralphxyz's Avatar

Thanks Darryl, once again I owe you.

I can't believe I just hooked it up the way I did without testing coil resistance.

"Hopefully" I have learned my lesson.

Now I can do a lot of playing oh er experimenting with the driver.

I can dial in the current and do the stepping modes.

I still do not see the advantage of using the /EN (enable). If I don't want the motor to turn just don't send a pulse but probable there is something I am missing as I am only thinking of my needs.

Thanks again to everyone for your input.

Hey Rick, what was the project you did a couple of years ago with that great button routine? Oh wait probable a RTC project. I need to do a speed select with buttons or at least I think I do.

Ralph

September 02, 2013
by Rick_S
Rick_S's Avatar

Yep, it was the RTC project. I don't know how Great the button routine was, but it worked for that project. Thanks for the compliment though Wink

September 02, 2013
by sask55
sask55's Avatar

Your welcome Ralph

I am kind of waiting impatiently between crops for harvest to resume. I welcome things to think about to take my mind off the relatively slow progress we are experiencing this season.

As far as enable is concerned I think there are times when you do not want the motor to be holding at one position. Remember if the controller in enabled it will be sending current to the coils, using power, possibly causing heating issues. When it is not enabled no current is flowing, the motor is free wheeling.

Darryl

September 02, 2013
by Ralphxyz
Ralphxyz's Avatar

Thanks Darryl, that makes sense.

Rick, I've seen a lot of button routines yours definitely was the cleanest, most logical and simplest.

I mean I understood it so that speaks for itself.

Ralph

Post a Reply

Please log in to post a reply.

Did you know that NerdKits believes in the importance of a mixture of meaningful topics, clear instruction, and engaging projects? Learn more...