Inhoudsopgave:

Arduino: Precision Lib voor stappenmotor - Ajarnpa
Arduino: Precision Lib voor stappenmotor - Ajarnpa

Video: Arduino: Precision Lib voor stappenmotor - Ajarnpa

Video: Arduino: Precision Lib voor stappenmotor - Ajarnpa
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juli-
Anonim
Image
Image
Globale variabelen
Globale variabelen

Vandaag zal ik je een bibliotheek laten zien voor een volledige stappenmotorbestuurder met eindschakelaars en motorbeweging met versnelling en microstap. Met deze Lib, die zowel op de Arduino Uno als de Arduino Mega werkt, kun je de motoren niet alleen op basis van het aantal stappen, maar ook op millimeters verplaatsen. En het is ook behoorlijk nauwkeurig.

Een belangrijk kenmerk van deze bibliotheek is dat je je eigen CNC-machine kunt bouwen, wat niet alleen de X, Y is, maar ook een sectieschakelaar, bijvoorbeeld omdat het geen kant-en-klare GRBL is, maar eerder de programmering die stelt u in staat om de ideale machine voor u te maken.

De volgende verklaring is echter een belangrijk detail! Deze video is alleen voor degenen die al gewend zijn aan programmeren. Als je niet bekend bent met Arduino-programmering, moet je eerst andere, meer inleidende video's op mijn kanaal bekijken. Dit komt omdat ik in deze specifieke video een geavanceerd onderwerp bespreek en in meer detail de Lib die in de video wordt gebruikt, uitleg: Stappenmotor met versnelling en einde van de slag.

Stap 1: StepDriver-bibliotheek

Deze bibliotheek omvat de drie meest voorkomende typen stuurprogramma's op de markt: A4988, DRV8825 en TB6600. Het configureert de pinnen van de stuurprogramma's, waardoor ze de reset en plaatsing in de slaapmodus kunnen uitvoeren, en de motoruitgangen die op de activeringspin werken kunnen activeren en deactiveren. Het stelt ook de ingangen van de microstappennen van de driver in en begrenst schakelaars en hun activeringsniveau (hoog of laag). Het heeft ook motorbewegingscode met continue versnelling in mm / s², maximale snelheid in mm / s en minimale snelheid in mm / s.

Voor degenen die deel 1 en 2 van de video Step Motor with Acceleration and End of Stroke hebben bekeken, download deze nieuwe bibliotheek die vandaag beschikbaar is, want ik heb enkele wijzigingen aangebracht in dat eerste bestand om het gebruik ervan te vergemakkelijken.

Stap 2: Globale variabelen

Ik laat precies zien waar elk van de globale variabelen voor is.

Stap 3: Functies - De driverpinnen instellen

Functies - Instellen van de driverpinnen
Functies - Instellen van de driverpinnen

Hier beschrijf ik enkele methoden.

Ik heb de Pinout-instelling en de Arduino-pinnen als uitvoer ingesteld.

Stap 4: Functies - Basisfuncties van het stuurprogramma

Functies - Basisfuncties van het stuurprogramma
Functies - Basisfuncties van het stuurprogramma

In dit deel werken we met de configuratie van de driver en zijn basisfuncties.

Stap 5: Functies - Instelling motorstap

Functies - Instelling motorstap
Functies - Instelling motorstap
Functies - Instelling motorstap
Functies - Instelling motorstap

In deze stap van de code configureren we het aantal stappen per millimeter dat de motor moet uitvoeren.

Stap 6: Functies - De motorstapmodus instellen

Functies - De motorstapmodus instellen
Functies - De motorstapmodus instellen
Functies - De motorstapmodus instellen
Functies - De motorstapmodus instellen
Functies - De motorstapmodus instellen
Functies - De motorstapmodus instellen

Deze tabel toont de instellingen voor de motorstapmodus. Hier zijn enkele voorbeelden.

Stap 7: Functies - De eindschakelaars instellen

Functies - Instellen van de eindschakelaars
Functies - Instellen van de eindschakelaars

Hier moet ik de hele en booleaanse waarden lezen. Het is noodzakelijk om in te stellen of de actieve sleutel omhoog of omlaag is, terwijl u de maximum- en minimumlimiet-eindpin instelt.

Stap 8: Functies - Uitlezen van eindschakelaars

Functies - Uitlezen van eindschakelaars
Functies - Uitlezen van eindschakelaars
Functies - Uitlezen van eindschakelaars
Functies - Uitlezen van eindschakelaars
Functies - Uitlezen van eindschakelaars
Functies - Uitlezen van eindschakelaars

Dit deel is anders dan het deel in de Lib dat ik vorige week beschikbaar heb gesteld. Waarom heb ik het veranderd? Welnu, ik heb eRead gemaakt om enkele anderen te vervangen. Hier leest de eRead de LVL, de digitalRead (pin) en retourneert TRUE. Dit alles moet op hoog niveau worden uitgevoerd. Het volgende werk met de actieve sleutel zal op het lage niveau zijn. Ik zal het hier gebruiken om je de "Truth"-tabel te laten zien.

In de afbeelding van de code heb ik een diagram geplaatst dat zal helpen om te begrijpen dat ik in dit deel van de broncode op weg ben naar Ascending en nog niet de einde-natuurlijk-toets heb bereikt.

