Innholdsfortegnelse:

Arduino: Precision Lib for trinnmotor: 19 trinn
Arduino: Precision Lib for trinnmotor: 19 trinn

Video: Arduino: Precision Lib for trinnmotor: 19 trinn

Video: Arduino: Precision Lib for trinnmotor: 19 trinn
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Image
Image
Globale variabler
Globale variabler

I dag vil jeg vise deg et bibliotek for en motor med full trinn med grensebrytere og motorbevegelse med akselerasjon og mikrotrinn. Denne Lib, som fungerer på både Arduino Uno og Arduino Mega, lar deg flytte motorene ikke bare basert på antall trinn, men også på millimeter. Og det er ganske nøyaktig også.

Et viktig trekk ved dette biblioteket er at det lar deg bygge din egen CNC -maskin, som ikke nødvendigvis bare er X, Y, men også en seksjonsbryter, for eksempel fordi den ikke er en klar GRBL, men heller programmeringen som lar deg lage den ideelle maskinen for deg.

Imidlertid er følgende uttalelse en viktig detalj! Denne videoen er bare for de som allerede er vant til å programmere. Hvis du ikke er kjent med Arduino -programmering, bør du først se andre mer introduksjonsvideoer på kanalen min. Dette er fordi jeg diskuterer et avansert emne i denne spesifikke videoen, og forklarer mer detaljert Lib som ble brukt i videoen: Step Motor with Acceleration and End of Stroke.

Trinn 1: StepDriver Library

Dette biblioteket dekker de tre vanligste driver -typene på markedet: A4988, DRV8825 og TB6600. Den konfigurerer pinnene til driverne, slik at de kan utføre tilbakestillingen og plasseringen i hvilemodus, samt aktivere og deaktivere motorutgangene som virker på aktiveringsnålen. Det angir også inngangene til mikrotrinnpinnene til driveren, og begrenser brytere og deres aktiveringsnivå (høyt eller lavt). Den har også motorbevegelseskode med kontinuerlig akselerasjon i mm / s², maksimal hastighet i mm / s og minimumshastighet i mm / s.

For de som så på del 1 og 2 av videoen Step Motor with Acceleration and End of Stroke, last ned dette nye biblioteket som er tilgjengelig i dag, fordi jeg gjorde noen endringer i den første filen for å lette bruken.

Trinn 2: Globale variabler

Jeg viser nøyaktig hva hver av de globale variablene er til for.

Trinn 3: Funksjoner - Angi driverpinnene

Funksjoner - Stille inn driverpinnene
Funksjoner - Stille inn driverpinnene

Her beskriver jeg noen metoder.

Jeg satte Pinout -innstillingen og Arduino -pinnene som utgang.

Trinn 4: Funksjoner - grunnleggende funksjoner for sjåføren

Funksjoner - grunnleggende funksjoner for sjåføren
Funksjoner - grunnleggende funksjoner for sjåføren

I denne delen arbeider vi med konfigurasjonen av driveren og dens grunnleggende funksjoner.

Trinn 5: Funksjoner - Motor trinninnstilling

Funksjoner - Motor trinninnstilling
Funksjoner - Motor trinninnstilling
Funksjoner - Motor trinninnstilling
Funksjoner - Motor trinninnstilling

I dette trinnet i koden konfigurerer vi mengden trinn per millimeter som motoren må utføre.

Trinn 6: Funksjoner - Innstilling av motortrinnmodus

Funksjoner - Innstilling av motortrinnmodus
Funksjoner - Innstilling av motortrinnmodus
Funksjoner - Innstilling av motortrinnmodus
Funksjoner - Innstilling av motortrinnmodus
Funksjoner - Innstilling av motortrinnmodus
Funksjoner - Innstilling av motortrinnmodus

Denne tabellen viser innstillingene for motortrinnmodus. Her er noen eksempler.

Trinn 7: Funksjoner - Innstilling av grensebryterne

Funksjoner - Innstilling av grensebryterne
Funksjoner - Innstilling av grensebryterne

Her må jeg lese hele og boolske verdier. Det er nødvendig å angi om den aktive tasten er opp eller ned, mens du angir maks- og minimumsgrensen for endepinne.

Trinn 8: Funksjoner - Lesing av grensebrytere

Funksjoner - Avlesning av grensebrytere
Funksjoner - Avlesning av grensebrytere
Funksjoner - Avlesning av grensebrytere
Funksjoner - Avlesning av grensebrytere
Funksjoner - Avlesning av grensebrytere
Funksjoner - Avlesning av grensebrytere

Denne delen er forskjellig fra den i Lib som jeg gjorde tilgjengelig forrige uke. Hvorfor endret jeg det? Vel, jeg opprettet eRead for å erstatte noen andre. Her vil eRead lese LVL, digitalRead (pin), og vil returnere TRUE. Alt dette må utføres på høyden. Følgende arbeid med den aktive nøkkelen vil være på lavt nivå. Jeg vil bruke den her til å vise deg "Sannhet" -tabellen.

I bildet av koden plasserte jeg et diagram som vil hjelpe i forståelsen av at jeg i denne delen av kildekoden beveger meg mot stigende og ennå ikke har nådd slutten av kurs -tasten.

Nå, i dette bildet os kode bool DRV8825, viser jeg motoren som fremdeles beveger seg i den voksende retningen. Maksimal grensebryter er imidlertid aktivert. Mekanismen må da stoppe bevegelsen.

Til slutt viser jeg den samme bevegelsen, men i motsatt retning.

Her har du allerede sluttkursbryteren aktivert.

Trinn 9: Funksjoner - Bevegelsesoppsett

Funksjoner - Bevegelsesoppsett
Funksjoner - Bevegelsesoppsett

Hovedverktøyet til motionConfig -metoden er å konvertere millimeter per sekund (en måling som brukes i CNC -maskiner) til trinn for å møte kontrolleren til en trinnmotor. Det er derfor i denne delen jeg instanser variablene for å forstå trinnene og ikke millimeterne.

Trinn 10: Funksjoner - Bevegelsesfunksjon

Funksjoner - Bevegelsesfunksjon
Funksjoner - Bevegelsesfunksjon

I dette trinnet behandler vi kommandoen som beveger et trinn i ønsket retning i en periode i mikrosekunder. Vi stiller også inn førerens retningspinne, forsinkelsestid og retning for grensebrytere.

Trinn 11: Funksjoner - Bevegelsesfunksjon - Variabler

Funksjoner - Bevegelsesfunksjon - Variabler
Funksjoner - Bevegelsesfunksjon - Variabler

I denne delen konfigurerer vi alle variablene som inkluderer perioder med maksimal og minimumshastighet, banens avstand og trinn som er nødvendige for å avbryte banen, blant andre.

Trinn 12: Funksjoner - Bevegelsesfunksjon - Akselerasjon

Funksjoner - Bevegelsesfunksjon - Akselerasjon
Funksjoner - Bevegelsesfunksjon - Akselerasjon
Funksjoner - Bevegelsesfunksjon - Akselerasjon
Funksjoner - Bevegelsesfunksjon - Akselerasjon

Her presenterer jeg noen detaljer om hvordan vi kom frem til akselerasjonsdataene, som ble beregnet gjennom Torricellis ligning, siden dette tar hensyn til mellomrommene for å arbeide akselerasjonen og ikke tiden. Men det er viktig her å forstå at hele denne ligningen bare handler om bare en kodelinje.

Vi identifiserte en trapez i bildet ovenfor, fordi de første turtallene er dårlige for de fleste trinnmotorer. Det samme skjer med retardasjonen. På grunn av dette visualiserer vi et trapes i perioden mellom akselerasjon og retardasjon.

Trinn 13: Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet

Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet
Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet
Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet
Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet

Her beholder vi antall trinn som brukes i akselerasjonen, vi fortsetter i kontinuerlig hastighet og holder med maksimal hastighet, som kan sees på bildet nedenfor.

Trinn 14: Funksjoner - Bevegelsesfunksjon - Retardasjon

Funksjoner - Bevegelsesfunksjon - Retardasjon
Funksjoner - Bevegelsesfunksjon - Retardasjon
Funksjoner - Bevegelsesfunksjon - Retardasjon
Funksjoner - Bevegelsesfunksjon - Retardasjon

Her har vi en annen ligning, denne gangen med en negativ akselerasjonsverdi. Den vises også i en kodelinje, som i bildet nedenfor representerer rektangelet merket Deceleration.

Trinn 15: Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet

Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet
Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet
Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet
Funksjoner - Bevegelsesfunksjon - Kontinuerlig hastighet

Vi går tilbake til kontinuerlig hastighet for å arbeide andre halvdel av banen, som vist nedenfor.

Trinn 16: Funksjoner - Flyttefunksjon - Flytt svinger

Funksjoner - Flyttefunksjon - Flyttesving
Funksjoner - Flyttefunksjon - Flyttesving

I denne delen beveger vi motoren i et visst antall omdreininger i ønsket retning, og konverterer antall omdreininger i millimeter. Til slutt flytter vi motoren i ønsket retning.

Trinn 17: Bevegelseskart - Posisjonshastighet

Bevegelseskart - Posisjonshastighet
Bevegelseskart - Posisjonshastighet

I denne grafen har jeg data som ble trukket ut fra ligningen som vi brukte i delen av akselerasjon. Jeg tok verdiene og spilte på Arduino -serien, og jeg gikk fra dette til Excel, noe som resulterte i denne tabellen. Denne tabellen viser fremdriften i trinnet.

Trinn 18: Bevegelseskart - Posisjon Vs. Posisjon

Bevegelseskart - Posisjon Vs. Posisjon
Bevegelseskart - Posisjon Vs. Posisjon

Her tar vi posisjonen, i trinn, og hastigheten og konverterer den til periode, i mikrosekund. Vi merker i dette trinnet at perioden er omvendt proporsjonal med hastigheten.

Trinn 19: Bevegelseskart - Velocity vs. Øyeblikk

Bevegelseskart - Velocity Vs. Øyeblikk
Bevegelseskart - Velocity Vs. Øyeblikk

Til slutt har vi hastigheten som en funksjon av øyeblikket, og på grunn av dette har vi en rett linje, siden det er hastigheten som en funksjon av tiden.

Anbefalt: