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

Niepoprawne działanie serwomechanizmu po podłączeniu do ATmega328

JacexPL 09 Sty 2023 21:42 411 6
REKLAMA
  • #1 20377156
    JacexPL
    Poziom 9  
    Posty: 16
    Cześć wszystkim,

    mam dwa główne problemy, na które od dłuższego czasu nie mogę znaleźć rozwiązania.

    Najpierw z grubsza opiszę układ na którym pracuję.

    Niepoprawne działanie serwomechanizmu po podłączeniu do ATmega328

    Niepoprawne działanie serwomechanizmu po podłączeniu do ATmega328

    Układ przeznaczony jest do sterowania modelem RC i zasilany jest albo z USBasp (zmierzone napięcie na wyjściu to ok. 4,2V) albo z układu BEC z ESC (zmierzone 5,2V na wyjściu, ESC redox 40A 2-3S, BEC 5V/3A). Jednym z elementów jest wyjście na serwomechanizm, który przysparza mi trochę problemów.

    Software wgrany na mikrokontroler:
    #include <Adafruit_TiCoServo.h>
    
    Adafruit_TiCoServo Ster;
    
    void setup() {
    
      Ster.attach(STER_PIN, 1000, 2000);
    
    }
    
    void loop () {
    
      int y = (millis() / 1000) % 18;
      y = y * 10;
      Ster.write(y);
    
    }


    1.
    Układ zrealizowany jest zarówno na płytce PCB (jak na zdjęciu powyżej) oraz na płytce stykowej. Początkowym problemem było serwo (MicroServo SG-90), które działało bezproblemowo w układzie z płytką stykową. Natomiast po przeniesieniu mikrokontrolera na PCB, serwo wieszało się po kilku/kilkunastu sekundach pracy. Wydaje mi się, że to oznacza, że software nie jest problemem.
    Dopiero ponowne podłączenie zasilania do układu lub reset mikrokontrolera powodowało powrót układu do pracy na kolejne kilka sekund.
    Po wymianie serwa na nowsze (RacerStar DS6209MG) oba układy zaczęły działać poprawnie przy zasilaniu z układu BEC z ESC. Natomiast przy zasilaniu z USBasp, MicroServo w ogóle nie reaguje, natomiast sygnał na oscyloskopie schodzi do 0V. Nowsze serwo mimo, że nie reaguje, to pozostawia poprawny kształt sygnału wyjściowego.
    Tutaj moje pytanie brzmi, jaka jest możliwa przyczyna takiego zachowania?

    2.
    Po odkryciu działającego układu (nowsze serwo + zasilanie układem BEC) spróbowałem zasilić układ zasilaczem laboratoryjnym (ZHAOXIN RXN-305D) napięciem 5V z maksymalnym dostępnym amperażem na wyjściu. Plus i minus podpięte w miejsce układu BEC z ESC. Sygnał na oscyloskopie ma poprawny kształt, zachowuje się tak samo (amplituda i szerokość sygnału PPM) jak przy podpięciu układu BEC. Serwo jednak nie wykonuje żadnych obrotów, oprócz delikatnych wibracji. Zmiana źródła zasilania powoduje, że serwo zaczyna działać poprawnie.
    Jest to sytuacja, której nie jestem w stanie zrozumieć, stąd moje zapytanie do bardziej doświadczonych kolegów o możliwe przyczyny takiego zachowania.

    Dopuszczam możliwość, że schemat elektryczny ma jakieś błędy, jest to w sumie pierwsze PCB, które zaprojektowałem. Jestem świadom braków na tym schemacie (tj. przycisk Reset, LED itp.). To wszystko będzie realizowane w kolejnych wersjach tego projektu. W pierwszej wersji chodzi mi wyłącznie o funkcjonalność podstawowego układu.
    W między czasie zlutowałem drugą płytkę i sprawdziłem jej połączenia, aby upewnić się, że wszystko jest zgodnie ze schematem. Na drugiej płytce zmieniłem również wartość kondensatorów przy zasilaniu mikrokontrolera (z 10nF na 100nF).

    Będę bardzo wdzięczny za Waszą pomoc, ponieważ chciałbym rozwiązać i zrozumieć występujące problemy zanim przejdę do dalszych etapów projektu.
  • REKLAMA
  • #2 20377524
    viayner
    Poziom 43  
    Posty: 10573
    Pomógł: 1557
    Ocena: 2009
    Witam,
    trudno jest wnioskowac dokladniej nie majac obrazu calosci projektu.
    - sprawdz dokladnie plytke i porownaj ja z wersja na plytce stykowej
    - zalacz pelne schematy i polaczenia (ze szczegolami)
    Wspomniane zawieszanie sie moze wynikac z problemow z zasilaniem, cos "smieci" i wprowadza mikrokontroler w jakis nieustalony stan czy go resetuje. Masz kondensatory odsprzegajace w odpowiednich punktach? jak prowadzisz zasilanie?
    Pozdrawiam
  • REKLAMA
  • #3 20377907
    JacexPL
    Poziom 9  
    Posty: 16
    viayner napisał:
    Witam,
    trudno jest wnioskowac dokladniej nie majac obrazu calosci projektu.
    - sprawdz dokladnie plytke i porownaj ja z wersja na plytce stykowej
    - zalacz pelne schematy i polaczenia (ze szczegolami)
    Wspomniane zawieszanie sie moze wynikac z problemow z zasilaniem, cos "smieci" i wprowadza mikrokontroler w jakis nieustalony stan czy go resetuje. Masz kondensatory odsprzegajace w odpowiednich punktach? jak prowadzisz zasilanie?
    Pozdrawiam


    - Płytkę PCB z płytką stykową już porównywałem. W układzie jest tak naprawdę tylko kilka elementów dookoła mikrokontrolera: kwarc (16 MHz), 2x kondensatory 22pF do kwarcu, rezystor 10k pod pin 1 na mikrokontrolerze oraz 2x kondensatory na zasilaniu mikro. Jedyną różnicą jest umieszczenie na PCB dość blisko przekaźnika. Myślałem, że może jego pole wpływa jakoś na pracę uC lub kwarcu. Zrobiłem jednak testy na płytce stykowej, zbliżyłem również podłączony przekaźnik do układu, nie powodowało to jednak takich efektów jak na płytce PCB. Tutaj wciąż sprawa pozostaje nierozwiązania :(

    - Dodaję w takim razie załączniki płytki PCB obu warstw. Myślę, że to odpowie na pytanie jak prowadzone jest zasilanie oraz czy kondensatory odsprzęgające są w odpowiednich punktach. Dość dziwne jest to, że pierwsze serwo (MicroServo SG90) powoduje zawieszenie się uC zupełnie wygaszając sygnał sterujący (badane pod oscyloskopem). Czy możliwe jest to, że generuje ono jakiś niepożądany sygnał zwrotny, co wprowadza uC w nieustalony stan?
    Załączniki:
    • Dolna warstwa.pdf (212.55 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Gorna warstwa.pdf (229.42 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 20377926
    viayner
    Poziom 43  
    Posty: 10573
    Pomógł: 1557
    Ocena: 2009
    Witam,
    troszke dziwnie prowadzisz linje zasilajace jak dla mnie.
    Osobiscie dal bym na kazdym zasilaniu kondensatroy odsprzegajace, nie widze ich na zasilaniu 7414.
    Jak sterujesz przekaznik? na cewce nie ma ukladu gaszacego/zapobiegajacego przepiecia. Czy na plyce stykowej byl przekaznik?
    Pozdrawiam
  • REKLAMA
  • #5 20377954
    JacexPL
    Poziom 9  
    Posty: 16
    viayner napisał:
    Witam,
    troszke dziwnie prowadzisz linje zasilajace jak dla mnie.
    Osobiscie dal bym na kazdym zasilaniu kondensatroy odsprzegajace, nie widze ich na zasilaniu 7414.
    Jak sterujesz przekaznik? na cewce nie ma ukladu gaszacego/zapobiegajacego przepiecia. Czy na plyce stykowej byl przekaznik?
    Pozdrawiam


    Ok, zapamiętam na następny raz o kondensatorach odsprzęgających.

    Przekaźnik w sumie był zaplanowany w celu odseparowania źródła zasilania. Jeśli programator jest podpięty, przekaźnik jest wysterowywany i płytka zasilana jest z programatora. Po odłączeniu, zasilanie realizowane jest poprzez układ BEC z ESC.
    Na płytce stykowej również jest przekaźnik, tylko nie był umieszczony tak blisko mikrokontrolera jak na płytce PCB.
  • REKLAMA
  • #6 20377976
    viayner
    Poziom 43  
    Posty: 10573
    Pomógł: 1557
    Ocena: 2009
    Witam,
    moze przetestuj takie podejscie:
    - monitoruj linje zasilania od chwili wlaczenia mechanizmu az do jego zatrzymania
    - szukaj na roznych linjach sygnalow zaklucajacych w okolicach momentu zatrzymania mechanizmu
    - ja bym sie skupil na zasilaniu mechanizmu oraz jego linji sterujacej
    Swoja droga czy wiadomo co siedzi w srodku tego mechanizmu wzgledme sterowania elektronicznego? czy ma on jakies zabezpieczenia i odsprzegania na zasilaniu? Rozwaz zasilanie mechanizmu z innego zrudla zasilania/odseparowanego a tylko masa jest wspolna.
    Pozdrawiam
  • #7 20379339
    viayner
    Poziom 43  
    Posty: 10573
    Pomógł: 1557
    Ocena: 2009
    Witam,
    przyjzalem sie ukladowi i proponuje:
    C3/C4 - jeden daj 100n a drugi elektrolit powiedzmy 10-100uF,
    Dodaj 100n na pinie 14 7414,
    Dodaj 100n na kazdym zasilaniu i uklad zapobiegajacy przepiaciu na cewce przekaznika, jezeli gdzies jest wiekszy pobor pradu lub dlugie przewody dodaj elektrolit 10-100uF
    Pozdrawiam

Podsumowanie tematu

✨ Użytkownik zgłasza problemy z działaniem serwomechanizmu w układzie opartym na mikrokontrolerze ATmega328, który jest zasilany z USBasp lub układu BEC z ESC. W kodzie używa biblioteki Adafruit_TiCoServo do sterowania serwomechanizmem. Problemy obejmują zawieszanie się mikrokontrolera, co może być spowodowane zakłóceniami w zasilaniu lub nieprawidłowym podłączeniem. Użytkownik porównuje płytkę PCB z płytką stykową, ale nie zauważa różnic w działaniu. Użytkownicy sugerują dodanie kondensatorów odsprzegających, monitorowanie linii zasilania oraz rozważenie zasilania serwomechanizmu z oddzielnego źródła. Proponowane zmiany obejmują dodanie kondensatorów 100nF i elektrolitów 10-100uF w odpowiednich miejscach.
Wygenerowane przez model językowy.
REKLAMA