74 lines
5.1 KiB
Markdown
74 lines
5.1 KiB
Markdown
# Stepper_UNIPOLAR
|
|
|
|
This class provides a generic driver for use with any center-tapped unipolar stepper motor. Requires the use of a driver board that can convert the low-voltage/low-current digital signals from 4 pins on the ESP32 to higher-voltage/higher-current outputs suitable for direct connection to the two phases (*A* and *B*) of each coil (*1* and *2*) in the stepper motor.
|
|
|
|
The **Stepper_UNIPOLAR** class includes the following constructor:
|
|
* `Stepper_UNIPOLAR(int coil1A, int coil1B, int coil2A, int coil2B)`
|
|
* controls the driver board using 4 digital pins from the ESP32, where the parameters specify the pin numbers
|
|
* the driver circuit should be connected and configured such that when any of ESP32 pins specified above are set to are HIGH, current flows through the corresponding coil/phase. Similarly, when a pin is set LOW, the driver circuit should stop the flow of current through the corresponding coil/phase.
|
|
* supported modes are as follows:
|
|
|
|
* FULL_STEP_ONE_PHASE
|
|
* FULL_STEP_TWO_PHASE
|
|
* HALF_STEP
|
|
|
|
❗Note: This class does not support a short brake state. Calls to the `brake()` method, as well as setting the *endAction* parameter in the `move()` and `moveTo()` methods to **StepperControl::BRAKE** have no effect on the motor driver.<br><br>
|
|
|
|
> [!WARNING]
|
|
> **Note the order of the constructor parameters!** The first two parameters specify the ESP32 pins that control the current flowing through phases *A* and *B* of ***Coil 1***; the second two parameters are for phases *A* and *B* of ***Coil 2***.
|
|
|
|
It does *not* matter which coil is defined as *1* or *2*, nor which side is called *A* or *B*, as long as the first two parameters are for one of the coils and the second two are for the other coil. You'll know if you mis-specified the order of the pins because the motor will vibrate back and forth instead of turning clockwise or counterclockwise.
|
|
|
|
## Technical Details
|
|
|
|
The patterns by which this class sets the specified pins HIGH and LOW depend on the *step mode* chosen as follows:
|
|
|
|
#### FULL_STEP_ONE_PHASE
|
|
|
|
* 4-step cycles where in each step current flows only through **one** phase of **one** of the coils
|
|
|
|
<table>
|
|
<tr><th></th><th colspan="2">Phase A</th><th colspan="2">Phase B</th></tr>
|
|
<tr><th></th><th>Coil 1</th><th>Coil 2</th><th>Coil 1</th><th>Coil 2</th></th></tr>
|
|
<tr><th>Step 1</th><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 2</th><td align="center">-</td><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 3</th><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 4</th><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td></td></tr>
|
|
</table>
|
|
<br>
|
|
|
|
#### FULL_STEP_TWO_PHASE
|
|
|
|
* 4-step cycles where in each step current flows through **one** phase of **each** of the coils
|
|
|
|
<table>
|
|
<tr><th></th><th colspan="2">Phase A</th><th colspan="2">Phase B</th></tr>
|
|
<tr><th></th><th>Coil 1</th><th>Coil 2</th><th>Coil 1</th><th>Coil 2</th></th></tr>
|
|
<tr><th>Step 1</th><td align="center">HIGH</td><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 2</th><td align="center">-</td><td align="center">HIGH</td><td align="center">HIGH</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 3</th><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td><td align="center">HIGH</td></td></tr>
|
|
<tr><th>Step 4</th><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td></td></tr>
|
|
</table>
|
|
<br>
|
|
|
|
#### HALF_STEP
|
|
|
|
* 8-step cycles formed by interleaving the 4 steps of the FULL_STEP_ONE_PHASE mode with the 4 steps of the FULL_STEP_TWO_PHASE mode
|
|
|
|
<table>
|
|
<tr><th></th><th colspan="2">Phase A</th><th colspan="2">Phase B</th></tr>
|
|
<tr><th></th><th>Coil 1</th><th>Coil 2</th><th>Coil 1</th><th>Coil 2</th></th></tr>
|
|
<tr><th>Step 1</th><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 2</th><td align="center">HIGH</td><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 3</th><td align="center">-</td><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 4</th><td align="center">-</td><td align="center">HIGH</td><td align="center">HIGH</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 5</th><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td><td align="center">-</td></td></tr>
|
|
<tr><th>Step 6</th><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td><td align="center">HIGH</td></td></tr>
|
|
<tr><th>Step 7</th><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td></td></tr>
|
|
<tr><th>Step 8</th><td align="center">HIGH</td><td align="center">-</td><td align="center">-</td><td align="center">HIGH</td></td></tr>
|
|
</table>
|
|
|
|
---
|
|
|
|
[↩️](../Stepper.md) Back to the Stepper Motor Control page
|