Seotud mooduliga: [HW] Mootorite moodul
Mootorite teek võimaldab juhtida Kodulabori mootorite moodulit ja mootoreid, mis sinna ühenduvad. Olemas on alalisvoolu-, samm- ja servomootorite juhtimise funktsioonid.
Ühe alalisvoolu mootorikontrolleri juhtviikude seadistamine väljundiks. Parameetrid:
Alalisvoolu mootorikontrolleri juhtkäsk. Parameetrid:
Ühe alalisvoolu mootorikontrolleri juhtkäsk. Mootor jääb etteantud suuna ja kiirusega pöörlema. Parameetrid:
Unipolaarse mootorikontrolleri juhtviikude seadistamine väljundiks. Parameetrid:
Unipolaarse samm-mootori mootorikontrolleri poolsammumise juhtkäsk. Funktsioon on blokeeruv ehk seda täidetakse seni, kuni soovitud arv samme on tehtud. Parameetrid:
Bipolaarse mootorikontrolleri juhtviikude seadistamine väljundiks.
Bipolaarse samm-mootori mootorikontrolleri poolsammumise juhtkäsk. Funktsioon on blokeeruv ehk seda täidetakse seni, kuni soovitud arv samme on tehtud. Parameetrid:
Ühe servomootori juhtviikude väljundiks seadistamine ja taimer 1 seadistamine PWM režiimi. Parameetrid:
Servomootori juhtkäsk. Kui juhitakse positsioneerivat servomootorit, siis muutub rootori asend, kui lõputult pöörlevat, siis muutub pöörlemise kiirus. Parameetrid:
Järgnev näide demonstreerib kõiki teegi funktsioone. Järjest seadistatakse mootorikontrollerid ja liigutatakse mootoreid.
#include <homelab/module/motors.h> int main(void) { // Alalisvoolu mootorikontrollerite 1 ja 2 seadistamine dcmotor_init(1); dcmotor_init(2); // Bipolaarse samm-mootori kontrolleri seadistamine bipolar_init(); // Servomootorite 0 ja 1 juhtsignaalide seadistamine servomotor_init(0); servomotor_init(1); // Üks alalisvoolu mootor pöörlema ühtpidi, teine teistpidi dcmotor_drive(1, -1); dcmotor_drive(2, +1); // Samm-mootori pööramine 100 kraadi ühele poole ja seejärel // 2 korda kiiremini teisele poole bipolar_halfstep(1, 100, 50); bipolar_halfstep(-1, 100, 25); // Servomootorite vastassuunda keeramine servomotor_position(0, -100); servomotor_position(1, +100); }
Näide demonstreerib alalisvoolu mootori kiiruse etteandmist.
#include <homelab/module/motors.h> int main(void) { unsigned char speed = 0; // Mootori initsialiseerimine dcmotor_drive_pwm_init(1, TIMER2_NO_PRESCALE); while(1) { speed = 100; // Mootorile valitud kiiruse etteandmine. dcmotor_drive_pwm(1, 1, speed); } }