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

[atmega8][c]regulator modelarski

gandalfml 31 Paź 2011 15:04 3066 10
  • #1 31 Paź 2011 15:04
    gandalfml
    Poziom 9  

    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
    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.

    0 10
  • #2 31 Paź 2011 23:10
    krru
    Poziom 32  

    gandalfml napisał:
    Witam,


    A to najaktualnieszy kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Chyba powinno być
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #3 01 Lis 2011 08:43
    435758
    Użytkownik usunął konto  
  • Pomocny post
    #4 01 Lis 2011 13:22
    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.

    0
  • #5 01 Lis 2011 19:54
    gandalfml
    Poziom 9  

    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
    Zaloguj się, aby zobaczyć kod

    0
  • #6 08 Lis 2011 20:32
    janbernat
    Poziom 38  

    A spróbuj to:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Na pewno działa- przynajmniej na oscyloskopie.

    0
  • #7 10 Lis 2011 10:48
    gandalfml
    Poziom 9  

    Witam,

    problem rozwiązany

    Oto działający kod:

    Kod: 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

    0
  • #8 15 Lis 2011 12:11
    gandalfml
    Poziom 9  

    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;)

    0
  • #9 15 Lis 2011 12:21
    janbernat
    Poziom 38  

    Silmik się wpina w dren a nie w źródło.

    0
  • #10 15 Lis 2011 13:31
    sylwunia35
    Poziom 17  

    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.

    0
  • Pomocny post
    #11 15 Lis 2011 16:43
    emarcus
    Poziom 35  

    gandalfml napisał:
    Witam ponownie,



    silnik stoi w miejscu, jak zamiast niego podłączę diodę z rezystorem to dioda się świeci, nie wiem czemu to nie działa:(


    Są do tego dwa powody.
    Na pierwszy częściową odpwiedź dał ci janbernat, która wymaga uzupełnienia, które przyda ci się w przyszłości.
    W maxymalnym skrócie:
    - jeżeli masz MOSFET typu N to stoi on na schemacie po stronie niskiej ("low side") czyli GND wzgłędem obciążenia (u ciebie silnik).
    - analogicznie, MOSFET typu P umieścisz po stronie wysokiej ("high side") względem obciążenia czyli od srony zasilania.
    Oczywiście załączenie jednego lub drugiego wariantu wymaga stosownej polaryzacji branki.
    Zauważ że jest tu pewnego rodzaju 'schematyczna' zbieżność z ze stosowaniem bipolarnych tranzystorów NPN i PNP.

    Drugi powód braku spdziewanego efectu to paramerty tranzystora.
    Chcesz go użyc jako element załączający (switch)....
    Aby ten tranzystor wszedł w stan saturacji (pełnego przewodzenia) potrzebuje on na bramce napięcie rzędu 10 Volt. Owszem, datasheet podaje napięcie progu bramki w granicach 2 do 4 V, znaczy to że jest to minimalne napięcie na bramce zaczym tranzystor zacznie w ogóle przewodzić. Ty potrzebujesz aby tranzystor wszedł szybko w stan saturacji.
    Są dostępne tranzystory pracujące przy niskich napięciach bramki, często zwane "Logic level" np: IRLZ44N; twój akurat nie należy do tej grupy.
    Więcej na ten temat: google -> keyword- 'logic level mosfet'; albo 'mosfet as a switch'.

    Przy podłączaniu silnika do MOSFET , nie zapomnij że jest to obciążenie indukcyjne.

    e marcus

    0