Sisukord:

Liikuge samm -mootoriga AVR -i mikroprotsessoriga: 8 sammu
Liikuge samm -mootoriga AVR -i mikroprotsessoriga: 8 sammu

Video: Liikuge samm -mootoriga AVR -i mikroprotsessoriga: 8 sammu

Video: Liikuge samm -mootoriga AVR -i mikroprotsessoriga: 8 sammu
Video: MKS SGEN L V1.0 - Servo 2024, Juuli
Anonim
Sõitke samm -mootoriga AVR -i mikroprotsessoriga
Sõitke samm -mootoriga AVR -i mikroprotsessoriga

Kas teil on printeritest/kettaseadmetest/jne puhastatud samm -mootorid?

Mõni sondeerimine oomomeetriga, millele järgneb mõni lihtne draiverikood teie mikroprotsessoril, ja te astute stiilselt.

Samm: tutvuge Steppersiga

Tutvuge Steppersiga
Tutvuge Steppersiga
Tutvuge Steppersiga
Tutvuge Steppersiga

Põhimõtteliselt peate välja selgitama, kuhu kõik väikesed juhtmed lähevad.

Esimene samm on välja selgitada, kas see on unipolaarne või bipolaarne mootor. Vaadake põhjalikumat tausta Jonesist Steppersis, seejärel Ian Harriesi saidilt, kust leiate lihtsa meetodi tundmatu mootori leidmiseks. Lugege natuke, siis ühinege minuga selle odavalt ostetud mootori ülevaates. (Neid müüakse praegu 0,99 dollari eest. Need on väikesed, suhteliselt kerged, kuid neil pole palju pöördemomenti. Ei tea veel, milleks see hea on.)

2. samm: leidke ühine alus

Leia ühisosa
Leia ühisosa
Leia ühisosa
Leia ühisosa

Nii et teil on viis (või neli või kuus) juhet. Teie mootoril on kaks poolt ja tõenäoliselt saate isegi lihtsalt otsida, vaadates, kummale poole iga traat kuulub.

Kui vaatate ainult nelja juhtmest, on teil õnne - see on bipolaarne mootor. Peate vaid välja mõtlema, millised kaks juhtmepaari kokku lähevad. Kui teil on unipolaarne mootor või rohkem kui 4 juhtmest, peate oma oomeeter välja lülitama. See, mida otsite, on iga poole ühine (maandus) juhe. Te saate öelda, mis on bipolaarses mootoris maandatud, kuna sellel on pool vastupanu kummalegi poolusele kui poolustel endal. Pildil on minu märkmed juhtmete ühendamisest juhtmetega ja takistuse märkimisest (või kui need on üldse ühendatud). Näete, et valge on alumise kolmiku b/c maapind, sellel on pool punase või sinise vastupanu, mis neil üksteisel on. (See mootor on kummaline ja sellel ei ole ülemise magnetmähise keskmist kraani. See on nagu pooleldi bipolaarne, pooleldi ühepolaarne. Võib-olla saaksite seda kasutada punase-valge-sinise mähise pöörlemise tundmiseks, kui must-kollane mähist juhitakse.)

3. samm: selgitage välja sammude järjekord

Selgitage välja sammude järjekord
Selgitage välja sammude järjekord

Ma kavatsesin seda mootorit bipolaarse mootorina juhtida, nii et ma ignoreerin valget maandusjuhet. Mul on muretsemiseks ainult neli juhet.

Võib -olla soovite oma unipolaarset mootorit bipolaarsena käivitada, sest see kasutab kogu mähist mõlemas faasis, selle asemel, et vaheldumisi iga mähise kahe poole vahel. Rohkem mähist = rohkem pöördemomenti. Viige paarist vool läbi (pange tähele valitud polaarsust) ja seejärel voolu teise paari kaudu samal ajal. Teise paari ühendamisel jälgige mootori pöörlemissuunda. Kirjutage see üles. Nüüd pöörake esimese valitud paari polaarsus ümber. Seejärel ühendage teine paar uuesti nende polaarsusega. Pange tähele suunda. Sellest peaksite suutma välja selgitada mootori pööramise järjestuse mõlemas suunas. Minu näites pöörasid mõlemad vastupäeva, nii et samamoodi, nagu ma valisin, jada läbi liigutades liigub mootor CCW.

Samm: mootori proovisõiduks võtmine

Mootori proovisõidule viimine
Mootori proovisõidule viimine

Kui te pole mikroprotsessorite programmeerimiseks liiga valmis, võite minna halvemini kui Ghetto Development Kit või mõni muu PIC -programmeerija. Ühendage juhtmed otse oma mikroprotsessori külge ja põletage see järgmise koodiga:

/* Mängime väikeste samm -mootorite käivitamisega. */

/ * Kaasa viivitusfunktsioon */ #define F_CPU 1000000UL #include/ * Pin defs ATTiny2313 jaoks *// * päripäeva järjestus */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define KOLLANE _BV (PB3) #define DELAY 200 / * millisekundit sammude vahel * / int main (void) {DDRB = 0xff; / * Luba väljund kõigil B -tihvtidel */ PORTB = 0x00; / * Seadke need kõik väärtusele 0v */ while (1) {/ * siin peamine silmus */ PORTB = SININE; _delay_ms (DELAY); PORTB = MUST; _delay_ms (DELAY); PORTB = PUNANE; _delay_ms (DELAY); PORTB = KOLLANE; _delay_ms (DELAY); }} Kui lihtne see kood on? Tõesti lihtne. Kõik, mida ta teeb, on teha mõningaid toredaid määratlusi, et saaksin juhtmetele viidata pigem värvi, mitte nende nööpnimede järgi, ja seejärel lülitab need järjestikku sisse reguleeritava viivitusega. Alustuseks valisin sammude vahel poole sekundi viivituse. Vaadake tulemusi lühikesest videost. Kui tegelete tõesti mänguga, lugege mootori üheastmelise nurga eraldusvõime väljaselgitamiseks sammude arv tsükli kohta. (Oh jah. PS. Sõidab ilma koormuseta 3,6 V juures. Vaadake akut videost.)

Samm: pöörake seda tagasi ja edasi

Nii et see töötab päripäeva. Midagi huvitavamat? Väike koodipuhastus ja saame seda edasi-tagasi käivitada. Panin päripäeva järjestuse massiivi, et saaksite lihtsa silmusega faasidest läbi astuda. Nüüd saate loopi üles või alla liigutada, et liikuda päripäeva või vastupäeva.

int main (tühine) {const uint8_t delay = 50; const uint8_t päripäeva = {SININE, MUST, PUNANE, KOLLANE}; uint8_t i; DDRB = 0xff; / * Luba väljund kõigil B -tihvtidel */ PORTB = 0x00; / * Seadke need kõik väärtusele 0v */ while (1) {/ * siin peamine silmus */ jaoks (i = 0; i <= 3; i ++) {/ * astuge läbi värvide päripäeva */ PORTB = päripäeva ; _delay_ms (viivitus); } jaoks (i = 3; i> = 0; i-) { / * astuge läbi värvide ccw * / PORTB = päripäeva ; _delay_ms (viivitus); }}} Vaadake tagantjärele tugevat videot.

6. samm: ma ei astu kunagi poole sammu juurde, sest ma pole pooleldi samm …

Küsimuste lüürika kõrvale, mootor pooleldi sammudes on seal, kus see on. Saate rohkem tippvoolu, hetkelist pöördemomenti ja kahekordset nurga eraldusvõimet. Lühidalt pool samm: Sinise, musta, punase, kollase asemel sõidate mootoriga sinise, sinise+musta, musta, musta+punase, punase, punase+kollase, kollase, kollase+sinisega. Lõpptulemus on see, et pool aega kasutate mõlemat magnetit korraga. Ja ajal, mil mõlemad komplektid on ühendatud, osutab mootor nende vahel poolele teele, vähendades "sammude" vahelist nurka ja pannes mootori sujuvamalt pöörlema. Kas saate videost aru saada? Ma pole kindel … Nüüd näeb koodi see osa, mis teeb pooleldi sammu, selline:

void halfStepping (uint16_t viivitus, uint8_t suund ) {uint8_t i; jaoks (i = 0; i <= 3; i ++) {PORTB = suund ; / * ühe mähisega osa */ _delay_ms (viivitus); PORTB | = suund [i+1]; / * lisa poole sammuga */ _delay_ms (viivitus); }} Esimene käsk PORTB seab ühe pooluse positiivseks ja kõik ülejäänud negatiivseks. Siis jääb ootama. Seejärel seab teine PORTB -käsk teise pooluse (teisel mähisel) positiivseks, haarates mõlemad mähised 1,4 -kordse pöördemomendi (ja 2x voolu) jaoks. Täielik programmide loetelu on lisatud allpool. Nüüd on määratletud kaks massiivi (päripäeva, vastupäeva) ja mõlemal on 5 elementi, mis võimaldavad sisestada i+1 funktsiooni halfStepping.

Samm: lisage mootori draiver

Lisage mootorijuht
Lisage mootorijuht
Lisage mootorijuht
Lisage mootorijuht
Lisage mootorijuht
Lisage mootorijuht

Siiamaani on kõik korras.

Ainus probleem on see, et mootoril ei tundu olevat nii palju pöördemomenti, mis võib olla tingitud asjaolust, et mikroprotsessor annab pinge kohta välja ainult ~ 50 mA. Ilmselge järgmine samm oleks ühendada see mootorijuhiga, et see mahla juurde saada. Aga siis natuke mõtlema: ma sõidan sellega ainult 5 V pingega ja mähise mähise takistus on ~ 125 oomi. Mis tähendab, et mootori ainus pinge on 40mA tihvti kohta ja seda (veetlev!) AVR -kiip peaks hästi juhtima. Nii et mootori käivitamiseks suurema pinge saamiseks ühendasin selle SN754410 H-silla kiibiga. Ahel on üsna lihtne. Iga AVR -i tihvt läheb sisendisse ja vastavad väljundpoldid lähevad mootorile. Kiip vajab loogikaosa jaoks 5 v ja mootoriosas võib see võtta palju rohkem pinget. Selle töötamine 11,25v (kolm 3,6v akut) aitas natuke. Minu sõrmele märgatavalt rohkem pöördemomenti, kuid see pole ikkagi jõujaam. Pole paha mootori puhul, mis on väiksem kui nikkel. Ja nüüd on ahelast saanud üldotstarbeline bipolaarne samm-mootor. Lisatud 29. november: käis eile õhtul mootoriga natuke aega mootoril ja hakkas kuumaks minema. Ma pole kindel, kas see oli resonantssageduse probleem või oli see mähiste jaoks lihtsalt liiga palju voolu. Mõlemal juhul olge natuke ettevaatlik, kui sõidate selle väikese mootoriga suurema pingega.

8. samm: lõpp

Mida ma siis õppisin? Sammumootori juhtimine AVR-i (ja H-silla kiibiga) on üsna lihtne, isegi "väljamõeldud" poole astme režiimis.

Siiski pole veel kindel, mida ma väikeste samm -mootoritega peale hakkan. Soovitusi?

Soovitan: