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

  • prescale
    Taktijaguri valiku tüüp. Soovitav on kasutada kahte esimest taktijagurit. Väärtuste variandid:
    • TIMER2_NO_PRESCALE - Jagurit ei kasutata.
    • TIMER2_PRESCALE_8 - Jagamistegur 8.
    • TIMER2_PRESCALE_64 - Jagamistegur 64.
    • TIMER2_PRESCALE_256 - Jagamistegur 256.
    • TIMER2_PRESCALE_1024 - Jagamistegur 1024.

Funktsioonid

  • void dcmotor_init(unsigned char index)

Ühe alalisvoolu mootorikontrolleri juhtviikude seadistamine väljundiks. Parameetrid:

  • index - Mootorikontrolleri number. Väärtus 1 kuni 4.
  • void dcmotor_drive(unsigned char index, signed char direction)

Alalisvoolu mootorikontrolleri juhtkäsk. Parameetrid:

  • index - Mootorikontrolleri number. Väärtus 1 kuni 4.
  • direction - Mootori polaarsus. Väärtus -1, 0 või +1. 0 puhul mootor seisab, muul juhul pöörleb vastavas suunas.
  • void dcmotor_drive_pwm_init(unsigned char index, timer2_prescale prescaler)
    Ühe alalisvoolu mootorikontrolleri juhtviikude seadistamine väljundiks kiiruse reguleerimisega. Lisaks saab määrata sobiva taktijaguri, olenevalt sellest, kui suure sagedusega PWM-i on vaja. Parameetrid:
    • index - Mootorikontrolleri number. Väärtus 1 kuni 4.
    • prescaler - Taktijaguri valik. Vahel on mõistlik kasutada taktijagurit, kuna väga kiiresti toimuvad katkestused võivad häirida programmi tööd. Näiteks UH anduri kasutamise korral on vaja taktijaguriks määrata TIMER2_PRESCALE_8.
  • void dcmotor_drive_pwm(unsigned char index, signed char direction, unsigned char speed)

Ühe alalisvoolu mootorikontrolleri juhtkäsk. Mootor jääb etteantud suuna ja kiirusega pöörlema. Parameetrid:

  • index - Mootorikontrolleri number. Väärtus 1 kuni 4.
  • direction - Mootori polaarsus. Väärtus -1 või +1.
  • speed - Mootori kiirus. Väärtus 0 - 255. 0 puhul mootor seisab ja 255 on maksimaalne võimalik kiirus.
  • void unipolar_init(unsigned char index)

Unipolaarse mootorikontrolleri juhtviikude seadistamine väljundiks. Parameetrid:

  • index - Mootorikontrolleri number. Väärtus 0 või 1. (Kodulabor III puhul 1)
  • void unipolar_halfstep(unsigned char index, signed char direction, unsigned short num_steps, unsigned char speed)

Unipolaarse samm-mootori mootorikontrolleri poolsammumise juhtkäsk. Funktsioon on blokeeruv ehk seda täidetakse seni, kuni soovitud arv samme on tehtud. Parameetrid:

  • index - Mootorikontrolleri number. Väärtus 0 või 1. (Kodulabor III puhul 1)
  • direction - Pöörlemissuund. Väärtus -1 või +1.
  • num_steps - Poolsammude arv.
  • speed - Ühe sammu tegemise aeg millisekundites.
  • void bipolar_init(void)

Bipolaarse mootorikontrolleri juhtviikude seadistamine väljundiks.

  • void bipolar_halfstep(signed char direction, unsigned short num_steps, unsigned char speed)

Bipolaarse samm-mootori mootorikontrolleri poolsammumise juhtkäsk. Funktsioon on blokeeruv ehk seda täidetakse seni, kuni soovitud arv samme on tehtud. Parameetrid:

  • direction - Pöörlemissuund. Väärtus -1 või +1.
  • num_steps - Poolsammude arv.
  • speed - Ühe sammu tegemise aeg millisekundites.
  • void servomotor_init(unsigned char index)

Ühe servomootori juhtviikude väljundiks seadistamine ja taimer 1 seadistamine PWM režiimi. Parameetrid:

  • index - Servomootori number. Väärtus 0 või 1. (Kodulabor III puhul 1-4)
  • void servomotor_position(unsigned char index, signed short position)

Servomootori juhtkäsk. Kui juhitakse positsioneerivat servomootorit, siis muutub rootori asend, kui lõputult pöörlevat, siis muutub pöörlemise kiirus. Parameetrid:

  • index - Servomootori number. Väärtus 0 või 1. (Kodulabor III puhul 1-4)
  • position - Rootori asend või pöörlemiskiirus (olenevalt mootorist). Väärtus -100 kuni +100. 0 on keskasend või peatumine.

 

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);			      
  	}
}
et/software/homelab/library/module/motor.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0