(3 głosujących) Ten prosty układzik ma za zadanie generować sygnały dźwiękowe w określonych ustawianych niekoniecznie regularnych odstępach czasu (przedziały te wyznaczają czasy biegania w szybkim lub wolnym tempie). Programowanie timerka (wprowadzanie przedziałów czasu między kolejnymi sygnałemi dźwiękowymi) odbywa się za pomocą portu RS232, najlepiej do tego wykorzystać RS232 Tester. Urządznie mimo iż zbudowane jest z klasycznych elementów przewlekanych jest stosunkowo niewielkie i lekkie. Z łatwością zmieści się w kieszeni podczas biegania. Zasilane jest z baterii typu CR2032 a podczas programowania z portu USB.
Działanie:Schemat ideowy Timerka przedstawiony jest na rysunku poniżej: Sercem układu jest mikrokontroler U1 (ATTINY2313) wraz z rezonatorem kwarcowym X1 (4MHz) i dwoma kondensatorami C1 (22pF) i C2 (22pF). Tranzystory T1 (BC557B) i T2 (BC547B) wraz z rezystorami R1 - R3 (10k) stanowią interfejs RS232 potrzebny do komunikacji z komputerem PC. Złącze czteropinowe RS232 służy do podłączenia linii TxD i RxD portu COM oraz zasilania 5V potrzebnego podczas programowania pamięci EEPROM mikrokontrolera. Przełącznik W1 podczas programownia umożliwia dołączenie zasilania 5V do procesora i odłączenie baterii. Natomiast w czasie normalnej pracy służy jako wyłącznik zasilania. Kondensator C3 (22uF) filtruje napięcie zasilające układ. Brzęczyk z generatorem B1 sygnalizuje upłynięcie kolejnego odcinka czasu, jest on sterowany za pomocą tranzystora T3 (BC557) i rezystorów R4 (100R) i R5 (3,3k). Budowa:Timerek można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym można ściągnąć tutaj. Montaż układu jest bardzo prosty i nie wymaga większego komentarza. Pod mikrokontroler U1 bezwzględnie należy zastosować podstawkę, gdyż na płytce nie ma złącza programującego (z braku miejsca). W przeciwnym wypadku jego zaprogramowanie może się stać trudne lub wręcz niemożliwe. Płytka została tak zaprojektowana aby pasowała do obudowy KM-57, Należy w niej tylko wywiercić dziurkę nad brzęczykiem B1 i wyciąć miejsce na wyłącznik i złącze. Pomocą w lutowaniu płytki może okazać się dostępny tutaj schemat montażowy. Płytka drukowana umieszczona na stronie jest ulepszona w stosunku do tej widocznej na zdjęciach. Wykaz Elementów:1x Listwa Goldpin Kątowy 1x4 (Goldpin) 1x Bateria 3V(CR2032) + Podstawka 1x Przełącznik 2-pozycyjny 1x 3,3k 3x 10k 1x 100R 2x 22pF 1x 22uF/6V Elektrolit 1x Rezonator Kwarcowy 4Mhz 1x BC547B 2x BC557B 1x Mikrokontroler ATTINY2313 + Podstawka 1x Buzzer z Generatorem 3V Programowanie:Mikrokontroler do sterownika został zaprogramowany w wersji demo programu BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: '************* Konfiguracja uC ***************** '*********************************************** $regfile = "attiny2313.dat" $crystal = 4000000 $baud = 9600 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Buzzer Alias Portb.0 Config Timer0 = Timer , Prescale = 64 Enable Timer0 : On Timer0 Prztimer0 Stop Timer0 '********** Konfiguracja uC Koniec ************ '****************** Zmienne ******************* '*********************************************** Dim Rs_wartosc As Byte Dim N As Byte , Ilosc As Byte , Adres As Byte Dim Dzielnik As Word Dim Sygnal As Bit Dim Licznik As Byte , Czas As Byte '************* Zmienne Koniec **************** '************** Petla glowna ****************** '*********************************************** Printbin 254 Waitms 100 Readeeprom Ilosc , 5 If Ilosc > 0 And Ilosc <= 100 Then 'jezeli w komorce 5 zapisana jest ilosc Buzzer = 0 Waitms 100 Buzzer = 1 N = 1 Licznik = 0 Dzielnik = 0 Readeeprom Czas , 11 Enable Interrupts Timer0 = 6 Start Timer0 Else Buzzer = 0 Waitms 250 Waitms 250 Waitms 250 Waitms 250 Buzzer = 1 End If Do Rs_wartosc = Inkey() If Rs_wartosc = 255 Then Gosub Programowanie If Sygnal = 1 Then Buzzer = 0 Waitms 100 Buzzer = 1 Waitms 100 Buzzer = 0 Waitms 100 Buzzer = 1 Sygnal = 0 End If Loop End '************ Petla glowna Koniec ************** '************ Przerwanie timer 0 *************** '*********************************************** Prztimer0: 'co 4ms Timer0 = 6 Incr Dzielnik If Dzielnik = 2500 Then 'co 10s Dzielnik = 0 Incr Licznik If Licznik >= Czas Then Licznik = 0 Sygnal = 1 Incr N 'kolejna wartosc przerwy If N > Ilosc Then N = 1 Adres = N + 10 Readeeprom Czas , Adres End If End If Return '******** Przerwanie timer 0 Koniec ************ Programowanie: Printbin 253 Disable Interrupts Stop Timer0 Rs_wartosc = Inkey() 'czyszczenie Rs_wartosc = Inkey() 'czyszczenie Inputbin Ilosc Writeeeprom Ilosc , 5 For N = 1 To Ilosc Inputbin Rs_wartosc Adres = N + 10 Writeeeprom Rs_wartosc , Adres Printbin Rs_wartosc Next N Waitms 250 Printbin 252 Return Obsługa i Komunikacja: Na początku należy w programie RS232 Tester ustawić następujące parametry transmisji: Szybkość: 9600 Po podłączeniu Timerka do portu COM i zasilania do USB przełączamy wyłącznik do pozycji w której zasilanie podłączone jest do usb(patrz schemat). Klikamy "Otwórz Port" i wysyłamy liczbę 255 do urządzenia. Po krótkiej chwili Timerek powinien wysłać liczbę 253, co jest informacją że pracuje w trybie programowania. Następnym krokiem jest wysłanie liczby (1-100) będącej ilością przedziałów czasu jekie będą odliczane w jednym okresie pracy Timerka. Kolejnymi wartości jakie musimy wysłać są długościami odcinków czasu (wartość *10s), ich ilość zależy od wcześniej wysłanej liczby przedziałów. Na końcu Timerek wyśle do programu liczbę 252 co sygnalizuje że wszystko jest ok. Zdjęcia Projektu:
|
|||||||||||||||||||||
Pytanie
Witam. Jak mam przekształcić program aby timer piszczał przez 15sekund a następnie była przerwa 60sekund??
Re: Timerek
Trzeba zostawić w programie tylko obsługę timera, wydłużyć podział na zmiennej Dzielnik do 15 sekund. Następnie liczyc do 5 i jak będzie 0 to ustaw port a jak 1-4 to zgaś port, jak dojdzie do 5 to niech się ustawi znowu 0
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Timerek
Czy mógłbyś trochę badziej mi to wytłumaczyć. Programuję dopiero od miesięca i jeszcze nie bardzo wszystko rozumiem a chciałbym mieć taki timerek jeszcze przed zimą.
Re: timerek
Spróbuj na początek tak:
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
timerek
Niestety po wgraniu tego programu do uprocesora timerek nie działa. Program jest dla mnie zrozumiały ale nie mam pojęcia dlaczego timerek nie chodzi.
Re: timerek
Zaraz po start timer0 dodaj:
Enable Interrupts
Chyba sobie zapomniałem, reszta wygląda wporządku
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
timerek
Działa dokładnie tak jak chciałem tylko teraz mam jeszcze jeden problem. Mam 2 uprocesory attiny2313. Jeden mam na płycie testowej a drugi kupiłem niedawno w sklepie. Programuje oba i ten który kupiłem działa tek że po 60s buzzer zaczyna piszczeć i nie przestaje zaś ten z płytki testowej działa poprawnie. Czym to może być spowodowane??
Złymi fusami, uszkodzonym
Złymi fusami, uszkodzonym procesorem.
Miałem ustawiony wewnętrzny
Miałem ustawiony wewnętrzny oscylator i dlatego układ źle pracował. Dzięki za pomoc.
Witam, Może mi ktoś
Witam,
Może mi ktoś powiedzieć czemu przerwanie jest co 4 ms i co daje Timer0=6.
Pozdrawiam
Timer
Do Timera0 jest wpisana 6 ponieważ skraca to cykl jego zliczania (w tym wypadku 256-6=250). Co 4ms program wchodzi do przerwania od Timera0 (Prztimer0).
Czy dobrze
Czy dobrze rozumiem.
Częstotliwość zegara dzielimy przez prescale (4000000 / 64 = 62500 Hz)
Następnie tą wartość dzielimy przez wielkość przepełnienia licznika (62500 / 250 = 250 Hz)
Zamiana częstotliwości na czas (1 / 250 = 0.004 s)
Czy timer1 też jest 8 bitowy czy zawsze jest 16 bitowy.
Czy zawsze trzeba używać polecenia Start TimerX
Timer
Polecenia Start TimerX musimy używać zawsze. Timer1 zawsze jest 16bitowy. Oblicza się to dokładnie tak jak podałeś.
Czy wszędzie trzeba wcisnąć
Czy wszędzie trzeba wcisnąć uC? i ten interfejs... Programowanie po RS232...
eh
Schemat - cos tu nie gra...
Witam.
Zaczynam zabawe z uC i traktuje Twoja strona jako baza do pierwszych projektow.
Schemat zawiera trzy tranzystory... wg opisu BC547 i dwie sztuki BC557.
Dziwnym trafem dwa 557 wg schematu posiadaja rozne polaryzacje pnp / npn.
Dla roztropnej osoby to nie problem, jednak dla kogos kto dopiero raczkuje w temecie moze to ztanowic zagadke...
To tylko tak informacyjnie.
Dobra robota Panie Mirku!
Pozdrawiam
Timerek
Masz rację tranzystor T3 ma zły symbol.... to tak jak się na szybko kopiuje symbol.. Ma tam być PNP zgodnie z podpisem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.