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

Robot ASS3 :) Sterowanie serwem. Programowanie układów AVR, assembler.

Halftheman 04 Maj 2006 22:27 2601 10
  • #1 2592730
    Halftheman
    Poziom 16  
    Posty: 195
    Pomógł: 6
    Ocena: 5
    Kolejna moja konstrukcja, wcześniej był "Sid i Romik", gdzieś tu się tuła na forum. Teraz poszedłem troche dalej.

    Cel: Robot autonomiczny omijający proste przeszkody (np. poruszający się w tunelu) z możliwością rozbudowy o dodatkowe czujniki. Najważniejsze przy tym ma być nauka programowania układów AVR w assemblerze, rozszerzenie wiedzy na temat czujników (ew jakiś LCD kiedyś).

    Materiały:
    - 2x Atmega 8
    - 2x serwo modelarskie zmodyfikowane (pełnoobrotowe)
    - laminat jako podwozie, kółka lego
    - uniwersalna płytka do elektroniki
    - ogromny akumulator NiMh 5x1800mAh
    - czujniki IR (ale to dopiero rozpracowuje, szukam najlepszego rozwiazania)

    Jak to widze:
    Serwa modelarskie zapewniaja duży moment obrotowy. Robot potrafi udźwignąć sporą wagę, więć można go łatwo rozbudować. (mam jeszcze dodatkowe serwa, które moge wykorzystać jako kierunek, radar, ale na razie nie widze sensu - przerost formy nad treścią). Oddzielny układ Atmega 8 do sterowania serwami. Do tego miejsca udało mi się dojść. Na razie robot złożony porusza się przód,tył, lewo, prawo z ustaloną przeze mnie prędkością. Zostawiam go tak jak jest bo może będe dołączać kolejne serwa. Nigdy nie wiadomo. Drugi układ Atmega 8 ma być odpowiedzialny za pobranie danych "ze środowiska" czyli właśnie czujniki. Póki co szukam najlepszego rozwiązania. Programy pisane w assemblerze. No i foteczka :)
    Załączniki:
    • Robot ASS3 :) Sterowanie serwem. Programowanie układów AVR, assembler. PIC000300.jpg (73.33 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #2 2592884
    vcd_a
    Poziom 18  
    Posty: 388
    Pomógł: 9
    Ocena: 6
    Fajna konstrukcja ;], mógłbyś powiedzieć jak zrobiłeś sterowanie serwem ?, bardzo mnie to interesuje, jak je podłączyłeś do uC i jak napisałeś oprogramowanie do sterowania nim, pozdrawiam
  • #3 2592889
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Całkiem ciekawe, ale po co dwa procesory? Takie konstrukcje widziałem na prostym 90S2313 i jeszcze miał nagrywanie sekwencji ruchów w EEPROMIE
  • #4 2592897
    Halftheman
    Poziom 16  
    Posty: 195
    Pomógł: 6
    Ocena: 5
    McRancor napisał:
    Całkiem ciekawe, ale po co dwa procesory? Takie konstrukcje widziałem na prostym 90S2313 i jeszcze miał nagrywanie sekwencji ruchów w EEPROMIE


    Bo nigdy wcześniej nie programowałem AVR w assemblerze, nie wiedziałem jak pisać taki program, żeby np impuls był co 20milisekund a jednocześnie pobierać dane z czujników, więc żeby się nie grzebać rozdzieliłem to na dwie osobne części póki co. Jak nabiore wprawy w programowaniu to postaram sie to upchać w jeden procek. Póki co sie bawie :) Poza tym chce zostawić motyw sterowania serwami na razie i zająć się teraz IR ew sonarem. Dziele zabawe na części, żeby sie nie pogubić.

    A jak sie nie przyda to zostawie dla ozdoby :D Mam dwie spalone Atmegi to na coś sie przydadzą :D

    Dodano po 11 [minuty]:

    vcd_a napisał:
    Fajna konstrukcja ;], mógłbyś powiedzieć jak zrobiłeś sterowanie serwem ?, bardzo mnie to interesuje, jak je podłączyłeś do uC i jak napisałeś oprogramowanie do sterowania nim, pozdrawiam


    Jak działa serwo:
    http://www.hitecrcd.com/Support/Manuals/ServoManual.pdf

    Jak zrobiłem. Najpierw zrobiłem migającą diode co sekunde. Pierwszy program w asm. Skoro procek działa z częstotliwością 1Mhz to wykonuje jeden rozkaz w czasie 1 mikro sekundy. Jak widzisz w PDFie potrzebujesz impuls od 0.9 do 2.1 mili sekundy co 20 mili sekund. Teraz trzeba tak napisac program, żeby generował impuls na wyjściu podobnie jak migająca dioda tylko "ździebko" szybciej :) dla 0.9ms i 2.1ms masz pelne wychylenie, dla 1.5ms masz "center" i tyle :)
  • #5 2593091
    daniel93
    Poziom 29  
    Posty: 1673
    Pomógł: 30
    Ocena: 94
    A te 0.9-2.1mili wchodzi w czas tych 20mili ??
    Czyl jak skończy sie czas np. 1.5mili to teraz odlicza 20mili, czy 18,5mili ??
  • #6 2593108
    Halftheman
    Poziom 16  
    Posty: 195
    Pomógł: 6
    Ocena: 5
    daniel93 napisał:
    A te 0.9-2.1mili wchodzi w czas tych 20mili ??
    Czyl jak skończy sie czas np. 1.5mili to teraz odlicza 20mili, czy 18,5mili ??


    ..z tego co gdzies znalazłem na google impuls powinien zawierać się w czasie od 10ms do 20ms. Nie musi byc bardzo precyzyjnie. Sam impuls jest ważniejszy.
  • #8 2593294
    daniel93
    Poziom 29  
    Posty: 1673
    Pomógł: 30
    Ocena: 94
    Na tym linku niezbyt to widać(mam wątpliwości):
    to jest tak:

             
    ____|''''|_________|''''|____
        |----20mili----|
    

    ???
  • #9 2593813
    Halftheman
    Poziom 16  
    Posty: 195
    Pomógł: 6
    Ocena: 5
    daniel93 napisał:
    Na tym linku niezbyt to widać(mam wątpliwości):
    to jest tak:

             
    ____|''''|_________|''''|____
        |----20mili----|
    

    ???


    Zacznij czytać noty katalogowe. Temat serwa wyjaśnia PDF, który podałem wyżej, a poza tym link, który podał McRanor całkowicie wyczerpuje temat działania serwa.
  • #10 2594068
    Tawez
    Poziom 18  
    Posty: 265
    Pomógł: 19
    Ocena: 5
    taaaa...
    a kolejnym krokiem wtajemniczenia bedzie czytanie ze zrozumieniem

    zeby nie bylo ze OT, udziele odpowiedzi:
    Tak też.
  • #11 2594114
    daniel93
    Poziom 29  
    Posty: 1673
    Pomógł: 30
    Ocena: 94
    Tawez: Dzięki. Tylko Ty zorzumiałeś, że czasem chcemy odpowiedzi tak/nie.

Podsumowanie tematu

✨ Omówiono konstrukcję robota autonomicznego opartego na dwóch mikrokontrolerach Atmega8, sterującego dwoma zmodyfikowanymi serwami modelarskimi pełnoobrotowymi. Celem projektu jest nauka programowania układów AVR w assemblerze oraz rozwijanie wiedzy o czujnikach IR i ewentualnie LCD. Sterowanie serwami realizowane jest poprzez generowanie impulsów o szerokości od około 0,9 do 2,1 ms powtarzanych co 20 ms, zgodnie z dokumentacją serw. Rozdzielenie funkcji na dwa procesory wynika z braku doświadczenia w programowaniu AVR w assemblerze i chęci uproszczenia obsługi sygnałów PWM oraz odczytu czujników. Dyskusja zawierała wyjaśnienia dotyczące czasu trwania impulsów sterujących serwami oraz linki do dokumentacji i przykładów implementacji. Podkreślono znaczenie czytania not katalogowych i dokumentacji technicznej serw do prawidłowego sterowania.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA