Kuchenny Timer


8.28571
Ocena: None Średnia: 8.3 (7 głosujących)

Urządzenie to jak sama nazwa wskazuje jest timerem kuchennym. Ma za zadanie odliczać ustalone przedziały czasu podczas przygotowywania różnorodnych potraw. Przyda się każdemu oddanemu nauce studentowi i uchroni jego obiad przed spaleniem lub chociaż kuchnię przed nadmierną ilością dymu. Timer posiada pięcioprzyciskową klawiaturę na której w prosty sposób można ustawić czas od 1 minuty do 99 godzin!. Odliczanie czasu rozpoczyna się automatycznie gdy skończymy ustawiać rządany czas (po 3 sekundach). Urządzenie zbudowane jest w oparciu o mikrokontroler ATMega8. Głośny Buzzer sprawi że użytkownik napewno usłyszy alarm :)

Działanie:


Schemat ideowy Timera przedstawiony jest na rysunku poniżej:

Sercem urządzenia jest mikrokontroler U1 (ATMega8) wraz z rezonatorem kwarcowym X1 (16MHz) i dwoma kondensatorami C1 (22pF) i C2 (22pF). Stabilizator U2 (7805) oraz kondensatory C3 (100uF) i C4 (47uF) dostarczają napięcia na poziomie 5V wymaganego do poprawnej pracy mikrokontrolera i współpracujących elementów. Do złącza Zas podpinamy napięcie stałe o wartości ok 7-12V. Buzzer B1 oraz anody wyświetlacza W1 sterowane są za pomocą tranzystorów T1 - T5 (BC556) i rezystorów R1 - R8 (3,3k) oraz R17 (3,3k) i R18 (3,3k). Prąd segmentów wyświetlacza ograniczają rezystory R9 - R16 (330R). Złącze Prog (goldpin) i pojedynczy pin R służą do podłączenia programatora (kabla programującego). Klawiaturę timera podłączamy do złącza Sw (Goldpin). Klawiaturę stanowi 5 przycisków chwilowych podłączonych do masy i pinów B.0...B.4, co odpowiada przyciskom w kolejności: 1,5,10,20,CL.

Budowa:


Timer można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż należy rozpocząć od wlutowania dwóch zworek. Następnie montujemy wszystkie rezystory i pozostałe elementy w kolejności od najmniejszych do największych. Rezonator kwarcowy X1 powinien być w wersji "niskiej" gdyż w przeciwnym wypadku nie zmieści się pod wyświetlaczem. Pod mikrokontroler U1 dobrze jest zastosować podstawkę DIP28 a pod wyświetlacz podstawkę DIP14 przeciętą na dwie części. Buzzer B1 może być wlutowany w płytkę, tak jak to jest przedstawione na zdjęciach, jednak gdyby okazało się później że po zamknięciu w obudowie jest zbyt cichy (nawet pomimo dziury wywierconej nad nim w obudowie), można przykleić go do boku obudowy (tak jak widać na ostatniej fotografii), łącząc przewodami z płytką. Klawiaturę składającą się z 5 przycisków uSwitch 12x12mm przyklejamy bezpośrednio do przodu obudowy, tak aby były równo z jej powierzchnią. Do zasilania urządzenia dobrze jest zastosować ładowarkę mini z telefonu, ze względu na mały ciężar i wymiary. Pomocą przy budowie może okazać się schemat montażowy dostępny tutaj

Wykaz Elementów:


1x Listwa Goldpin 1x2 (Zas)
1x Listwa Goldpin 1x4 (Goldpin)
1x Listwa Goldpin 1x6 (Goldpin)
5x uSwitch 12x12mm

10x 3,3k
8x 330R
2x 22pF

1x 47uF Elektrolit
1x 100uF Elektrolit

1x Rezonator Kwarcowy 16MHz
5x BC556
1x Stabilizator 7805
1x Mikrokontroler ATMEGA8 + Podstawka
1x Buzzer z Generatorem 5V
1x Wyświetlacz LED poczwórny, wspólna anoda
1x Ładowarka mini do Telefonu

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 = "m8def.dat"
$crystal = 16000000
Config Portb = &B00000000 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
Buzzer Alias Portc.0
'********** Konfiguracja uC Koniec  ************
'******************  Zmienne *******************
'***********************************************
Dim Flaga_4ms As Bit
Dim Mig As Bit
Dim Dwukropek As Bit
Dim Odliczanie As Bit
Dim Wyswietlanie As Bit
Dim Alarm As Bit
Dim Ktory_w As Byte
Dim Wartosc(2) As Byte                                      'godziny minuty : minuty sekundy
Dim W(4) As Byte                                            '4 cyfry wyswietlane po przeliczeniu z powyzszych
Dim Co4ms As Byte , Co1s As Byte
Dim G As Byte , M As Byte , S As Byte
Dim Buz_sygnal As Byte
Dim Sw_port As Byte , Stan_portu As Byte , Licznik_sw As Byte
Dim Autostart As Word
Dim Autooff As Word
Dim Licznik_mig As Byte
'*************  Zmienne Koniec  ****************
'**************  Petla glowna ******************
'***********************************************
Do
If Flaga_4ms = 1 Then
  Flaga_4ms = 0
 
  If Buz_sygnal > 0 Then
    Buzzer = 0
    Decr Buz_sygnal
  Else
    Buzzer = 1
  End If
 
  If Odliczanie = 0 Then
    If Autostart > 0 Then                                   'uruchomienie autostart=750
      Decr Autostart
      If Autostart = 1 Then
        Buz_sygnal = 40
        Odliczanie = 1
        Timer0 = 6
        Co4ms = 0
        S = 0
      End If
    End If
  Else
    Autostart = 0
  End If
 
  If Wyswietlanie = 1 Then
    Gosub Wyswietl
    If Odliczanie = 0 And Alarm = 0 Then
      Incr Autooff
      If Autooff = 2500 Then
        Wyswietlanie = 0
      End If
    Else
      Autooff = 0
    End If
  Else
    Portd = 255
    Portc = 255
  End If
 
  Gosub Przyciski
End If
Loop
End
'************ Petla glowna Koniec **************
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:                                                  'co 4ms
Timer0 = 6
Set Flaga_4ms
Incr Co4ms
If Co4ms = 250 Then
  Co4ms = 0
  If Odliczanie = 1 Then
    Dwukropek = Not Dwukropek
    Decr S
    If S = 255 Then
      S = 59
      Decr M
      If M = 255 Then
        M = 59
        Decr G
      End If
    End If
 
    If G = 0 And M = 0 And S = 0 Then
      Odliczanie = 0
      Alarm = 1
    End If
  Else
    Dwukropek = 0
  End If
End If
Return
'******** Przerwanie timer 0 Koniec ************
Przyciski:
Sw_port = Pinb And &B00011111
 
If Sw_port <> 31 And Stan_portu = Sw_port Then
    Incr Licznik_sw
    If Licznik_sw = 120 Then
      Licznik_sw = 0
      Buz_sygnal = 10
      Autooff = 0
      Wyswietlanie = 1
      Select Case Stan_portu
        Case 30:
         If Alarm = 0 Then
           Incr M
           Autostart = 750
         End If
        Case 29:
         If Alarm = 0 Then
           M = M + 5
           Autostart = 750
         End If
        Case 27:
         If Alarm = 0 Then
           M = M + 10
           Autostart = 750
         End If
        Case 23:
         If Alarm = 0 Then
           M = M + 20
           Autostart = 750
         End If
        Case 15:
         Odliczanie = 0
         Autostart = 0
         S = 0
         M = 0
         G = 0
         Alarm = 0
      End Select
 
      If M > 59 Then
        Incr G
        M = M Mod 60
      End If
 
    End If
  Else
    Stan_portu = Sw_port
    Licznik_sw = 70
  End If
Return
'*************************************************
Wyswietl:
 Incr Ktory_w
  If Ktory_w = 4 Then Ktory_w = 0
 
  If G > 0 Then
    Wartosc(1) = G
    Wartosc(2) = M
  Else
    Wartosc(1) = M
    Wartosc(2) = S
  End If
 
  W(1) = Wartosc(1) / 10
  W(2) = Wartosc(1) Mod 10
  W(3) = Wartosc(2) / 10
  W(4) = Wartosc(2) Mod 10
  If W(1) = 0 Then W(1) = 10
 
  If Alarm = 1 Then
    Incr Licznik_mig
    If Licznik_mig = 50 Then
      Licznik_mig = 0
      Mig = Not Mig
    End If
 
    If Mig = 0 Then
      W(1) = 11
      W(2) = 11
      W(3) = 11
      W(4) = 11
      Dwukropek = 0
      Buzzer = 0
    Else
      W(1) = 10
      W(2) = 10
      W(3) = 10
      W(4) = 10
      Dwukropek = 1
      Buzzer = 1
    End If
  End If
 
  Select Case Ktory_w
  Case 0:
    Set Portc.2
    W(4) = Lookup(w(4) , Tabela)
    Portd = W(4)
    Portd.7 = Dwukropek
    Reset Portc.5
  Case 1:
    Set Portc.5
    W(3) = Lookup(w(3) , Tabela)
    Portd = W(3)
    Portd.7 = Dwukropek
    Reset Portc.4
  Case 2:
    Set Portc.4
    W(2) = Lookup(w(2) , Tabela)
    Portd = W(2)
    Portd.7 = Dwukropek
    Reset Portc.3
  Case 3:
    Set Portc.3
    W(1) = Lookup(w(1) , Tabela)
    Portd = W(1)
    Portd.7 = Dwukropek
    Reset Portc.2
  End Select
 
Return
*************************************************
Tabela:
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 , 191
'znak:    0     1     2     3     4     5     6     7     8     9    pusty  -

Zdjęcia Projektu:

ZałącznikWielkość
Schemat67.59 KB
Płytka15.08 KB
Płytka (odbicie lustrzane)15.08 KB
Płytka (6 na stronie)76.61 KB
Montowanie20.21 KB
Kod Źródłowy5.39 KB
Program po Kompilacji (BIN)1.84 KB
Program po Kompilacji (HEX)5.2 KB
Nadruk na obudowę115.87 KB



Portret użytkownika Mr. Eko

Czyli co, nie ma sensu? A

Czyli co, nie ma sensu?
A jeżeli wykorzystać by coś z serii 8051?
Np. AT89C52 + ew. EEPROM (AT28C64) na bajery typu zegarek

Portret użytkownika mirley

Re: Timer

Timer zrobiłem na M8 bo wydawało mi się to najsensowniejsze. Mikrokontrolerów AT89C52 nigdy nie programowałem i nie mam takiego zamiaru (kiedyś robiłem układy na AT89C2051 ale teraz tylko AVR), już chociażby temu że trzeba dokładać dodatkowe układy w postaci pamięci, a tak wogóle to po co ci eeprom do zegarka bo nie bardzo rozumiem....

tak czy inaczej to jest projekt timera kuchennego, pilnuje on aby mi się kotlet nie spalił :) więc zegarek nie jest tu potrzebny bo układ po skończeniu odliczania wyłacza wyświetlacz i czeka na następne kliknięcie

-

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.

Portret użytkownika gosc

Jaki jest pobór mocy przez

Jaki jest pobór mocy przez układ w czasie pracy? Czy układ powinien działać poprawnie przy rezonatorze 4mhz (zamierzam zasilać go baterią 9v)?

Portret użytkownika mirley

Re: Timer

Nie mierzyłem poboru prądu więc nie znam odpowiedzi... Z rezonatorem 4Mhz bedzie dzialać, w programie zmień częstotliwośc na odpowiednią (w linijce z crystal) i zmień preskaler częstotliwości z 256 na 64 i reszta programu powinna śmigać. Jeśli dasz baterię 9V to daj wyłącznik baterii bo układ u mnie cały czas pracuje i będzie zuzywał prąd podczas czuwania

-

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.

Portret użytkownika gosc

Dziękuje. Chodziło mi o to że

Dziękuje. Chodziło mi o to że gdy wyłączają prąd to minutnik nie działa. Ale wpadłem na pomysł że dam tam akumulatorek (taki do lutu)na podtrzymanie na parę minut.

Portret użytkownika mirley

Re: Timer Kuchenny

Jakoś nie wpadłem na to żeby odmierzać czas jak nie ma prądu.... piekarnik wtedy też mi nie działa :)

-

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.

Portret użytkownika grizz

...albo przez to, ze prąd nam

...albo przez to, ze prąd nam wyłączyli z dwa razy w ciągu 4 lat ;)

Portret użytkownika gosc

U mnie prąd wyłączają na

U mnie prąd wyłączają na chwilę z 1-2 razy w tygodniu. A gotować wtedy można bo mam kuchenkę gazową.

Portret użytkownika mirley

Re: Timer

W takim razie musisz sobie zrobic zasilacz z baterią i połączyć to wszystko za pomocą diod schotkiego albo zwykłych prostowniczych. Napięcie z zasilacza po przejściu przez diodę powinno być ok 5,2-5,4, a z baterii po przejściu przez diodę(diody) powinno być ok 4,8-5,0. Wtedy łączysz to do kupy i jak zasilacz pracuje to napięcie 5,4 V polaryzuje diodę baterii w kierunku zaporowym (odcina baterię) a prąd leci z zasilacza. Jeśli zasilacz się wyłaczy to napięcie spadnie poniżej tego 4,8 z baterii i diody zaczną przewodzić prąd z baterii. Stabilizator wtedy w tym miejscu gdzie jest będzie niepotrzebny. Napięcie ok 5,6V można uzyskać łacząc wyprowadzeniem GND stabilizatora przez diodę prostowniczą do masy. Potem to napięcie po przejściu przez diodę schotkiego da Ci ok 5,4V. Przy baterii trzeba pokombinować z ilością diod, tak aby bateria miała niższe napięcie niz zasilacz w tym punkcie co się diody łączą ze sobą.

-

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.

Portret użytkownika gosc

Dzięki ogromne. Mógłbyś mi

Dzięki ogromne. Mógłbyś mi objaśnić dokładniej jak połączć baterię z zasilaczem. Albo dać schemacik. A i jeszcze jedno czy może być zasilacz 4,5v (przy pomiarze 4,61v)

Portret użytkownika mirley

Re: Timer Zasilanie

Popatrz na rozwiązanie tutaj. Tylko bez tego tranzystora T5. to są te diody o których mówiłem. Zasilacz 4,61 to mało bo jak dasz go przez diodę to spadnie do 4V a to juz jest za mało dla procesora M8 (4,5V - 5,5V). Zasilanie musi być takie jak napisałem.

-

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.

Portret użytkownika KakaoRozpuszczalne

Gdzie można...

Gdzie można kupić taki wyświetlacz?
Szukałem na allegro, tme, avt, piekarz i w pobliskich elektrnikach, ale nigdzide nie ma ich z dwukropkami! Czy mogę zastosować jakiś bez dwukropka?
Jak wtedy trzeba byłoby zmodifikować połączenie wyświetlacza z płytką? Myślałem, żeby pojedyńcza kropka zastępowała dwukropek. Myślałem nad tym wyświetlaczem [url=]http://zefiryn.tme.pl/dok/a06/kw4-361a-c_sa.pdf[/url]

Portret użytkownika mirley

Re: Timer

Poszukaj na allegro pod hasłem "LED 4 CYFRY 0,56", a generalnie dobre wyświetlacze ma użytkownik " ARTRONICpl". Znajdziesz 4 kolory tego wyświetlacza np taki

-

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.

Portret użytkownika KakaoRozpuszczalne

Dzięki

Dzięki za szybką odpowiedź! Nie wiem, jak mogłem tego nie znaleść... tylko ta wysyłka 7.50 :/

Portret użytkownika gosc

Ten sprzedawca ma w ofercie

Ten sprzedawca ma w ofercie jeszcze dużo innych podzespołów kup więcej to się będzie bardziej opłacało.

Portret użytkownika KakaoRozpuszczalne

Właśnie...

Właśnie zamówiłem wyświetlacz, kondensatory smd 22pF i kwarc. A u niego 2 kwarce kosztują 1.40 a w elektroniku jeden 3zł :)

Portret użytkownika gosc

Kupiłem wreszcie zasilacz

Kupiłem wreszcie zasilacz (5v, 2A) I mam dwa problemy:
Przy pomiarze jest 5,9v (atmega8 wytrzymuje maksymalne napięcie 5,5v) myślałem o stabilizatorze 78L05 z kondensatorami (powiedz mi jakimi bo według karty katalogowej to 0,1uF i 0,33uF ale na wyjściu zasilacza jest wyraźna migotanie / czy takie kondensatory wystarczą)i czy stabilizator nie obniży napięcia poniżej 4,5v?
Może lepiej zastosować zwykły 7805 albo diodę zenera?

Dziękuje

Portret użytkownika mirley

Re: Zasilanie

Stabilizator będzie źle pracował z tak małą różnicą napięcia. Dodaj szerogowo diodę prostowniczą w kierunku przewodzenia (np 1N4007), da ona spadek napięcia o około 0,6V i będzie dobrze. Sprawdź sobie miernikiem jakie jest napięcie po przejściu przez diodę. Pamiętaj też że jak obciążysz zasilacz większym prądem to prawdopodobnie jego napięcie spadnie do tych 5V które były deklarowane przez producenta

