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

Zakłócenia w sterowaniu PWM serwomechanizmu STM32 - potencjalne metody eliminacji

polak27 22 Lis 2020 23:32 687 8
  • #1 19062246
    polak27
    Poziom 9  
    Posty: 36
    Ocena: 5
    Witam. Prosiłbym o radę w pewnym problemie. Mianowicie steruję PWMem serwomechanizm z STM32. Niestety cały czas serwo delikatnie drga(steruję nim sobie radiowo poprzez nrf24l01). Na oscyloskopie sprawdziłem, że dzieje się to dopiero po podłączeniu sygnału PWM do złączki. Na moje oko wynika, że zakłócenie wnika przewodem. W jaki sposób takich zakłóceń mógłbym się pozbyć? Przychodzi mi do głowy kilka rozwiązań, jednak nie wiem czy będą skuteczne:
    - dodanie dławika ferrytowego i zwinięcie przewodu serwa.
    - dodanie przewodów ekranowanych, które stłumiłyby zakłócenie.
    -dodać optoizolację

    Gdyby ktoś spotkał się z podobnym problemem i miał może jakąś radę to byłbym wdzięczny. Załączam taki poglądowy schemat jak wygląda całość, żeby łatwiej było sobie unaocznić problem.
    Zakłócenia w sterowaniu PWM serwomechanizmu STM32 - potencjalne metody eliminacji
  • #2 19062276
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Gdy podłączasz PWM do servo, pojawia się prąd zasilający silnik.
    Sprawdziłbym zasilacz 5V czy ma wysterczającą wydajność prądową i czy pod innym obciążeniem nie "przysiada".
    Możesz też podłączyć inne servo by sprawdzić czy to, którego używasz nie jest uszkodzone.

    I jeszcze jedno, niektóre typy serv są wrażliwe na poziomy sygnału PWM. Daj mu sygnał 0V/5V zamiast 0V/3.3V, może tu jest pies pogrzebany.
  • #3 19062318
    polak27
    Poziom 9  
    Posty: 36
    Ocena: 5
    Różne typy zasilania już sprawdzałem: akumulatory, dwa rodzaje zasilaczy, przetwornice, stabilizatory. Raczej nie jest to problem z wydajnością prądową. Spróbuję tego co proponujesz, przekonwertuję napięcie 3.3 na 5 i zobaczę jaki będzie efekt. Dodam jeszcze, że jest to serwo MG996R, ale na serwie MG90S również problem występuje. Ogólnie występuje też takie zjawisko, że w pewnych położeniach serwo zaczyna głośniej "mruczeć" i chyba też wtedy te zakłócenia wydają się większe. Jednak jak posteruję serwem prawo, lewo za pomocą potencjometru to na oscyloskopie na VCC widać spore skoki. Widzę na zasilaniu piki w dół co 20ms, czyli ewidentnie jest to PWM. W skrajnych sytuacjach zdarzało się, że serwo zerwało transmisję radiową. Bez podłączenia pwma serwa cała transmisja dwukierunkowa działa bardzo ładnie, nawet pomimo działającego obok innego silnika szczotkowego.
  • #4 19062324
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    A z szerokością ścieżek zasilających servojest ok?
    Na nich może występować również znaczący spadek napięcia, ale pewnie o tym wiesz.

    Robisz układ na płytce stykowej?
    Jeśli tak to na przewodach masz bankowo duże spadki napięć.
  • #5 19062336
    polak27
    Poziom 9  
    Posty: 36
    Ocena: 5
    Na ten moment jest to jeszcze na etapie prototypu i wszystkie trzy połączenia(VCC, GND oraz PWM) są za pomocą przewodów połączeniowych goldpin. Być może pomoże skrócenie czegoś, albo jakoś przeorganizować to i po drodze na zasilaniu gdzieś dodać jakiś dławik. Jeśli chodzi o pętle masy to wiem, że to też może być problemem, jednak próbowałem już łączyć w różnych punktach. Może mieć też jakieś znaczenie że procesor jest z zestawu nukleo 103 (jednak zasilanie mam już ustawione zworkami na zewnętrzne, a nie z USB).
  • #6 19062344
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    A sprawdzałeś czystość sygnału PWM czy jest taki ( bez podłączania do serva ) jaki ma być?

    Czasem HAL potrafi robić konfigurację nie tak jak nam się wydaje, dlatego wolę sam takie rzeczy na rejestrach robić z pominięciem HALa.
  • #7 19062357
    polak27
    Poziom 9  
    Posty: 36
    Ocena: 5
    Tak sprawdzałem również czy sam PWM jest ok. Wszystko gra. Zmieniam wypełnienie makrem, które tylko modyfikuje wartość rejestru porównawczego dla tego kanału i tylko wtedy gdy jest różnica w nowej ramce.

    uint8_t prev_RPM_PWM = 0;

    if (prev_RPM_PWM != Nrf24_Message[2])
    {
    prev_RPM_PWM = Nrf24_Message[2];
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, percent_to_oc_1_2(Nrf24_Message[2]));
    }

    Jeszcze sobie przełożyłem masę w inne miejsce i zauważyłem, że wtedy zakłócenia są nieco większe(gdy jest masa z STM32). Lepiej jest, choć nadal dość nie najlepiej gdy masę biorę ze stabilizatora. Ogólnie tych serw będzie aż 5 lub 6 i jak tak myślę, że każde szarpnie swoje to może być krucho. Myślę czy nie zrobić po prostu płytki, zrobić grubych ścieżek, wylać masę, dać optoizolację i wtedy sprawdzać bo może po prostu próbuję rozwiązać problem, którego na stykówce i kabelkach nie da się rozwiązać.
  • #8 19062361
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Daj po prostu grube kabelki i solidne połączenia masy i zasilania, bo goldpiny i płytki stykowe są jedynie dobre do sprawdzenia idei a nie docelowego działania układu.
    Możesz na zasilaniu dać jakąś indukcyjność, ale głównym problemem w takich układach są kabelki i goldpiny.
  • #9 19063197
    polak27
    Poziom 9  
    Posty: 36
    Ocena: 5
    Prosiłbym jeszcze o wskazówkę czy czegoś nie uwzględniłem przy projekcie płytki i połączeń. Chciałbym połączyć 7 serwomechanizmów i 1 pompkę (silnik szczotkowy) 12V, pobór do 0.5A. Każde serwo pobiera do 900mA przy 6V zasilania, zaś przy zablokowaniu aż do 2.5A. Chciałbym każde serwo zasilić oddzielną przetwornicą 5V 3A(a może lepiej użyć parami przetwornic 5A?), a pompkę przetwornicą 9V z prądem do 1 lub 1.5A. Całość zasilana jest z akumulatorów litowo jonowych 2x7V połączonych szeregowo czyli ok 14-15V. Jakiego typu przetwornice powinienem dobrać? Czy może być to tańsza przetwornica obniżająca napięcie, czy też musi być to układ uniwersalny obniżająco/podwyższający? W założeniach jest, że zasilanie może spaść o kilka voltów, a całość nadal ma pracować.
    Teraz kwestia przewodów. Serwa są po prostu wtykane w rzędy goldpinów potrójnymi wtyczkami. Jeśli chodzi o silnik pompki to jego włączenie powodowało zatrzymywanie transmisji radiowej (ale tylko z tego samego źródła zasilania, z innego źródła czyli pracując sobie obok wszystko było w porządku). Był on podłączony do taniej przetwornicy regulowanej 5A i trochę te wyłączenia wydają się dla mnie dziwne bo na oscyloskopie na zasilaniu głównym nie widzę jakichś skoków napięcia(może to jeszcze jakaś inna przyczyna?). Wydaje mi się, że trzeba by dać przewody ekranowane ze złącza ARK.
    Byłbym wdzięczny za każdą pomoc.

Podsumowanie tematu

✨ Użytkownik zgłasza problem z drganiem serwomechanizmu MG996R podczas sterowania sygnałem PWM z mikrokontrolera STM32, co wydaje się być spowodowane zakłóceniami w przewodach. Proponowane metody eliminacji zakłóceń obejmują dodanie dławika ferrytowego, użycie przewodów ekranowanych oraz optoizolację. Użytkownik sprawdził różne źródła zasilania, ale problem nadal występuje, a oscyloskop pokazuje skoki napięcia na zasilaniu. Inne sugestie dotyczą poprawy jakości połączeń, użycia grubych przewodów oraz rozważenia projektowania płytki PCB z odpowiednimi ścieżkami zasilającymi. Użytkownik planuje zasilanie kilku serwomechanizmów i silnika szczotkowego, co wymaga przemyślenia doboru przetwornic zasilających.
Wygenerowane przez model językowy.
REKLAMA