User Tools

Site Tools


steppernxt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
steppernxt [2017/08/04 18:24] – [Parts List and Sources] rebeccacaosteppernxt [2017/08/15 20:11] (current) – [Circuit Schematics] rebeccacao
Line 1: Line 1:
-====== How To Control an Unipolar Stepper Motor with LEGO NXT Using Only Transistors ======+====== How To Control an Unipolar Stepper Motor with LEGO NXT Using ULN2003A ======
  
 **Author:** Xinke (Rebecca) Cao **Author:** Xinke (Rebecca) Cao
Line 14: Line 14:
 \\ \\
 The stepper motors resembles the dynamixels used in Darwin-OP; therefore, learning to operate the stepper motors allows more possibilities on the types of mechanisms can be built that can be controlled by the LEGO NXT Brick. Furthermore, the ability to track the amount of rotation that the stepper motor has made allow for more accurate determination of the state (position, velocity, acceleration) of any mechanism that is attached to the stepper motor. The stepper motors resembles the dynamixels used in Darwin-OP; therefore, learning to operate the stepper motors allows more possibilities on the types of mechanisms can be built that can be controlled by the LEGO NXT Brick. Furthermore, the ability to track the amount of rotation that the stepper motor has made allow for more accurate determination of the state (position, velocity, acceleration) of any mechanism that is attached to the stepper motor.
 +\\
 +\\
 +\\
 \\ \\
 ==== Parts List and Sources ==== ==== Parts List and Sources ====
