[ATmega32][C] Zegar na ściane
Mi się też zawsze marzyło coś takiego zbudować, ale na matrycy z LEDów SMD i kolorowej RGBY.
Tylko że ja właśnie chciałem wykorzystać IRed do prostego radaru wykrywającego że ktoś porusza się przed zegarem, to miała być część układu oszczędzania energii.Jeżeli chodzi o Rejestry przesuwne to są gotowe rozwiązania z driverami LED do 150mA tylko że SMD.
Np http://www.tme.eu/pl/details/sct2110cso ... echnology/#
Tylko że ja właśnie chciałem wykorzystać IRed do prostego radaru wykrywającego że ktoś porusza się przed zegarem, to miała być część układu oszczędzania energii.Jeżeli chodzi o Rejestry przesuwne to są gotowe rozwiązania z driverami LED do 150mA tylko że SMD.
Np http://www.tme.eu/pl/details/sct2110cso ... echnology/#
- Załączniki
-
- Rej_LED.jpg (79.45 KiB) Przejrzano 11698 razy
Trochę nie po kolei, ale myślę że zrozumiesz.
Czy ISP (programowanie) nie pogryzie się z SPI (sterowanie rejestrami)? Oczywiście że się pogryzie i gdybyś miał wszystko sterowane przez '595 to trzeba by wyłączyć wyjścia rejestrów gdy uC dostanie reset.
U Ciebie sterowanie rzędami jest na tranzystorach które zostaną wyłączone w momencie zresetowania uC (stan wysokiej impedancji na wszystkich pinach) dlatego matryca nic nie wyświetli i nic specjalnego się nie stanie.
Zakłócenia w drugą stronę nie są możliwe, łączysz tylko wejścia układów '595. Dopiero podłączenie jakiegoś wyjścia spowoduje zakłócenie przy programowaniu.
Prąd tranzystora BC414 to 100mA - będzie dobrze, nie ma prawa się spalić.
Teraz wąskim gardłem stają się BC327 sterujące wierszami, potrzebujesz przeciąć ścieżki i połączyć po jednym tranzystorze na 10 LEDów. 3 BC327 na wiersz i wszystkie sterowane równolegle z jednego pinu uC (3 rezystory).
Zasilanie - zasilacz impulsowy nie ma prawa przeszkadzać, przecież 99% urządzenia to cyfrówka, a 1% to odbiornik IR. Tylko jemu dodaj filtrację jeśli będzie sprawiać problemy.
Jedynie jedno musisz sprawdzić. Teoretycznie zasilacz może dać 2A przez max 5h bo tyle wynosi czas ładowania palmtopa. Przy prądzie 1.5A (bo przecież wyświetlacz nie świeci cały przez cały czas) sprawdź jak mocno się będzie grzać po kilkunastu godzinach pracy.
A co do zasilania, to moim zdaniem wystarczy jedna zworka lub nawet dioda prostownicza oddzielająca uC od sterowania matrycą. Zasilacz zasila bezpośrednio matrycę i pośrednio uC, natomiast zasilanie uC jest na sztywno sprzęgnięte z programatorem.
Czy ISP (programowanie) nie pogryzie się z SPI (sterowanie rejestrami)? Oczywiście że się pogryzie i gdybyś miał wszystko sterowane przez '595 to trzeba by wyłączyć wyjścia rejestrów gdy uC dostanie reset.
U Ciebie sterowanie rzędami jest na tranzystorach które zostaną wyłączone w momencie zresetowania uC (stan wysokiej impedancji na wszystkich pinach) dlatego matryca nic nie wyświetli i nic specjalnego się nie stanie.
Zakłócenia w drugą stronę nie są możliwe, łączysz tylko wejścia układów '595. Dopiero podłączenie jakiegoś wyjścia spowoduje zakłócenie przy programowaniu.
Prąd tranzystora BC414 to 100mA - będzie dobrze, nie ma prawa się spalić.
Teraz wąskim gardłem stają się BC327 sterujące wierszami, potrzebujesz przeciąć ścieżki i połączyć po jednym tranzystorze na 10 LEDów. 3 BC327 na wiersz i wszystkie sterowane równolegle z jednego pinu uC (3 rezystory).
Zasilanie - zasilacz impulsowy nie ma prawa przeszkadzać, przecież 99% urządzenia to cyfrówka, a 1% to odbiornik IR. Tylko jemu dodaj filtrację jeśli będzie sprawiać problemy.
Jedynie jedno musisz sprawdzić. Teoretycznie zasilacz może dać 2A przez max 5h bo tyle wynosi czas ładowania palmtopa. Przy prądzie 1.5A (bo przecież wyświetlacz nie świeci cały przez cały czas) sprawdź jak mocno się będzie grzać po kilkunastu godzinach pracy.
A co do zasilania, to moim zdaniem wystarczy jedna zworka lub nawet dioda prostownicza oddzielająca uC od sterowania matrycą. Zasilacz zasila bezpośrednio matrycę i pośrednio uC, natomiast zasilanie uC jest na sztywno sprzęgnięte z programatorem.
-kayron, SMD nie stanowi problemu, ale jakoś tak uparłem się na te 595 i tranzystory (bo mam)
-Ertew, staram się wszytko tworzyć modułami, nie na jednej płytce, więc w trakcie programowania i tak na wszelki wypadek będę wypinał moduł z prockiem:) ale dorzucę jeszcze diodę do tego. Tylko muszę kupić jakieś mocniejsze bo mam tylko 4148
Z przecięciem ścieżek na matrycy i podłączeniem myślę że nie będę miał problemu:), ale może jakieś inne tranzystory mocniejsze np "Tranzystor BD234 PNP 2A 45V TO126"
Na razie prace wstrzymane do 7/01/2015 bo tylko w pracy mam dobrą drukarkę do termo-transferu.
-Ertew, staram się wszytko tworzyć modułami, nie na jednej płytce, więc w trakcie programowania i tak na wszelki wypadek będę wypinał moduł z prockiem:) ale dorzucę jeszcze diodę do tego. Tylko muszę kupić jakieś mocniejsze bo mam tylko 4148
Z przecięciem ścieżek na matrycy i podłączeniem myślę że nie będę miał problemu:), ale może jakieś inne tranzystory mocniejsze np "Tranzystor BD234 PNP 2A 45V TO126"
Na razie prace wstrzymane do 7/01/2015 bo tylko w pracy mam dobrą drukarkę do termo-transferu.
Czyli jednak się da,
Tranzystory NPN BC414 100mA 32 szt.
Tranzystory PNP 2SA1359 3A 12 szt.
Na razie każdy LED wysterowany na 14mA co mi daje możliwość zasilania nawet z USB poprzez programator i nie muszę się martwić o zatrzymanie programu i upalenie linijki. Jak wszystko zrobię poprawnie i linia nie będzie się zapalać na dłużej niż na 1/12 ms to wysteruje ledy na ok 60mA
Sterowanie 74hc595 udało mi się obsłużyć po SPI, więc to usprawni działanie programu, jeszcze muszę 1wire po UART, ale dojdę do tego w swoim czasie
Problem mam teraz z zoptymalizowaniem cyfr,
obsługa wyświetlacza w przerwaniu przyjmuje mi uint32_t na każdą linie
myślę zrobić każdą cyfrę w uint8_t *12linii i w zależności od tego gdzie sie ma pojawić to przesunięcie bitowe i nałożyć na zmienną 32bitową. Znacie jakiś lepszy sposób?
Później dopiero podepnę moduł zegarka i 18b20 itd
[youtube]http://youtu.be/fWrxl-Q5mxY[/youtube]

Tranzystory NPN BC414 100mA 32 szt.
Tranzystory PNP 2SA1359 3A 12 szt.
Na razie każdy LED wysterowany na 14mA co mi daje możliwość zasilania nawet z USB poprzez programator i nie muszę się martwić o zatrzymanie programu i upalenie linijki. Jak wszystko zrobię poprawnie i linia nie będzie się zapalać na dłużej niż na 1/12 ms to wysteruje ledy na ok 60mA
Sterowanie 74hc595 udało mi się obsłużyć po SPI, więc to usprawni działanie programu, jeszcze muszę 1wire po UART, ale dojdę do tego w swoim czasie
Problem mam teraz z zoptymalizowaniem cyfr,
obsługa wyświetlacza w przerwaniu przyjmuje mi uint32_t na każdą linie
myślę zrobić każdą cyfrę w uint8_t *12linii i w zależności od tego gdzie sie ma pojawić to przesunięcie bitowe i nałożyć na zmienną 32bitową. Znacie jakiś lepszy sposób?
Później dopiero podepnę moduł zegarka i 18b20 itd
[youtube]http://youtu.be/fWrxl-Q5mxY[/youtube]
To teraz musisz zrobić na tym PacMana co będzie zjadał godzinę.
Mając Megę32 masz dosyć RAMu aby zrobić sobie bufor wyświetlacza, na którym operujesz jak na tablicy. Zresztą tego RAMu nie potrzebujesz nie wiadomo ile bo tylko 4*12 czyli 48Bajtów.
teraz wszystko rozbija sie organizację tej tablicy najlepiej tak aby były w niej po koleji wiersze, wtedy nie ma problemu w procedurze odczytu obsługującej wyświetlanie.
Trochę komplikuje się procedura kopiowania z tablicy znaków do bufora ale też niewiele, trzeba tylko licznik Celu zwiększać co 3.
Cała obsługa to metoda kopiuj=>wklej z Tablicy znaków do Bufora wyświetlacza.
Mając Megę32 masz dosyć RAMu aby zrobić sobie bufor wyświetlacza, na którym operujesz jak na tablicy. Zresztą tego RAMu nie potrzebujesz nie wiadomo ile bo tylko 4*12 czyli 48Bajtów.
teraz wszystko rozbija sie organizację tej tablicy najlepiej tak aby były w niej po koleji wiersze, wtedy nie ma problemu w procedurze odczytu obsługującej wyświetlanie.
Trochę komplikuje się procedura kopiowania z tablicy znaków do bufora ale też niewiele, trzeba tylko licznik Celu zwiększać co 3.
Cała obsługa to metoda kopiuj=>wklej z Tablicy znaków do Bufora wyświetlacza.
jak pokolei wiersze? mam zmienne
linia1=
linia2=
.
linia12=
wszystkie 32 bitowe
nie wiem jak się robi biblioteki zebym w osobnym pliku miał wszystkie cyferki
myślę zrobić dane w zmiennych 8bitowych każda na linie
potem case z cyfrą i procedura nałożenia na linie w odpowiednim miejscu. myślę że ze wszystkim sobie poradzę, tylko potrzebuje do tego czasu.
Nie deklarowałem zmiennych w pamięci RAM, w programie są zapisane do ramu domyślnie czy do innej pamięci?
I nie wiem o co Ci chodzi z licznikiem celu, czemu o 3?
Pokazał bym Ci program, ale on nawet dla mnie nie jest zrozumiały, a sam go pisałem:D Teraz dużo czasu muszę poświęcić na naukę poprawnego pisania programów:)
//Jak powiedziałem z pół roku temu koledze co chce zrobić to mnie wyśmiał:D
//BONUS

linia1=
linia2=
.
linia12=
wszystkie 32 bitowe
nie wiem jak się robi biblioteki zebym w osobnym pliku miał wszystkie cyferki
myślę zrobić dane w zmiennych 8bitowych każda na linie
potem case z cyfrą i procedura nałożenia na linie w odpowiednim miejscu. myślę że ze wszystkim sobie poradzę, tylko potrzebuje do tego czasu.
Nie deklarowałem zmiennych w pamięci RAM, w programie są zapisane do ramu domyślnie czy do innej pamięci?
I nie wiem o co Ci chodzi z licznikiem celu, czemu o 3?
Pokazał bym Ci program, ale on nawet dla mnie nie jest zrozumiały, a sam go pisałem:D Teraz dużo czasu muszę poświęcić na naukę poprawnego pisania programów:)
//Jak powiedziałem z pół roku temu koledze co chce zrobić to mnie wyśmiał:D
//BONUS
No ameryki nie odkryłem, ale co najmniej Sycylię:D
https://www.youtube.com/watch?v=5UFHGraImn0
Już liczę poprawnie czas:)
https://www.youtube.com/watch?v=5UFHGraImn0
Już liczę poprawnie czas:)
TU chodzi o tzw. organizację pamięci, a dokładnie o to żeby dane umieszczać w buforze wyświetlacza, czyli takiej tablicy w RAM która odwzorowuje wyświetlacz,od razu tam gdzie mają być na wyświetlaczu.komax3 pisze:jak pokolei wiersze? mam zmienne
linia1=
linia2=
.
linia12=
wszystkie 32 bitowe
nie wiem jak się robi biblioteki zebym w osobnym pliku miał wszystkie cyferki
myślę zrobić dane w zmiennych 8bitowych każda na linie
Jak będę miał czas to ci narysuje diagram, jak to działa, z przykładem kodu.
kayron, jak będziesz miał czas to będę Ci niezmiernie wdzięczny. Teoretyczne to co mam to działa, ale po parunastu godzinach pracy coś się mi zawiesza, przypuszczam że stos się robi zbyt duży przez moje nieumiejętne szastanie pamięcią:) Watchdog pomaga, ale to nie rozwiązanie, więc muszę przerobić całą obsługę:(
A, jako że jutro chcę zrobić ostatni PCB mojego projektu prosze o ogólne sprawdzenie
1. Czy dla modułu BT HC-05 wystarczy dzielnik napięcia na linii TXD? (ma być 3.3V)
2. Do wysterowania tranzystorów 2S A1359 może być 1.5k rezystor z uC?
3. Na zasilanie może być 470uF?
//CON1 niewykorzystane
//wszystko co na czerwono to zwykłe kabelki, tak to sobie wymyśliłem.
//Zasilanie z impulsówki 2A 5V
PS. Na stykówce już działa. Liczy czas, mierzy temp, łączy przez BT z terminalem:)
A, jako że jutro chcę zrobić ostatni PCB mojego projektu prosze o ogólne sprawdzenie
1. Czy dla modułu BT HC-05 wystarczy dzielnik napięcia na linii TXD? (ma być 3.3V)
2. Do wysterowania tranzystorów 2S A1359 może być 1.5k rezystor z uC?
3. Na zasilanie może być 470uF?
//CON1 niewykorzystane
//wszystko co na czerwono to zwykłe kabelki, tak to sobie wymyśliłem.
//Zasilanie z impulsówki 2A 5V
PS. Na stykówce już działa. Liczy czas, mierzy temp, łączy przez BT z terminalem:)
Widzę że masz Buzera. Nie lepiej zmodyfikować układ wykorzystać jeden timer i PWM, i i umieć odtwarzać sobie WAVY (pliki dzwiękowe audio). Tu masz temat i filmik http://mirekk36.blogspot.com/2011/11/av ... layer.html
Na początek nie musi gadać, ale można np. odtwarzać dzwonki polifoniczne jako budzik, na Timerze łatwo to zrobić.komax3 pisze:No mam buzera z generatorem, myślę że wav-player to będzie kolejny projekt, mam jeszcze sporo procków:) Jednakże gadający zegar to już dla mnie za dużo, tym bardziej że nie moge sobie poradzić z porządnym oprogramowaniem tego co mam:(
- joon
- Użytkownik
- Posty: 2076
- Rejestracja: 30 cze 2007, 22:56
- Lokalizacja: Kraków, Przemyśl, Warszawa
- Kontakt:
zerknij na ten projekt: http://elm-chan.org/works/sd8p/report.html jak i na całą stronę, naprawdę warto.komax3 pisze:No mam buzera z generatorem, myślę że wav-player to będzie kolejny projekt, mam jeszcze sporo procków:) Jednakże gadający zegar to już dla mnie za dużo, tym bardziej że nie moge sobie poradzić z porządnym oprogramowaniem tego co mam:(