Përmbajtje:

Drejtoni një motor Stepper Me një mikroprocesor AVR: 8 hapa
Drejtoni një motor Stepper Me një mikroprocesor AVR: 8 hapa

Video: Drejtoni një motor Stepper Me një mikroprocesor AVR: 8 hapa

Video: Drejtoni një motor Stepper Me një mikroprocesor AVR: 8 hapa
Video: MKS SGEN L V1.0 - Servo 2024, Korrik
Anonim
Drejtoni një motor stepper me një mikroprocesor AVR
Drejtoni një motor stepper me një mikroprocesor AVR

Keni disa motorë stepper të pastruar nga printerët/disqet/etj të shtrirë përreth?

Disa po hetojnë me një ohmetër, të ndjekur nga një kod i thjeshtë drejtuesi në mikroprocesorin tuaj dhe do të shkelni me stil.

Hapi 1: Njihuni me Hapësit

Njihuni me Hapësit
Njihuni me Hapësit
Njihuni me Hapësit
Njihuni me Hapësit

Në thelb, do t'ju duhet të kuptoni se ku shkojnë të gjitha telat e vegjël.

Hapi i parë është të kuptoni nëse është një motor njëpolar ose bipolar. Hidhini një sy Jones në Steppers për një sfond më të thellë, pastaj në sitin e Ian Harries për një metodë të thjeshtë për të gjetur një motor të panjohur. Lexoni pak, pastaj bashkohuni me mua në një ecje të këtij motori që kam marrë me çmim të ulët. (Ata janë në shitje për 0.99 dollarë tani. Ata janë të vegjël, relativisht të lehtë, por nuk kanë shumë çift rrotullues. Nuk e di se për çfarë do të jetë mirë akoma.)

Hapi 2: Gjeni një bazë të përbashkët

Gjeni bazën e përbashkët
Gjeni bazën e përbashkët
Gjeni bazën e përbashkët
Gjeni bazën e përbashkët

Pra, ju keni pesë (ose katër, ose gjashtë) tela. Motori juaj do të ketë dy gjysma, dhe ju ndoshta mund ta kuptoni vetëm duke parë se cilës anë i përket çdo tel.

Nëse shikoni vetëm katër tela, keni fat - është një motor bipolar. E tëra çfarë ju duhet të bëni është të kuptoni se cilat dy palë tela shkojnë së bashku. Nëse keni një motor njëpolar, ose më shumë se 4 tela, do t'ju duhet të prishni ohmetrin tuaj. Ajo që ju po kërkoni është tela e zakonshme (e tokëzuar) për secilën gjysmë. Ju mund të dalloni se cila është e vendosur në një motor bipolar sepse ka gjysmën e rezistencës ndaj secilit prej poleve sesa polet në të gjithë vetveten. Në foto janë shënimet e mia nga lidhja e telave në tela dhe vërejtja e rezistencës (ose nëse ato janë të lidhura fare). Ju mund të shihni se e Bardha është terreni për treshen e fundit b/c, ajo ka gjysmën e rezistencës ndaj Kuq ose Blu që ata kanë ndaj njëri -tjetrit. (Ky motor është i çuditshëm dhe nuk ka një goditje qendrore në spiralen e magnetit të lartë. Likeshtë sikur të jetë gjysmë bipolare, gjysmë njëpolare. Ndoshta ju mund ta përdorni këtë për të ndjerë rrotullimin në spiralen Kuq-Bardhë-Blu kur Zi-Verdhë spiralja po drejtohet.)

Hapi 3: Zbuloni Rendin e Shkallëzimit

Zbuloni Rendin e Shkallëzimit
Zbuloni Rendin e Shkallëzimit

Unë do ta drejtoja këtë motor si një bipolar, kështu që unë jam duke injoruar telat e bardhë të tokës. Kam vetëm katër tela për t'u shqetësuar.

Ju mund të dëshironi të drejtoni motorin tuaj njëpolar si bipolar sidoqoftë, sepse ai përdor të gjithë spiralen në të dy fazat në vend që të alternohet midis dy gjysmave të secilës spirale. Më shumë spirale = më shumë çift rrotullues. Kaloni rrymën përmes një çifti (duke vënë në dukje polaritetin që keni zgjedhur) dhe më pas kaloni rrymën në palën tjetër në të njëjtën kohë. Kur lidhni palën e dytë, shikoni se në cilën anë kthehet motori. Shkruajeni këtë. Tani kthejeni polaritetin në palën e parë që keni zgjedhur. Pastaj lidhni përsëri palën e dytë me polaritetin e tyre gjithashtu të përmbysur. Vini re drejtimin. Nga kjo ju duhet të jeni në gjendje të kuptoni sekuencën e rrotullimit të motorit në secilin drejtim. Në shembullin tim, të dy përfunduan duke u kthyer kundër akrepave të orës, kështu që të shkelësh sekuencën në të njëjtën mënyrë që zgjodha do të shkelë motorin CCW.

Hapi 4: Marrja e motorit për një Test Drive

Marrja e motorit për një test drive
Marrja e motorit për një test drive

Nëse nuk jeni tashmë shumë të përgatitur për programimin e mikroprocesorit, mund të bëni më keq se Ghetto Development Kit ose ndonjë nga programuesit e ndryshëm të PIC. Lidhni telat drejtpërdrejt në mikroproc tuaj dhe digjeni me kodin e mëposhtëm:

/* Duke luajtur me vozitjen e motorëve me hapa të vegjël. */

/ * Përfshi funksionin e vonesës */ #define F_CPU 1000000UL #include/ * Pin defs për ATTiny2313 *// * Rendi në drejtim të akrepave të orës */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define YELLOW _BV (PB3) #define Vonesë 200 / * milisekonda mes hapave * / int kryesore (e pavlefshme) {DDRB = 0xff; / * Aktivizo daljen në të gjitha kunjat B */ PORTB = 0x00; / * Vendosini të gjitha në 0v */ ndërsa (1) {/ * lak kryesor këtu */ PORTB = BLUE; _vonesa_ms (Vonesë); PORTB = E ZE; _vonesa_ms (Vonesë); PORTB = KUQ; _vonesa_ms (Vonesë); PORTB = E verdhë; _vonesa_ms (Vonesë); }} Sa i thjeshtë është ai kod? Vërtetë e thjeshtë. E tëra çfarë bën është të bëjë disa përkufizime të këndshme, kështu që unë mund t'i referohem telave sipas ngjyrës dhe jo emrave të tyre pin, dhe pastaj i ndërron ato në sekuencë me një vonesë të rregullueshme në mes. Për fillim, unë zgjodha një vonesë gjysmë sekondë midis hapave. Shikoni videon e shkurtër për rezultatet. Nëse jeni vërtet në lojën tuaj, numëroni numrin e hapave për cikël për të kuptuar zgjidhjen këndore të motorit me një hap. (Oh po. PS. Drejton pa ngarkesë në 3.6v lehtë. Shikoni baterinë në video.)

Hapi 5: Lëvizeni prapa dhe me radhë

Pra, e keni atë të funksionojë në drejtim të akrepave të orës. Diçka më interesante? Një pastrim i vogël i kodit, dhe ne mund ta bëjmë atë mbrapa dhe me radhë. Vendosa sekuencën e akrepave të orës në një grup, në mënyrë që të kaloni nëpër fazat me një lak të thjeshtë për. Tani mund të drejtoni lakin lart ose poshtë për të shkuar në drejtim të akrepave të orës ose kundër.

int kryesore (e pavlefshme) {const uint8_t vonesë = 50; const uint8_t në drejtim të akrepave të orës = {E Kaltër, E ZE, E KUQ, E Verdhë}; uint8_t i; DDRB = 0xff; / * Aktivizoni daljen në të gjitha kunjat B */ PORTB = 0x00; / * Vendosini të gjitha në 0v */ ndërsa (1) {/ * laku kryesor këtu */ për (i = 0; i <= 3; i ++) {/ * kaloni ngjyrat në drejtim të akrepave të orës */ PORTB = në drejtim të akrepave të orës ; _vonesa_ms (vonesë); } për (i = 3; i> = 0; i-) { / * hap përmes ngjyrave ccw * / PORTB = në drejtim të akrepave të orës ; _vonesa_ms (vonesë); }}} Shikoni videon e lezetshme për pjesën e pasme dhe të fortë.

Hapi 6: Unë kurrë nuk bëj gjysmë hapi, sepse nuk jam gjysmë-hapa…

