EM-483 PRINTER STEPPER MOTOR []

Outils pour utilisateurs

Outils du site


EM-483 PRINTER STEPPER MOTOR

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
documentation:electronique:modules_kits:em483_stepper:index [2021/05/12 15:02] – créée f1slsdocumentation:electronique:modules_kits:em483_stepper:index [2021/05/19 02:33] (Version actuelle) f1sls
Ligne 3: Ligne 3:
 ===== DOCUMENTS ===== ===== DOCUMENTS =====
   * {{ :documentation:electronique:modules_kits:em483_stepper:em-483-specifications.pdf |Instructables: EM-483 Specs}}   * {{ :documentation:electronique:modules_kits:em483_stepper:em-483-specifications.pdf |Instructables: EM-483 Specs}}
 +
 +===== WIRING =====
 +{{:documentation:electronique:modules_kits:em483_stepper:epson-em-483-schema_01.jpg?direct|}}
 +
 +{{:documentation:electronique:modules_kits:em483_stepper:l298n_controller_board_pinout.png?direct|}}
 +{{:documentation:electronique:modules_kits:em483_stepper:l298n_controller_board.jpg?direct|}}
 +===== ARDUINO =====
 +==== LIBS ====
 +  * https://github.com/Mohamad1994HD/28BYJ48
 +
 +==== SAMPLES ====
 +{{:documentation:electronique:modules_kits:em483_stepper:arduino-bipolar-stepper-motor-control-circuit.png?direct&600|}}
 +<code cpp>
 +#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);
 +  }
 +</code>
 +
 +----
 +
 +<code cpp>
 +//////////////////////////////////////////////////////////////////
 +//©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); 
 +  } 
 +}
 +</code>
 +
 +===== BIPOLAR STEPPER WITH H BRIDGE =====
 +<code cpp>
 +/*
 +  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);
 +  }
 +}
 +</code>
documentation/electronique/modules_kits/em483_stepper/index.1620824539.txt.gz · Dernière modification : de f1sls