EM-483 PRINTER STEPPER MOTOR
DOCUMENTS
WIRING
ARDUINO
LIBS
SAMPLES
#define ButonControl 4
#include <28BYJ48.h>
NonBlockingMotor motor(4, 7, 5, 6);
int degreRotate = 900;
int degreRotateBack = 330;
long f1(long x){
return x*motor.steps_per_rev/3600;
}
unsigned long currentTime = 0;
unsigned long newTime = 0;
void on_reached(long steps){ } // to get number of steps use println
boolean dataBtn ;
void setup() {
// put your setup code here, to run once:
// initialise step motor
motor.init();
motor.set_time_between_pulses(2000); // recommended
motor.set_conversion_function(f1);
motor.set_on_destination_reached(on_reached);
pinMode(ButonControl, INPUT_PULLUP);// push button pin as input
Serial.begin(9600);
}
void loop() {
dataBtn = !digitalRead(ButonControl);
if(millis() % 20000 == 0){
motor.set_destination(degreRotate);
motor.status = CW; // OR CCV to rotate back
}
if( dataBtn== 1)
{
motor.status = STOP;
}
motor.update(); // commit rotation
if(millis() % 4000 == 0){ // this need because L293D Get realy hot so to prevent bourning the skheme :)
waitModeMotor();
}
}
// motor get hot and for this we will need to make all the pins to LOW to avoid HOT
void waitModeMotor(){
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
//////////////////////////////////////////////////////////////////
//©2011 bildr
//Released under the MIT License - Please reuse change and share
//Using the easy stepper with your arduino
//use rotate and/or rotateDeg to controll stepper motor
//speed is any number from .01 -> 1 with 1 being fastest -
//Slower Speed == Stronger movement
/////////////////////////////////////////////////////////////////
#define DIR_PIN 2
#define STEP_PIN 3
void setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
}
void loop(){
rotateDeg(360, 1);
delay(1000);
rotateDeg(-360, .1); //reverse
delay(1000);
//rotate(1600, .5);
//delay(1000);
//rotate(-1600, .25); //reverse
//delay(1000);
}
void rotate(int steps, float speed){
//rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (steps > 0)? HIGH:LOW;
steps = abs(steps);
digitalWrite(DIR_PIN,dir);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}
void rotateDeg(float deg, float speed){
//rotate a specific number of degrees (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (deg > 0)? HIGH:LOW;
digitalWrite(DIR_PIN,dir);
int steps = abs(deg)*(1/0.225);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}
BIPOLAR STEPPER WITH H BRIDGE
/*
Stepper Motor Demonstration 3
Stepper-Demo3.ino
Demonstrates NEMA 17 Bipolar Stepper with L298N Driver
Uses Potentiometer on Analog Input A0
Uses Arduino Stepper Library
DroneBot Workshop 2018
https://dronebotworkshop.com
*/
// Include the Arduino Stepper Library
#include <Stepper.h>
// Define Constants
// Number of steps per output rotation
const int STEPS_PER_REV = 200;
const int SPEED_CONTROL = A0;
// Create Instance of Stepper Class
// Specify Pins used for motor coils
// The pins used are 8,9,10,11
// Connected to L298N Motor Driver In1, In2, In3, In4
// Pins entered in sequence 1-2-3-4 for proper step sequencing
Stepper stepper_NEMA17(STEPS_PER_REV, 8, 9, 10, 11);
void setup() {
// nothing to do inside the setup
}
void loop() {
// read the sensor value:
int sensorReading = analogRead(SPEED_CONTROL);
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:
if (motorSpeed > 0) {
stepper_NEMA17.setSpeed(motorSpeed);
// step 1/100 of a revolution:
stepper_NEMA17.step(STEPS_PER_REV / 100);
}
}