Nu, in deze afbeelding os code bool DRV8825, laat ik zien dat de motor nog steeds in de groeirichting beweegt. De maximale eindschakelaar is echter geactiveerd. Het mechanisme moet dan de beweging stoppen.

Als laatste laat ik dezelfde beweging zien, maar in de tegenovergestelde richting.

Hier heb je de eindeloopschakelaar al geactiveerd.

Stap 9: Functies - Bewegingsinstelling

Functies - Bewegingsinstelling
Functies - Bewegingsinstelling

Het belangrijkste nut van de motionConfig-methode is om millimeter per seconde (een meting die wordt gebruikt in CNC-machines) om te zetten in stappen, om te voldoen aan de controller van een stappenmotor. Het is daarom in dit deel dat ik de variabelen concretiseer om de stappen te begrijpen en niet de millimeters.

Stap 10: Functies - Bewegingsfunctie

Functies - Bewegingsfunctie
Functies - Bewegingsfunctie

In deze stap behandelen we het commando dat een stap in de gewenste richting zet in een periode in microseconden. We stellen ook de richtingspin van de bestuurder, de vertragingstijd en de richting van de eindschakelaars in.

Stap 11: Functies - Bewegingsfunctie - Variabelen

Functies - Bewegingsfunctie - Variabelen
Functies - Bewegingsfunctie - Variabelen

In dit deel configureren we alle variabelen die onder andere betrekking hebben op perioden van maximale en minimale snelheid, afstand van het traject en stappen die nodig zijn om het traject te onderbreken.

Stap 12: Functies - Bewegingsfunctie - Versnelling

Functies - Beweging Functie - Acceleratie
Functies - Beweging Functie - Acceleratie
Functies - Beweging Functie - Acceleratie
Functies - Beweging Functie - Acceleratie

Hier presenteer ik enkele details over hoe we tot de versnellingsgegevens zijn gekomen, die werden berekend met de vergelijking van Torricelli, omdat dit rekening houdt met de ruimtes om de versnelling te bewerken en niet de tijd. Maar het is hier belangrijk om te begrijpen dat deze hele vergelijking slechts over één regel code gaat.

We identificeerden een trapeze in de afbeelding hierboven, omdat de initiële RPM's slecht zijn voor de meeste stappenmotoren. Hetzelfde gebeurt met de vertraging. Hierdoor visualiseren we een trapezium in de periode tussen versnelling en vertraging.

Stap 13: Functies - Bewegingsfunctie - Continue snelheid

Functies - Bewegingsfunctie - Continue snelheid
Functies - Bewegingsfunctie - Continue snelheid
Functies - Bewegingsfunctie - Continue snelheid
Functies - Bewegingsfunctie - Continue snelheid

Hier houden we het aantal stappen dat bij de acceleratie is gebruikt, we gaan door in continue snelheid en houden ons aan de maximale snelheid, die te zien is in de onderstaande afbeelding.

Stap 14: Functies - Bewegingsfunctie - Vertraging

Functies - Beweging Functie - Vertraging
Functies - Beweging Functie - Vertraging
Functies - Beweging Functie - Vertraging
Functies - Beweging Functie - Vertraging

Hier hebben we nog een vergelijking, deze keer met een negatieve versnellingswaarde. Het wordt ook weergegeven in een regel code, die in de onderstaande afbeelding de rechthoek met het label Deceleration voorstelt.

Stap 15: Functies - Bewegingsfunctie - Continue snelheid

Functies - Bewegingsfunctie - Continue snelheid
Functies - Bewegingsfunctie - Continue snelheid
Functies - Bewegingsfunctie - Continue snelheid
Functies - Bewegingsfunctie - Continue snelheid

We keren terug naar continue snelheid om de tweede helft van het traject te bewerken, zoals hieronder te zien is.

Stap 16: Functies - Verplaatsingsfunctie - Verplaats beurten

Functies - Verplaatsingsfunctie - Verplaats beurten
Functies - Verplaatsingsfunctie - Verplaats beurten

In dit deel verplaatsen we de motor in een bepaald aantal omwentelingen in de gewenste richting, waarbij het aantal omwentelingen in millimeters wordt omgezet. Ten slotte bewegen we de motor in de gewenste richting.

Stap 17: Bewegingsgrafiek - Positiesnelheid

Bewegingsgrafiek - Positiesnelheid
Bewegingsgrafiek - Positiesnelheid

In deze grafiek heb ik gegevens die zijn geëxtraheerd uit de vergelijking die we in het deel van Versnelling hebben gebruikt. Ik nam de waarden en speelde op de Arduino-serie, en ik ging van dit naar Excel, wat resulteerde in deze tabel. Deze tabel toont de voortgang van de stap.

Stap 18: Bewegingsgrafiek - Positie vs. Positie

Bewegingsgrafiek - Positie vs. Positie
Bewegingsgrafiek - Positie vs. Positie

Hier nemen we de positie, in stappen, en de snelheid en converteren deze naar periode, in microseconden. We merken in deze stap op dat de periode omgekeerd evenredig is met de snelheid.

Stap 19: Motion Chart - Velocity Vs. Moment

Bewegingsgrafiek - Snelheid vs. Moment
Bewegingsgrafiek - Snelheid vs. Moment

Ten slotte hebben we de snelheid als functie van het moment, en daardoor hebben we een rechte lijn, want het is de snelheid als functie van de tijd.

Aanbevolen: