[ATmega32][C] Zegar na ściane

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 01 sty 2015, 15:57

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/#
Załączniki
Rej_LED.jpg
Rej_LED.jpg (79.45 KiB) Przejrzano 11695 razy

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 01 sty 2015, 19:58

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.

komax3
-
Posty: 14
Rejestracja: 22 gru 2014, 12:00
Lokalizacja: kety

Post autor: komax3 » 03 sty 2015, 18:00

-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.

komax3
-
Posty: 14
Rejestracja: 22 gru 2014, 12:00
Lokalizacja: kety

Post autor: komax3 » 19 sty 2015, 20:00

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]

Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek Obrazek

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 19 sty 2015, 20:16

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.

komax3
-
Posty: 14
Rejestracja: 22 gru 2014, 12:00
Lokalizacja: kety

Post autor: komax3 » 20 sty 2015, 20:02

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
Obrazek

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 20 sty 2015, 21:56

Na ten moment gratuluję. Może ten projekt to nic odkrywczego, ale dla Ciebie to na pewno spory krok na przód i dobra lekcja elektroniki.

Na resztę uwag i zachwytów przyjdzie czas, puki co sam mam za dużo spraw na głowie.

komax3
-
Posty: 14
Rejestracja: 22 gru 2014, 12:00
Lokalizacja: kety

Post autor: komax3 » 04 lut 2015, 22:00

No ameryki nie odkryłem, ale co najmniej Sycylię:D

https://www.youtube.com/watch?v=5UFHGraImn0

Już liczę poprawnie czas:)

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 05 lut 2015, 16:27

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
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.
Jak będę miał czas to ci narysuje diagram, jak to działa, z przykładem kodu.

komax3
-
Posty: 14
Rejestracja: 22 gru 2014, 12:00
Lokalizacja: kety

Post autor: komax3 » 13 lut 2015, 3:23

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
Obrazek Obrazek

PS. Na stykówce już działa. Liczy czas, mierzy temp, łączy przez BT z terminalem:)

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 13 lut 2015, 19:10

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

komax3
-
Posty: 14
Rejestracja: 22 gru 2014, 12:00
Lokalizacja: kety

Post autor: komax3 » 13 lut 2015, 22:44

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:(

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 14 lut 2015, 8:13

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:(
Na początek nie musi gadać, ale można np. odtwarzać dzwonki polifoniczne jako budzik, na Timerze łatwo to zrobić.

Awatar użytkownika
joon
Użytkownik
Posty: 2076
Rejestracja: 30 cze 2007, 22:56
Lokalizacja: Kraków, Przemyśl, Warszawa
Kontakt:

Post autor: joon » 14 lut 2015, 17:34

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:(
zerknij na ten projekt: http://elm-chan.org/works/sd8p/report.html jak i na całą stronę, naprawdę warto.

ODPOWIEDZ