Problem został rozwiązany. Wystarczyło spiąć ze sobą masę baterii/zasilacza i Arduino.
Witam,
Staram się okiełznać sterowanie serwem, ale niestety, nie wychodzi mi nawet najprostszy program
Czy ktoś mógłby mi powiedzieć co mam źle?
Procesor: ATmega328P-PU (Arduino)
Timer: Timer 1
Serwo: TowerPro MG995
Częstotliwość taktowania CPU: 16MHz
Czerwony przewód serwa podłączyłem do baterii 4.5V
Brązowy przewód serwa podłączyłem do GND baterii
Żółty przewód serwa podłączyłem do PB1 w uC, czyli do OC1A (wyjście timera1)
Wartości ICR1 i OCR1A wyliczyłem tak:
ICR1 = 16Mhz/(256(prescaler)*50(częstotliwość dla serwa)) = 1250 -> ustawienie MAX Timera na taką wartość da mi 50Hz częstotliwości, czyli okres PWM = 20ms
Chciałem uzyskać pozycję ~neutralną, więc potrzebowałem sygnał o długości 1.5ms:
OCR1A = 1.5ms/20ms = 0.075, a 0.075 * 1250 =~ 94
Odpowiednie bity timera ustawiłem według dokumentacji mikrokontrolera.
Pozdrawiam,
greebqmaster
Witam,
Staram się okiełznać sterowanie serwem, ale niestety, nie wychodzi mi nawet najprostszy program
Kod: C / C++
Procesor: ATmega328P-PU (Arduino)
Timer: Timer 1
Serwo: TowerPro MG995
Częstotliwość taktowania CPU: 16MHz
Czerwony przewód serwa podłączyłem do baterii 4.5V
Brązowy przewód serwa podłączyłem do GND baterii
Żółty przewód serwa podłączyłem do PB1 w uC, czyli do OC1A (wyjście timera1)
Wartości ICR1 i OCR1A wyliczyłem tak:
ICR1 = 16Mhz/(256(prescaler)*50(częstotliwość dla serwa)) = 1250 -> ustawienie MAX Timera na taką wartość da mi 50Hz częstotliwości, czyli okres PWM = 20ms
Chciałem uzyskać pozycję ~neutralną, więc potrzebowałem sygnał o długości 1.5ms:
OCR1A = 1.5ms/20ms = 0.075, a 0.075 * 1250 =~ 94
Odpowiednie bity timera ustawiłem według dokumentacji mikrokontrolera.
Pozdrawiam,
greebqmaster