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

[atmega8][bascom] Inteligentne sterowanie osw. schodow

gray77 02 Lis 2010 22:45 4539 16
  • #1 8695617
    gray77
    Poziom 12  
    Witam.
    Pierwsze to , ze nie ma PL liter bo w UK nie ma ich po prostu w kompach. :)
    Niedawno natknalem sie na taki film:





    I pojawia sie zagadnienie. Chce takie cudo zrobic u siebie w domu.
    * bariery optyczne na poczatku i na koncu by uC wiedzial w jakim kierunku ma zaswiecac lampki.
    * poszczegolne lampki na portach D i C (8+8)
    * wykorzystanie PWM do zaswiecania/gaszenia lampek od 0 - 100% mocy (tak jak na filmie)

    No i teraz sa schody (problemy):
    Mam jeden pin z PWM, rozswietla powiedzmy pierwsza LED i ma przejsc do drugiej LED. Jak to zrobic, by pierwsza pozostala juz zaswiecona i druga zaczela sie rozjasniac? Oczywiscie LEDy sa podpiete do portow D i C. Czy jest cos takiego jak przekierowanie sprzetowego PWM na inny port?
    Niestety w szukajkach nie znalazlem nic takiego.

    Jakies sugestie? Moze trzeba wykorzystac jakies przerzutniki? Ale jak to ugryzc?
    Dodam, ze Bascoma znam srednio dobrze, co nie wiem to douczam sie ale z PWM i czyms takim bede mial pierwszy raz do czynienia.

    A moze dalo by sie tak zrobic, by w trakcie rozjasniania pierwszej LED, przy 50% jej mocy zaczyna sie zapalac juz nastepna itd? Na pewno trzeba wtedy zaprzac dwa PWMy.
    Bylby ladniejszy efekt...

    Mysle, ze wspolnie znajdziemy rozwiazanie tego tematu i powstanie produkt finalny...

    Pozdrawiam
  • #2 8695728
    mirekk36
    Poziom 42  
    Jakie ty tam bariery optyczne widzisz ? ;) - to są zwykłe chińskie lampki, każda posiada najzwyklejszą pasywną czujkę ruchu. W środku może siedzieć jeden procesorek nawet typu ATtiny10. A lampka może działać nawet na baterie jeśli tylko na krótko się załącza bo w pozostałym czasie procek śpi. Albo można spkojnie zasilać z zewnątrz. Wtedy nie trzeba główkować bez sensu troszkę nad jakimś tam układem z 20-30 kanałami PWM i kolejno rozjaśniać diody - chociaż to oczywiście jest do zrobienia.
  • #3 8695751
    gray77
    Poziom 12  
    Wlasnie o to chodzi, by nie wykorzystywac chinszczyzny.
    Zreszta to nie wydaje mi sie by byla czujka pasywna. Zbyt plynnie sie zaswiecaja te lampki.

    Ja w moim projekcie chce zastosowac bariery optyczne, jak napisalem do rozpoznania przez uC w ktorym kierunku ma sie to zaswiecac.

    Mysle, ze da sie zrobic tylko jeden PWM i wykorzystac go do sterowania (rozjasniania/gaszenia) LEDow.
  • #4 8695801
    mirekk36
    Poziom 42  
    A co ma płynność zaświecania się lampek do czujki pasywnej ? NIC ;) są umieszczone blisko siebie i stając na jednym stopniu gościu wchodzi od razu i szybko w zasięg kolejnej i kolejnej, a lampka rozjaśnia się powoli i masz taki efekt że widać kolejne rozjaśnianie - nie trudno to sobie wyobrazić.

    pewnie że możesz sobie to zrobić sam, po co chińszczyzna, ale komplikowanie układu z jakimiś barierami optycznymi i to w takiej ilości to wg mnie masakra a nie usprawnienie. Schody będą odrutowane dookoła, dziesiątki metrów niepotrzebnego kabla - a to wszystko koszty ;) .... sam szybko dojdziesz że wobec tego opłaci ci się szybciej sięgnąć po chińszczyznę.
  • #5 8695853
    medicb
    Poziom 28  
    Faktycznie jak mówi mirek taniej było by poszukać gotowca. Sam także pokusiłbym się o budowę osobnych układów na każdy schodek oddzielnie zasilanych bareryjnie i przyklejanych do ściany, wsad do procka banalny. Budowa tego na jednym procku ... hmm mogło by sie okazać że zabraknie nóżek procesora do przełączanie sygnału PWM z jednej nogi procka na inne :) chyba że wykorzystać do tego bramki logiczne w dziwnej obsadzie z prockiem i jeszcze te kable na schodach ...
  • #6 8697126
    Manio79
    Poziom 10  
    Witam Kolegów.Podepne się pod temat,a mianowicie chciałbym napisać wsad do atmegi32 do sterowania oświetlenia schodów (listwy led) które to płynnie rozjaśniały się (ok 2-3s) po załączeniu pstryczka na ścianie a po wyłączeniu pstryczka po ok 2s płynnie gasły (ok 2-3s).Ja jak narazie próbuje łączyć kody(programy) znalezione w necie,bo dziś jest czwarty dzień jak mam styczność z mikrokontrolerami.Jeśli chodzi o instalacje oświetleniową schodową to na razie mam gołe mury więc mam pole do popisu.Ten kod podejrzewam że się przyda
    $regfile = "m32def.dat"
    $crystal = 16000000


    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

    Dim I As Byte

    Do
    For I = 1 To 255
    Pwm1a = I
    Waitms 40
    Next I
    End


    Loop
    Nie oczekuje gotowca chodz bym nie pogardził :D ale pomocy w napianiu takiego wsadu.
  • #7 8697143
    mirekk36
    Poziom 42  
    Skoro sam napisałeś sobie ten kod w 4 dniu ;) to już coś wiesz, ale....

    Manio79 napisał:
    Ja jak narazie próbuje łączyć kody(programy) znalezione w necie,.


    zamiast łączyć kody znalezione gdzieś w necie, lepiej na spokojnie naucz się po kolei programować. W Bascomie obsługa przycisków i taki PWM są banalne. Ale nikt ci gotowca nie poda bo to jest bez sensu po prostu. Nauczenie się tego nie jest trudne a przy okazji jest przyjemne - więc do dzieła ;) w trakcie nauki przyjdą ci zapewne konkretne pytania, które możesz tu zadać i wtedy oczekiwać na konkretną pomoc.
  • #8 8698332
    gray77
    Poziom 12  
    medicb napisał:
    Budowa tego na jednym procku ... hmm mogło by sie okazać że zabraknie nóżek procesora do przełączanie sygnału PWM z jednej nogi procka na inne :) chyba że wykorzystać do tego bramki logiczne w dziwnej obsadzie z prockiem i jeszcze te kable na schodach ...


    Wlasnie, jak przelaczac ten PWM z jednej nogi proca na druga, trzecia itd...???
    Jak to zrobic? Jakas mala podpowiedz?

    Co do ograniczonej liczby portow to myslalem o expanderze (np max7300 na I2C). Na razie staram sie wylukac jak i z czym to sie je, jak tym sterowac....

    A kabli nie powinno byc tak duzo... Wszystko zalezy jak to ktos wykona.
  • #9 8698491
    Manio79
    Poziom 10  
    Ja właśnie napisałem coś takiego o co mniej więcej mi chodziło,ważne że działa

    $regfile = "m32def.dat"

    $crystal = 16000000
    Config Portb = &B11111111
    Portb = &B11111111
    Config Portd = &B1111100
    Portd = &B1111111
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1
    Enable Interrupts
    Dim I As Byte
    Pwm1a = 255
    I = Pwm1a
    Do
    If Pind.0 = 1 Then
    Waitms 15
    If I < 255 Then
    Incr I
    Waitms 15
    Pwm1a = I
    End If
    End If

    If Pind.0 = 0 Then
    Waitms 15
    If I > 0 Then
    Decr I
    Waitms 15
    Pwm1a = I
    End If
    End If
    Loop
    End
    Oczywiście diode podpinamy pod PD.5.Myślę że wysteruje z tego portu jakiś tranzystor mocy żeby można było podpiąć listwe LED
    Oraz dołączam się z pytaniem które zadał kolega,jak przerzucić PWM na inne porty?Kurcze podstawowych żeczy brakuje w necie :cry:
  • #10 8698538
    ktrot
    Poziom 20  
    Na tym filmie są tylko 2 bariery - na dole i na górze, schodki zapalaja się asynchronicznie (w stosunku do wchodzenia po schodach) z zadaną prędkością - to wystarczy.
    Nie musisz wykorzystywać sprzętowy pwm - możesz go zrobić programowo w tym przypadku i to od razu 16 kanałowy (lub więcej). Powiedzmy, że wystarczy 20 stopni regulacji jasności - zadeklaruj tablicę 2x20 bajtów i wysyłaj kolejno elementy tej tablicy na porty sterujące ledami co powiedzmy 500us, da to 100Hz pwm. Bity w bajtach w tej tablicy odpowiednio poustawiaj zgodnie z tym jak mają diody się zapalać. Możesz uzyskać dowolne efekty, w tym także takie jak na filmie.
  • #11 8698541
    medicb
    Poziom 28  
    Manio79 napisał:
    ... Kurcze podstawowych żeczy brakuje w necie ...

    Eee ... ? Nic nie ma w necie o bramkach AND? :D
  • #12 8699628
    gray77
    Poziom 12  
    ktrot napisał:
    Powiedzmy, że wystarczy 20 stopni regulacji jasności - zadeklaruj tablicę 2x20 bajtów i wysyłaj kolejno elementy tej tablicy na porty sterujące ledami co powiedzmy 500us, da to 100Hz pwm. Bity w bajtach w tej tablicy odpowiednio poustawiaj zgodnie z tym jak mają diody się zapalać. Możesz uzyskać dowolne efekty, w tym także takie jak na filmie.


    No i tu mam problem, bo nigdy ale to przenigdy nie pracowalem na tablicach, nie mam o nich bladego pojecia...
    Czy moglbys mi cos tak na szybko naskrobac w ramach malego przykladu? Potem bede staral sie to dostosowac do swoich potrzeb.

    A co do barier to tak, sa one dwie na dole i na gorze i tak to tez zrobie.
  • #13 8777035
    gray77
    Poziom 12  
    Wiec tak. Po dluzszej nieobecnosci spowodowanej szukaniem czegokolwiek, jestem z malym co nieco.
    Znalazlem w sieci kilka przykladow, wykorzystalem je mniej lub bardziej do sklecenia programu i powstal. Dzialajacy jak na razie na plytce stykowej i z niewielka iloscia ledow.

    Bedzie to wygladac tak. Na koncach korytarza beda dwie bariery laserowe. Laser z termometru swiecacy na fotorezystor. Fotorezystor podpiety pod ADC w medze16. Po pomiarach ustale dolny prog zalaczania bariery. Gdy ktorakolwiek bariera zostanie przerwana, zaczna od niej (bariery) zapalac sie po kolei ledy. Bedzie ich 60 (po dwa kolory na jeden punkt - 30 punktow swiecacych). Po zapaleniu wszystkich bedzie odmierzany czas, powiedzmy 1 minuta, po ktorej stopniowo beda gasnac Ledy w tym samym kierunku.
    Reasumujac, jesli ktos przerwie B1, ledy zapala sie od B1 do B2 i po ustalonym czasie beda gasly od B1 do B2. W druga strone sytuacja analogiczna, z tym ze kierunek inny.

    Jest to prawie to co chcialem osiagnac.

    Pytanie tylko, czy moge podpiac dwa ledy na jeden pin portu, czy nie zaszkodzi to medze, biorac pod uwage, ze po aktywacji bedzie swiecilo 60 ledow na raz.
    Myslalem o jakims ULNie ale nie wiem jak za bardzo go podpiac i czy bedzie dobry do przeniesienia sygnalu PWM. Znaczy czy na jego wyjsciu diody tez beda stopniowo gasnac lub sie rozjasniac.
    Jakas mala podpowiedz jak to wykonac?

    PS. Program w zalaczniku
  • #14 8777215
    klops_mops
    Poziom 17  
    gray77 napisał:
    Pytanie tylko, czy moge podpiac dwa ledy na jeden pin portu, czy nie zaszkodzi to medze, biorac pod uwage, ze po aktywacji bedzie swiecilo 60 ledow na raz.
    Myslalem o jakims ULNie ale nie wiem jak za bardzo go podpiac i czy bedzie dobry do przeniesienia sygnalu PWM.


    1. Dwie ledy (zakładając prad jednej na 20mA) to za dużo dla zwykłej At megi/tiny. Wydajność (w stanie niskim) to 20mA na pin. Jest jeszcze ograniczenie wspólne na port (8 pinów) - poszukaj w datasheet'cie ile wynosi.
    2. Zastosuj tranzystory, lub jak sam napisałeś, jakiegoś ULN'a - jak podłączyć jest na forum.
    3. O ile nie masz częstotliwości PWM w GHz (a nie masz) i więcej to tranzystory spokojnie wzmocnią Ci sygnał bez zauważalnych zmian (prócz wydajności prądowej oczywiście).
  • #15 8777411
    gray77
    Poziom 12  
    Jakie tranzystory moge zastosowac? I jaki opornik z nimi?
  • #16 8777425
    klops_mops
    Poziom 17  
    Poszukaj pod prostym hasłem: "tranzystor atmega"

    Dobra wiem, że Ci się nie chce - BC547, rezystor na bazę 4k7/10k emiter do masy, kolektor do katody, anoda przez rezystor do vcc.
  • #17 9556855
    gray77
    Poziom 12  
    Zrezygnowałem z projektu na rzecz ciut innego.

    Dziękuję za wypowiedzi i pomoc.
REKLAMA