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

Jak wykonac uklad kolejo zapalanych LEDow

rokoko 18 Paź 2005 17:47 2493 22
  • #1 18 Paź 2005 17:47
    rokoko
    Poziom 20  

    Witam serdecznie.
    Potrzebuje pomocy w zaprojektowaniu ukladu, ktory po podaniu zasilania dziala nastepująco: zapala diode nr 1, po 1sek diode nr2 i tak az do pieciu, w momencie kiedy ostatnia dioda bedzie sie palila 1 sek wszystkie diody gasna i zapala sie na stale dioda nr 6 (pali sie ona do wylaczenia zasilania). Z gory dzieki za wszelaka pomoc, jako ze w projektowaniu ukladow jestem noga wiec prosze o instrukcje "lopatologiczne":)

    0 22
  • Relpol
  • #2 18 Paź 2005 17:59
    elektryk
    Poziom 42  

    Można to zrobić na małym procesorze, np jakiś w 8pinowej obudowie !!! albo na liczniku 4017 taktowanym np z 555. Na wyjście 4017 trzeba dołożyć bramkę OR żeby poprzednie diody nie gasły (4017 daje sygnał 1 z 10), do tego dołożyć sprzeżenie zwrotne tak żeby 4017 się resetował po doliczeniu do 5 oraz jakiś bufor tranzystorowy na wyjściu bramki OR.

    0
  • #3 18 Paź 2005 19:53
    marek_Łódź
    Poziom 36  

    Procesor AVR (np. ATTiny2313) zasilacz 5V, diody LED przez rezystory z portu np. B do masy i kawałek programu np. w BASCOMie

    Code:
    Config Portb = Output                                       'Set direction
    
    Portb = 0
    Set Portb.0
    Wait 1
    Set Portb.1
    wait 1
    Set Portb.2
    wait 1
    Set Portb.3
    wait 1
    Set Portb.4
    wait 1
    Portb=0
    Set Portb.5

    0
  • Relpol
  • #4 18 Paź 2005 23:41
    rokoko
    Poziom 20  

    Czy to jest caly program ktory trzeba wrzucic to tego procka?? Ten uklad wymaga dodatkowo jakiejs pamieci zewnetrznej EEPROM?? Jakie jest max obciazenie pradowe wyjsc procka??

    0
  • #5 19 Paź 2005 00:21
    K_o_n_r_a_d
    Poziom 23  

    marek_Łódź napisał:

    Code:
    Config Portb = Output                                       'Set direction
    
    Portb = 0
    Set Portb.0
    Wait 1
    Set Portb.1
    wait 1
    Set Portb.2
    wait 1
    Set Portb.3
    wait 1
    Set Portb.4
    wait 1
    Portb=0
    Set Portb.5

    Pozwolę sobie ulepszyć program zaproponowany przez marek_Łódź.
    Code:
    Config Portb = Output                                       'Set direction
    
    Portb = 0
    Wait 1
    Set Portb.0
    Wait 1
    Set Portb.1
    wait 1
    Set Portb.2
    wait 1
    Set Portb.3
    wait 1
    Set Portb.4
    Wait 1
    Portb = 32
    Do : Loop : End

    rokoko napisał:
    Czy to jest caly program ktory trzeba wrzucic to tego procka??

    Wystarczy tyle.
    rokoko napisał:
    Ten uklad wymaga dodatkowo jakiejs pamieci zewnetrznej EEPROM??

    Nie
    rokoko napisał:
    Jakie jest max obciazenie pradowe wyjsc procka??
    Powyżej 20mA (nie więcej jak 200mA prąd VCC i GND), więc spokojnie możesz podłączyć LEDa prosto do pinu (przez odpowiedni rezystor).
    Pozdrawiam.

    0
  • #6 19 Paź 2005 09:55
    marek_Łódź
    Poziom 36  

    K_o_n_r_a_d napisał:
    (przez odpowiedni rezystor).
    Przy 1k prąd LEDa będzie na poziomie 3-4mA.

    Jeśli nie robiłeś jeszcze w AVRach, to musisz ściągnąć sobie jakąś wersję BASCOMa, zrobić mały programatorek na np. porcie drukarki i już. Z pewnością nie jest to wiele prostsze od zmontowania jakiegoś układziku na TTL czy CMOS, ale tylko za pierwszym razem.

    0
  • #7 19 Paź 2005 12:57
    rokoko
    Poziom 20  

    Sorki ze pytam o takie pierdolki ale widze ze na mikrokontrolerach mozna zrobic wszystko i to duzo prosciej anizeli na ukladach TTL i CMOS. Chcialem sie jeszcze zapytac o 2 rzeczy:
    1. Co oznacza wpis portb=32??
    2. Jak rozumiem LOOP to petla??
    Jak taki uklad realizuje program?? Chodzi mi o to, ze gdyby do procka bylby podlaczony sygnal sterujacy to czy procesor zawsze sprawdza poziom tego sygnalu i ewentualnie wykonuje zdane procedury?? Wpadl mi poprostu do glowy kolejny pomysl, ktory chcialem zrealizowac dosc dawno... mianowice: ze przy zmianie sygnalu sterujacego (z 1 na 0 lub z 0 na 1) uklad ma aktywowac wysjscie na np 5 sec. Czy da sie to zrobic na bazie AVR?? Mam jakies pogramatorki w domu (PHOENIX/SMART, JTag, FUN) czy to sie nada?? Z gory dzieki. Jaka lekture byscie polecili dla poczatkujacego??

    0
  • #8 19 Paź 2005 15:52
    marek_Łódź
    Poziom 36  

    rokoko napisał:
    wszystko i to duzo prosciej anizeli na ukladach TTL i CMOS.
    Z wyjątkiem najprostszych układzików oraz układów silnie uwarunkowanych czasowo (automat sekwencyjny, a zwłaszcza programowalny komputerek działa wolniej od sieci bramek).

    rokoko napisał:
    1. Co oznacza wpis portb=32??
    Ustawienie piątego bitu portu b, wygaszenie pozostałych.

    rokoko napisał:
    2. Jak rozumiem LOOP to petla??
    Tak, akurat w tym przypadku jest to nieskończona pętla zawieszająca program po zakończeniu algorytmu.

    rokoko napisał:
    Jak taki uklad realizuje program??
    Wykonuje sekwencyjnie instrukcja po instrukcji pobieranej z pamięci kodu.

    rokoko napisał:
    Chodzi mi o to, ze gdyby do procka bylby podlaczony sygnal sterujacy to czy procesor zawsze sprawdza poziom tego sygnalu i ewentualnie wykonuje zdane procedury?? Wpadl mi po prostu do glowy kolejny pomysl, ktory chcialem zrealizowac dosc dawno... mianowice: ze przy zmianie sygnalu sterujacego (z 1 na 0 lub z 0 na 1) uklad ma aktywowac wyjście na np 5 sec. Czy da sie to zrobic na bazie AVR??
    Wejścia są testowane na żądanie, czyli musisz założyć nieskończoną pętlę, w której czekasz na zmianę stanu wejścia.
    Druga możliwość to podłączenie wejścia pod linię przerwań INT0 lub INT1 i obszycie algorytmu w procedurze obsługi przerwań. Wtedy faktycznie procesor na bieżąco odsłuchuje (sprzętowo) ten port, a w tym czasie może sobie wykonywać inne rozkazy.

    rokoko napisał:
    Mam jakies pogramatorki w domu (PHOENIX/SMART, JTag, FUN) czy to sie nada?? Z gory dzieki.
    Nie znam. Ja osobiście używam pięciu drutów łączących port drukarki do linii ISP procesora i programów Ponyprog i/lub programu Adam Dybkowskiego.

    rokoko napisał:
    Jaka lekture byscie polecili dla poczatkujacego??
    Najtaniej wychodzi czytanie datasheetów i helpów (np. od BASCOM'a). Ostatnio wyszło sporo książek (w tym o AVRach i BASCOMie). Niestety troszkę kosztują Osobiście polecałbym książkę Dolińskiego o AVRach. No i oczywiście fora internetowe tudzież stronki o mikroprocesorkach.

    http://bascom.dxp.pl/
    http://mikrokontrolery.net/

    0
  • #9 19 Paź 2005 23:47
    rokoko
    Poziom 20  

    Napisze kawalek programu prosze sprawdzcie czy dobrze mysle. Chodzi mi u uklad ktory bedzie mial jedno wejscie i jedno wyjscie. Gdy na wejsciu pojawi sie 1 (+5V) to wyjscie ma zmieniac swoj stan.

    'Set direction
    Config Portb = Output
    Config Portd = Input
    Portb = 0
    #If portd.0 = 1
    #If portb.0 = 0
    Set Portb.0
    #endif

    #If portd.0 = 1
    #If portb.0 = 1
    Portb=0
    #endif
    Do : loop


    Czy tak napisany program zrealizuje mi zadanie przerzutnika tupu T??
    NApewno jest w tym krotki mkodzie kupe bledow.... prosze wybaczcie moja ciemnote

    0
  • #10 20 Paź 2005 00:49
    K_o_n_r_a_d
    Poziom 23  

    Nie wnikając bardzo czy dobrze czy źle lepiej zrobić tak, że pin wejściowy podłączyć do masy przez przycisk a port podciągnąć do + zasilania, było by to tak:

    Code:
    Config Portb = Output
    
    Config Portd = Input
    Portb = 0
    portd=255
    do
       If PinD.0 = 1
          toggle portb.0
       endif
    loop : End

    UWAGA! Aby sprawdzić aktualny stan na danym portcie odczytujemy rejestr PinD a nie PortD. PortD da nam (w tym programie) zawsze 255 (portd.0 da 1).

    Jak się okaże po wrzuceniu tego do uK i uruchomieniu program nie do końca będzie działał tak jak chcesz, ponieważ uK jest duuuuużo szybszy od palca naciskającego na przycisk i podczas przytrzymania przycisku zdąży zmienić stan tysiące razy.

    Ulepszona wersja programu:
    Code:
    Config Portb = Output
    
    Config Portd = Input
    Portb = 0
    portd=255

    do
       Debounce Pind.0 , 0 , zmien , Sub
    loop : End

    zmien:
       toggle portb.0
    return


    Pozdrawiam.

    0
  • #11 20 Paź 2005 16:43
    rokoko
    Poziom 20  

    Jeszcze mam jedno pytanko: Cyz wejscia i wyjscia mikrokontrolera musza byc polaczone z jakimis elementami zewnetrznymi?? Uklad, ktory mi chodzi po glowie ma pracowacx w samochodzie, zasilanie AVRa na stabiliotrz 7805 a wyjscia podlaczone do diod LED oraz tranzystorow, ktore beda zamykac obwod 12V. Diode Led polaczyc rownolegle z baza tranzystora czy szeregowo?? Nie potrzeba zadnych innych elementow (kondensatory rezystory itp??
    Moge dowolnie przypisywac sobie kazdy z dostepnych portow??

    0
  • #12 20 Paź 2005 16:50
    marek_Łódź
    Poziom 36  

    Sieć zasilająca w samochodzie jest dość mocno zaśmiecona, więc oprócz dwóch par pojemności na wejściu i wyjściu zasilacza 7805 dobrze jeszcze dać jakiś filtr (dławik szeregowy przed zasilaczem, ew. transil równolegle z wejściem zasilacza). Dobrze też dać mały kondensator (10-100nF) bezpośrednio na nogach zasilających procesora (takie dodatkowe odsprzężenie zakłóceń).

    Sterowanie bazy przez diodę LED? Można, ale raczej się nie praktykuje. Lepiej dać diodę z opornikiem szeregowym na wyjściu tranzystora równolegle z odbiornikiem (np. między kolektorem i plusem zasilania równolegle do cewki przekaźnika, żarówki itd). Dobór portów swobodny w zakresie dostępnych wolnych zasobów procesora.

    0
  • #13 20 Paź 2005 16:55
    rokoko
    Poziom 20  

    Wlasnie chodzi o to by dioda mogla byc sterowana z microkontrolera wiec raczej bede musial ja dac rownolegle z baza tranzystora. A mam jeszcze jedno pytanko: Chce zastosowac tranzystor, ktory bedzie sterowany z +5V (wyjscie AVR) i bedzie "zamykal" obwod 12V 8A. Czy dobrze mysle:? Tranzystor NPN baza do pinui procka, +12V do kolektora, a odbiornik miedzy emiter a mase??

    0
  • #14 20 Paź 2005 17:00
    marek_Łódź
    Poziom 36  

    Nie! Taki układ to wtórnik, w którym na odbiorniku będziesz miał 5V zmniejszone o napięcie złącza BE.
    Łączysz: port procesora przez opornik na bazę tranzystora, emiter tranzystora do masy, obciążenie między kolektor i +12V. Jeśli obciążenie jest indukcyjne (przekaźnik, zawór, silnik) dodatkowo dioda katodą do +12 anodą na kolektor. Żeby wycisnąć 8A musisz użyć Darlingtona np. TIP122. Jeśli odbiornik mocno sieje (np. silnik) dobrze dać jeszcze optoizolator przed tranzystorem. Dioda LED włączona za tranzystorem będzie działała tak samo jak podwieszona na bazie, ja osobiście wolę ją mieć za wzmacniaczem, ale nie jest to sprawa krytyczna pod warunkiem, że nie przeciążysz portu.

    0
  • #15 20 Paź 2005 17:06
    rokoko
    Poziom 20  

    Rezystor 1k bedzie dobry w szereg z baza tranzystora?? Jesli chodzi o obciazenie to obciazenie tylko i wylacznie Rezystancja. Ach jeszcze jedno pytanie... Zalezy mi zeby tranzystor zwieral wlasnie +12V a nie mase. Co w takim przypadku??

    0
  • #16 20 Paź 2005 17:18
    marek_Łódź
    Poziom 36  

    Mała pomyłka, jeśli to ma być ciągłe 8A proponuję TIP132. Musi to być darlington. Proponuję

    http://tme.pl/katalog/index.phtml?tme_session=3to1b7cft2p87n5qtqhlo81focresmcp&sid=&f_szukaj=npn+8a&f_radio=&idp=1 oraz

    http://tme.pl/arts2/pl/tranzystory/trnz06.html.

    W zasadzie powinieneś go dobrać z zapasem no i przy tym prądze nie obejdzie się bez radiatora. Opornik powiedzmy 500 Ω będzie pewniejszy (kwestia bety tranzystora - wszystko można wyczytać w datasheet)

    Odwrotka - dajesz mały tranzystor npn przez opornik z portu na bazę, emiter do masy, kolektor przez opornik na bazę dużego pnp. Ten pnp łączysz emiterem do +12, między kolektorem i masą obciążenie. W tym wypadku tranzystor mocy nie musi być darlingtonem (mamy już jeden stopień wzmocnienia), z tym, że wtedy ten opornik na jego bazie nie może być zbyt duży (100-200Ω).

    W tym wypadku możemy też pójść we wtórnik - mały tranzystor na bazę pnp mocy, odbiornik między +12V i emiter, kolektor tranzystora mocy do masy.

    Podobnie jak wyżej proponuję zajrzeć do:

    http://tme.pl/katalog/index.phtml?tme_session=3to1b7cft2p87n5qtqhlo81focresmcp&sid=&f_szukaj=pnp+8a&f_radio=&idp=1

    http://tme.pl/arts2/pl/tranzystory/trnz08.html

    0
  • #17 20 Paź 2005 19:30
    rokoko
    Poziom 20  

    Szukalem sobie tranzystora PNP i mam kilka pytan:
    1. Co to jest Vcb, Vce, Vec??
    2. Ic - czy to prad dopuszczalny jaki moze "zamknac" tranzystor??
    3. hFe - co to jest??
    4. Jaki jest prad bramki przy pelnym otwarciu??
    5. Jak wyliczyc wartosc rezystora, ktory idzie w szereg z bramka??

    Sorki za tak lamerskie pytania ale generalnie jest to moj pierwszy projekt od zera ukladu elektronicznego. Jaka powinna byc wartosc tych poszczegolych elementow w moim przypadku (zalozmy ze mikrokontroler steruje bezposrednio tym tranzystorkiem, a tranzystor zwiera do masy)

    0
  • #18 21 Paź 2005 00:02
    _jta_
    Specjalista elektronik

    A ja bym pokombinował z układami: NE555 + 74174 + 7406 - na pierwszym zrobić generator (impuls co sekundę),
    drugiemu podłączyć układ RC, który go wyzeruje przy włączaniu (opornik do +5V, kondensator do masy, można
    jeszcze dla bezpieczeństwa diodę -|>- do +5V, i przez opornik np. 330 om do wejścia CLR w 74174), wejście 1D
    połączyć z CLR, dalsze do Q (2D-1Q, 3D-2Q, itd.), i każde Q połączyć z innym wejściem 7406; jakby teraz do wyjść
    7406 podłączyć LED-y (przez oporniki do +), to w chwili włączenia nie zaświeci żaden, po chwili pierwszy, potem
    drugi (pierwszy nadal będzie świecić)... aż zaświecą wszystkie, i tak już zostanie; potrzeba jeszcze, żeby jak zaświeci
    LED6, to zgasły pozostałe: podłączyć tranzystor NPN, kolektor do + zasilania, emiter do oporników przy anodach LED-ów
    1..5 (zamiast do + zasilania łączysz je do emitera), baza do anody LED-a 6, i przez opornik do + zasilania.
    Teraz, jak LED 6 się włączy, to wyłączy ten tranzystor, powodując zgaszenie pozostałych LED-ów. I już gotowe.

    Kwestia jak dobrać oporniki: najprościej zasilać LED-y (i tranzystor) z +12V, wtedy oporniki LED-ów mogą być po 620
    omów, tylko dla LED-a 6 (i bazy tranzystora zarazem) 680 omów. Zakładam, że te LED-y mają takie samo napięcie
    przewodzenia, bo jak LED 6 będzie miał o 0.6V lub więcej większe, to pozostałe nie zgasną, kiedy on się zapali.
    Jeszcze opornik i kondensator w układzie resetu 74174: np. 3k, 50uF powinno być dobrze; i do układu NE555: dwa
    oporniki np. po 510k, i kondensator 0.56uF powinno dać okres około 1s. Układy scalone trzeba zasilać z 5V
    (NE555 bez problemów zaakceptowałby i 15V, ale pozostałe nie, i żeby dobrze z nimi działał musi być z 5V).

    0
  • #19 21 Paź 2005 10:53
    rokoko
    Poziom 20  

    Przy probie przypisania portu jako INPUT wyskakuje mi blad: CAN`T FIND HW REGISTER (DDRD). Dalczego tak sie dzieje?? Jaki wybrac typ kosci przy programowaniu bo ATTINY 2313 nie ma w BASCOMIE sa tylko ATTINY 22, 12 i 15

    0
  • #20 22 Paź 2005 13:02
    marek_Łódź
    Poziom 36  

    rokoko napisał:
    Przy probie przypisania portu jako INPUT wyskakuje mi blad: CAN`T FIND HW REGISTER (DDRD). Dalczego tak sie dzieje?? Jaki wybrac typ kosci przy programowaniu bo ATTINY 2313 nie ma w BASCOMIE sa tylko ATTINY 22, 12 i 15


    Spróbuj ściągnąć nową wersję, ja u siebie mam ATTiny2313. Te o których piszesz mają za mało wyprowadzeń. Ewentualnie wchodzi też w grę ATTiny26, ATMega8 itp. Sprawdź w układzie wyprowadzeń, czy dostępny jest ten port, którego chcesz użyć i ewentualnie przeadresuj, bo kompilator Ci odrzuci próbę skonfigurowania nieistniejącego portu.

    0
  • #21 22 Paź 2005 18:08
    rokoko
    Poziom 20  

    A co sadziscie zeby zamiast ukladu ATTINY2313 zastosowac uklad AT90S2313?? Jak ogladalem datasheet to wyprowadzenia identyczne. Czy wiec te 2 uklady sie roznia??

    0
  • #22 22 Paź 2005 21:28
    marek_Łódź
    Poziom 36  

    Wejdź na www.atmel.com i ściągnij sobie datasheet obu tych kości. Akurat do Twoich programów at90s2313 spokojnie wystarczy.

    0
  • #23 23 Paź 2005 00:08
    rokoko
    Poziom 20  

    A oto i moj pierwszy programik napisany w BASCOMIE a wszystko dzieki Wam, Waszej pomocy. Prosze napiszcie czy sa szanse ze ten programik ruszy w procesorze AT90S2313.

    Code:
    Config Portb = Output
    
    Config Portd = Input
    Portb = 0
    Portd = 255
    Set Portb.0
    Wait 1
    Set Portb.2
    Wait 1
    Set Portb.3
    Wait 1
    Set Portb.4
    Wait 1
    Set Portb.5
    Wait 1
    Set Portb.6
    Portb = 0
    Wait 1
    Portb = 125
    Wait 1
    Portb = 0
    Set Portb.1

    Do
       Debounce Pind.0 , 0 , Zapal1 , Sub
       Debounce Pind.1 , 0 , Zapal2 , Sub
       Debounce Pind.2 , 0 , Zapal3 , Sub
       Debounce Pind.3 , 0 , Zapal4 , Sub
       Debounce Pind.4 , 0 , Zapal5 , Sub
    Loop : End

    Zapal1:
       Toggle Portb.2
       Return

    Zapal2:
       Toggle Portb.3
    Return

    Zapal3:
       Toggle Portb.4
    Return

    Zapal4:
       Toggle Portb.5
    Return

    Zapal5:
       Toggle Portb.6
    Return

    0
  Szukaj w 5mln produktów