Kërkoni lirikën mënjanë, përgjysmë hapi motorin tuaj është aty ku është. Ju merrni më shumë rrymë maksimale, çift rrotullues më të menjëhershëm dhe dy herë rezolucionin këndor. Gjysmë-hapi me pak fjalë: Në vend të blu, të zezë, të kuqe, të verdhë, ju drejtoni motorin me blu, blu+të zezë, të zezë, të zezë+të kuqe, të kuqe, të kuqe+të verdhë, të verdhë, të verdhë+blu. Rezultati është se për gjysmën e kohës jeni duke përfshirë të dy magnetët në të njëjtën kohë. Dhe gjatë kohës që të dy grupet janë të angazhuar, motori drejtohet në gjysmë të rrugës midis të dyve, duke zvogëluar këndin midis "hapave" dhe duke e bërë motorin të kthehet më mirë. A mund ta kuptoni nga videoja? Nuk jam i sigurt… Tani pjesa e kodit që bën gjysmën e hapit duket kështu:

pavlefshme gjysmëHapja (uint16_t vonesë, uint8_t drejtim ) {uint8_t i; për (i = 0; i <= 3; i ++) {PORTB = drejtim ; / * pjesa me një spirale */ _vonesa_ms (vonesë); PORTB | = drejtimi [i+1]; / * shtoni në gjysmë hapi */ _delay_ms (vonesë); }} Komanda e parë PORTB vendos një pol të vetëm në pozitiv dhe të gjithë pjesën tjetër në negativ. Pastaj pret. Pastaj komanda e dytë PORTB vendos një shtyllë të dytë (nga dredha -dredha tjetër) në pozitive, duke përfshirë të dy mbështjelljet për 1.4x çift rrotullues (dhe 2x rrymën). Një listë e plotë e programit është bashkangjitur më poshtë. Dy vargje tani janë përcaktuar (në drejtim të akrepave të orës, kundër akrepave të orës) dhe të dyja kanë nga 5 elementë secila për të lejuar hyrjen i+1 në funksionin halfSpepping.

Hapi 7: Shtoni një shofer motorik

Shtoni një shofer motorik
Shtoni një shofer motorik
Shtoni një shofer motorik
Shtoni një shofer motorik
Shtoni një shofer motorik
Shtoni një shofer motorik

Deri këtu mirë.

Problemi i vetëm është se motori nuk duket të ketë aq shumë çift rrotullues, i cili mund të jetë për shkak të faktit se mikroprocesori do të japë vetëm 50mA per për pin. Hapi tjetër i qartë do të ishte lidhja e tij me një shofer motorik për ta furnizuar me më shumë lëng. Por pastaj mendoj pak: Unë po e drejtoj atë vetëm me 5v, dhe rezistenca e mbështjelljes së spirales është 125 ohms. Që do të thotë se motori tërheq vetëm 40mA për kunj, dhe duhet të drejtohet mirë nga çipi AVR. Kështu që për të marrë më shumë tension duke drejtuar motorin, e lidha me një çip SN754410 H-bridge. Qarku është mjaft i thjeshtë. Çdo kunj nga AVR shkon në një hyrje, dhe kunjat përkatëse të daljes shkojnë në motor. Çipi ka nevojë për 5v për pjesën logjike dhe mund të marrë shumë më tepër tension në pjesën motorike. Drejtimi i tij me 11.25v (tre bateri 3.6v) ndihmoi pak. Çift rrotullues dukshëm më i madh në gishtin tim, por ende nuk është një central elektrik. Jo keq për një motor i cili është më i vogël se një nikel, megjithatë. Dhe tani qarku është bërë një drejtues motorësh bipolar me qëllim të përgjithshëm. Shtuar më 29 nëntor: Drejtoni motorin natën e kaluar në 12v për një kohë dhe filloi të nxehet. Nuk jam i sigurt nëse ishte një problem frekuence tingëllues ose nëse ishte thjesht shumë aktual për mbështjelljet. Sido që të jetë, jini pak të kujdesshëm nëse e drejtoni këtë motor të vogël me tensione më të mëdha.

Hapi 8: Fundi

Pra, çfarë mësova? Drejtimi i një motori stepper me një AVR (dhe një çip H-urë) është mjaft i lehtë, madje edhe në modalitetin "e zbukuruar" me gjysmë hapi.

Sidoqoftë, nuk jam i sigurt se çfarë do të bëj me motorët e vegjël. Ndonjë sugjerim?

Recommended: