This is an old revision of the document!
Связан с модулем: [HW] Модуль двигателей
Библиотека двигателей позволяет управлять модулем двигателей и двигателями, которые туда подключаются. Существуют функции управления двигателями постоянного тока, шаговыми двигателями и серводвигателями.
Настройка управляющих выводов одного контроллера двигателя постоянного тока выходом. Параметры:
Управляющий приказ контроллера двигателя постоянного тока. Параметры:
Ü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 0 ja 1 seadistamine dcmotor_init(0); dcmotor_init(1); // 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(0, -1); dcmotor_drive(1, +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(0, TIMER2_NO_PRESCALE); while(1) { speed = 100; // Mootorile valitud kiiruse etteandmine. dcmotor_drive_pwm(0, 1, speed); } }