INHOUDSOPGAWE:

Ry 'n stapmotor met 'n AVR -mikroverwerker: 8 stappe
Ry 'n stapmotor met 'n AVR -mikroverwerker: 8 stappe

Video: Ry 'n stapmotor met 'n AVR -mikroverwerker: 8 stappe

Video: Ry 'n stapmotor met 'n AVR -mikroverwerker: 8 stappe
Video: 220 В переменного тока от 12 В 90 А Автомобильный генератор переменного тока 1000 Вт DIY 2024, November
Anonim
Ry 'n stapmotor met 'n AVR -mikroverwerker
Ry 'n stapmotor met 'n AVR -mikroverwerker

Het u 'n paar stapmotors van drukkers/skyfaandrywers/ens wat weggesteek is, gelê?

Sommige ondersoek met 'n ohmeter, gevolg deur 'n eenvoudige bestuurderkode op u mikroverwerker, en u stap stylvol in.

Stap 1: Leer Steppers leer ken

Maak kennis met Steppers
Maak kennis met Steppers
Maak kennis met Steppers
Maak kennis met Steppers

Eintlik moet u agterkom waar al die klein drade gaan.

Die eerste stap is om uit te vind of dit 'n unipolêre of bipolêre motor is. Kyk na Jones on Steppers vir 'n dieper agtergrond, en dan op Ian Harries se webwerf vir 'n eenvoudige metode om 'n onbekende motor uit te vind. Lees 'n bietjie, en kom dan saam met my deur die motor wat ek goedkoop gekry het. (Hulle is tans te koop vir $ 0,99. Hulle is klein, relatief lig, maar het nie veel wringkrag nie. Weet nog nie waarvoor dit goed sal wees nie.)

Stap 2: Vind gemeenskaplike grond

Vind gemeenskaplike grond
Vind gemeenskaplike grond
Vind gemeenskaplike grond
Vind gemeenskaplike grond

U het dus vyf (of vier of ses) drade. Jou motor gaan twee helftes hê, en jy kan waarskynlik selfs sien deur te kyk aan watter kant elke draad behoort.

As jy net na vier drade kyk, het jy geluk - dit is 'n bipolêre motor. Al wat u hoef te doen is om uit te vind watter twee pare drade saamgaan. As u 'n unipolêre motor of meer as 4 drade het, moet u die ohmeter uitbreek. Wat u soek, is die gewone (grond) draad vir elke helfte. U kan sien wat in 'n bipolêre motor gemaal word, omdat dit die helfte van die weerstand teen een van die pole het as wat die pole oor hulself doen. Op die foto is my aantekeninge van die aansluiting van drade by drade en die weerstand (of as dit enigsins verbind is). U kan sien dat Wit die grond vir die onderste trio is, aangesien dit die helfte van die weerstand teenoor rooi of blou teenoor mekaar het. (Hierdie motor is vreemd en het nie 'n middelkraan op die boonste magneetspoel nie. Dit is asof dit halfbipolêr, half unipolêr is. Miskien kan u dit gebruik om rotasie in die rooi-wit-blou spoel te sien wanneer die swart-geel spoel word aangedryf.)

Stap 3: Bepaal die staporde

Bepaal die staporde
Bepaal die staporde

Ek sou hierdie motor as 'n bipolêre motor ry, so ek ignoreer die wit gronddraad. Ek het net vier drade om oor bekommerd te wees.

U wil in elk geval u unipolêre motor as bipolêr laat loop, want dit gebruik die hele spoel in beide fases in plaas van om te wissel tussen die twee helftes van elke spoel. Meer spoel = meer wringkrag. Draai stroom deur 'n paar (let op die polariteit wat u gekies het) en voer dan tegelykertyd stroom deur die ander paar. As u die tweede paar aansluit, kyk hoe die motor draai. Skryf dit neer. Draai nou die polariteit om van die eerste paar wat u gekies het. Sluit dan die tweede paar weer aan met hul polariteit ook omgekeerd. Let op die rigting. Hieruit behoort u die volgorde vir die draai van die motor in enige rigting te kan bepaal. In my voorbeeld draai albei uiteindelik teen die kloksgewys, sodat deur die ry op dieselfde manier as wat ek gekies het, die motor CCW stap.

Stap 4: Neem die motor vir 'n toetsrit

Neem die motor vir 'n toetsrit
Neem die motor vir 'n toetsrit

As u nog nie gereed is vir mikroprosessorprogrammering nie, kan u dit slegter doen as die Ghetto Development Kit of enige van die verskillende PIC -programmeerders. Sluit die drade direk aan op u mikroprop en verbrand dit met die volgende kode:

/* Speel met die aanstuur van die klein stapmotors. */

/ * Sluit vertragingsfunksie in */ #define F_CPU 1000000UL #include/ * Pin defs vir ATTiny2313 *// * Orde met die kloksgewys */ #define BLUE _BV (PB0) #define SWART _BV (PB1) #define RED _BV (PB2) #define GEEL _BV (PB3) #define DELAY 200 / * millisekondes tussen stappe * / int main (void) {DDRB = 0xff; / * Aktiveer uitvoer op al die B -penne */ PORTB = 0x00; / * Stel hulle almal op 0v */ while (1) {/ * hooflus hier */ PORTB = BLOU; _delay_ms (DELAY); PORTB = SWART; _delay_ms (DELAY); PORTB = ROOI; _delay_ms (DELAY); PORTB = GEEL; _delay_ms (DELAY); }} Hoe eenvoudig is die kode? Regtig eenvoudig. Al wat dit doen, is om 'n paar goeie definisies te maak, sodat ek na die drade kan verwys volgens kleur eerder as hul penname, en dan skakel dit dit in volgorde aan met 'n verstelbare vertraging tussenin. Om mee te begin, kies ek 'n vertraging van 'n halwe sekonde tussen stappe. Sien die kort video vir die uitslae. As u regtig in u spel is, tel die aantal stappe per siklus om die motor se enkel-trappige hoekresolusie uit te vind. (O ja. PS. Ry maklik sonder 'n laai van 3.6v. Sien battery in video.)

