Indholdsfortegnelse:
- Trin 1: Lær Steppers at kende
- Trin 2: Find fælles grund
- Trin 3: Find ud af trinordren
- Trin 4: Tag motoren til et prøvekørsel
- Trin 5: Sving det tilbage og frem
- Trin 6: Jeg går aldrig et halvt trin, fordi jeg ikke er en halvsteg …
- Trin 7: Tilføj en motordriver
- Trin 8: Slutningen
Video: Kør en trinmotor med en AVR -mikroprocessor: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:30
Har du nogle rensede trinmotorer fra printere/diskdrev/etc liggende?
Nogle sonderende med et ohmeter, efterfulgt af en enkel driverkode på din mikroprocessor, og du træder med stil.
Trin 1: Lær Steppers at kende
Grundlæggende bliver du nødt til at finde ud af, hvor alle de små ledninger går.
Første trin er at finde ud af, om det er en unipolar eller bipolar motor. Tag et kig på Jones on Steppers for en dybere baggrund, derefter på Ian Harries 'websted for en enkel metode til at finde ud af en ukendt motor. Læs lidt op, og slut mig derefter til en gennemgang af denne motor, jeg fik for billigt. (De er til salg for $ 0,99 lige nu. De er små, relativt lette, men har ikke meget drejningsmoment. Ved ikke, hvad det vil være godt til endnu.)
Trin 2: Find fælles grund
Så du har fem (eller fire eller seks) ledninger. Din motor kommer til at have to halvdele, og du kan sikkert endda se det bare ved at se hvilken side hver ledning tilhører.
Hvis du kun kigger på fire ledninger, har du held og lykke - det er en bipolar motor. Alt du skal gøre er at finde ud af, hvilke to ledninger der går sammen. Hvis du har en unipolar motor eller mere end 4 ledninger, bliver du nødt til at bryde dit ohmeter. Det du leder efter er den fælles (jord) ledning for hver halvdel. Du kan se, hvilken der er malet i en bipolar motor, fordi den har halv modstand mod hver af polerne, end polerne gør på tværs af sig selv. På billedet ses mine noter fra at tilslutte ledninger til ledninger og notere modstanden (eller hvis de overhovedet er tilsluttet). Du kan se, at Hvid er grunden til bundtrioen b/c, den har halvdelen af modstanden mod rød eller blå, som de har til hinanden. (Denne motor er mærkelig og har ikke en centerhane på den øverste magnetspole. Det er som om den er halvbipolær, halvunipolær. Måske kan du bruge dette til at mærke rotation i den rød-hvid-blå spole, når den sort-gule spolen køres.)
Trin 3: Find ud af trinordren
Jeg ville køre denne motor som en bipolar, så jeg ignorerer den hvide jordledning. Jeg har kun fire ledninger at bekymre mig om.
Du vil måske alligevel køre din unipolare motor som bipolar, fordi den bruger hele spolen i begge faser i stedet for at skifte mellem de to halvdele af hver spole. Mere spole = mere drejningsmoment. Kør strøm gennem et par (bemærk den polaritet, du valgte), og kør derefter strøm gennem det andet par på samme tid. Når du tilslutter det andet par, skal du se, hvilken vej motoren drejer. Skriv dette ned. Vend nu polariteten på det første par, du valgte. Tilslut derefter det andet par igen med deres polaritet også omvendt. Bemærk retningen. Ud fra dette skulle du være i stand til at finde ud af sekvensen for rotation af motoren i begge retninger. I mit eksempel endte begge med at dreje mod uret, så at træde igennem sekvensen på samme måde, som jeg valgte, vil trinere motoren CCW.
Trin 4: Tag motoren til et prøvekørsel
Hvis du ikke allerede har værktøj til programmering af mikroprocessorer, kan du gøre det værre end Ghetto Development Kit eller en af de forskellige PIC -programmører. Tilslut ledningerne direkte til din mikroproc og brænd den op med følgende kode:
/* Leger med at få kørt de små steppermotorer. */
/ * Inkluder forsinkelsesfunktion */ #define F_CPU 1000000UL #include/ * Pin defs for ATTiny2313 *// * Med uret */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define GUL _BV (PB3) #define DELAY 200 / * millisekunder mellem trin * / int main (void) {DDRB = 0xff; / * Aktiver output på alle B -benene */ PORTB = 0x00; / * Indstil dem alle til 0v */ while (1) {/ * hovedsløjfe her */ PORTB = BLÅ; _forsinkelse_ms (DELAY); PORTB = SORT; _forsinkelse_ms (DELAY); PORTB = RØD; _forsinkelse_ms (DELAY); PORTB = GUL; _forsinkelse_ms (DELAY); }} Hvor enkel er den kode? Virkelig enkelt. Alt det gør er at lave nogle fine definitioner, så jeg kunne henvise til ledningerne efter farve frem for deres pin-navne, og derefter skifter det dem i rækkefølge med en justerbar forsinkelse imellem. Til at begynde med valgte jeg en forsinkelse på et halvt sekund mellem trinene. Se den korte video for resultaterne. Hvis du virkelig er i gang med dit spil, skal du tælle antallet af trin pr. Cyklus for at finde ud af motorens enkelt-trinende vinkelopløsning. (Åh ja. PS. Kører uden belastning ved 3,6v let. Se batteri i video.)
Trin 5: Sving det tilbage og frem
Så du kører det med uret. Noget mere interessant? Lidt kode-oprydning, og vi kan køre det frem og tilbage. Jeg satte sekvensen med uret i et array, så du kan gå gennem faserne med en simpel loop. Nu kan du køre løkken op eller ned for at gå med eller mod uret.
int main (void) {const uint8_t delay = 50; const uint8_t med uret = {BLÅ, SORT, RØD, GUL}; uint8_t i; DDRB = 0xff; / * Aktiver output på alle B -benene */ PORTB = 0x00; / * Indstil dem alle til 0v */ mens (1) {/ * hovedsløjfe her */ for (i = 0; i <= 3; i ++) {/ * gå gennem farverne med uret */ PORTB = med uret ; _forsinkelse_ms (forsinkelse); } for (i = 3; i> = 0; i-) { / * gå gennem farverne ccw * / PORTB = med uret ; _forsinkelse_ms (forsinkelse); }}} Se den racy video for back-and-forthing.
Trin 6: Jeg går aldrig et halvt trin, fordi jeg ikke er en halvsteg …
Quest lyrik til side, halv-trin din motor er, hvor det er på. Du får mere spidsstrøm, mere øjeblikkeligt drejningsmoment og dobbelt så stor vinkelopløsning. Halvt trin i en nøddeskal: I stedet for blå, sort, rød, gul, kører du motoren med blå, blå+sort, sort, sort+rød, rød, rød+gul, gul, gul+blå. Resultatet er, at du i halvdelen af tiden aktiverer begge magneter på én gang. Og i løbet af de tidspunkter, hvor begge sæt er i indgreb, peger motoren halvvejs mellem de to, og krymper vinklen mellem "trin" og får motoren til at dreje mere jævnt. Kan du se det fra videoen? Jeg er ikke sikker … Nu ser den del af koden, der foretager halvtrinnet, sådan ud:
void halfStepping (uint16_t forsinkelse, uint8_t retning ) {uint8_t i; for (i = 0; i <= 3; i ++) {PORTB = retning ; / * single-coil part */ _delay_ms (forsinkelse); PORTB | = retning [i+1]; / * tilføj i halv trin */ _delay_ms (forsinkelse); }} Den første PORTB -kommando sætter en enkelt pol til positiv og resten til negativ. Så venter det. Derefter indstiller den anden PORTB -kommando en anden pol (på den anden vikling) til positiv, der engagerer begge viklinger for 1,4x drejningsmomentet (og 2x strømmen). En komplet programoversigt er vedhæftet herunder. To arrays er nu defineret (med uret, mod uret) og begge har 5 elementer hver for at tillade i+1 -indtastning i halfStepping -funktionen.
Trin 7: Tilføj en motordriver
Så langt så godt.
Eneste problem er, at motoren ikke ser ud til at have så meget drejningsmoment, hvilket kan skyldes, at mikroprocessoren kun slukker ~ 50mA pr. Det indlysende næste trin ville være at tilslutte den til en motordriver for at forsyne den med mere juice. Men så tænker jeg lidt: Jeg kører den kun med 5v, og spolevindningsmodstanden er ~ 125 ohm. Hvilket betyder, at motoren kun tegner 40mA pr. Stift, og den skal drives fint af (beefy!) AVR -chippen. Så for at få mere spænding til at køre motoren, tilsluttede jeg den til en SN754410 H-brochip. Kredsløbet er ret simpelt. Hver pin fra AVR går til en input, og de tilsvarende output pins går til motoren. Chippen har brug for 5v til den logiske sektion og kan tage meget mere spænding i motorsektionen. Det hjalp lidt med at køre den på 11,25v (tre 3,6v batterier). Mærkbart mere drejningsmoment til min finger, men det er stadig ikke et kraftcenter. Ikke dårligt for en motor, der er mindre end et nikkel, selv om. Og nu er kredsløbet blevet en generel bipolar stepper motor driver. Tilføjet 29. nov: Kørte motoren i aftes ved 12v i et stykke tid, og det begyndte at blive varmt. Jeg er ikke sikker på, om det var et resonansfrekvensproblem, eller om det simpelthen var for meget strøm til viklingerne. Uanset hvad, vær lidt forsigtig, hvis du kører denne lille motor med større spændinger.
Trin 8: Slutningen
Så hvad lærte jeg? Det er ret let at køre en trinmotor med en AVR (og en H-bro-chip), selv i den "smarte" halvtrinnende tilstand.
Jeg er dog ikke sikker på, hvad jeg skal gøre med de små steppermotorer endnu. Nogen forslag?
Anbefalede:
Kør en servo med Chibitronics Chibi Clip: 5 trin
Kør en servo med Chibitronics Chibi Clip: Chibitronics Chibi Clip Cable, der fulgte med clip 3 jumperwires micro servo motor (valgfri) alligatorclip
Kør dine Steam -spil på Retro Arcade Kit med Raspberry Pi: 7 trin
Kør dine Steam -spil på Retro Arcade Kit med Raspberry Pi: Har du en Steam -konto med alle de nyeste spil? Hvad med et arkadeskab? Hvis ja, hvorfor ikke kombinere dem begge til en fantastisk Steam Streaming -spillemaskine. Takket være folkene på Steam kan du nu streame de nyeste spil fra din pc eller Ma
Styr din computer med en trinmotor !: 9 trin (med billeder)
Styr din computer med en trinmotor !: I en af mine tidligere instruktioner viste jeg dig, hvordan du kan bruge en trinmotor som en roterende encoder. I denne instruks kan vi lære, hvordan vi kan bruge den til at styre vores computer. Så uden videre, lad os komme i gang
Wow !! Kør trinmotor uden driver -- Ny idé 2018: 4 trin (med billeder)
Wow !! Kør trinmotor uden driver || Ny idé 2018: Hej! I denne instruktive vil jeg lære dig, hvordan du kører en trinmotor kontinuerligt ved høj hastighed uden et driverkredsløb eller en arduino- eller vekselstrømforsyning. Også ved at skifte ledninger kan du køre den i begge ur- klogt & mod uret
Gedde - Kør sikrere, kør smartere, kør en gedde !: 5 trin
Pike - Drive Safer, Drive Smarter, Drive a Pike !: Velkommen til mit projekt kaldet Pike! Dette er et projekt som en del af min uddannelse. Jeg er studerende NMCT på Howest i Belgien. Målet var at gøre noget smart ved at bruge en Raspberry Pi. Vi havde fuldstændig frihed, som vi ville gøre smart i. For mig var det