-

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.

Portret użytkownika gosc

Teraz jest dobrze, Ale czy to

Teraz jest dobrze, Ale czy to migotanie na wyjściu nie zabije atmegi?

Portret użytkownika mirley

Re: Timer kuchenny zasilanie

Jakie migotanie? Przecież mówiłeś że masz zasilacz, rozumiem że prądu stałego. Prąd stały przepływając przez diodę dalej jest stały :) Poprostu dioda robi spadek napięcia w kierunku przewodzenia, typowo 0,6V.

Jeśli natomiast masz transformator (zasilacz prądu przemiennego) na napięcie 5,9V to jasne że wtedy muszisz dać moste prostowniczy, kondensator filtrujący, stabilizator 7805 i za nim drugi kondensator?

Czy mierzyłeś to napięcie na wyjściu zasilacza i na jakim zakresie? AC czy DC?

-

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.

Portret użytkownika gosc

Chodzi o częstotliwość. I czy

Chodzi o częstotliwość. I czy nie trzeba zastosować kondensatora filtrującego?

Portret użytkownika mirley

Re: Zasilanie

Jaka częstotliwość? Opisz mi dokładnie o czym mówisz bo nie rozumiem... pytasz dalej o zasilacz? Jaki wkońcu ten zasilacz kupiłeś, prądu stałego 5v, 2A czy transformator taki masz?

-

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.

Portret użytkownika gosc

jest zasilacz prądu stałego.

jest zasilacz prądu stałego. O tą częstoliwość to chodzi mi o to że jak np diodę podłącze to jest taki efekt jak by nią układ sterował przez pwm.

Portret użytkownika mirley

Re: Zasilanie

Masz zasilacz prądu stałego o napięciu zmierzonym przez ciebie 5,9V, więc wystarczy poprostu zbić troszkę napięcia na wyjściu za pomocą diody. Do wyjścia zasilacza podłącz diodę prostowniczą (anodą do +), katoda diody będzie teraz twoim wyjściem z zasilacza. między masą zasilaca a katodą diody zmierz napięcie, powinno byc o około 0,6V mniejsze niż przed diodą. Chcesz zasilać układ z procesorem,który max ma 5,5V więc innaczej tego w prosty sposób nie zrobisz.

Jeśli przepuścisz napiecie stałe przez diodę to skąd pomysł że zrobią się z tego jakieś impulsy, napięcie dalej pozostaje stałe.

-

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.

Portret użytkownika wojnar

Cześć,podoba mi się Twój

Cześć,
podoba mi się Twój timerek.
Może zdradzisz mi nazwę waświetlacza, którego użyłeś. Bo ja za żadną cenę nie mogę u nas (Czechy) znaleźć takiego z 14-oma wyprowadzieniami a w dodatku z dwukropkiem. Są same tylko z 12-oma a bez dwukropka. A jeśli jest dwukropek, to i tak nie jest wyprowadzony.
A może jeszcze poproszę Cię, w czym projektowałeś płytkę. Jeśli w Eagle, to poprosiłbym Cię, jeśli byś mi nie wysłał pliku *.brd, bo i tak sądzę, że będę musiał płytkę przeprojektować pod inny/e wyświetlacz/e.

Dzięki,

Roman

EDIT:
Patrzę, że w Eagle chyba nie :-(
No to przynajmniej typa wyświetlacza.

Portret użytkownika eshaton

Kwarc


Czy jak posiadam kwarc 8Mhz to w programie zmieniam tylko $crystal = 16000000
na $crystal = 8000000 ????
Czy
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
pozostają bez zmian?

Portret użytkownika mirley

Re: Timer

Co do wyświetlacza to warto go kupić na allegro http://allegro.pl/item937319163_art_nowe_led_4_cyfry_0_56_14mm_green_w_a.html tam tez podany jest dokładny model.

eshaton:
Jeśli zmienisz kwarc to oprócz zmiany w programie w deklaracji, musisz zadbać aby fragment programu w obsłudze przerwania wykonywał sie z taką samą częstotliwością. W tym przypadku pociągnie to za sobą konieczność zmiany preskalera w timerze na 64 oraz dodania nowego dzielnika na zmiennej (przez 2) w obsłudze przerwania aby Flaga_4ms ustawiała się co 4ms

-

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.

Portret użytkownika eshaton

Fuse

Nie zamieściłeś w tym projekcie tabelki z fuse. W innym projekcie (timer fotograficzny) jest tabelka.
pyt1 Mogę zastosować te ustawienia? czyli hfuse c9, lfuse ff.

Mam programator połączony z płytką testową która ma kwarc 8mhz a wolałbym nie przerabiać przewodów.
pyt2 Czy mogę na niej zaprogramować atmege8 i przełożyć do twojego projektu czy może sie zablokować bo ma kwarc 8mhz? Wiem ze do zaprogramowania ten kwarc jest nie ważny tylko się zastanawiam jak sie zaprogramuje to odrazu program się włącza i co jak się włączy na 8mhz?

Portret użytkownika mirley

Re: Timer

Zastosuj ustawienia: http://mirley.firlej.org/files/ART_fuseM8_02.gif

Możesz programować na innej płytce. Kwarc podczas programowania jest o tyle ważny, że po przestawieniu fusebitów bez kwarcu już nie ruszy procesor i weryfikacja nie przejdzie. Wartość częstotliwości może być podczas programowania od 3 do 16MHz i jak uruchomi się na 8Mhz to poprostu pójdzie wolniej. W płytce docelowej daj kwarc 16Mhz bo program jest do takiego dostosowany.

-

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.

Portret użytkownika Michał

Jak?

Jak zrobic tą "Klawiaturę składającą się z 5 prxycisków uSwitch" i gdzie ją podpiąć ?

Portret użytkownika mirley

Re: Klawiatura

Klawiatura jest podłączona do gniazda SW, masz tam 6 pinów, jeden jest masą GND a pozostałe 5 to przyciski. Każdy z przycisków ma być włączony między masą a pinem(2 do 6, 1 to masa) w złączu SW

-

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.

Portret użytkownika Michał

Koszty

Dzięki.
Chce to zbudować wiec mam pytanie Jaki jest koszt budowy? Tak mniej więcej.

Portret użytkownika mirley

Re; timer

Około 25zł.

-

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.

Portret użytkownika esc

Triak

Witaj
Mam pytanie gdzie można dołożyć wyprowadzenie na układ wykonawczy i co trzeba zmienić w kodzie, żeby razem z buzzerem wyłączało triaka, a z początkiem odliczania go włączało.
Pozdrawiam

Portret użytkownika grizz

A to widziałeś?

Portret użytkownika esc

Widziałem ale mi chodzi o

Widziałem ale mi chodzi o układ na wyświetlaczach i na atmega8 dokładnie taki jak ten tylko że z triakiem.
I z takim zakresem ustawiania czasu

Portret użytkownika mirley

Re: timer

Dopisz linijke w miejscu wskazanym poniżej

  ........
   Portd = 255
    Portc = 255
  End If
 
  Portc.1 = not Odliczanie  '<<< ta linia ustawia port C.1 na 0 jak triak ma być włączony a na 1 jak wyłączony
 
  Gosub Przyciski
End If
Loop

Optotriak z rezystorem szeregowym oczywiście ma byc podłączony między +5V a portc.1 mikrokontrolera

-

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.

Portret użytkownika esc

Dzięki jutro sprawdzę jak

Dzięki jutro sprawdzę jak tylko dostanę się do płytki testowej.
No chyba że pojadę ze swoją panią na porodówkę :)
Pozdrawiam

A swoją drogą nie mogę się doczekać tego kursu Bascoma, ze źródeł co nieco się nauczyłem ale to za mało jak widać, jeszcze raz słowa uznania za to co robisz.

Portret użytkownika esc

Dzięki działa jak powinno, a

Dzięki działa jak powinno, a powiedz mi w celach edukacyjnych jakie polecenie trzeba wstawić żeby działało odwrotnie , czyli włączało Portc.1 dopiero gdy odliczy czas

Portret użytkownika mirley

Re: Timer

Odwrócenie stanu wykona się po zamianie polecenia:

Portc.1 = not Odliczanie

na:
Portc.1 = Odliczanie

-

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.

Portret użytkownika esc

Dzięki za szybką odpowiedz,

Dzięki za szybką odpowiedz, już wiem troszkę więcej, może kiedyś tez się nauczę pisać takie programy :)

Portret użytkownika Michał

PILNE

Mam Wielki Problem Wydaje mi sie ze wszystko mam dobrze zrobione a jednak Jest tak jak podepne całą klawiate to na wyswietlaczu jest 00:00. I co 5s robi piiiiii i nic Jak naciskam tez nic. Jak podepne tylko 1 przycisk to jest piiiiiiii co 5s i jak to jest przycisk od 1min no to dolicza 1min ale zamiast odliczac to po kolejnych 5s jest piiiiii i dodaje kolejną minute Ale i tak jak naciskam to nic. Prosze o pomoc. Pozdrawiam.

Portret użytkownika Miki

Najlepiej

Najlepiej jakiś zasilacz 12V/<0.5A, na płytce jest już stabilizator. Minimalne napięcie zasilania układu to 8V, chociaż mi już przy 7,4V. Całość stabilnie pracowała.

Portret użytkownika mirley

Re: Timer

Po pierwsze na klawiaturze jest złącze programujące i programator ma być odpięty podczas normalnej pracy układu. Poza tym najważniejsze jest ustawienie fusebitów aby taktowanie było z zewnetrznego kwarca i o częstotliwości 16MHz

ustawienia: http://mirley.firlej.org/files/ART_fuseM8_02B.gif

Przyciski muszą być normalnie rozwarte. Zwarcie do masy ma nastepować po przyciśnięciu

-

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.

Portret użytkownika Michał

Program

Witam. Mam sprawę Czy ktoś może opisać choć te najważniejsze części programu. Bo musze wiedzieć o co w nim chodzi a nie bardzo wiem bo poprostu go wpisałem. A okazalo się ze musze mieć mniej wiecej wiedze o co w nim chodzi. BARDZO PILNE Proszę o pomoc.

Portret użytkownika mirley

Re: Program

Na samym początku masz konfigurację procesora:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m8def.dat"                 'jaki ukłąd
$crystal = 16000000                    'wybór taktowania
Config Portb = &B00000000 : Portb = &B11111111     'konfiguracja pinów (po config) czy mają pracować jako wejścia 0, czy wyjścia 1, druga liczba (Port=&B.....) to wartość początkowa
Config Portc = &B11111111 : Portc = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
Config Timer0 = Timer , Prescale = 256 'konfiguracja timera z podzielnikiem przez 256, timer zero liczy 256 cykli chyba że w obsłudze jest przypisana wartość
Enable Timer0 : On Timer0 Prztimer0    'jaka procedura się ma wykonać (inaczej mówiąc przerwanie) po doliczeniu do końca licznika (za każdym razem kiedy doliczy)
Enable Interrupts       'właczenie przerwań
Buzzer Alias Portc.0    'nazwanie pinu C.0 jako Buzzer
'********** Konfiguracja uC Koniec  ************

potem znajdziesz deklaracje zmiennych "dim as ". Potem jest główna pętla (między do a loop) i w sumie w niej chodzi cały program co chwile odskakując do innych procedur napisanych niżej. W pętli głownej nie dzieje sie prawie nic przez większość czasu i cały czas sprawdzana jest wartość zmiennej bitowej flaga_4ms. Gdy wartość ta jest 1 to warunek w if zostanie spełniony i wykonane zostaną instrukcje zawarte wewnątrz if, jednoczesnie zmienna (flaga_4ms) zostanie zresetowana i program czeka na kolejne jej ustawienie. Zmienna Wyswietlanie zajmuje się pozwoleniem na prezentację liczb na wyświetlaczu. Po ustawieniu jej wartości na 1 zostanie wykonana obsługa wyświetlania, czyli skok do procedury Wyswietl (gosub Wyswietl), w przeciwnym wypadku wyswietlacz jest wygaszony poprzez ustawienie odpowiednich stanów na pinach. Dalej jest jeszcze skok do obsługi klawiatury.

Opis działania klawiatury jest w dziale kody źródłowe na mojej stronie więc nie będe się rozpisywał na ten temat.

najważniejsza jest obsługa przerwania, czyli procedura która wykonuje się po każdym przepełnieniu licznika timera:

Prztimer0:                                                  'co 4ms bo kwarc 16Mhz/256 w konfiguracji timera i przez 250 licznik timera
Timer0 = 6      'na początku ładujemy wartośc 6 a zatem licznik liczy do 250(od 6 do 255 i następny cykl przywraca licznik na 6 wygenerowanym przerwaniem)
Set Flaga_4ms   ' zmienna ta ustawiana jest co 4ms
Incr Co4ms         
If Co4ms = 250 Then    'podzielnik przez 250 a zatem w ifie wykonują się polecenia co 1s
  Co4ms = 0 
  If Odliczanie = 1 Then
    Dwukropek = Not Dwukropek   'miganie dwukropkiem
    Decr S                      'zmienna sekund
    If S = 255 Then             ' jeżeli zejdzie poniżej zera to zmniejsz minuty a sekundy daj na 59
      S = 59
      Decr M
      If M = 255 Then           'jeśli minuty zejdą do 0 do zmniejsz godziny
        M = 59
        Decr G
      End If
    End If
 
    If G = 0 And M = 0 And S = 0 Then  'jeśli wskazanie 0 to przerwij odliczanie i ustaw zmienną alarm. Sygnał jest generowany potem w procedurze wyświetlania jak zmienna Alarm jest 1 
      Odliczanie = 0
      Alarm = 1
    End If
  Else
    Dwukropek = 0     'jesli nie odlicza to zaświeć dwukropek
  End If
End If
Return

Procedura wyświetlająca wywoływana jest co te 4ms w pętli głównej po ustawieniu flagi. Co każde wejście zmieniany jest wyświetlacz na którym aktualnie ma się świecić cyfra. Cyfry świecą się po kolei, co 4ms świeci jedna cyfra. Procedura sprawdza czy godziny są 0 i jak tak to zapisuje do wyświetlenia M i S a jak G rózne od zera to wyświetla G i M.

Dalej wartość przeliczana jest na 4 zmienne W(1), W(2).... W(4) i do każdej przypisywana jest cyfra jaka ma być na kolejnych wyświetlaczach. Dalej jest obsługa alarmu i wpisywanie specjalnych znaków na wyświetlacz jak jest alarm a na samym końcu wykonywany jest jeden fragment z pętli Case, w zalezności od zmiennej Ktory_w:

Case 0:
    Set Portc.2      'wyłacza poprzedni tranzystor
    W(4) = Lookup(w(4) , Tabela)    'przelicza cyfrę dziesiętna na kod wysw 7-seg za pomocą tabelki na samym dole programu
    Portd = W(4)            'przypisuje wartość na wyświetlacz
    Portd.7 = Dwukropek    'ustawia odpowiedni stan na dwukropku
    Reset Portc.5          'włącza tranzystor aktualnego wyświetlacza

kolejny case za 4ms wyłączy ten wyświetlacz, ustawi cyfrę dla drugiego wyświetlacza i włączy drugi wyświetlacz. I tak samo z kolejnymi a potem od początku

-

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.

Portret użytkownika Johnycompl

Atmega8

Witam. Wczesniej ktos juz pisal ze chcialby zamiast 16Mhz kwarcu dac 4MHz. A czy autor mogl mi pomoc ze zmiana programu na 8MHz, bo nie moge nigdzie w swoim miescie dostac Atmegi8 taktowanej do 16Mhz.
Prosze o pomoc :)

Portret użytkownika mirley

Re: Timer

Wystarczy zmienić:

Config Timer0 = Timer , Prescale = 256

na:

Config Timer0 = Timer , Prescale = 64

i oczywiście linijkę crystal z 16000000 na 4000000

-

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.

Portret użytkownika Mat

Mam ATMEGE 8 - 8PU czy da się

Mam ATMEGE 8 - 8PU czy da się wgrać program, aby działał na wewnętrznym kwarcu?? (nie musi dokładnie odmierzać, ma posłużyć do filmiku szkolnego jako bomba zegarowa) :)
Bo nie chciałbym wgrywać fusebitów na zewnętrzny kwarc 16MHz, bo to posłuży praktycznie tylko jeden dzień, a później mikrokontroler nie przyda się do niczego bo w fusebitach niezmiennie pozostanie wgrany Kwarc zewnętrzny 16MHz.
Mam w innym projekcie po prostu atmege8 z ustawionym wewnętrznym kwarcem, jeśli wyjmę ją wgram fusy na zewnętrzny 16MHz to potem już nie przestawię z powrotem na wewnętrzny.
Mam rację?

Portret użytkownika IMEX2

@ MAT

FuseBity da sie wielokrotnie zmieniać
na kwarc wew i zewn

-

Grzesiek - miasto Ostróda

GG 12372371 dom
tel 502812675 SMS