Stap 5: Swaai dit heen en weer

U het dit dus met die kloksgewys aan die gang. Iets interessanter? 'N Bietjie kode-opruiming, en ons kan dit heen en weer laat loop. Ek plaas die volgorde met die kloksgewys in 'n skikking, sodat u deur die fases kan gaan met 'n eenvoudige lus. Nou kan u die lus op of af hardloop om met die kloksgewys of linksom te gaan.

int main (void) {const uint8_t delay = 50; const uint8_t met die kloksgewys = {BLOU, SWART, ROOI, GEEL}; uint8_t i; DDRB = 0xff; / * Aktiveer uitvoer op al die B -penne */ PORTB = 0x00; / * Stel hulle almal op 0v */ terwyl (1) {/ * hooflus hier */ vir (i = 0; i <= 3; i ++) {/ * stap deur die kleure kloksgewys */ PORTB = kloksgewys ; _vertraging_ms (vertraging); } vir (i = 3; i> = 0; i-) { / * stap deur die kleure ccw * / PORTB = kloksgewys ; _vertraging_ms (vertraging); }}} Sien die racy video vir die back-and-forthing.

Stap 6: Ek stap nooit half nie, want ek is nie 'n halfstapper nie …

Soek liriek opsy, en u motor is halfstap waar dit is. U kry meer piekstroom, meer oombliklike wringkrag en twee keer die hoekresolusie. Halfstap in 'n neutedop: In plaas van blou, swart, rooi, geel, ry u die motor met blou, blou+swart, swart, swart+rooi, rooi, rooi+geel, geel, geel+blou. Die resultaat is dat jy vir die helfte van die tyd beide magnete tegelyk gebruik. En gedurende die tye dat beide stelle ingeskakel is, wys die motor halfpad tussen die twee, wat die hoek tussen "trappe" krimp en die motor gladder laat draai. Kan jy dit uit die video sien? Ek is nie seker nie … Nou lyk die gedeelte van die kode wat die halfstap doen, so:

void halfStepping (uint16_t vertraging, uint8_t rigting ) {uint8_t i; vir (i = 0; i <= 3; i ++) {PORTB = rigting ; / * enkelspoeldeel */ _vertraging_ms (vertraging); PORTB | = rigting [i+1]; / * voeg in half-stap */ _vertraging_ms (vertraging) by; }} Die eerste PORTB -opdrag stel 'n enkele pool op positief en die res op negatief. Dan wag dit. Dan stel die tweede PORTB -opdrag 'n tweede pool (aan die ander wikkeling) in op positief, wat beide windings vir 1,4x die wringkrag (en 2x die stroom) aangryp. 'N Volledige programlys is hieronder aangeheg. Twee skikkings word nou gedefinieer (kloksgewys, antikloksgewys) en albei het 5 elemente elk om die i+1 -inskrywing in die halfStepping -funksie moontlik te maak.

Stap 7: Voeg 'n motorbestuurder by

Voeg 'n motorbestuurder by
Voeg 'n motorbestuurder by
Voeg 'n motorbestuurder by
Voeg 'n motorbestuurder by
Voeg 'n motorbestuurder by
Voeg 'n motorbestuurder by

So ver so goed.

Die enigste probleem is dat die motor nie soveel wringkrag het nie, wat moontlik te wyte is aan die feit dat die mikroverwerker slegs ~ 50mA per pen uitsteek. Die voor die hand liggende volgende stap sou wees om dit aan 'n motorbestuurder te koppel om meer sap te voorsien. Maar dan dink ek 'n bietjie: ek ry dit slegs met 5v, en die spoelwindweerstand is ~ 125 ohm. Dit beteken dat die motor slegs 40mA per pen trek, en dit moet netjies aangedryf word deur die (stewige!) AVR -chip. Om meer spanning te kry, het ek dit aan 'n SN754410 H-brugskyfie gekoppel. Die kring is redelik eenvoudig. Elke pen van die AVR gaan na 'n invoer, en die ooreenstemmende uitsetpenne gaan na die motor. Die chip benodig 5v vir die logiese afdeling, en kan baie meer spanning in die motorafdeling neem. Dit het 'n bietjie gehelp om dit op 11.25v (drie 3.6v -batterye) te gebruik. Opmerklik meer wringkrag vir my vinger, maar dit is steeds nie 'n kragstasie nie. Dit is egter nie sleg vir 'n motor wat kleiner is as 'n nikkel nie. En nou het die kring 'n algemene bipolêre stapmotorbestuurder geword. 29 November bygevoeg: Die motor het gisteraand 'n rukkie teen 12v gery en dit het begin warm word. Ek is nie seker of dit 'n resonante frekwensieprobleem was nie en of dit bloot te veel stroom was vir die wikkelinge. Wees in elk geval 'n bietjie versigtig as u hierdie motor met groter spannings bestuur.

Stap 8: Die einde

So, wat het ek geleer? Om 'n stappermotor met 'n AVR (en 'n H-brug-chip) te bestuur, is redelik maklik, selfs in die 'spoggerige' half-trap-modus.

Ek is egter nog nie seker wat ek met die klein stapmotors gaan doen nie. Enige voorstelle?

Aanbeveel: