Arduino – Stegmotorstyrning

OBS: Den här lektionen är under uppbyggnad!

Här följer lite information om hur en stegmotor fungerar och hur man kan styra den med Arduino. Det finns ett antal olika typer av stegmotorer (olika antal lindningar, anslutningsledare, unipolära, bipolära osv.), men de vi skall titta på här i denna lektion är de som går under begreppet bipolära. De har 2 lindningar och 4 anslutningsledare, se bild nedan (kommer inom kort).

Vid bipolär styrning drivs strömmen i lindningarna i båda riktningarna och det innebär att motorn kan utnyttjas till max då det går ström i båda lindningarna. När man tittar på databladet på en stegmotor så kanske det står att de är avsedda för t.ex. 3.9V och då kanske man funderar måste jag ha exakt den spänningen för att styra stegmotorn, svaret är nej. Ser man vidare i databladet ser man att resistansen i varje lindning är t.ex. 6.5ohm och att max ström i en lindning är 600mA. Det finns även en induktans i lindningen, t.ex. 1.7mH. Med Ohms lag U=R*I får man att U = 6.5 * 0.6 = 3.9V. Förr styrde man stegmotorer med exakt spänning (spänningsstyrd) och strömmen blev då det som den var avsedd för, men problemet med detta är att strömmen hinner inte bli hög direkt på grund av induktansen som lindningen har. Detta innebär att motorn blir svagare och kommer inte upp i det märkmoment den har. Innan lindningen har full ström är det dags för att strömsätta nästa lindning osv.

Så idag strömstyr man stegmotorer och för mycket bättre vridmoment och snabbhet. Vid strömstyrning kan du mata motorn med högre spänning, t.ex. 10-12VDC om den är avsedd för 3.9-7.2V och de intelligenta styrkretsarna som finns idag tar hand om att mata ut rätt ström (konstant) från första början, detta gör att lindningen strömsätts till max direkt.

Man kan styra en stegmotor med enkla H-bryggor, men då får man ta hand om all reglering själv och det kan vara tidskrävande och det stjäl mer IO från mikroprocessorn, ett exempel på en sådan styrning är Stepper/Motor/Servo Shield från Adafruit som är ett bra och billigt kort, men den saknar en intelligent stegmotordrivkrets som de från Pololu och Sparkfun. Men Adafruit har ett mycket trevligt LIB för deras kort så vill man snabbt komma igång kan detta vara ett mycket bra Shield-kort. Men de vi skall titta på är de från Pololu och de finns ett antal kort som de har, men det vi skall använda är POL-1182. Ett enkelt kort som kan matas med 8-32V och leverera upp till 2A per lindning. Vid högre strömmar bör man använda en kylfläns för att avleda värmen från styrkretsen. Dessa styrkort kräver endast en utgång för riktning samt en utgång för puls (man kan använda fler IO för att kontrollera mikrostegning osv.). Nedan är en liten film om projektet (vi kommer att ladda upp den i bättre upplösning inom kort)

Något man måste tänka på innan man kopplar upp detta är att se till att justera in maxströmmen som drivkortet skall använda till den stegmotor man valt. På drivkortet finns en potentiometer, börja med att vrida den helt moturs, sedan öka tills man får den ström som stegmotorn skall ha. Man kan mäta detta på olika sätt, dels genom att möta lindningsströmmen (inte strömmen som man matar kortet med) eller så kan man mäta en spänning och se vad det innebär för ström (mer info kommer inom kort).

Vad behöver jag för att laborera med detta projekt:

POL-1182 Pololu A4988 Stepper Motor Driver (eller liknande)

Stegmotor, den vi använder är POL-1208, en enkel NEMA14 storlek.

Terminalprogram, vi rekommenderar Terminal by Bray. Fungerar inte med det enkla som finns med i Arduino IDE. Ställ in programmet för 9600baud. All text som man skriver till Arduinokortet ekas tillbaka. Tänk på att du inte kan ha denna uppkopplad mor Arduinokortet samtidigt som du laddar ner kod.

Arduinokod för detta projekt kan du ladda ner här.

OBS: Lektionen är under uppbyggnad, mer info kommer inom kort. Senast uppdaterad 2016-02-14