Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Robot Chariot v2.0, tryb autonomiczny i sterowanie z telefonu

ahmed10 02 Sty 2016 21:21 4650 2
  • Robot Chariot v2.0, tryb autonomiczny i sterowanie z telefonu
    Witam serdecznie wszystkich elektrodowiczów! :)
    Chciałbym pochwalić się popełnionym przeze mnie robotem, którego zrobiłem na podstawie wcześniejszej konstrukcji, a obecnie jest on zrobiony w ramach projektu na uczelnie.
    To czym kieruję się w życiu jasno widać na przykładzie tej konstrukcji "Ma działać, nie wyglądać", poza tym lubię ostre porno elektroniczne, więc stosownej obudowy zasłaniającej całą elektronikę robota nigdy nie było w planach i nie będzie.

    Ogólna charakterystyka:

    Robot z napędem kołowym z dwoma trybami sterowania:
    - autonomicznym, wykorzystującym analogowy czujnik odległości SHARP umieszczony na serwomechanizmie i skanujący otoczenie znajdujące się przed robotem.
    - manualnym, wykorzystującym aplikację na telefon (Android), sterowanie odbywa się przez pochylenie telefonem, wykorzystany został akcelerometr.


    Mechanika
    Część mechaniczna została stworzona w oparciu o elementy z odzysku tj. platforma to aluminiowa pokrywa dysku twardego, koła napędowe zostały wyciągnięte z zabawkowego wózka siostry (stąd ten obrzydliwy kolor :P) przednie koła pochodzą z samolotu na zdalne sterowanie w którym służyły jako podwozie, silniki napędowe to przerobione (został tylko silnik z przekładnią) serwomechanizmy z jakiegoś samochodu na zdalne sterowanie.


    Elektronika
    Całością steruje uC ATmega 8A-PU (TQFP)rozpędzona do 13.8750 MHz, na pokładzie znalazł się również mostek H L293DNE(DIP) oraz moduł Bluetooth BTM222 wraz z adapterem na 5V. Oprócz tego znajdziemy 2 przyciski - włączający całego robota, przełączający między trybami AUTO/MAN oraz jeden dodatkowy włączający zasilanie. Jako czujnik odległości został zastosowany czujnik firmy SHARP GP2Y0A41SK0F natomiast serwo obracające nim to jakieś tanie Redox S90? Stabilizatorami napięcia zostały niezawodne LM1117. Płytki drukowane zostały zaprojektowane w programie Eagle, a wykonane metodą termotransferu, do tego trzeba dodać że płytka główna została pocynowana bezprądowo. Całość zasila obecnie akumulator polimerowy 7.4V, a na filmiku duży i nieporęczny Ni-Cd 7.4V


    Software
    Program na uC został napisany w C. Ogólny algorytm działania jest taki, że w trybie autonomicznym poruszanie robota jest kompilacją różnych ?if-ów? i dwóch liniowych funkcji ? tak wiem, nie postarałem się ;) Software?owy pwm steruje pracą serwomechanizmu, podczas jego obrotu zapamiętywane są w odpowiednio indeksowanej tablicy wartości z ADC z poszczególnych sektorów przed robotem, następnie na podstawie tych wartości, w momencie osiągnięcia przez czujnik którejś ze skrajnych pozycji podejmowana jest decyzja o tym w jaki sposób zmienić sterowanie silnikami ? to wszystko .

    Jeśli chodzi o tryb manualny to sprawa jest bardziej skomplikowana.
    Po stronie uC mamy switch komunikacyjny, który odbiera dane wg. stworzonego przeze mnie prostego protokołu komunikacyjnego. Sam protokół wygląda tak:
    *sx,sy,tryb,vx,vy,CRCs,CRCv%
    gdzie:
    sx,sy -przyjmują wartości 1 lub 0 i mówią czy dane koło ma się poruszać do przodu czy w tył
    tryb- przyjmuje wartości 1 lub 0 (AUTO/MAN)
    vx,vy -przyjmują wartości z przedziału 0-255 i oznaczają prędkości w poszczególnych kół
    CRCs -oznacza kontrolę poprawności danych dla wartości sx i sy, CRCs=sx+sy (bin)
    CRCv -oznacza kontrolę poprawności danych dla prędkości, vx+vy+CRCv musi być podzielne przez 5

    Nie ma tu potwierdzenia odbioru poprawnie ramki (taki UDP :D ), po prostu jeśli cała ramka danych została odebrana poprawnie to wartości, które ze sobą niesie zostaną użyte w sterowaniu silnikami.
    Jeśli chodzi o aplikację na telefon to została napisana w środowisku B4A- Basic 4 Android i wykorzystuje wbudowany akcelerometr do pomiaru przechyłu telefonu i na tej podstawie robot porusza się do przodu, tyłu i na boki. Oprócz tego, że zawiera program wysyłający dane wg protokołu, zawiera w sobie elementy odpowiedzialne za szatę graficzną, która i tak zresztą jest uboga (czyt. ?Ma działać nie wyglądać?) no i odpowiednie funkcje przeliczające wartość z akcelerometru na prędkość danego koła.


    Problemy
    W zasadzie głównym problemem okazało się poprawne filtrowanie napięcia, bo jak się okazało to tanie serwo S90, które kręci czujnikiem odległości generuje takie śmieci na zasilaniu, że doprowadzało to do resetowania modułu bluetooth mimo, iż ten był zasilany z stabilizatora 3.3V na przejściówce. Na nic zdały się filtry LC na zasilaniu serwomechanizmu. W końcu zdesperowany dorobiłem dodatkową płytkę zawierającą moduł zasilania tj. 2 stabilizatory, jeden specjalnie dla serwa drugi dla reszty.
    Po tym zabiegu znacznie poprawiła się praca całości i moduł bluetooth nie zawieszał się w momencie włączenia serwa lecz po jakimś czasie np. po 1 minucie co również mi nie pasowało, wiec dołożyłem dodatkowo filtr LC, który wcześniej używałem, a który wtedy nie przynosił efektu. Po tym zabiegu zakłócenia za stabilizatorem 3.3V wynoszą jak dobrze pamiętam około 50mV, ale ręki nie daję i moduł bt się już nie resetuje. Przed tym jak zrobiłem dodatkową płytkę z oddzielnymi stabilizatorami serwomechanizm generował zakłócenia (piki) rzędu prawie 0.5V z częstotliwością 50hz mimo, iż w układzie był już jeden kondensator 1000uF.
    No i to co jeszcze sprawiało problem to ślizgające się koła co widać na filmie. Nie miałem innych więc po prostu dodałem obciążenie w postaci krążka z chromonikieliny i teraz całość spisuje się wyśmienicie.

    Morał z tej bajki jest krótki i niektórym znany, dbaj o filtrację napięcia, a nie będziesz rozczarowany! :D

    Koszty:
    Bluetooth - 50zł
    Atmega - 5 zł
    Serwo czujnika - 10zł
    Sharp - 45zł
    Mostek H -5zł
    Napęd miałem ale gdybym nie miał to pewnie koło - 50 zł
    Mechanika- wszystko miałem
    Drobnica w tym płytki , kwas , stabilizatory - 10 zł
    Razem: ok. 175zł
    A ja ok. 125zł
    Doświadczenie: bezcenne

    No i to chyba tyle jeśli chodzi o całą konstrukcję.

    Kodu tu nie udostępniam, natomiast można do mnie napisać na pw to dam.
    Poniżej kilka zdjęć konstrukcji, i dwa filmiki (na yt bo nie dało się wgrać na serwery elektrody czegoś...) pokazujące działanie robota w trybie manualnym i w trybie autonomicznym (ten drugi filmik pokazuje pierwszą wersję tego robota jeszcze z programem pisanym w BASCOM'ie, ale kod został przepisany w C i jest identyczny więc robot z nowymi bebechami zachowuje się zupełnie tak samo. W załączniku pliki do programu Eagle.
    Robot Chariot v2.0, tryb autonomiczny i sterowanie z telefonu Robot Chariot v2.0, tryb autonomiczny i sterowanie z telefonu Robot Chariot v2.0, tryb autonomiczny i sterowanie z telefonu Robot Chariot v2.0, tryb autonomiczny i sterowanie z telefonu

    https://www.youtube.com/watch?v=kgnQxT5bloM
    https://www.youtube.com/watch?v=KuTZg-C_RKM

    Eagle.rar Download (135.17 kB)

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ahmed10
    Poziom 11  
    Offline 
    Specjalizuje się w: elektronika, lotnictwo, pirotechnika, muzyka
    ahmed10 napisał 80 postów o ocenie 19, pomógł 0 razy. Mieszka w mieście Łętownia. Jest z nami od 2010 roku.
  • PCBway
  • #2
    trol.six
    Poziom 31  
    Fajne. Ile wynosi pobór prądu całości?

    ahmed10 napisał:
    . Na nic zdały się filtry LC na zasilaniu serwomechanizmu

    Przy dużych skokowych wartościach poboru prądów, ważna jest jakość kondensatora (nisko impedancyjny elektrolit, może nawet równolegle z metalizowanym) przy odbiorniku prądu. Natomiast L (dławik) nie może być tutaj zbyt duży bo może pogorszyć sytuacje na linii.
    Natomiast LC oczywiście na linii która musi być stabilna, w tym przypadku moduł komunikacyjny.
  • PCBway
  • #3
    ahmed10
    Poziom 11  
    Pobór prądu jest mniej więcej taki że podczas postoju wynosi około 100mA, w czasie jazdy w trybie autonomicznym zmienia się w przedziale 300-400mA, w trybie manualnym tj. bez serwa około 200-300 mA wszystko w zależności od tego na jakiej mocy pracują silniki :) Hymm no tak w sumie to przy filtrze LC zastosowałem jakiś stary kondensator elektrolityczny, także pewnie ESR duże i można by to poprawić dając nówkę sztukę :) Dzięki za praktyczne porady :)