This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:motor:dc_speed [2013/04/29 08:04] – rellermaa | et:examples:motor:dc_speed [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | < |
| - | + | ====== | |
| - | <note important> | + | |
| //Vajalikud teadmised: [HW] [[et: | //Vajalikud teadmised: [HW] [[et: | ||
| Line 40: | Line 39: | ||
| PS: mitte segi ajada RC Servo juhtsignaali PWM signaaliga | PS: mitte segi ajada RC Servo juhtsignaali PWM signaaliga | ||
| - | ===== Practice | + | ===== Praktika |
| - | The Motor module of the HomeLab includes motor board and DC motor equipped with integrated gearbox and encoder. Motor board allows connecting up to four DC motors. The schemes and instructions for connection are found in the chapter “Motors module”. | + | Kodulabori Mootorimoodul sisaldab Mootori plaati ning DC mootorit ülekande ning koodriga. Mootoriplaadile on võimalik ühendada kuni neli alalisvoolumootorit. Skeemid ja õpetused on vastaval alamlehel " |
| - | Every motor is connected to H-bridge which is controlled with two digital output pins of the microcontroller. Motor speed is controlled by timers which are generating software | + | Iga mootorit, mis on ühendatud |
| - | Motor speed can be controlled by relative value between | + | Mootori kiirust juhtiakse suhteliste väärtustega |
| <code c> | <code c> | ||
| Line 63: | Line 62: | ||
| }; | }; | ||
| - | // Initialize | + | // Käivita |
| void dcmotor_drive_pwm_init(unsigned char index, timer2_prescale prescaler) | void dcmotor_drive_pwm_init(unsigned char index, timer2_prescale prescaler) | ||
| { | { | ||
| Line 75: | Line 74: | ||
| pwm = PWMDEFAULT; | pwm = PWMDEFAULT; | ||
| - | for(i=0 ; i<CHMAX ; i++) // initialize all channels | + | for(i=0 ; i<CHMAX ; i++) // Käivita kõik kanalid |
| { | { | ||
| - | compare[i] = pwm; // | + | compare[i] = pwm; // |
| - | compbuff[i] = pwm; // set default | + | compbuff[i] = pwm; // algväärtusta |
| } | } | ||
| - | // Timer 2 normal regime, set prescaler | + | // Timer 2 normaal režiimis, sea jagur |
| timer2_init_normal(prescaler); | timer2_init_normal(prescaler); | ||
| - | // Timer 2 interrupts set enabled | + | // Timer 2 luba katkestused |
| timer2_overflow_interrupt_enable(true); | timer2_overflow_interrupt_enable(true); | ||
| - | // Enable global interrupts | + | // Luba globaalsed katkestused |
| sei(); | sei(); | ||
| } | } | ||
| Line 106: | Line 105: | ||
| </ | </ | ||
| - | With the array dcmotor_pins | + | Mootorite teegi maatriksis |
| - | For controlling motor speed the function | + | Mootorite kiiruse juhtimiseks kasutatakse funktsiooni |
| - | The following is an example program which controls first DC motor (DC motor connector 0) so that motor speed is half of the full speed. The speed is modulated with PWM signal of controlling pin. | + | Järgnevalt on toodud väiteprogramm, |
| <code c> | <code c> | ||
| Line 119: | Line 118: | ||
| int main(void) | int main(void) | ||
| { | { | ||
| - | // DC motor 0 init with no prescaler | + | // Eelseadista DC0 mootor, ilma timer2 jagurita |
| dcmotor_drive_pwm_init(0, | dcmotor_drive_pwm_init(0, | ||
| while(1) | while(1) | ||
| { | { | ||
| - | | + | |
| dcmotor_drive_pwm(0, | dcmotor_drive_pwm(0, | ||
| } | } | ||
| Line 130: | Line 129: | ||
| </ | </ | ||
| - | Another example program which controls first DC motor (DC motor connector 0) with potentiometer from Sensor module. | + | Teine näiteprogramm juhib esimest |
| <code c> | <code c> | ||
| Line 142: | Line 141: | ||
| int speed; | int speed; | ||
| - | // Adjusting ADC | + | // Käivita analoog-digitaal muundir |
| adc_init(ADC_REF_AVCC, | adc_init(ADC_REF_AVCC, | ||
| - | // DC motor 0 init with no prescaler | + | // Eelseadista DC0 mootor, ilma timer2 jagurita |
| dcmotor_drive_pwm_init(0, | dcmotor_drive_pwm_init(0, | ||
| while(1) | while(1) | ||
| { | { | ||
| - | // Potentiometer is connected to channel | + | // Potensiomeeter on ühendatud kanalisse |
| - | // Average of 4 samples are acquired | + | // Võtame nelja lugemi keskmise väärtuse |
| speed = adc_get_average_value(3, | speed = adc_get_average_value(3, | ||
| - | // DC motor drive with speed from potentiometer | + | // Loeme DC mootori kiiruse potensiomeetrist |
| - | // As potentiometer has 10-bit output but DC motor drive | + | // Kuna potensiomeetri väärtus on 10-bitine kuid DC mootori |
| - | // function | + | // funktsioon on 8-bitine, tuleb adc väärtus muundada 8-bitiseks |
| - | // to 8-bit e.g dividing the output with 4, or shifting bit | + | // jagades adc väärtus neljaga või nihutades adc väärtust paremale |
| - | // 2 position | + | // 2 kohta >>2 |
| dcmotor_drive_pwm(0, | dcmotor_drive_pwm(0, | ||
| } | } | ||
| } | } | ||
| </ | </ | ||