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

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
documentation:electronique:modules_kits:em483_stepper:index [2021/05/12 15:44] f1slsdocumentation:electronique:modules_kits:em483_stepper:index [2021/05/19 02:33] (Version actuelle) f1sls
Ligne 7: Ligne 7:
 {{:documentation:electronique:modules_kits:em483_stepper:epson-em-483-schema_01.jpg?direct|}} {{:documentation:electronique:modules_kits:em483_stepper:epson-em-483-schema_01.jpg?direct|}}
  
-===== ARDUINO LIBS ===== +{{:documentation:electronique:modules_kits:em483_stepper:l298n_controller_board_pinout.png?direct|}} 
-  * https://github.com/worldthem/28bYJ48 +{{: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.1620827066.txt.gz · Dernière modification : de f1sls