Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Hoe een stappenmotor te besturen met A4988 Driver en Arduino?

In deze Arduino-zelfstudie leren we hoe we een stappenmotor kunnen besturen met behulp van de A4988 stappenmotor. Je kunt de volgende video bekijken of de geschreven tutorial hieronder lezen.

Overzicht

De A4988 is een microstepping-stuurprogramma voor het besturen van bipolaire stappenmotoren met een ingebouwde vertaler voor eenvoudige bediening. Dit betekent dat we de stappenmotor kunnen besturen met slechts 2 pinnen van onze controller, of een voor het regelen van de draairichting en de andere voor het regelen van de stappen.

De Driver biedt vijf verschillende stapresoluties:volledige stap, haft-stap, kwartstap, achtstap en zestiende stap. Het heeft ook een potentiometer voor het aanpassen van de stroomuitgang, thermische uitschakeling bij oververhitting en crossover-stroombeveiliging.

De logische spanning is van 3 tot 5,5 V en de maximale stroom per fase is 2 A als er goede aanvullende koeling wordt geleverd of 1 A continue stroom per fase zonder koellichaam of koeling.

A4988 Stepper Driver-pinout

Laten we nu eens kijken naar de pin-out van de driver en deze aansluiten op de stappenmotor en de controller. Dus we beginnen met de 2 pinnen aan de rechterkant van de knop voor het voeden van de driver, de VDD- en Ground-pinnen die we nodig hebben om ze aan te sluiten op een voeding van 3 tot 5,5 V en in ons geval zal dat onze controller zijn, de Arduino Board die 5 V levert.  De volgende 4 pinnen zijn voor het aansluiten van de motor. De 1A- en 1B-pinnen worden verbonden met de ene spoel van de motor en de 2A- en 2B-pinnen met de andere spoel van de motor. Voor het aandrijven van de motor gebruiken we de volgende 2 pinnen, Ground en VMOT die we nodig hebben om ze aan te sluiten op een voeding van 8 tot 35 V en ook moeten we een ontkoppelingscondensator gebruiken met ten minste 47 F om de driverkaart te beschermen tegen spanningspieken.

De volgende twee 2-pins, Step en Direction zijn de pinnen die we daadwerkelijk gebruiken voor het besturen van de motorbewegingen. De richtingspin regelt de draairichting van de motor en we moeten hem aansluiten op een van de digitale pinnen op onze microcontroller, of in ons geval zal ik hem aansluiten op pin nummer 4 van mijn Arduino-bord.

Met de Step-pin regelen we de mirosteps van de motor en met elke puls die naar deze pin wordt gestuurd, beweegt de motor één stap. Dat betekent dat we geen ingewikkelde programmering, fasevolgordetabellen, frequentiecontrolelijnen enzovoort nodig hebben, omdat de ingebouwde vertaler van de A4988 Driver voor alles zorgt. Hier moeten we ook vermelden dat deze 2 pinnen intern niet op spanning worden getrokken, dus we moeten ze niet in ons programma laten zweven.

De volgende is de SLEEP-pin en een logisch laag zet het bord in de slaapstand om het stroomverbruik te minimaliseren wanneer de motor niet in gebruik is.

Vervolgens stelt de RESET-pin de vertaler in op een vooraf gedefinieerde Home-status. Deze thuisstaat of thuismicrostappositie kan worden afgeleid uit deze cijfers van het A4988-gegevensblad. Dit zijn dus de beginposities van waaruit de motor start en ze verschillen afhankelijk van de resolutie van de microstappen. Als de ingangsstatus naar deze pin logisch laag is, worden alle STEP-ingangen genegeerd. De Reset-pin is een zwevende pin, dus als we niet van plan zijn om hem in ons programma te bedienen, moeten we hem verbinden met de SLEEP-pin om hem hoog te krijgen en het bord in te schakelen.

De volgende 3 pinnen (MS1, MS2 en MS3) zijn voor het selecteren van een van de vijf stapresoluties volgens de bovenstaande waarheidstabel. Deze pinnen hebben interne pull-down-weerstanden, dus als we ze losgekoppeld laten, werkt het bord in volledige stapmodus.

De laatste, de ENABLE-pin, wordt gebruikt voor het in- of uitschakelen van de FET-uitgangen. Dus een logische high zorgt ervoor dat de uitgangen uitgeschakeld blijven.

Benodigde componenten voor deze Arduino-tutorial

U kunt de componenten van een van de onderstaande sites downloaden:

  • Stappenmotor (NEMA17)…………..
  • A4988 Stepper-stuurprogramma…………..
  • 12V 2A-adapter…………………….
  • Stroomaansluiting………………………………
  • Arduino-bord …………………………
  • Broodplank en springdraden …….

Circuitschema's

