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);
  }
}