Turinys:

Važiuokite žingsniniu varikliu su AVR mikroprocesoriumi: 8 žingsniai
Važiuokite žingsniniu varikliu su AVR mikroprocesoriumi: 8 žingsniai

Video: Važiuokite žingsniniu varikliu su AVR mikroprocesoriumi: 8 žingsniai

Video: Važiuokite žingsniniu varikliu su AVR mikroprocesoriumi: 8 žingsniai
Video: Važiuokite prisijungę | „Garmin“ dviračių sportas 2024, Lapkritis
Anonim
Važiuokite žingsniniu varikliu su AVR mikroprocesoriumi
Važiuokite žingsniniu varikliu su AVR mikroprocesoriumi

Ar guli keli nulaužti žingsniniai varikliai iš spausdintuvų/diskų įrenginių/ir tt?

Kai kurie zonduoja su ommetru, po to paprastas mikroprocesoriaus tvarkyklės kodas ir būsite stilingi.

1 žingsnis: susipažinkite su „Steppers“

Susipažinkite su Steppers
Susipažinkite su Steppers
Susipažinkite su Steppers
Susipažinkite su Steppers

Iš esmės turėsite išsiaiškinti, kur eina visi maži laidai.

Pirmasis žingsnis yra išsiaiškinti, ar tai vienpolis, ar bipolinis variklis. Pažvelkite į Jonesą „Steppers“, kad gautumėte gilesnę informaciją, tada Iano Harrieso svetainėje, kur rasite paprastą būdą išsiaiškinti nežinomą variklį. Šiek tiek paskaitykite, tada prisijunkite prie šio variklio, kurį gavau pigiai, apžvalgos. (Šiuo metu jie parduodami už 0,99 USD. Jie nedideli, palyginti lengvi, tačiau neturi didelio sukimo momento. Dar nežinau, kam tai bus naudinga.)

2 žingsnis: raskite bendrą pagrindą

Raskite bendrą pagrindą
Raskite bendrą pagrindą
Raskite bendrą pagrindą
Raskite bendrą pagrindą

Taigi jūs turite penkis (arba keturis ar šešis) laidus. Jūsų variklis turės dvi dalis, ir jūs tikriausiai netgi galite pasakyti, tik žiūrėdami, kuriai vielai priklauso.

Jei žiūrite tik į keturis laidus, jums pasisekė - tai bipolinis variklis. Viskas, ką jums reikia padaryti, tai išsiaiškinti, kurios dvi laidų poros eina kartu. Jei turite vienpolį variklį arba daugiau nei 4 laidus, turėsite išardyti savo ommetrą. Tai, ko ieškote, yra bendras (įžemintas) laidas kiekvienai pusei. Galite pasakyti, kuris yra įžemintas bipoliniame variklyje, nes jis turi pusę atsparumo bet kuriam iš polių, nei poliai. Nuotraukoje yra mano užrašai iš laidų prijungimo prie laidų ir pasipriešinimo (arba jei jie apskritai prijungti). Matote, kad balta yra apatinio trio b/c pagrindas, jis turi pusę atsparumo raudonai arba mėlynai, kaip jie turi vienas kitam. (Šis variklis yra keistas ir neturi centrinio čiaupo viršutinėje magneto ritėje. Tai tarsi pusiau bipolinis, pusiau vienpolis. Galbūt galėtumėte tai panaudoti raudonos-baltos-mėlynos spalvos ritės sukimui, kai juoda-geltona varoma ritė.)

3 žingsnis: išsiaiškinkite žingsnių tvarką

Išsiaiškinkite žingsnių tvarką
Išsiaiškinkite žingsnių tvarką

Ketinau vairuoti šį variklį kaip bipolinį, todėl nekreipiu dėmesio į baltą įžeminimo laidą. Turiu nerimauti tik dėl keturių laidų.

Vis dėlto galbūt norėsite paleisti savo vienpolį variklį kaip bipolinį, nes jis naudoja visą ritę abiem etapais, o ne pakaitomis tarp dviejų kiekvienos ritės pusių. Daugiau ritės = daugiau sukimo momento. Praleiskite srovę per porą (atkreipkite dėmesį į pasirinktą poliškumą), o tada srovę per kitą porą tuo pačiu metu. Kai prijungsite antrąją porą, stebėkite, į kurią pusę sukasi variklis. Užsirašykite tai. Dabar pakeiskite pirmosios pasirinktos poros poliškumą. Tada vėl prijunkite antrąją porą, jų poliškumas taip pat pasikeičia. Atkreipkite dėmesį į kryptį. Iš to turėtumėte sugebėti išsiaiškinti variklio sukimosi bet kuria kryptimi seką. Mano pavyzdyje abu galiausiai pasisuko prieš laikrodžio rodyklę, taigi, pereidami seką tokiu pačiu būdu, kokį pasirinkau, variklis pasuks CCW.

4 žingsnis: variklio paėmimas bandomajam važiavimui

Variklio paėmimas bandomajam važiavimui
Variklio paėmimas bandomajam važiavimui

Jei dar nesate pasirengęs mikroprocesorių programavimui, galite padaryti blogiau nei „Ghetto Development Kit“ar bet kuris kitas PIC programuotojas. Prijunkite laidus tiesiai prie savo mikroprocesoriaus ir sudeginkite naudodami šį kodą:

/* Žaidžiant su mažais žingsniniais varikliais. */

/ * Įtraukti uždelsimo funkciją */ #define F_CPU 1000000UL #include/ * PIN defs ATTiny2313 *// * tvarka pagal laikrodžio rodyklę */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define GELTONA _BV (PB3) #define DELAY 200 / * milisekundės tarp žingsnių * / int main (void) {DDRB = 0xff; / * Įgalinti išvestį visuose B kaiščiuose */ PORTB = 0x00; / * Nustatykite juos visus į 0v */ while (1) {/ * pagrindinė kilpa čia */ PORTB = BLUE; _delay_ms (DELAY); PORTB = JUODAS; _delay_ms (DELAY); PORTB = RAUDONA; _delay_ms (DELAY); PORTB = GELTONA; _delay_ms (DELAY); }} Kaip paprastas tas kodas? Tikrai paprasta. Viskas, ką jis daro, yra keletas gražių apibrėžimų, kad galėčiau nurodyti laidus pagal spalvą, o ne jų kaiščių pavadinimus, o tada juos įjungia iš eilės su reguliuojamu vėlavimu. Pradžiai pasirinkau pusės sekundės delsą tarp žingsnių. Rezultatus žiūrėkite trumpame vaizdo įraše. Jei tikrai žaidžiate, suskaičiuokite žingsnių skaičių per ciklą, kad išsiaiškintumėte variklio vieno žingsnio kampinę skiriamąją gebą. (O taip. PS. Lengvai važiuoja be apkrovos esant 3,6 V įtampai. Akumuliatorių žiūrėkite vaizdo įraše.)

5 žingsnis: pasukite atgal ir pirmyn

Taigi jūs turite veikti pagal laikrodžio rodyklę. Kažkas įdomesnio? Šiek tiek kodo valymo ir galime jį paleisti pirmyn ir atgal. Įdėjau seką pagal laikrodžio rodyklę į masyvą, kad galėtumėte pereiti fazes naudodami paprastą ciklą. Dabar galite paleisti kilpą aukštyn arba žemyn, kad judėtumėte pagal laikrodžio rodyklę arba prieš laikrodžio rodyklę.

int main (void) {const uint8_t delay = 50; const uint8_t pagal laikrodžio rodyklę = {BLUE, BLACK, RED, YELLOW}; uint8_t i; DDRB = 0xff; / * Įgalinti išvestį visuose B kaiščiuose */ PORTB = 0x00; / * Nustatykite juos visus į 0v */ while (1) {/ * čia pagrindinė kilpa */, jei norite (i = 0; i <= 3; i ++) {/ * peržengti spalvas pagal laikrodžio rodyklę */ PORTB = pagal laikrodžio rodyklę ; _delay_ms (vėlavimas); } (i = 3; i> = 0; i-) { / * pereikite prie spalvų ccw * / PORTB = pagal laikrodžio rodyklę ; _delay_ms (vėlavimas); }}} Žiūrėkite įnirtingą vaizdo įrašą, kad sužinotumėte, kaip atsitraukti.

6 žingsnis: Aš niekada nepuoliu, nes nesu pusiau žingsniuojantis…