Hier zijn de volledige circuitschema's. Ik zal de schijf in de volledige stapmodus gebruiken, dus ik laat de 3 MS-pinnen losgekoppeld en verbind gewoon de richting- en de stappinnen van de schijf met de pinnen nummer 3 en 4 op het Arduino-bord en ook de grond en de 5 V pinnen voor het voeden van het bord. Ook zal ik een 100µF condensator gebruiken voor ontkoppeling en 12V, 1.5A adapter voor het voeden van de motor. Ik zal een NEMA 17 bipolaire stappenmotor gebruiken en de draden A en C worden aangesloten op de pinnen 1A en 1B en de B- en D-draden op de 2A- en 2B-pinnen.

A4988 Stroombegrenzing

Voordat we de motor aansluiten, moeten we de stroombegrenzing van de driver aanpassen, zodat we zeker weten dat de stroom binnen de stroomlimieten van de motor ligt. We kunnen dat doen door de referentiespanning aan te passen met behulp van de potentiometer op het bord en deze vergelijking te overwegen:

Deze vergelijking is echter niet altijd correct, aangezien er verschillende fabrikanten van het A4988-stuurprogrammabord zijn. Hier is een demonstratie van mijn geval:ik heb de potentiometer aangepast en de referentiespanning van 0,6 V gemeten. Dus de stroombegrenzing zou die waarde van 0,6*2 moeten zijn, gelijk aan 1,2 A.

Omdat ik nu de driver in de volledige stapmodus gebruik en volgens het A4988-gegevensblad in deze modus de wikkelstroom slechts 70% van de huidige limiet zou kunnen bereiken, zou de 1,2 A * 0,7 gelijk zijn aan 0,84 A. Om dit te controleren heb ik een eenvoudige code geüpload die continue logica hoog naar de Step-pin stuurt (zodat we de stroom beter kunnen opmerken) en heb ik mijn meter in serie geschakeld met één wikkeling van de motor en ingeschakeld. Wat ik kreeg was 0,5 A, wat betekent dat de vergelijking niet correct was voor mijn geval.

Arduino- en A4988-code

Hier is een voorbeeldcode. Eerst moeten we de stap- en richtingspinnen definiëren. In ons geval zijn dit de pinnen nummer 3 en 4 op het Arduino-bord en ze heten stepPin en dirPin en in de setup-sectie moeten we ze definiëren als uitgangen.

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */

// defines pins numbers
const int stepPin = 3; 
const int dirPin = 4; 
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH); 
    delayMicroseconds(500); 
    digitalWrite(stepPin,LOW); 
    delayMicroseconds(500); 
  }
  delay(1000); // One second delay
  
  digitalWrite(dirPin,LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for(int x = 0; x < 400; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}
Code language: Arduino (arduino)

In het lusgedeelte zullen we eerst de richtingspin op hoge stand zetten, waardoor de motor in een bepaalde richting kan bewegen. Nu we deze for-lus gebruiken, laten we de motor één volledige cyclusomwenteling maken. Omdat de driver is ingesteld op de volledige stapmodus en onze stappenmotor een staphoek van 1,8 graden heeft, of 200 stappen, moeten we 200 pulsen naar de stappen sturen om een ​​volledige cyclusrotatie te maken. Dus de for-lus heeft 200 iteraties en elke keer wordt de Step-pin op hoge en vervolgens op lage status gezet voor het maken van de pulsen. Tussen elke digitalWrite moeten we wat vertraging toevoegen waarvan de snelheid van de motor zal afhangen.

Na deze volledige cyclusrotatie maken we een seconde vertraging, veranderen dan de draairichting door de dirPin op een lage stand te zetten en maken nu 2 volledige cyclusrotaties met deze lus van 400 iteraties. Aan het einde is er nog een seconde vertraging. Laten we nu de code uploaden en kijken hoe het zal werken.

Ik heb nog een voorbeeld gemaakt voor deze tutorial, waarbij ik de snelheid van de motor regel met een potentiometer. Hier is de broncode van dat voorbeeld:

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4; 

int customDelay,customDelayMapped; // Defines variables
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
 
  digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
}
void loop() {
  
  customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
  // Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(customDelayMapped);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
  int customDelay = analogRead(A0); // Reads the potentiometer
  int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
  return newCustom;  
}Code language: Arduino (arduino)

Productieproces

  1. Bedien muntvangers met Arduino
  2. Arduino met Bluetooth om een ​​LED te bedienen!
  3. Arduino Nano:bedien 2 stappenmotoren met joystick
  4. Besturing van servomotor met Arduino en MPU6050
  5. De temperatuur en vochtigheid op Blynk aflezen met DHT11
  6. Muziek maken met een Arduino
  7. Autobesturing met Arduino Uno en Bluetooth
  8. Modbus gebruiken met Arduino
  9. Rijden met 28BYJ-48 stappenmotorbesturing met joystick
  10. AI-assistentrobot met Arduino en Python
  11. Slimme thermostaat, lucht- en verlichtingsregeling met Bluetooth