Line 25: Line 28:
   * (1) NXT Brick   * (1) NXT Brick
   * (various quantities) gauge wires   * (various quantities) gauge wires
 +Here is the [[https://youtu.be/ueQvVYQ1Udo |demo]] of the motor turning with the following schematics and coding.
 \\ \\
-Here is the [[https://youtu.be/VVnshFiYg2U |demo]] of the motor turning with the following schematics and coding. +All the codes can be found [[https://github.com/XKRC/NXT_Stepper_Motor|here]], titled "Stepper_ULN2003A_Basic.nxc".
-\\ +
- +
  
 +\\
 +\\
 +\\
 ==== Circuit Schematics ==== ==== Circuit Schematics ====
 // //
Line 38: Line 42:
  
 {{ :xinke:circuit_ver_1.png?600 |}} {{ :xinke:circuit_ver_1.png?600 |}}
-\\ 
 D0 controls blue. D0 controls blue.
 \\ \\
Line 47: Line 50:
 D3 controls orange. D3 controls orange.
 \\ \\
-==== Construction ==== +The integrated circuit that is connected to the PCF8574A is the ULN2003A. The ULN2003A is an array of seven Darlington transistors that amplifies current from the PCF8574A and outputs the voltage supplied to its common port to drive the stepper motor. This is similar to how the IRF510 amplifies the current and acts as a switch to allow specific wires on the stepper motor to obtain enough voltage and current. However, when you input a LOW signal to the ULN2003A, it will output a HIGH signal. Therefore, in the code, we need to adjust the bit values output by the PCF8574A to account for this change.
 \\ \\
 \\ \\
 +\\
 +==== Construction ====
 **Step 1** **Step 1**
 \\ \\
Line 56: Line 60:
 Insert a PCF8574A. Insert a PCF8574A.
 \\ \\
-{{:xinke:img_7476.jpg?300|}}+{{:xinke:img_7496.jpg?300|}}
 \\ \\
 \\ \\
 Insert the clock line from PCF8574A to the NXT adaptor. Insert the clock line from PCF8574A to the NXT adaptor.
 \\ \\
-{{:xinke:img_7475.jpg?300|}}+{{:xinke:img_7495.jpg?300|}}
 \\ \\
 \\ \\
 Insert the data line. Insert the data line.
 \\ \\
-{{:xinke:img_7474.jpg?300|}}+{{:xinke:img_7494.jpg?300|}}
 \\ \\
 \\ \\
 Insert the voltage source to the PCF8574A. Insert the voltage source to the PCF8574A.
 \\ \\
-{{:xinke:img_7473.jpg?300|}}+{{:xinke:img_7493.jpg?300|}}
 \\ \\
 \\ \\
-Insert the ground lines, which will also be the ground to the NXT Brick.+Insert the ground lines to the NXT Brick.
 \\ \\
-{{:xinke:img_7472.jpg?300|}}+{{:xinke:img_7492.jpg?300|}}
 \\ \\
 \\ \\
-**Step 2**+Ground the pins on PCF8574A.
 \\ \\
 +{{:xinke:img_7491.jpg?300|}}
 \\ \\
-Insert four IRF510 resistors. 
 \\ \\
-{{:xinke:img_7471.jpg?300|}}+**Step 2**
 \\ \\
 \\ \\
-**Step 3**+Insert a ULN2003A.
 \\ \\
 +{{:xinke:img_7490.jpg?300|}}
 \\ \\
-Gather an NXT adaptor. 
 \\ \\
-{{:xinke:img_7469.jpg?300|}}+Add the ground to the ULN2003A and the 9V source to the ULN2003A.
 \\ \\
 +{{:xinke:img_7489.jpg?300|}}
 \\ \\
-Insert the NXT adaptor. 
 \\ \\
-{{:xinke:img_7468.jpg?300|}} 
 \\ \\
 +{{:xinke:img_7488.jpg?300|}}
 \\ \\
-**Step 4** 
 \\ \\
 +Add the data lines from the PCF8574A to the ULN2003A's input ports.
 \\ \\
-Gather four 100k Ohms resistors.+{{:xinke:img_7487.jpg?300|}}
 \\ \\
-{{:xinke:img_7467.jpg?300|}} 
 \\ \\
 +Add resistors to the digital output pins of PCF8574A that are in use to provide enough currents.
 \\ \\
-Connect the resistors to the "Gate" pins of all of the transistors.+{{:xinke:img_7486.jpg?300|}}
 \\ \\
-{{:xinke:img_7466.jpg?300|}} 
 \\ \\
 \\ \\
 +{{:xinke:img_7485.jpg?300|}}
 \\ \\
-{{:xinke:img_7465.jpg?300|}} 
 \\ \\
 +**Step 3**
 \\ \\
 \\ \\
-{{:xinke:img_7464.jpg?300|}}+Insert the NXT adaptor.
 \\ \\
 +{{:xinke:img_7483.jpg?300|}}
 \\ \\
-**Step 5** 
 \\ \\
 \\ \\
-Connect the source of all transistors to the ground.+{{:xinke:img_7484.jpg?300|}}
 \\ \\
-{{:xinke:img_7463.jpg?300|}} 
 \\ \\
 +**Step 4**
 \\ \\
 \\ \\
-{{:xinke:img_7462.jpg?300|}}+Insert the stepper motor to the output pins of the ULN2003A.
 \\ \\
 +{{:xinke:img_7482.jpg?300|}}
 \\ \\
 \\ \\
-{{:xinke:img_7461.jpg?300|}}+Connect the red wire from the stepper motor to a 9V voltage source.
 \\ \\
 +{{:xinke:img_7481.jpg?300|}}
 \\ \\
 \\ \\
-{{:xinke:img_7460.jpg?300|}}+\\ 
 +{{:xinke:img_7480.jpg?300|}}
 \\ \\
 \\ \\
 **Step 6** **Step 6**
-\\ 
-\\ 
-Insert data lines from the correct output pins from the PCF8574A to the corresponding transistor's "drain" pin. 
-\\ 
-{{:xinke:img_7458.jpg?300|}} 
-\\ 
-\\ 
-\\ 
-{{:xinke:img_7457.jpg?300|}} 
-\\ 
-\\ 
-**Step 7** 
-\\ 
-\\ 
-Connect the center line (red) of the stepper motor to a 9V source and the other four lines to the corresponding "drain" pin of the transistors. 
-\\ 
-{{:xinke:img_7456.jpg?300|}} 
-\\ 
-\\ 
-\\ 
-{{:xinke:img_7455.jpg?300|}} 
-\\ 
-\\ 
-**Step 8** 
-\\ 
 \\ \\
 Connect the battery. Connect the battery.
 \\ \\
-{{:xinke:img_7454.jpg?300|}}+{{:xinke:img_74800.jpg?300|}}
 \\ \\
 \\ \\
Line 208: Line 190:
     Wait(10);      Wait(10); 
  
-// +\\ 
- +To reverse the direction that the stepper motor is turning, the sequence can be reversed.  
-// +\\ 
-// +\\ 
-//+\\
 ==== Final Words ==== ==== Final Words ====
 +The purpose of this tutorial is to allow the users of the NXT Brick learn how to control a stepper motor through an NXT interface.
 +\\
 +Building from this tutorial, one can control the speed of the stepper motor and the direction of the stepper motor by altering the wait time between each signal and the sequence of the signal.
 +\\
 +If you have any questions, please email me at [email protected].
  
  
Line 221: Line 208:
  
  
- 
-**Circuit Schematics** 
- 
- 
-**Basic: Coding** 
-To simplify what I'm doing, I will put it in layman terms. Basically, in order to drive the unipolar stepper motor that we have, we send currents to the stepper motor in a correct sequence in order to turn the stepper motor, say in clockwise direction. This means, to drive the stepper motor in the opposite direction, we reverse the sequence.  
- 
- 
-**Sample Video** 
-// 
- 
-// 
  
  
  
  
steppernxt.1501896294.txt.gz · Last modified: 2017/08/04 18:24 by rebeccacao