Ieškokite lyrikos, nuo pusės žingsnio variklis yra ten, kur jis yra. Jūs gaunate didesnę didžiausią srovę, didesnį momentinį sukimo momentą ir dvigubai didesnę kampinę skiriamąją gebą. Pusiau žingsniai trumpai: vietoj mėlynos, juodos, raudonos, geltonos spalvos variklį vairuojate mėlyna, mėlyna+juoda, juoda, juoda+raudona, raudona, raudona+geltona, geltona, geltona+mėlyna spalva. Rezultatas yra tas, kad pusę laiko jūs įtraukiate abu magnetus vienu metu. Ir tuo metu, kai abu rinkiniai yra įjungti, variklis nukreipia pusiaukelę tarp jų, sumažindamas kampą tarp „žingsnių“ir variklis sukasi sklandžiau. Ar galite pasakyti iš vaizdo įrašo? Nesu tikras … Dabar kodo dalis, atliekanti pusę žingsnio, atrodo taip:

void halfStepping (uint16_t delsa, uint8_t kryptis ) {uint8_t i; (i = 0; i <= 3; i ++) {PORTB = kryptis ; / * vienos ritės dalis */ _delay_ms (uždelsimas); PORTB | = kryptis [i+1]; / * pridėti per žingsnį */ _delay_ms (uždelsimas); }} Pirmoji PORTB komanda nustato vieną polių į teigiamą, o visi kiti - į neigiamą. Tada laukia. Tada antroji PORTB komanda nustato antrą polių (ant kitos apvijos) į teigiamą, įjungdama abi apvijas 1,4 karto sukimo momento (ir 2x srovės). Visas programų sąrašas pridedamas žemiau. Dabar yra nustatyti du masyvai (pagal laikrodžio rodyklę, prieš laikrodžio rodyklę) ir abu turi po 5 elementus, kad būtų galima įvesti „i+1“į „halfStepping“funkciją.

7 veiksmas: pridėkite variklio tvarkyklę

Pridėti variklio tvarkyklę
Pridėti variklio tvarkyklę
Pridėti variklio tvarkyklę
Pridėti variklio tvarkyklę
Pridėti variklio tvarkyklę
Pridėti variklio tvarkyklę

Kol kas viskas gerai.

Vienintelė problema yra ta, kad variklis, atrodo, neturi tiek daug sukimo momento, o tai gali būti dėl to, kad mikroprocesorius išleidžia tik ~ 50 mA per kaištį. Kitas akivaizdus žingsnis būtų prijungti jį prie variklio vairuotojo ir tiekti daugiau sulčių. Bet tada šiek tiek galvoju: važiuoju tik su 5v, o ritės apvijos varža yra ~ 125 omai. Tai reiškia, kad vienintelis variklio brėžinys yra 40 mA per kaištį, ir jis turėtų būti gerai valdomas naudojant (jautrią!) AVR mikroschemą. Taigi, norėdamas gauti daugiau įtampos, varydamas variklį, prijungiau jį prie SN754410 H tilto mikroschemos. Grandinė yra gana paprasta. Kiekvienas AVR kaištis patenka į įvestį, o atitinkami išvesties kaiščiai - į variklį. Lustui reikia 5 V loginei sekcijai, o variklio skyriuje gali būti daug daugiau įtampos. Šiek tiek padėjo jo veikimas 11,25 V (trys 3,6 V baterijos). Pastebimai didesnis sukimo momentas mano pirštui, bet tai vis tiek nėra jėgainė. Tačiau tai nėra blogai varikliui, kuris yra mažesnis už nikelį. Ir dabar grandinė tapo bendrosios paskirties bipoliniu žingsninio variklio vairuotoju. Pridėta lapkričio 29 d.: Vakar vakare kurį laiką veikė variklis 12 V įtampa ir jis pradėjo karšti. Nesu tikras, ar tai buvo rezonansinio dažnio problema, ar tiesiog per didelė apvijų srovė. Bet kuriuo atveju būkite šiek tiek atsargūs, jei vairuojate šį mažą variklį su didesne įtampa.

8 žingsnis: pabaiga

Taigi, ko aš išmokau? Vairuoti žingsninį variklį su AVR (ir H tilto mikroschema) yra gana paprasta, net esant „išgalvotam“pusės žingsnio režimui.

Vis dėlto dar nežinau, ką darysiu su mažais žingsniniais varikliais. Turite idėju?

Rekomenduojamas: