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

[atmega8][c]regulator modelarski

gandalfml 31 Paź 2011 15:04 3339 10
REKLAMA
  • #1 10085403
    gandalfml
    Poziom 10  
    Witam,

    mam problem z oprogramowaniem do regulatora modelarskiego na atmedze8, nie mogę poprawnie odebrać sygnału z odbiornika. Wiem że takich tematów było dużo, wszystkie które udało mi się znaleźć znam już prawie na pamięć i nadal nic.
    Teoretycznie odbiornik wysyła wygnały dodatnie co około 20ms trwające w zależności od wychylenia drążka około 1-2ms(mój odbiornik to hitec HFD-08R0, ewentualnie aparatura to hitec optic 6), na razie próbuję regulować częstotliwość mrugania diody w zależności od wychylenia drążka, ale niestety zmiany częstotliwości są beznadziejnie losowe albo nie ma ich wcale.

    żeby było wiadomo o czym piszemy załączam schemat:
    [atmega8][c]regulator modelarski
    Schemat zrobiony trochę na szybko, te 3 piny pod ledem to wyjście odbiornika, pin jeden to sygnał pozostałe dwa to zasilanie(tego jestem pewien), jako że nie wiem czy przypadkiem odbiornik nie odetnie mi sygnału bez obciążenia, zasilanie podłączyłem do serwa.

    A to najaktualnieszy kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Odnośnie kodu odpowiedzialnego za mryganie diodą: chwilowo jest on nieważny, niezależnie jak brzydko jest to napisane, nikt mi nie wmówi że to nie działa(zresztą sprawdzałem że działa) jak odbieranie sygnałów będzie działało to włączę tam jakiegoś pwma.

    Totalnie straciłem pomysły co tu jeszcze może być źle, za wszelką pomoc będę bardzo wdzięczny.
  • REKLAMA
  • #2 10087530
    krru
    Poziom 33  
    gandalfml napisał:
    Witam,


    A to najaktualnieszy kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Chyba powinno być
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #3 10088075
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #4 10089009
    janbernat
    Poziom 38  
    Bo nie tak się używa przerwań zewnętrznych.
    Można po pojawieniu się przerwania od zbocza narastającego wystartować timer, w przerwaniu zmienić na zbocze opadające i gdy pojawi się zbocze opadające zatrzymać timer, odczytać jego stan do zmiennej volatile wykasować i ponownie ustawić na zbocze narastające.
    Mozna też wykorzystać oba dostępne przerwania.
    Można też do odczytu wykorzystać jakiś timer i odczytywać stan pinu metodą pollingu.
  • REKLAMA
  • #5 10090421
    gandalfml
    Poziom 10  
    Niestety kod po waszych uwagach nadal nie działa:(

    Podłączenie GND do minusa odbiornika nie wpływa na działanie układu, podłączone nie było, ale po podłączeniu nic się nie ruszyło:(

    janbernat: zastosowałem się chyba do wszystkich uwag(chociaż nie rozumiem co one mają poprawić) i nadal nic...

    krru: fakt, mój błąd, ale po poprawieniu nadal nie działa:(

    aktualna wersja kodu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #6 10117552
    janbernat
    Poziom 38  
    A spróbuj to:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Na pewno działa- przynajmniej na oscyloskopie.
  • #7 10122571
    gandalfml
    Poziom 10  
    Witam,

    problem rozwiązany

    Oto działający kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Na kodzie janbernata wzorowałem którąś z poprzednich wersji programu, niestety nie działa, ale pewnie to ja gdzieś zrobiłem błąd, jako że ja obsługiwać będę tylko jeden sygnał z odbiornika, moje rozwiązanie wydaje mi się być lepsze w tym wypadku.

    Żeby ten kod zadziałał musiałem zgodnie z radą majeranek53 podłączyć masę procka do minusa zasilania z odbiornika, dodatkowo w moim przypadku koniecznie musiałem pomiędzy sygnał z odbiornika a mikroprocka wstawić opornik(wystarczyło 100 omów).

    Aktualnie sygnał z odbiornika podpięty jest do pinu ICP1.

    Dziękuję bardzo wszystkim za pomoc
  • #8 10140903
    gandalfml
    Poziom 10  
    Witam ponownie,
    jako że z programem udało mi się dość do ładu, chciałbym tera do mojego regulatora podpiąć silnik. Pojawia się tu problem, gdyż silnik mam wyjęty z jakiejś starej zabawki i nie znam jego parametrów... podłączyłem go do pakietu akumulatorów 5V i zmierzyłem pobierany prąd, miernik pokazał 0,6A, zmierzyłem też opór silnika: 3ohm.

    Silnik do uc podpiąłem "przez" mosfeta irf520(był akurat na stanie) i nie zadziałało, podpiąłem ten tranzystor potem już bez atmegi tak jak na poniższym schemacie:
    [atmega8][c]regulator modelarski
    silnik stoi w miejscu, jak zamiast niego podłączę diodę z rezystorem to dioda się świeci, nie wiem czemu to nie działa:(

    Na wszelki wypadek dodam że jak silnik podłączę bezpośrednio do zasilania to działa;)
  • #9 10140928
    janbernat
    Poziom 38  
    Silmik się wpina w dren a nie w źródło.
  • #10 10141099
    sylwunia35
    Poziom 18  
    Witam
    Jest szansa aby ten działający kod ktoś z szanownych kolegów "przetłumaczył" na Bascom. Bardzo mi zależy do dalszych prób.
  • Pomocny post
    #11 10141730
    Konto nie istnieje
    Poziom 1  
REKLAMA