Innehållsförteckning:

Arduino: Precision Lib för stegmotor: 19 steg
Arduino: Precision Lib för stegmotor: 19 steg

Video: Arduino: Precision Lib för stegmotor: 19 steg

Video: Arduino: Precision Lib för stegmotor: 19 steg
Video: Using BTS7960 BTN8982TA PWM H Bridge motor controller module with Arduino library 2024, November
Anonim
Image
Image
Globala variabler
Globala variabler

Idag kommer jag att visa dig ett bibliotek för en fullstegsmotorförare med gränslägesbrytare och motorrörelse med acceleration och mikrosteg. Denna Lib, som fungerar på både Arduino Uno och Arduino Mega, låter dig flytta motorerna inte bara baserat på antalet steg, utan också på millimeter. Och det är ganska exakt också.

En viktig egenskap hos detta bibliotek är att det låter dig bygga din egen CNC -maskin, vilket inte nödvändigtvis bara är X, Y, utan också en sektionsomkopplare, till exempel eftersom det inte är en klar GRBL, utan snarare den programmering som låter dig göra den perfekta maskinen för dig.

Men följande uttalande är en viktig detalj! Denna video är bara för dem som redan är vana vid programmering. Om du inte är bekant med Arduino -programmering bör du först titta på andra mer introduktionsvideor på min kanal. Detta beror på att jag diskuterar ett avancerat ämne i den här specifika videon och förklarar mer detaljerat Lib som används i videon: Stegmotor med acceleration och slut på slag.

Steg 1: StepDriver -bibliotek

Detta bibliotek täcker de tre vanligaste förartyperna på marknaden: A4988, DRV8825 och TB6600. Den konfigurerar förarnas stiften, så att de kan utföra återställningen och placeringen i viloläge, samt aktivera och inaktivera motorutgångarna som verkar på aktiveringsstiftet. Den ställer också in ingångarna för föraren med mikrosteg och begränsar omkopplare och deras aktiveringsnivå (hög eller låg). Den har också motorrörelsekod med kontinuerlig acceleration i mm / s², maximal hastighet i mm / s och minsta hastighet i mm / s.

För dem som tittade på del 1 och 2 i videon Step Motor with Acceleration and End of Stroke, ladda ner det här nya biblioteket som finns tillgängligt idag, eftersom jag gjorde några ändringar i den första filen för att underlätta dess användning.

Steg 2: Globala variabler

Jag visar exakt vad var och en av de globala variablerna är till för.

Steg 3: Funktioner - Ställa in drivrutinstiften

Funktioner - Ställa in drivrutinstiften
Funktioner - Ställa in drivrutinstiften

Här beskriver jag några metoder.

Jag ställde in Pinout -inställningen och Arduino -stiften som utgång.

Steg 4: Funktioner - Grundläggande funktioner för föraren

Funktioner - Grundläggande funktioner för föraren
Funktioner - Grundläggande funktioner för föraren

I denna del arbetar vi med konfigurationen av drivrutinen och dess grundläggande funktioner.

Steg 5: Funktioner - Motorstegsinställning

Funktioner - Motorstegsinställning
Funktioner - Motorstegsinställning
Funktioner - Motorstegsinställning
Funktioner - Motorstegsinställning

I detta steg i koden konfigurerar vi mängden steg per millimeter som motorn måste utföra.

Steg 6: Funktioner - Ställa in motorstegsläget

Funktioner - Ställa in motorstegsläget
Funktioner - Ställa in motorstegsläget
Funktioner - Ställa in motorstegsläget
Funktioner - Ställa in motorstegsläget
Funktioner - Ställa in motorstegsläget
Funktioner - Ställa in motorstegsläget

Denna tabell visar inställningarna för motorstegsläget. Här är några exempel.

Steg 7: Funktioner - Inställning av gränslägesbrytare

Funktioner - Inställning av gränslägesbrytare
Funktioner - Inställning av gränslägesbrytare

Här måste jag läsa hela och booleska värden. Det är nödvändigt att ställa in om den aktiva nyckeln är uppåt eller nedåt, samtidigt som max- och minimigränsens slutpinne ställs in.

Steg 8: Funktioner - Läsning av gränslägesbrytare

Funktioner - Läsning av gränslägesbrytare
Funktioner - Läsning av gränslägesbrytare
Funktioner - Läsning av gränslägesbrytare
Funktioner - Läsning av gränslägesbrytare
Funktioner - Avläsning av gränslägesbrytare
Funktioner - Avläsning av gränslägesbrytare

Den här delen skiljer sig från den i Lib som jag gjorde tillgänglig förra veckan. Varför ändrade jag det? Jag skapade eRead för att ersätta några andra. Här kommer eRead att läsa LVL, digitalRead (pin) och returnera TRUE. Allt detta måste utföras på hög. Följande arbete med den aktiva nyckeln kommer att ligga på den låga nivån. Jag använder den här för att visa tabellen "Sanning".

I bilden av koden placerade jag ett diagram som hjälper till att förstå att i denna del av källkoden går jag mot stigande och har ännu inte träffat slutet på kursen.

Nu, i denna bild os kod bool DRV8825, visar jag att motorn fortfarande rör sig i växande riktning. Den maximala gränslägesbrytaren är dock aktiverad. Mekanismen måste alltså stoppa rörelsen.

Till sist visar jag samma rörelse, men i motsatt riktning.

Här har du redan kursen för slutkurs aktiverad.

Steg 9: Funktioner - Rörelseinställning

Funktioner - Rörelseinställning
Funktioner - Rörelseinställning

MotionConfig -metodens huvudsakliga nytta är att konvertera millimeter per sekund (en mätning som används i CNC -maskiner) till steg för att möta styrenheten för en stegmotor. Det är därför i denna del som jag instansierar variablerna för att förstå stegen och inte millimeterna.

Steg 10: Funktioner - rörelsefunktion

Funktioner - rörelsefunktion
Funktioner - rörelsefunktion

I detta steg behandlar vi kommandot som rör ett steg i önskad riktning under en period i mikrosekunder. Vi ställer också in förarens riktningsstift, fördröjningstid och riktning för gränslägesbrytare.

Steg 11: Funktioner - rörelsefunktion - variabler

Funktioner - Rörelsefunktion - Variabler
Funktioner - Rörelsefunktion - Variabler

I den här delen konfigurerar vi alla variabler som innefattar perioder med maximal och minsta hastighet, banans avstånd och steg som är nödvändiga för att bland annat avbryta banan.

Steg 12: Funktioner - rörelsefunktion - acceleration

Funktioner - rörelsefunktion - acceleration
Funktioner - rörelsefunktion - acceleration
Funktioner - rörelsefunktion - acceleration
Funktioner - rörelsefunktion - acceleration

Här presenterar jag några detaljer om hur vi kom fram till accelerationsdata, som beräknades genom Torricellis ekvation, eftersom detta tar hänsyn till utrymmena för att arbeta accelerationen och inte tiden. Men det är viktigt här att förstå att hela denna ekvation bara handlar om bara en kodrad.

Vi identifierade en trapez i bilden ovan, eftersom de första varvtalen är dåliga för de flesta stegmotorer. Samma sak händer med retardationen. På grund av detta visualiserar vi en trapets under perioden mellan acceleration och retardation.

Steg 13: Funktioner - Rörelsefunktion - Kontinuerlig hastighet

Funktioner - Rörelsefunktion - Kontinuerlig hastighet
Funktioner - Rörelsefunktion - Kontinuerlig hastighet
Funktioner - Rörelsefunktion - Kontinuerlig hastighet
Funktioner - Rörelsefunktion - Kontinuerlig hastighet

Här behåller vi antalet steg som används i accelerationen, vi fortsätter i kontinuerlig hastighet och håller med den maximala hastigheten, som kan ses på bilden nedan.

Steg 14: Funktioner - Rörelsefunktion - Retardation

Funktioner - Rörelsefunktion - Retardation
Funktioner - Rörelsefunktion - Retardation
Funktioner - Rörelsefunktion - Retardation
Funktioner - Rörelsefunktion - Retardation

Här har vi en annan ekvation, denna gång med ett negativt accelerationsvärde. Det visas också i en kodrad, som i bilden nedan representerar rektangeln märkt Retardation.

Steg 15: Funktioner - Rörelsefunktion - Kontinuerlig hastighet

Funktioner - Rörelsefunktion - Kontinuerlig hastighet
Funktioner - Rörelsefunktion - Kontinuerlig hastighet
Funktioner - Rörelsefunktion - Kontinuerlig hastighet
Funktioner - Rörelsefunktion - Kontinuerlig hastighet

Vi återgår till kontinuerlig hastighet för att arbeta andra halvan av banan, enligt nedan.

Steg 16: Funktioner - Flytta funktion - Flytta svängar

Funktioner - Flytta funktion - Flytta svängar
Funktioner - Flytta funktion - Flytta svängar

I denna del flyttar vi motorn i ett visst antal varv i önskad riktning och omvandlar antalet varv i millimeter. Slutligen flyttar vi motorn i önskad riktning.

Steg 17: Rörelsediagram - positionshastighet

Rörelsediagram - positionshastighet
Rörelsediagram - positionshastighet

I den här grafen har jag data som extraherades från ekvationen som vi använde i delen Acceleration. Jag tog värdena och spelade på Arduino -serien, och jag gick från detta till Excel, vilket resulterade i den här tabellen. Denna tabell visar stegets framsteg.

Steg 18: Rörelsediagram - Position Vs. Placera

Rörelsediagram - Position Vs. Placera
Rörelsediagram - Position Vs. Placera

Här tar vi positionen, i steg, och hastigheten och omvandlar den till period, i mikrosekund. Vi noterar i detta steg att perioden är omvänt proportionell mot hastighet.

Steg 19: Rörelsediagram - Velocity Vs. Ögonblick

Rörelsediagram - Velocity Vs. Ögonblick
Rörelsediagram - Velocity Vs. Ögonblick

Slutligen har vi hastigheten som funktion av ögonblicket, och på grund av detta har vi en rak linje, eftersom det är hastigheten som en funktion av tiden.

Rekommenderad: