This instructable is the written version of my "Arduino : How To Control a Stepper Motor with Potentiometer" YouTube video that I've uploaded recently. I strongly recommend you to check it out.
First, you should see the following Instructable:
This tutorial is all about tuning the speed of a stepper motor using a potentiometer. The idea is to up or down the speed of a stepper motor using with analog read. Theoretically analog input to a digital output, we're going to use this concept to control the speed of a running stepper motor.
Hardware Required :
- 10k Potentiometer
Circuit & Connections
The Stepper motor used here is a rusty old EPOCH (5 wires) stepper motor, which is a unipolar stepper.
Use the analog input with the help potentiometer to control the delay in-between each steps of the stepper motor. Shorter the delay in-between each steps - faster the stepper motor runs and vice-versa.
Programming
// input pin for the potentiometer int read_potentiometer = A0; // input pin for the LED int LED_pin = 13; // input pin for the Step Motor int step_pin_1 = 8; int step_pin_2 = 9; int step_pin_3 = 10; int step_pin_4 = 11; float delay_time; int value_potentiometer = 0; void setup() { Serial.begin(9600); } void loop() { value_potentiometer = analogRead(read_potentiometer); if (value_potentiometer > 0 ){ delay_time=210-((value_potentiometer/5)); } else { delay_time=0; // Minumum speed when it is 0 } Serial.println(value_potentiometer); digitalWrite(LED_pin, HIGH); digitalWrite(8, HIGH); digitalWrite(step_pin_2, HIGH); digitalWrite(step_pin_3, LOW); digitalWrite(step_pin_4, LOW); delay(delay_time); digitalWrite(LED_pin, LOW); digitalWrite(step_pin_1, LOW); digitalWrite(step_pin_2, HIGH); digitalWrite(step_pin_3, HIGH); digitalWrite(step_pin_4, LOW); delay(delay_time); digitalWrite(LED_pin, HIGH); digitalWrite(step_pin_1, LOW); digitalWrite(step_pin_2, LOW); digitalWrite(step_pin_3, HIGH); digitalWrite(step_pin_4, HIGH); delay(delay_time); digitalWrite(LED_pin, LOW); digitalWrite(step_pin_1, HIGH); digitalWrite(step_pin_2, LOW); digitalWrite(step_pin_3, LOW); digitalWrite(step_pin_4, HIGH); delay(delay_time); }