Table of Contents

Mootorid

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.

Andmetüübid

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:

 

Näide

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);			      
  	}
}