Sisukord:
- Samm: tutvuge Steppersiga
- 2. samm: leidke ühine alus
- 3. samm: selgitage välja sammude järjekord
- Samm: mootori proovisõiduks võtmine
- Samm: pöörake seda tagasi ja edasi
- 6. samm: ma ei astu kunagi poole sammu juurde, sest ma pole pooleldi samm …
- Samm: lisage mootori draiver
- 8. samm: lõpp
Video: Liikuge samm -mootoriga AVR -i mikroprotsessoriga: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
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
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
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
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
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
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:
3D -robotkäsi Bluetooth -juhitavate samm -mootoritega: 12 sammu
3D-robotrool Bluetooth-juhitavate samm-mootoritega: Selles õpetuses näeme, kuidas teha 3D-robotkäsi koos 28byj-48 samm-mootorite, servomootori ja 3D-prinditud osadega. Minu veebisaidil on trükiplaat, lähtekood, elektriskeem, lähtekood ja palju teavet
Nutika mootorratta HUD prototüüp (samm-sammult navigeerimine ja palju muud): 9 sammu
Nutikas mootorratta HUD prototüüp (samm-sammult navigeerimine ja palju muud): Tere! See juhend on lugu sellest, kuidas ma projekteerisin ja ehitasin HUD (Heads-Up Display) platvormi, mis on mõeldud paigaldamiseks mootorrattakiivritele. See on kirjutatud konkursi "kaardid" kontekstis. Kahjuks ei suutnud ma seda täielikult lõpetada
Otsese digitaalse sünteesi (DDS) kiibiga MIDI-juhitav samm-mootor: 3 sammu
Otsese digitaalse sünteesi (DDS) kiibiga MIDI-juhitav samm-mootor: kas teil on kunagi olnud halb ettekujutus, et pidite lihtsalt miniprojektiks muutuma? Noh, ma mängisin eskiisiga, mille olin teinud Arduino Due jaoks ja mille eesmärk oli teha muusikat AD9833 Direct Digital Synthesis (DDS) mooduliga … ja mingil hetkel mõtlesin & q
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
Liikuge läbi lingitud loendi rekursiooni abil - Java: 12 sammu
Liikuge läbi lingitud loendi rekursiooni abil - Java: Tere tulemast ja täname teid, et valisite selle juhendikomplekti, mis näitab teile, kuidas rekursiivset funktsiooni luua. Läbiviidavate sammude mõistmiseks on vaja java baasteadmisi. Üldiselt ei tohiks see 12-etapiline protsess enam aega võtta