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 – przekaźnik na pin D.0 nie załącza się mimo poprawnego LCD i kompilacji

laasek 20 Wrz 2006 01:11 2737 24
REKLAMA
  • #1 3037643
    laasek
    Poziom 13  
    Posty: 114
    Witam
    Czy mógłby ktoś sprawdzić czego ten program niechce chulać tzn. chodzi, ale nie załancza sie przekaznik do sterowania lampka.Wszystko jest sprawne i sprawdzone na innych programach. Przekaznik podlaczony jest do pind.0
    Program sie kompiluje bez błedów i na LCD wszystko wychodzi ze jest ok ale przekaznik sie nie zalancza. Skacze do podprogramow i wyswietla na LCD ze jest w danym momencie w podprogramie.

    $regfile = "m8def.dat"

    $crystal = 8000000

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5



    Config Pinb.0 = Input
    Config Pinb.1 = Input

    Config Pind.0 = Output



    S1 Alias Pinb.0
    S2 Alias Pinb.1

    Przekaznik Alias Pind.0


    Set Portb.0
    Set Portb.1



    Do
    Debounce S1 , 0 , Pr1 , Sub
    Debounce S2 , 0 , Pr2 , Sub

    Loop


    End

    Pr1:
    Cls
    Lcd "pr1"
    Wait 1
    Set Przekaznik
    Wait 1
    Return

    Pr2:
    Cls
    lcd"pr2"
    wait 1
    Reset Przekaznik
    wait 1
    Return
  • REKLAMA
  • #2 3037668
    august_
    Poziom 27  
    Posty: 1081
    Pomógł: 70
    Ocena: 47
    Podłącz diodę zamiast przekaźnika - to będziesz wiedział czy problem jest soft czy hardwareowy..
  • #3 3037713
    zbig_wwl
    Poziom 17  
    Posty: 181
    Pomógł: 20
    Ocena: 17
    Zamiast "Przekaznik Alias Pind.0" napisz "Przekaznik Alias Portd.0". Powinno pomóc.
  • #4 3037801
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    A ja mam takie pytanko, mam nadzieje ze ten przekaznik podlaczasz przez jakis tranzystor z dioda zapobiegajaca przepieciu z cewki?
  • #5 3038197
    laasek
    Poziom 13  
    Posty: 114
    Tak sa 2 rezystorki, 2 diodki i tranzystor.Przekaznik nie jest bezposrednio podlaczony do portu.
  • REKLAMA
  • #6 3038336
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    W takim razie wyjmij procka z podstawki i podaj na pin od portu D.0 mase lub 5V, w zaleznosci czy stosujesz tranzystor NPN czy PNP, przy jednym z tych stanow powinien przekaznik zaskoczyc.
    Jesli zaskoczy to znaczy ze cos z prockiem albo programem. Wowczas jak zostalo wspomniane wczesniej podlacz diode do tego portu i sprawdz czy swieci. Napisz tez jaki stosujesz tranzystor i wartosci rezystorow (najlepiej schemat) byc moze masz za duze wartosci i tranzystor sie nie otwiera.

    PS. oczywiscie zmien pind.0 na portd.0 bo napewno nie zadzaiala
  • #7 3039754
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    napisz co ma program ten robic, a napisze w asemblerze
    Pozdrawiam
  • #8 3040874
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Ch.M. napisał:
    napisz co ma program ten robic, a napisze w asemblerze
    Pozdrawiam

    Dwa przyciski, jeden wlacza przekaznik drugi wylacza, dodatkowo info o wcisnietym przycisku idzie na LCD.

    jesli polaczenie hardwareowe jest niewlasciwe to nawet asm tu nie pomoze.

    kolego laasek sproboj tak, z racji tego ze komenda debounce nieraz robi kuku
    
    $regfile = "m8def.dat"
    
    $crystal = 8000000
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    
    
    
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    
    Config Portb.0 = Output
    
    
    
    S1 Alias Pinb.0
    S2 Alias Pinb.1
    
    Przekaznik Alias Portd.0
    
    
    Set Portb.0
    Set Portb.1
    
    
    
    Do
    if pr1=0 then
    goto pr1
    waitms 30
    bitwait pr1, set
    endif
    
    if pr2=0 then
    goto pr2
    waitms 30
    bitwait pr2,set
    endif
    
    Loop
    
    
    End
    
    Pr1:
    Cls
    Lcd "pr1"
    Wait 1
    Set Przekaznik
    Wait 1
    Return
    
    Pr2:
    Cls
    lcd"pr2"
    wait 1
    Reset Przekaznik
    wait 1
    Return
    
  • #9 3041317
    laasek
    Poziom 13  
    Posty: 114
    Dzieki za pomoc, ale inaczej rozwiazalem problem zamiast przekaznika zastosowalem triak i hula :)

    Mam teraz takie pytanie, tzn. napisalem sobie programik, ktory po nacisnieciu przycisku wlacza mi lampke nocna i wszystko hula i teraz mam pytanie: chcialbym tą lampką sterować za pomocą pilota, chce ją modz wlaczyc i wylaczyc pilotem jak to zrobić? Podłącze do procka odbiornik podczerwieni to jeszcze wiem i niemam pojecia jak dalej, tzn. jak ustawić np. jakiś kod w pilocie aby wyłączył tą lampke? Jakiego kodu użyć? Może ktoś zna stronkę gdzie mógłbym poczytać na ten temat oraz gdzie znajde schemat odbiornika podczerwienia by modz podlaczyc go do procka?

    I jeszcze jedno pozniej chcialbym sterowac 3 lampkami, ktore sa w roznych miejscach i teraz takie pytanie nie moge podciagnac kabli do procka wiec chcialem wszystko zrobic radiowo. Jedna urzadzonko bylo by schowane w puszce podtynkowej. Jak zrealizowac ten projekt? do kazdej lampki trzebaby pewnie podlaczyc atmege8, ktora by reagowala na pilota?
    Moze ktos ma inny pomysl jak rozwiazac ten problem?
  • REKLAMA
  • #11 3041394
    laasek
    Poziom 13  
    Posty: 114
    To jest chyba projekt na '51 a ja pracuje na atmedze8. Nie rozumiem jednej rzeczy jak przypisac dany guzik pilota np. 1 na pilocie wlacza mi lampke na scianie. Skad mam wiedziec jaki kod jest w pilocie przypisany np. tej 1? Z not od producenta czy jak?
  • #12 3041529
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    W helpie do bascoma masz przyklad zczytania kodu rc5 z pilota. Uruchom ten programik. Kazdy typ urzadzenia RTV i wlasciwy do niego pilot ma okreslony adres. Kazda funkcja urzadzenia i przycisk na pilocie ja obslugujacy ma przypisana komende. Program z bascoma wyswietla na LCD adres i komende po wcisnieciu guzika na pilocie. Adres dla danego pilota bedzie zazwyczaj staly (chyba ze masz pilota obslugujacego wiele urzadzen-uniwersalnego), komenda natomiast zmienia sie w zaleznosci od przycisku.
    Tak wiec, wciskasz sobie jakis klawisz (np ten ktorym chcesz zalapalic lampke nr1), odczytujesz z LCD komende, zapisujesz gdzies. Przerabiasz program tak aby po odebraniu komendy porownal ja z ta zapisana, jesli porownanie zwroci TRUE to wysteruj przekaznik.
    Nie musisz robic tego radiowo, mozesz w kazdej lampce wykorzystac identyczny uklad, reagujacy tylko na inne komendy z pilota, wtyjdzie napewno taniej.
    nie musi to byc tez atmega8, to troche za duzy procek do tak banalnego zadania, kup tiny13 czy nawet tiny2313.
    Poprostu szkoda atmegi do tego, kiedys wykorzystasz ja do wikszych zadan.

    Ostatnie pytanko to jak chcesz zmiescic caly uklad plus jakis zasilacz w puszce sciennej?
  • #13 3041614
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Polecam książkę "mikrokontrolery AVR ATmega w praktyce" R. Baranowskiego, rozdział 5.7 Ćwiczenie 7. Interfejsy optyczne i pamięć EEPROM; programowany pilot RC-5 .
  • #14 3041792
    laasek
    Poziom 13  
    Posty: 114
    No właśnie z tym bedzie problem jak to zmieścić w puszsce? I chyba raczej sygnał pilota nie dotrze pod puszke.

    A jak by zastosowal jedna atmege do sterowania tymi 3 lampkami ale wlasnie radiowo i przy lampkach byloby jakies urzadzenie wykonawcze gdzie atmega dostawala by sygnal z pilota i przekazywala radiowo do lampki. Jak takie cos zrealizowac?
  • REKLAMA
  • #15 3041890
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Hmmm moim zdaniem radiowe rowiazanie nie warte swieczki w tym przypadku. W puszce wystarczy wywiercic niewieka dziurke i wystawic czujnik podczerwieni, nawet za jakas ciemna czybka (filtrem).
    Nie wiem jak by sie zachowal modul radiowy tak blisko przewodow ~230V. Kolejna sprawa to taka ze nie musisz projektowac roznych plytek, tylko powielasz jeden projekt do kazdej lampki.

    W radiowce musialbys zastosowac koder w nadajniku i dekoder w odbiorniku (nie musi byc procka w odbiorniku), sa gotowe uklady koder/dekoder... poszukaj na elce, byl kiedys jakis uklad zdalnego sterowania na tym.
  • #16 3042017
    laasek
    Poziom 13  
    Posty: 114
    Czyli takie radiowe rozwiazanie wychodzilo by chyba duzo drozej?
    Pilot chyba niema zbyt duzego zasiegu a chcialbym np. z kazdego miejsca w pokoju modz sterowac tymi lampkami. Chodzi mi o rozwiazanie takie jak w alarmach samochodowych gdzie niezaleznie gdzie sie kieruje pilot po nacisnieciu guzika na nim wykonywane jest pewne zdarzenie.
  • #17 3042031
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Troche tak. Musisz kupic modul odbiorczy na np.433MHz okolo 14zl szt a musisz miec nadajnik i odbiornik +koder/dekoder i kilka innych elementow za kilka PLN. W przypadku podczerwieni masz tylko uC za 7zl + odbiornik podczerwieni TSOPxx36 za 3zl (chyba nawet taniej) no i kilka elementow jak stabilizator i elementy RC no ale to w kazdym ukladzie trzeba liczyc, groszowe sprawy.
    Pozdrawiam
  • #18 3042239
    laasek
    Poziom 13  
    Posty: 114
    A jak zrobić aby ten sygnał podczerwieni wzmocnić albo aby go odbić?np. zamontować na ścianie jakiś układ który bedzie ten sygnał odbijał bądź przekazywał dalej.
  • Pomocny post
    #19 3042263
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Wzmocnic po stronie pilota mozesz montujac wiecej diod nadawczych, kazda skiedowana w troche innym kierunku. Oczywiscie tranzystory nimi sterujace tez nalezy wymienic na mocniejsze lub zastosowac wiecej. Zmontuj najpierw odbiornik a zobaczysz ze wcale nie trzeba az tak mocno celowac na odbiornik zeby zlapal sygnal. Mysle ze duzym problemem nie jest tez kierowanie pilota na odbiornik ;)

    Tak na marginesie to jest tez inna mozliwosc wykonania Twojego pomyslu z radiowym sterowaniem. Mozesz wykonac pilota zdalnego sterowania z nadajnikiem na 433MHz i sterowac z niego bezposrednio odbiorniki. Obylo by sie nawet bez uC. Ale jak juz wspomnialem... koszty
  • #20 3042414
    laasek
    Poziom 13  
    Posty: 114
    Masz gdzies moze jakies schematy do tego radiowego sterowania lub jakas literature na ten temat aby cos o tym modz poczytac?

    Tak wogole dzieki za pomoc :)
  • #22 3042545
    laasek
    Poziom 13  
    Posty: 114
    Dzieki, ale mam jeszcze taka koncepcje i neiwiem czy da sie to zrobic tzn. mikrokontroler bedzie zarządzał radiowo jakims urządzeniem ktore ma sie wlaczyc o ktorejs tam godz, jakiegos dnia itp. wiec procek jest potrzebny tylko teraz moje pytanie jak wyglada sprawa tego przesylu radiowego? do procka podlaczamy jakis uklad ktory nadaje tak? Potem wysyla nam to do tego urzadzonka co chcemy nim sterowac ale czy przy nim tez musi byc mikrokontroler chyba nie?
  • #23 3042617
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    to wszytsko zalezy od tego jakie dane tam maja isc, jesli to ma byc typu wlacz/wylacz to procka ni musi byc ani w nadajniku ani w odbiorniku, choc moze.
    Ale jesli chcesz przslac jakas date z godzina do innego urzadzenia aby je poinformowac kiedy ma wykonac jakas czynnosc to procek jest jak najbardziej potrzebny. Transmisje trzeba najpierw wyslac jako paczka ktora zazwyczaj sklada sie z preambuly+adres urzadzenia+dane+dane+...+CRC+bajt konczacy.
    To jak to wysylasz, jakim protokolem zalezy od Ciebie, mozesz sobie wymyslec wlasna ramke danych (paczke). Po stronie odbiorczej musisz na proscu zrobic dekoder (programowo) ktory ze wszystkich smieci jakie sa w danycm pasmie (przeciez nie tylko Ty nadajesz dane) wyciagnie dane jakie go interesuja i odpowiednio je wykona.

    To tak ogolnie ;)
  • #24 3042677
    laasek
    Poziom 13  
    Posty: 114
    Gdzie znajde jakieś materiały? Jak to napisać w Bascomie? Za co sie wziaść najpierw? Dopiero zaczynam w tych sprawach :)

    Może jakąś książke byś polecił?
  • #25 3042917
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Jesli chodzi o ksiazki to zobacz na www.btc.pl choc nie gwarantuje ze cos znajdziesz co Cie zadowoli... Polecal elektrode, naprawde mozna sie duuuuuzo dowiedziec starczy troche poszperac a z topica na topik zyskasz nowe strony z informacjami. A czy akurat znajdziesz cos w bascomie... hmmm trudno powiedziec, kazdy pisze w tym co lubi a nie rzadko jest to C lub asm, bascom jest uwazany za pamiecozerny kompilator i nieraz potrafi zaskoczyc... taki typ
    Zycze powodzenia

