Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 8 kwi 2025, o 22:56


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 13 mar 2017, o 19:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    Pewna sytuacja, której nie będę tu opisywał zmusiła mnie do zainteresowania się wreszcie już oda dawna znaną metodą tzw. charlieplexing. Nie będę jej tu opisywał szczegółowo, bo w sieci aż kipi od materiałów. Jakież było jednak moje zdziwienie, że na tym forum prawie nic o tym nie ma... postanowiłem to troszkę zmienić ;)
    Oczywiście liznąłem teorii połączeń i sterowania, ale w programy się nie zagłębiałem - mam taką zasadę, że najpierw sam próbuję, a jak nie idzie to się dopiero wspomagam :) W skrócie tylko napiszę, że metoda opiera się na wykorzystaniu zmiany biegunów zasilania pary LED, oraz odpowiednim ustawianiem portów procesora aby uzyskać stan wysokiej impedancji na innych pinach (czyli jako "wejście niepodciągnięte") w chwilach kiedy w pozostałych parach diody nie powinny się świecić.
    Na youtube widziałem wiele filmów z użyciem zarówno samego zwykłego pojedynczego mulipleksowania jak i z PWM co początkowo wydawało mi się to zaawansowaną kosmiczną technologią, ale już po chwili miałem w głowie teorię wg, której powinno wszystko prosto dać się zrealizować. Praktyka okazała się... zgodna z teorią jak nigdy ;) To co wymyśliłem chciałem wam pokazać, a przy okazji zachęcić do stosowania tej niezwykle ciekawej metody sterowania dzięki, której stworzenie czegoś co fajnie miga (lubię jak coś miga :)) staje się banalne proste i TANIE jak barszcz!
    Postanowiłem wykorzystać 4 linie procka co daje możliwość sterowania do 12 diod (bo można, np. z dwóch zrezygnować) i jeden pin zostawić w rezerwie. Poza tym ułatwiło mi to ułożenie tablicy multipleksowania. Zresztą nie oszukujmy się, każda dodatkowa dioda to osłabienie mocy świecenia - czas wyświetlania dzieli się na wszystkie LED czyli w moim przypadku każda dioda świeci przez 1/12 pełnej jednostki czasu, ale to i tak wystarczy aby zrobić fajne efekty. Zaletą będzie za to energooszczędność. W końcu pobór prądu przez 12 LED będzie taki jak jednej... no dobra wiem, że ogólnie ciemniej, ale i tak jest fajnie :)
    Schemat, który będzie współpracował z moim programem wygląda tak:

    Obrazek

    To może teraz filmik z moich zmagań. W pierwszej części to zwykłe zapal/zgaś, a wybór odpowiedniej diody (jednej z 12) zrobiłem na potencjometrze, który często mi pomaga w zadawaniu parametrów testowanych programów, w których docelowo wcale nie musi być zamontowany (swoją drogą polecam tą metodę - szybka i wygodna przy takich układach jak Attiny). W tym przypadku nie bierze udziału "przemiatanie" czyli w danej chwili może świecić tylko jedna LED przez co będzie na nią iść pełna moc. Przykłady zastosowania? - np. wskaźniki napięcia, poziomu sygnału (w końcu jedno wejście ADC jest wolne), zliczanie impulsów (do 12 w tym wypadku siłą rzeczy...) i wiele innych. Jeśli teraz byśmy zaczęli baaardzo szybko kręcić potencjometrem aby kolejno się zapalały diody to dzięki bezwładności oka zobaczymy, że świecą wszystkie (tylko ciemniej). Teraz wystarczy wstawić do programu jakiś warunek i zmienną wg, której np. jedynka to dioda ma się zapalić, a zero ma nic nie robić to już podczas tego przemiatania będzie widać, że mamy władzę nad LED'ową kreską ;) Pójdziemy jednak o krok dalej i zamiast jednej zmiennej użyję tylu zmiennych ile jest diod (właściwie wykorzystam tylko po kilka początkowych bitów z każdej zmiennej) aby zarządzać jasnością każdej diody osobno! Teraz każda dioda ma swój bajt odpowiadający za luminację coś jak pamięć monochromatycznego ekranu 12-pikselowego.
    Efekt jaki uzyskałem widać w drugiej część filmu. To prosty efekt rotacji tablicy jasności co tworzy przyjemną falę. Potencjometrem można regulować jej prędkość. Tu w zasadzie ogranicza nas już tylko wyobraźnia i pamięć attiny13. Można tworzyć własne tablice startowe i przepisywać je efektownie do tabeli luminacji, lub załatwić sprawę matematycznie wzorami i zależnościami operując bezpośrednio na tablicy luminacji. Każdy sposób jest dobry i wszystko zależy od zastosowania.



    Pora na program. Nie ukrywam, że zastanawiałem się czy nie odwlec jego publikacji aby zobaczyć co wy wymyślicie :mrgreen:
    Nie jest on do końca zoptymalizowany (można było choćby timer programowy podrasować, albo wywalić obsługę ADC), ale nie o to mi chodziło. Po prostu jest tak napisany aby można w miarę szybko się połapać o co tu chodzi i jak to działa, albo nawet wykorzystać żywcem jeśli ktoś akurat potrzebuje taki efekt. Mimo wszystko chętnie zobaczę wasze pomysły jeśli skorzystacie z tego mini-poradnika jeśli go tak w ogóle można nazwać 8-)

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    PWM obejmuje 12 poziomów od 0-min do 11-max (tak sobie wymyśliłem aby każda dioda mogła inną jasnością zabłysnąć). Zwiększanie zakresu niewiele wnosi oprócz tego, że zaczyna się nieprzyjemne migotanie.
    W razie pytań odpowiem w miarę możliwości 8-)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 mar 2017, o 20:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 sty 2013
    Posty: 1760
    Pomógł: 196

    Witam
    SylwekK napisał(a):
    ...ale to i tak wystarczy aby zrobić fajne efekty.

    Co prawda, jeszcze kawał czasu, ale może warto już szykować takie pływające sopelki na choinkę.
    Ja już takie mam 8-) - lutowane na pająka i całość upaplana silikonem.

    Pozdr.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 mar 2017, o 20:41 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27369
    Lokalizacja: Szczecin
    Pomógł: 1043

    Mi się podoba zawsze to co SylwekK potrafi wyciskać z tych maluszków ATtiny ;) pomimo małej ilości FLASH a tu także mało pinów a TYLE diod LED ;)

    no ale charlieplexing - cóż daje takie możliwości - tylko jeszcze trzeba wpaść na fajny pomysł jak to napisać zgrabnie i żeby się zmieściło w maluchu ;) a tu TAK to jest zrobione ;)

    Uważam że BARDZO FAJNA INSPIRACJA dla INNYCH taki projekcik - żeby zainteresowali się maluszkami ;)

    Jedyne czego się "przyczepię" (nie lubię tego słowa) ale napisałem je w cudzysłowach i z uśmiechem przyjacielskim - to DLACZEGO ŻEŚ PAN tego nie umieścił w dziale DIY projekty sprzętowe - przecież IDEALNIE SIĘ TAM NADAJE ;) pamiętaj na przyszłość - a ja tymczasem przenoszę tam wąteczek ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 mar 2017, o 21:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    Hehe, dzięki Mirku :) W sumie nawet nie sądziłem, że się to nadaje na DIY, a właśnie miała to być taka forma inspiracji. Sam przyznasz, że na polskich forach jakoś dziwnie mało projektów z tą metodą "multiplexu". Oczywiście zdarzają się wyjątki, no ale na tym forum to już w ogóle ze świeczką szukać ;-)

    A odnośnie jeszcze parametrów działającego programu, bo zapomniałem o tym wspomnieć. O ile podstawowa częstotliwość przemiatania nie wymaga większego komentarza i jest to około 833Hz (bo 10kHz/12=833.333) to częstotliwość PWM jest kolejną cykliczną modulacją i teraz wynik 833/11 (0 do 10, a dlaczego to zaraz wyjaśnię) = 75.7Hz. Teraz widać jak ilość diod i zakres PWM są od siebie zależne. Zwiększenie poziomów luminacji do 16 już by spowodowała spadek odświeżania do 52Hz i to już zaczyna być powoli widoczne. Wracając do zakresu 0-10 mimo 12 poziomów (czyli faktycznie 0-11)... Otóż gdybym licznik zawracał przy wartości większej od 11 (tak jak teoretycznie powinno być dla 12-u poziomów), a nie od 10 to wtedy po wpisaniu wartości 11 do tablicy tak naprawdę uciekałby mi jeden poziom jasności co wynika z linii:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Po prostu 11 nigdy nie będzie większe od... 11-u i led nie zostanie zapalony :) Oczywiście można by wstawić tam warunek ">=", tylko wtedy z kolei miałbym tlącą się diodkę przy wartości luminacji 0.
    To tyle tytułem uzupełnienia :)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 mar 2017, o 21:31 
    Offline
    Użytkownik

    Dołączył(a): 27 lut 2013
    Posty: 230
    Pomógł: 4

    Super! Fajna metoda ;) muszę kiedyś się nią pobawić ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 mar 2017, o 06:58 
    Offline
    Użytkownik

    Dołączył(a): 05 kwi 2014
    Posty: 339
    Pomógł: 10

    Kiedys zrobilem cos podobnego, ale nie jako matryca..
    Wpadły mi w rece "smieszne" ledy, w jednej obudowie 2 diody o odwróconej polaryzacji..i sterowalem nimi za pomoca dodatkowego pinu, zamiast masy.
    Efekt byl ciekawy:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO