This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:motor:servo [2014/10/13 13:34] – raivo.sell | et:examples:motor:servo [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~PB~~ | + | < |
| ====== Servomootor ====== | ====== Servomootor ====== | ||
| - | //Vajalikud teadmised: [HW] [[et: | + | //Vajalikud teadmised: |
| + | [HW] [[et: | ||
| + | [AVR] [[et:avr:timers]], [AVR] [[et: | ||
| + | [LIB] [[et: | ||
| ===== Teooria ===== | ===== Teooria ===== | ||
| Line 23: | Line 26: | ||
| <code c> | <code c> | ||
| - | // Taimeri väärtus PWM täisperioodi (20 ms) saavutamiseks. | + | // Taimeri väärtus PWM täisperioodi (20 ms) saavutamiseks |
| - | // F_CPU on mikrokontrolleri taktsagedus, | + | // F_CPU on mikrokontrolleri taktsagedus, |
| #define PWM_PERIOD | #define PWM_PERIOD | ||
| Line 33: | Line 36: | ||
| // Kordamistegur, | // Kordamistegur, | ||
| // +1 liidetakse selleks, et poolperiood kindlasti ulatuks 1 ja 2 ms | // +1 liidetakse selleks, et poolperiood kindlasti ulatuks 1 ja 2 ms | ||
| - | // piiridesse või siis natuke üle. | + | // piiridesse või siis natuke üle |
| #define PWM_RATIO | #define PWM_RATIO | ||
| - | // Viikude | + | // Viikude |
| static pin servo_pins[2] = | static pin servo_pins[2] = | ||
| { | { | ||
| Line 42: | Line 45: | ||
| }; | }; | ||
| - | // Määratud servomootori | + | // Määratud servomootori |
| void servomotor_init(unsigned char index) | void servomotor_init(unsigned char index) | ||
| { | { | ||
| - | // PWM signaali | + | // PWM signaali |
| pin_setup_output(servo_pins[index]); | pin_setup_output(servo_pins[index]); | ||
| Line 86: | Line 89: | ||
| <code c> | <code c> | ||
| - | // Kodulabori mootorite mooduli servomootori näidisprogramm. | + | // Kodulabori mootorite mooduli servomootori näidisprogramm |
| #include < | #include < | ||
| #include < | #include < | ||
| Line 102: | Line 105: | ||
| // Lõputu tsükkel | // Lõputu tsükkel | ||
| - | while (true) | + | while (1) |
| { | { | ||
| - | // Potentsiomeetrist positsiooni lugemine ja servo- | + | // Potentsiomeetrist positsiooni lugemine ja servomootori |
| - | // mootori | + | // piirkonda teisendamine |
| - | // Kodulabor II puhul tuleb lugeda vastavat ADC kanalit ning kasutada järgmist valemit: | + | // Kodulabor II puhul tuleb lugeda vastavat ADC kanalit ning kasutada |
| - | // position = ((short)adc_get_value(3) - (short)512) / (short)5; | + | // |
| - | position = ((short)adc_get_value(15) / 10) - 102 ; | + | // position = ((short)adc_get_value(3) - (short)512) / (short)5; |
| + | position = ((short)adc_get_value(15) / 10) - 102 ; | ||
| - | // Servomootori positsiooni määramine | + | // Servomootori positsiooni määramine |
| - | servomotor_position(1, | + | servomotor_position(1, |
| } | } | ||
| } | } | ||
| </ | </ | ||