Quadcopter – zmiana firmware w regulatorach ESC

esc_fw_blheliFabryczny soft w regulatorach może być na prawdę kiepski. Może reagować z większym lub mniejszym opóźnieniem co dosyć wyraźnie przekłada się na osiągi modelu, może być trudny w konfiguracji, może mieć problemy z synchronizacją podczas sterowania silnika, w niektórych przypadkach może nawet spalić silnik do czego prawie u mnie doszło. Jeśli poradziłeś sobie ze zmianą softu w kontrolerze lotu, a potem w aparaturze, to i poradzisz sobie z tym – jest to tylko troszkę trudniejsze.

Atmel, Silabs

Dwa główne typy procesorów na jakie można się natknąć to Atmel oraz Silabs, należy usunąć koszulkę z regulatora i odczytać symbol z procesora. Przede wszystkim upewniamy się że dla naszych regulatorów istnieje alternatywne oprogramowanie BLHeli – w zależności czy jest to Atmel czy Silabs, przechodzimy do odpowiedniego katalogu, i sprawdzamy czy istnieją jakieś pliki dla naszego ESC. Aby się upewnić czy patrzymy na właściwe pliki, wyszukujemy plik o nazwie BLHeli supported Silabs/Atmel ESCs.pdf, otwieramy go, a następnie klikamy w przycisk RAW – dzięki temu będzie można pobrać plik, zapamiętaj to, w ten sam sposób trzeba pobierać wsady. Dokument zawiera spis wszystkich regulatorów wraz z ich fotografiami, więc można się upewnić że wgrywamy odpowiedni wsad – uwaga wgranie nieodpowiedniego wsadu oznacza niewłaściwe działanie regulatora, które może doprowadzić do jego uszkodzenia, uszkodzenia silnika, lub spowodowania zwarcia i uszkodzenia wszystkiego naraz łącznie z baterią! Miej na uwadze też fakt, że po zmianie oprogramowania często nie będzie się dało powrócić do tego fabrycznego, bo nie wszyscy producenci je udostępniają.

Układ Atmel wymaga takiego samego programatora jak aparatura, czyli AVR ISP. Układ Silabs wymaga programatora do kości Silabs, i albo trzeba go kupić, albo stworzyć samemu, co okazało się dosyć proste. Potrzebny nam do tego będzie zestaw: programator AVR ISP + Atmega8 z płytką + konwerter USB-UART. Płytka Arduino potrafi zastąpić te 3 rzeczy, więc jeśli taką masz to świetnie, ale jako że sam jej nie mam to musiałem wszystko składać samemu – opisze jednak obydwie metody. Pierwszym krokiem jest pobranie najnowszej wersji BLHeliSuite którą wypakowujemy.

ESC Silabs – Programator Arduino

arduiono_blheliTutaj jest prościej, bo wystarczy skorzystać ze środowiska Arduino i wgrać gotowy wsad. W tym celu uruchamiamy pobraną aplikację, i z górnego menu ATMEL/SILABS wybieramy Silabs Serial Interface. Następnie przechodzimy na kartę Intefaces for Silabs, i na dole wybieramy port COM pod którym znajduje się podłączone Arduino. W oknie Arduino Interfaces/Boxes przy naszym (lub kompatybilnym) arduino ustawiamy prędkość, i klikamy Make – aplikacja połączy się z bootloaderem i wgra wsad który stanie się programatorem Silabs. W moim przypadku wybrałem Arduino Uno, a piny intefrejsu Silabs to C2CK = PB3, a C2D = PB4.

ESC Silabs – Programator kombinowany

Przy użyciu dowolnego programatora ISP programujemy nasz procesor Atmega, może być to układ na jakiejś płytce uniwersalnej lub na płytce stykowej – obojętnie. Jeśli mamy Atmega8, wybieramy wsad \blhelisuite\Interfaces\Silabs\ATMega8\ATMEGA8_______8_PB3PB4v13000.hex. Jeśli mamy Atmega 88, 168, lub 328, to wybieramy wsad z folderu \blhelisuite\Interfaces\Silabs\Arduino\Arduino_mXXX__8_PB3PB4v13000.hex. Nasz interfejs Silabs będzie na tych samych pinach jak w przypadku Arduino. Po wgraniu wsadu trzeba jeszcze ustawić fusebity na wewnętrzny generator 8MHz.

silabs_programmer

Połącz konwerter USB-UART do procesora w taki sam sposób, w jaki jest on połączony na płytce Arduino, czyli piny TX i RX do pinów sprzętowego UARTu procesora RX i TX – połączenie to widać na obrazku. Masy również należy połączyć. Jeśli nasza płytka z Atmegą8 nie ma własnego zasilania, możemy je pociągnąć z płytki konwertera, ale nie należy ich łączyć w przypadku jeśli obydwie płytki mają własne zasilania. Dla naszego procesora, C2CK znajduje się na pinie PB3, a C2D na pinie PB4 (piny wymienione w nazwie pliku wsadowego).

ESC Silabs – Programowanie

c2ck_c2d_escW otwartym pliku PDF na zdjęciach poszczególnych regulatorów oznaczono pady do podłączenia programatora. Kolor czarny to masa, czerwony to C2D (data), a biały to C2CK (clock), przewody programatora lutujemy do tych padów (tu na zdjęciu kolory przewodów są losowe). Nie zapomnij o połączeniu masy. Aby umożliwić programowanie regulatora, należy podłączyć go do pakietu aby go zasilić, czy muszę wspominać aby zdjąć śmigło lub w ogóle odłączyć silnik?

Po pierwsze – w menu ATMEL/SILABS wybieramy jaki mamy programator. Dedykowany Silabs to silabs toolstick interface, nasz kombinowany lub arduino to silabs serial interface, a w przypadku programatora AVR ISP dla regulatorów z procesorami Atmel wybieramy atmel isp interface. W każdym przypadku w dolnym pasku okienka należy wybrać z listy podłączony sprzęt. Dla dedykowanego wybieramy i klikamy connect, dla kombinowanego/arduino wybieramy port i klikamy connect, dla ISP po prostu wybieramy typ programatora z listy. Jeśli wszystko jest podłączone a ESC zasilony, możemy spróbować się połączyć przyciskiem Connect – jeśli program nie wywali żadnego błędu, to znaczy że wszystko działa.

blhelisuite_interface_failed
Powyższy komunikat błędu oznacza problem z połączeniem z Arduino lub Atmega, sprawdź czy przewody UART nie są zamienione, upewnij się że wgrany jest odpowiedni wsad.

blhelisuite_besc_failed
Powyższy komunikat oznacza prawidłowe połączenie z interfejsem, ale błąd połączenia z regulatorem. Sprawdź czy przewody C2D oraz C2CK nie są zamienione, oraz czy regulator jest zasilony.

ESC Silabs – wgrywanie wsadu

blhelisuite1

Po połączeniu mamy dostępne kilka przycisków na dole okna. Klikamy najbardziej nas interesujący FLash BLHeli, a z kolejnego okna wsad do wgrania.

blhelisuite2

W nowym oknie wybieramy wsad dla regulatora – z pierwszej rozwijanej listy (1) wybieramy model regulatora. Lista (2) służy do przefiltrowania wsadów pod względem zastosowania – nas interesuje tylko MULTI czyli multicopter/multirotor. Wsad ten będzie już odpowiednio skonfigurowany dla wielowirnikowców. Za pomocą listy (3) możemy przefiltrować i pokazać tylko wsady o danej wersji, lub najnowszej. Z wyświetlonych wsadów wybieramy ten który nas interesuje (MULTI, najnowsza wersja), a przyciskiem OK (5) zatwierdzamy wybór. Albo, przyciskiem (6) można wskazać samodzielnie wsad z folderu. Po zatwierdzeniu wyboru i potwierdzeniu kolejnego okna dialogowego, wsad zostanie wgrany w regulator i będziemy mogli pogrzebać w jego ustawieniach.

blhelisuite3

Teraz w głównym oknie widać wszystkie dostępne opcje dla regulatora, do większości których można również uzyskać dostęp z poziomu aparatury. Jeśli wybraliśmy wersję MULTI, nie musimy nic tutaj zmieniać, ustawienia powinny być dobre. Najważniejsze to Low Voltage Limitter na OFF (zabezpieczenie przed niskim napięciem baterii, wyłączamy, w przeciwnym wypadku ESC ograniczy moc lub się wyłączy przy słabej baterii – tego nie chcemy). PWM Frequency na HIGH, można też zmienić kierunek obrotu silnika, oraz ręcznie ustawić zakres Throttle, nic więcej nie ruszamy. Przycisk Write Setup na dole zapisze nowe ustawienia w regulatorze. Pozostało powtórzyć całość dla całej reszty regulatorów, nie zapomnij ich po tym ponownie skalibrować poprzez Cleanflight.

esc_fw_blheli

W moim przypadku różnica w działaniu regulatorów była kolosalna. Silniki rozpędzały się od 0 do 100% o wiele szybciej oraz miały dużo krótszy czas reakcji, co przekładało się na możliwość ustawienia jeszcze bardziej sztywnych PIDów i uzyskania lepszych osiągów. Ponadto BLHeli od wersji chyba 12.0 dla układów Silabs wspiera sterowanie OneShot125 które obsługuje również Cleanflight, i całość pracuje wydaje mi się jeszcze lepiej. No i najważniejsze, regulatory nie gubią synchronizacji podczas startu z 0 do 100%, fabryczny soft potrafił mi w takim przypadku przypalić uzwojenia silników.

…multicoptery – spis wszystkich tematów

5.00 avg. rating (98% score) - 5 votes

5 komentarzy

  1. Wojtek Piasta

    Jest jedno czego wciąż nie potrafę powiązać – ustawienia min i max gazu.. Mam MultiWii, i póki uzywałem regli ze standartowym softem wszystko było zrozumiałe – podczas kalibracji (gaz na max, podłączenie zasilania, melodyjka, gaz na min, melodyjka – gotowe) regle odczytywały długości impulsów i same je sobie zapisywały jako graniczne. Nowe regielki już mają fabrycznie wgrany BlHeli, a w nim owe wartości graniczne ustawiam samemu (w oknie konfiguracyjnym – dwa ostatnie po prawej na dole).
    Jak wobec tego mają się do siebie wartości min i max w MultiWii (wg configu – 1080 / 1980) do tych ustawionych w BlHeli? Czy mam samemu je zmienić by się pokrywały z MW, czy odwrotnie – w MW ostawić takie jak w BlHeli? Wiem że w swom blogu piszesz o Cleanflight, jednak dla regli nie jest ważne jaki system nimi kieruje – a tylko jakie wartości sygnałów do nich docierają, więc ogólne zasady powinne być takie same stąd pytanie – stąd pytanie o owe wpisy.
    Druga kwestia która nie daje mi spokoju to kalibracja – wszędzie czytam o tym że jest niezbędna, jednak nie widzę najmniejszego sensu kalibrowania regli które owe wartości min i max mają zapisywane ręcznie. Jeśli kalibracja jest potrzebna to wpisy w sofcie regli nie mają znaczenia, jeśli zaś wpisy mają znaczenie – to kalibracja jest bez znaczenia..
    Pozdrawiam, i dzięki za ładny blog i ciekawie opisaną walkę z materią nieożywioną :)

    • Ustaw w reglach to co masz ustawione w kontrolerze i tyle. A czemu nie zrobisz tak jak z poprzednimi? Powinny mieć też „tradycyjną” kalibrację. Bo jeśli dobrze rozumiem to kalibracja jest równoznaczna z tym co można wpisać ręcznie w ustawieniach. Skalibruj na jakąś wartość, a potem odczytaj, to powinno być jedno i to samo. Chyba że nie zrozumiałem pytania :)

  2. Wojtek Piasta

    „Ustaw w reglach to co masz ustawione w kontrolerze i tyle.”
    „Bo jeśli dobrze rozumiem to kalibracja jest równoznaczna z tym co można wpisać ręcznie w ustawieniach.”

    No właśnie na to samo mi wychodzi, tyle że wolałem się upewnić – z własnego doświadczenia wiem że 99,9% tego co na necie to powtórki z innego źródła, najczęściej powtarzane bez wnikania w sens czy poprawność. Jak dla mnie – kalibracja to „nauczenie” regli zakresu jaki podaje im odbiornik. Jeśli jednak te sygnały mają po drodze jakieś FC (które je kontroluje i przetwarza) to siłą rzeczy regle dostają (w pewnym sensie) nieoryginalne sygnały. Jeśli do tego dodać wartości min i max wpisywane w oknie BlHeli – wychodzi że to właśnie jest tym co kiedyś było kalibracją:)

    Pozdrawiam:D

    • Masz na 100% oznaczoną opcję „programuj z tx” w BlHeli, połącz się do regla i zaznacz fistaszkiem tą opcję, przy okazji możesz sobie zaktualizować Blheli :-)

  3. Czy po flashowaniu, można programować regulator przez kabel sygnałów, czy trzeba mieć przylutowane kabelki i tylko za ich pomocą da się zaprogramować ESC?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: