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] - Oświetlenie schodów na 15 diodach, oddzielne porty.

Artyliusz 08 Gru 2012 17:03 2697 13
  • #1 08 Gru 2012 17:03
    Artyliusz
    Poziom 12  

    Witam.
    Zamierzam zrobić oświetlenie schodów wykorzystując ATmega8 i 15 diod LED białych. Każda dioda będzie podłączona do swojego portu, a więc będzie zajętych 15 portów (PD0...PD7, PC0...PC5, PB0). W ten sposób chcę uzyskać możliwość sterowania każdą. Jedna dioda przypada na jeden stopień schodów. Teoretycznie maksymalne obciążenie ATmegi wynosi 300mA (o ile dobrze się doczytałem). Łącznie diody będą zahaczać o tę granicę. A więc czy to jest bezpieczne? W dodatku do każdej diody zamierzam szeregowo przyłączyć rezystor 330Ω, ale to raczej normalne. Diody będą sterowane stanem wysokim.
    Program, który będę chciał napisać w C będzie przy wciśnięciu przycisku załączał diody i będą się świecić przez około 20 sekund. Taki przełącznik będzie znajdował się u góry i na dole (podpięte pod porty PB1 i PB2). Teoretycznie będę chciał później zrealizować to za pomocą bramki IR, ale też nie wiem, czy wystarczy mi zasobu poczciwej ATmegi8.
    Jestem początkującym w dziedzinie mikrokontrolerów i nie jestem pewien czy to "wypali". W późniejszym etapie, jak się nauczę, będę chciał też wykorzystać PWM, aby móc dodatkowo efektownie sterować diodami.
    Dodam jeszcze, że zasilanie będzie się opierać na klasycznym LM7805. Programuję w WinAVR i wykorzystuję USBasp.
    Co prawda jeszcze nie napisałem programu do tego, ale na początek będzie włączał wszystkie diody po kolei w zależności jaki przycisk się naciśnie (góra/dół) i wyłączać też po kolei. A więc nic trudnego na początek. ;)
    Proszę o wszelkie sugestie i wskazówki.

    0 13
  • Pomocny post
    #2 08 Gru 2012 17:43
    Raphaw
    Poziom 20  

    Zamiast bezpośrednio do pinów proponuję podłączyć diody poprzez 2 układy uln2003, odciążysz prądowo uC. Co do zasobów mega8 powinna sobie z tym wszystkim poradzić.

    0
  • Pomocny post
    #3 08 Gru 2012 18:02
    perlon
    Poziom 19  

    W praktyce masz dostępnych 22 pinów I/O + 1 w rezerwie ( RESET ). Ramu jak na takie zadanie wystarczająco. 15 kanałów programowych PWM da się zrobić. Dwa przyciski (np. INT0 i INT1), pin ICP do detekcji IR. Wejścia na bazie sprzętu bez potrzeby poolingu więc program wyjdzie nie za duży. Wyjścia jak kol. Raphaw napisał koniecznie separowane albo uln'ami albo zwykłe tranzystory w zależności co tam masz pod ręką. Oprócz całkowitego prądu na procek są też limity na port a tu może być już krucho jak dasz 8x20mA na port. Życzę sukcesów.

    0
  • #4 08 Gru 2012 23:15
    Artyliusz
    Poziom 12  

    Myślę, że najlepszym, chociaż też droższym, rozwiązaniem będzie zastosować ULN2003 plus jeden tranzystor, gdyż potrzebuję 15 wyjść, a nie opłaca się kupować trzeciego scalaka dla jednego wyprowadzenia.
    Przyznam, że w ogóle zapomniałem o zabezpieczeniu portów.
    Zastosowanie tych układów nie będzie przeszkadzało w przyszłości w pracy programowemu PWM?
    Będę musiał rozpatrywać użycia przycisków jako przerwania, gdyż podałeś INT0 i INT1?
    Co prawda nie wiem jeszcze za bardzo co to ICP, ale będę miał to na względzie.
    Teoretycznie przy późniejszym zastosowaniu bramek IR przyciski staną się zbędne. Można powiedzieć, że jest to rozwiązanie przejściowe, które wywołało mój obecny stan wiedzy. :) Przynajmniej doczytałem się, że jest konieczne zmodulowanie sygnału IR, aby był bardziej odporny za zakłócenia zewnętrzne.

    0
  • #5 08 Gru 2012 23:24
    Raphaw
    Poziom 20  

    W kwestii PWM tranzystory nie stanowią żadnej przeszkody. Użycie przerwań konieczne nie jest, ale zdecydowanie przydatne - można uśpić procesor obniżając pobór mocy, i wybudzać z uśpienia przerwaniem. Jeszcze kwestia zasilania, co będzie przed 7805?

    0
  • #6 08 Gru 2012 23:37
    perlon
    Poziom 19  

    Jak potrzebujesz dwa przyciski i nie będziesz miał innych gadżetów typu detekcja zera sieci etc. to śmiało możesz poświęcić piny INTx na obsługę tych przycisków. Banalnie się to wtedy oprogramowuje. Pin ICP1 w mega8 to PB0. Tu też masz przerwanie od zmiany stanu pinu i jest związane z trybem pracy Timer/Counter1. Jest to dobra droga do detekcji sygnałów z odbiornika IR typu TSOP (odbiornik do sygnałów IR modulowanych) i też oprogramowanie nie jest trudne ale niestety jest tylko jeden taki pin a potrzebowałbyś dwie bariery. Wtedy trzeba by spojrzeć w kierunku któregoś z pinów INTx co wykluczy ci jeden z przycisków. Oczywiście pozostają metody czysto programowe i pooling ale tu trzeba się już trochę nagimnastykować.

    0
  • #7 08 Gru 2012 23:44
    Artyliusz
    Poziom 12  

    Dobrze, że tę kwestią nie muszę się martwić. Teraz tylko nauczyć się PWM-a. :)
    Jakoś tej kwestii bardzo nie rozważałem, ale zamierzam użyć zasilacz typu modemowy. Mam taki na stanie po modemie GPRS: 5.5V 700mA. Może znajdę jeszcze coś lepszego.

    Co do ICP to w związku, że będą dwie brami IR, to można podłączyć dwa sygnały pod jeden pin? - Nie widziałem, że kolega wyżej już odpowiedział na to pytanie.

    0
  • #8 08 Gru 2012 23:55
    Raphaw
    Poziom 20  

    To zależy czy chcesz wykrywać osobno górę i dół i stworzyć efekt diod zapalających się po kolei, czy wszystko Ci jedno i zapalisz wszystkie diody na raz (wtedy można). 7805 wymaga na wejściu napięcia od ok. 7V. Stosując taki zasilacz można diody zasilić bezpośrednio z niego, natomiast stabilizator dać tylko do uC.

    0
  • #9 09 Gru 2012 00:03
    perlon
    Poziom 19  

    5,5V przed 7805 nie zadziała. Nawet wersja LowDrop potrzebuje chyba deltaV = 1V. Zwykły 7805 potrzebuje wg noty typowo 2V Dropout Voltage. W sumie do zasilania diód możesz użyć napięcia 5,5V a procek zasilić przez stabilizator 3,3V zwykły lub lowdrop bo do samego procka z dwoma barierami IR wystarczy tych 100mA (potrzebna wersja ATmega8L na 3,3V)

    I kol. Raphaw mnie uprzedził.

    0
  • #10 09 Gru 2012 00:03
    Artyliusz
    Poziom 12  

    Niewątpliwie bardziej efektownie będzie zapalanie się diod w zależności, od której strony będzie się szło. Ale jak nie poradzę sobie z tym, związku z tym, że jestem dopiero początkującym to zrobię na tym sumowaniu do PCB0 i będą się na przykład od środka zapalać.
    Nie wiem czy będę miał taki, ale wtedy należałoby zastosować zaświecenie diody stanem niskim?

    0
  • #11 09 Gru 2012 00:08
    perlon
    Poziom 19  

    Jedno z drugim nie ma nic wspólnego. Jakim stanem zapalasz diody to zależy od tranzystorów separujących NPN czy PNP.

    0
  • #12 13 Gru 2012 00:31
    Artyliusz
    Poziom 12  

    Zrobiłem przykładowy schemat jak to by miało wyglądać. Umieściłem na nim też odbiornik TSOP 1838, gdyż ma być domyślnie na bramkach podczerwienie. Mam też do dyspozycji inne TSOP-y. Oczywiście drugi odbiornik ma być później zastąpiony za jeden z przycisków, tak jak koledzy wspomnieli wcześniej.
    Nie wiem czy ten schemat jest poprawny i czy będzie działał, a więc prosiłbym o opinie.

    0
  • #13 13 Gru 2012 08:28
    BlueDraco
    Specjalista - Mikrokontrolery

    1. Dioda podłączona do tranzystora będzie świeciła jaśniej niż te sterowane z ULN. Albo weź 2 szt. ULN2803, albo wszystkie diody podłącz przez tranzystory.

    2. Jakoś nie widzę drugiego bieguna dla tych diod. Z jakiego napięcia mają być zasilane? Jeśli z 5V, to przelicz rezystory. Jeśli one mają naprawdę oświetlać - powinieneś im dać te 20 mA. Jeśli mają tylko świecić - nie potrzebujesz ULN, bo po 5 mA możesz spokojnie wyciągnąć ze wszystkich wyjść uC równocześnie. ULN daje spadek 1..1.5 V, dioda biała przy 20 mA - jakieś 3.2 - zostaje tylko 0.3..0.8 V na regulację prądu diod - może być trudno. Ja bym pomyślał o zastąpieniu ULN tranzystorami NMOS, chociażby BSS83 ew. BSS123.
    Przy obecnym schemacie z rezystorami 330R masz natężenie na diodach rzędu 2 mA. Na wskaźniki w sam raz, do oświetlania za mało.

    3. 1k w bazie tranzystora daje prąd bazy powyżej 4 mA - 10 x za dużo w tym przypadku.

    0
  • #14 13 Gru 2012 15:09
    Artyliusz
    Poziom 12  

    Nie mogę dla tej jednej diody zastosować tranzystor? Po prostu dam większy rezystor, aby zrównać jasność świecenia.
    Chyba dam z jednego źródła, z tego stabilizatora. I wtedy faktycznie należałoby dać rezystory <= 100 omów.
    Teoretycznie miały oświetlać schody.
    Faktycznie, że tam jest 1k na bazie. Dam 10k.

    0