logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dlaczego serwomechanizm TowerPro SG-90 nie działa? Sterowanie, ATmega8.

at111112 13 Maj 2021 20:08 567 4
REKLAMA
  • #1 19431794
    at111112
    Poziom 7  
    Witam
    Mam pewien problem ze sterowaniem serwomechanizmem Tower ProSG90. Wykorzystałem Atmegę8. Poniżej zamieszczam kod programu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Serwo podłączyłem przewodem sterowania do PC0, zasilanie +5V. Serwo się nie porusza. Słychać jedynie takie ciche tykanie. Jak ktoś ma jakieś pomysły dlaczego się nie kręci to prosiłbym o pomoc
  • REKLAMA
  • #2 19432476
    landy13
    Poziom 31  
    at111112 napisał:
    dlaczego się nie kręci

    1 Bo może już ustawiło się w pozycji odpowiedniej dla 2ms i nie powinno się kręcić? Spróbuj zmienić impuls np na 1ms.
    2 Masy połączone?
    3 Serwo powinno się sterować timerem, a nie delajami. Ale w celach testowych wyrzuć z pętli obsługę wyświetlacza. Nie wiadomo co w niej jest, może jakieś przerwania rozciągają czasy.
  • REKLAMA
  • #3 19433498
    at111112
    Poziom 7  
    landy13 zmieniłem trochę swój program. Teraz wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Wciąż jest to samo. Słychać tylko takie delikatne tykanie serwa. Masa jest podłączona brązowym przewodem z serwa z resztą układu na płytce stykowej.
    Jeśli chodzi o zasilanie układu to jest to zasilane z USB z komputera. Dodatkowo podłączyłem zasilanie bateryjne 7,2V które następnie jest stabilizowane do 5V. Masy zasilania bateryjnego i z USB są połączone.
    Taktowanie rezonatorem 20MHz.

    Problem rozwiązany. Okazało się że przewody które zasilają serwo są trochę luźne w płytce stykowej. Po prostu wpiołem przewody zasilające w inne miejsce i wszystko działa. Btw serwo się nawet obraca na zasilaniu z USB i nie potrzeba zasilania z baterii.
  • REKLAMA
  • #4 19433555
    at111112
    Poziom 7  
    landy13 zmieniłem trochę swój program. Teraz wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Wciąż jest to samo. Słychać tylko takie delikatne tykanie serwa. Masa jest podłączona brązowym przewodem z serwa z resztą układu na płytce stykowej.
    Jeśli chodzi o zasilanie układu to jest to zasilane z USB z komputera. Dodatkowo podłączyłem zasilanie bateryjne 7,2V które następnie jest stabilizowane do 5V. Masy zasilania bateryjnego i z USB są połączone.
    Taktowanie rezonatorem 20MHz.

    Dodano po 26 [minuty]:

    Problem rozwiązany. Okazało się że przewody które zasilają serwo są trochę luźne w płytce stykowej. Po prostu wpiołem przewody zasilające w inne miejsce i wszystko działa. Btw serwo się nawet obraca na zasilaniu z USB i nie potrzeba zasilania z baterii.
  • #5 19433968
    dondu
    Moderator na urlopie...
    Jeśli mikrokontroler o mocy obliczeniowej większej niż komputer misji Apolla stosujesz do tak niewiarygodnie prostego zadania, to chociaż nie taktuj go niepotrzebnie tak dużym sygnałem zegarowym. Wystarczy 1MHz a i prąd pobierany przez mikrokontroler znacznie się zmniejszy.

    Pomijam już fakt, że ten mikrokontrroler wg producenta może pracować z kwarcem max 16MHz.

    Poza tym tak jak pisał Landy13, do tego zadania należy uruchomić timer, a konkretnie timer1, a mikrokontroler uśpić, co dodatkowo radykalnie zmniejszy zużycie prądu.

    Będziesz mógł wtedy mieć 100% mocy obliczeniowej mikrokontrolera do innych zadań, np. obsługi wyświetlacza, itp. Aktualnie zużywasz 99,9999% mocy obliczeniowej do odliczania opóźnienia (delay).

    Pomocne będą Ci: http://mikrokontrolery.blogspot.com/p/spis-tresci.html
REKLAMA