Podsumowanie tematu

✨ Problem dotyczył sterowania przekaźnikiem podłączonym do pinu D.0 mikrokontrolera ATmega8, który mimo poprawnej kompilacji programu i wyświetlania informacji na LCD, nie załączał przekaźnika. Wskazano, że w kodzie należy używać aliasu "Portd.0" zamiast "Pind.0" dla pinu D.0. Zalecano testowanie wyjścia podłączając diodę LED zamiast przekaźnika, aby zweryfikować, czy problem jest sprzętowy czy programowy. Podkreślono konieczność stosowania tranzystora i diody zabezpieczającej przy sterowaniu cewką przekaźnika. Zaproponowano także alternatywne rozwiązanie z użyciem triaka, które zadziałało poprawnie. W dalszej części dyskusji omówiono możliwość sterowania lampkami za pomocą pilota podczerwieni, wskazując na konieczność odczytu kodów pilotów (np. RC-5) i porównywania ich w programie. Podano linki do przykładów i literatury dotyczącej odbiorników IR oraz programowania w Bascom AVR. Poruszono temat sterowania radiowego lampkami, omawiając zalety i wady rozwiązań radiowych (moduły 433 MHz, koder/dekoder) w porównaniu do podczerwieni, zwracając uwagę na koszty i zasięg. Wskazano, że w prostych systemach w nadajniku i odbiorniku nie zawsze jest potrzebny mikrokontroler, ale przy przesyłaniu danych złożonych (np. harmonogramów) mikrokontroler jest niezbędny do kodowania i dekodowania transmisji. Podano sugestie dotyczące wzmacniania sygnału IR przez zwiększenie liczby diod nadawczych i ich kierunkowości. Na koniec polecono korzystanie z forów i literatury technicznej do nauki programowania i projektowania układów sterowania zdalnego.
Wygenerowane przez model językowy.
REKLAMA