Stepmotor

Fra Kommunikation-IT Holstebro HTX
Skift til: Navigation, Søgning

Indholdsfortegnelse

Moduler til stepmotorer, der skal tilsluttes PIC-en skrevet i JAL

Der findes flere forskellige typer stepmotorer, men de to der typisk bruges i dag er den Bi-polare og den Uni-polare.

Det er den samme software til både den bi-polare stepmotor og den den uni-polare stepmotor og den ligger i en JAL-version pakket i en zip-fil

Der ligger også en C-version pakket i en zip-fil, den er godt nok ikke testet.
I C-versionen kan man ved hjælp af compilerdirectiver (#define) vælge hvilken type styring man bruger (beskrives længere nede på siden).

Gennemgang af stepmotoren

En stepmotor er designet til at trække noget frem i små step - deraf navnet. Når man sætter strøm på en stepmotor vil den altså stå stille i en bestemt position. For at få den til at dreje skal man steppe den fremad.

Ankeret i en stepmotor består af en permanent magnet, der er forbundet til akslen på motoren.

Princippet i at få en stepmotor til at dreje rundt er, at man laver et magnetfelt ved hjælp af en spole, og det magnetfelt trækker ankeret hen i en position. Ved hjælp af en anden spole der sidder forskudt for den anden kan man trække ankeret hen i en ny position. Ved at vende strømmene i spolerne eller have flere spoler kan man trække ankeret videre, så motoren kommer til at dreje rundt.

Normal vil ankeret i en stepmotor indeholde mange magneter der ligger med et bestemt antal graders forskydning, så der kommer mange step på en omgang. Spolerne der trækker ankeret er så placeret så de trækker de tilsvarende step.

For at finde mere beskrivelse af stepmotorer henvises til www.cs.uiowa.edu/~jones/step/

Den bi-polare stepmotor

Den Bi-polare stepmotor har kun to viklinger, og de har ingen forbindelse med hinanden. Typen kan kendes på at der kun kommer 4 ledninger ud af motoren. En skitseret illustration af motoren kan se ud som følger:




Skitsen til den bipolare viser kun det principielle. Spolerne ser ud som på skitsen, men normalt vil der være mange flere poler i ankeret, men skitsen giver en god ide om hvordan styringen forgår.

Bi-polar stepmotor

Softwaren kan styre motoren på to forskellige måder. Som full-step vil der altid være spænding på begge spoler, og dermed er det den måde der holder bedst styr på motoren. Faserne kommer som følger:

Bi-full.gif

Med denne styringsmåde vil motoren i princippet have 4 step, men i praksis vil en omgang bestå af et multiplum af 4, f.x. 48 step.

Den anden styringsmåde er half-step, hvor der kommer dobbelt så mange step pr. omgang, men til gengæld er der tidspunkter hvor kun den ene vikling er tændt, hvilket gør at den heller ikke kan trække så meget, hvis man styrer den på denne måde. Faserne ser så ud som følger:

Bi-half.gif

Med denne styringsmåde vil motoren i princippet have 8 step, men i praksis vil en omgang bestå af et multiplum af 8, f.x. 96 step.

Den elektriske styring til den bi-polære stepmotor

Rent elektrisk er man nødt til at kunne vende spændingen på begge spoler uafhængigt, og ligeledes slukke spændingen, hvis man vil arbejde i halfstep. Man kan godt få færdige kredse der kan styre en motor, men det er heller ikke så kompliceret at lave det ved hjælp af transistorer. Opstillingen kaldes en H-bro, ud fra den måde de 4 transistorer og spolen sidder på.

H-bro.gif

Diagrammet er ikke færdiggjort. De 4 transistorer BD241 og BD242 skal være transistorer der kan klare den strøm der skal løbe i spolen, mens de andre transistorer blot skal kunne styre dem. Modstandene skal beregnes ud fra disse strømme.

En anden ting der mangler er en god stor kondensator koblet over forsyningen, hvis motoren trækker bare en minimal strøm.

Det kan også være praktisk, at motoren kan forsynes af en separat spændings-kilde, som måske endda skal have en anden spændings-værdi. Det vil kræve lidt ændringer i modstandsberegningerne.

Når motoren styres gøres det ved at sætte et højt niveau ind på enten IN_L eller IN_R, så enten Q2 og Q5 tændes eller at Q3 og Q6 tændes, så spolen får spænding enten i den ene retning eller i den anden.

Det er vigtigt at motoren styres korrekt, når man anvender en H-bro. Hvis man tænder både for IN_L og IN_R vil der ske det at alle transistorerne tænder og dermed vil de kortslutte forsyningen.

Den uni-polare stepmotor

Den uni-polare stepmotor har 4 viklinger, der sidder sammen to og to på samme anker, så de kan polarisere ankeret hver sin vej. Typen kan kendes på at der kommer 6 ledninger ud af motoren. En skitseret illustration af motoren kan se ud som følger:

Uni-pol.gif

Det at der skal ligge to viklinger, hvor der i den bi-polare kun skal ligge en, gør at denne motortype normalt ikke kan trække så meget.

Softwaren kan styre motoren på to forskellige måder. Som full-step vil der altid være spænding på den ene af spolerne i begge spolesæt, og dermed er det den måde der holder bedst styr på motoren. Faserne kommer som følger:

Uni-full.gif

Den anden styringsmåde er half-step, hvor der kommer dobbelt så mange step pr. omgang, men til gengæld er der tidspunkter hvor der kun er en vikling tændt. Faserne ser så ud som følger:

Uni-half.gif

Den elektriske styring til den uni-polære stepmotor

Rent elektrisk er den unipolare stepmotor noget lettere at styre end den bipolare, da det bare er at sætte midtpunktet af spolerne til forsyningen, og så trække den ene eller den anden spole til stel, som med det viste kredsløb.

Som ved den bipolare motor er der kun vist det ene sæt spoler, men det andet er blot en kopi af dette.

Igen styres motoren ved at sætte skiftevis IN_R og IN_L høje som vist. Igen er det uheldigt at sætte spænding på begge viklinger - det vil ikke direkte kortslutte, men de to magnetfelter vil modvirke hinanden, og det vil trække ekstra strøm.
Bipol.gif

Hvis man kan nøjes med at lave full-step, så kan man gøre det endnu enklere, ved at man kun styrer hvert viklingssæt med en udgang fra PIC'en, så en motor kan styres af kun to udgange.

Bi inv.gif Den anden måde at styre stepmotorerne på er ved at styre med kun to udgange pr. motor, og så invertere mellem IN_R og IN_L, som vist her i eksemplet med den unipolare stepmotor. Bruger man denne måde kan man kun køre motoren i full-step.

Man skal lige være opmærksom på at den inverter man bruger til det kan trække den strøm transistorerne kræver, f.x. vil en CMOS hurtigt komme til kort ved 5V og en almindelig TTL er heller ikke god til at trække høj. Her er anvendt en 74240, der kan levere 15 mA ved høj, det vil kunne række i mange tilfælde.

Det tilsvarende kan laves til den bi-polare stepmotor, men der er ikke vist diagrammer til det.

Softwaren til at styre stepmotorerne med

Det er den samme software til både den bi-polare stepmotor og den den uni-polare stepmotor og den ligger pakket i en zip-fil.

Softwaren i modulet er lavet så det kun kan styre en motor. Hvis man ønsker at styre flere motorer fra den samme softvare, så må man lave en ekstra kopi af procedurer og variabler og omdøbe dem med f.x. et nummer på for at identificere hver motor.

Som omtalt ved den elektriske styring af motorerne, så er der to måder at styre stepmotorne på. Dette angives i en konstant i softwaren, enten ved at step_driver_all er true eller ved at step_driver_inv er true.

Styring af stepmotorerne med 4 udgange

Den ene hvor man styrer direkte på indgangene IN_R og IN_L. Det betyder at man skal bruge 4 ben på PIC-en, for at styre en motor, lige meget om man vil køre full-step eller half-step

Den måde at styre på ligger i ved at sætte step_driver_all til true.

STEP.JAL er selve rutinen der laver steppene til højre og venstre, og hvis man vil steppe til højre, først et full-step og derefter et half-step, skriver man følgende:

 step_full_right
 step_half_right

STEP_PIN.JAL indeholder definitionerne på de ben på PIC-en man vil bruge til motoren

I STEP_DEMO.JAL ligger en simpel demonstration af stepmotoren, lavet så det fungerer med demo-boardet. Programmet kan steppe full til højre og venstre på to knapper, og ligeledes half-step til højre og venstre på to andre knapper.

Styring af stepmotorerne med 2 udgange

Denne måde at styre på ligger også i STEP.JAL og STEP_PIN.JAL. Forskellen er at man angiver step_driver_inv til true inden man includer step.jal.

STEP.JAL er selve rutinen der laver steppene til højre og venstre, og hvis man vil tage 20 full-step til venstre, skriver man følgende:

 for 20 loop
    inv_full_left
 end loop

STEP_PIN.JAL indeholder definitionerne på de ben på PIC-en man vil bruge til motoren

Normalt vil man bruge denne måde at styre på, hvis man kun vil bruge 2 ben fra PIC-en, men det har så den begrænsning at man kun kan få den til at køre full-step.

I STEP_DEMO.JAL ligger en simpel demonstration af stepmotoren, lavet så det fungerer med demo-boardet. Programmet kan steppe full til højre og venstre på to knapper, da koden ikke kan half-steppe, så er der ikke lavet mulighed for det i demo-programmet.

Moduler på Holstebro HTX
Tastaturer Displays AD-konvertering I/O-ekspander Serielt Interface Færdige Andre
RC-tast - AD-tast - M_tast ALCD - LCD ADC_holst - ADC
mcp3201 - mcp3208
input - output Seriel_holst - Serial hardware
Serial hw int cts - Serial software
Stepmotor - RFID
RGB - RF-link - Afstand
Humidity - Analog temp - Dig temp
Accelerometer
Rotary Encoder
Moduler på Holstebro HTX
Tastaturer Displays AD-konvertering I/O-ekspander Serielt Interface Færdige Andre
RC-tast - AD-tast - M_tast ALCD - LCD ADC_holst - ADC
mcp3201 - mcp3208
input - output Seriel_holst - Serial hardware
Serial hw int cts - Serial software
Stepmotor - RFID
RGB - RF-link - Afstand
Humidity - Analog temp - Dig temp
Accelerometer
Rotary Encoder