Timer Fotograficzny


5.33333
Ocena: None Średnia: 5.3 (3 głosujących)

Opisywany układ jest timerem fotograficznym a przynajmniej został tak nazwany przez kolegę z forum dla którego został zaprojektowany. Jak sam określił urządzenie to ma wspomóc jego domową ciemnię fotograficzną. Całość zbudowana jest w oparciu o mikrokontroler ATMEGA8 i może być zasilana z ładowarki od telefonu komórkowego. Pięcioprzyciskowa klawiatura i wyświetlacz LCD sprawiają że bardzo łatwo jest ustawić rządany czas pracy (z dokładnością do 0,1s). Dwa wyjścia timera wystawiają sygnały sterujące w postaci aktywnego "0" lub "1" co umożliwia bezpośrednie zastosowanie do włączania lub wyłączania urządzeń na określony czas. Dodatkowo na płytce przewidziano miejsce na buzzer, zapewniający sygnalizację dźwiękową upłyniętego czasu. Płytka urządzenia jest tak zaprojektowana aby umożliwić odcięcie klawiatury od reszty układu i dolutowanie jej na przewodach. Stwarza to wiele wariantów na zamontowanie całości w obudowie. Bez klawiatury płytka ma taki sam wymiar jak standardowy wyświetlacz LCD 16x2, więc nie będzie problemu z potrzebnym miejscem na jej zamontowanie w obudowie.

Działanie:


Schemat ideowy timera przedstawiony jest na rysunku poniżej:

Sercem układu jest mikrokontroler U1 (ATMEGA 8) wraz z rezonatorem kwarcowym X1 (16MHz) i dwoma kondensatorami C1 (22pF) i C2 (22pF). Przyciski S1 - S6 (uSwitch) stanowią klawiaturę timera. Tranzystor T1 (BC556) wraz z rezystorami R1 (3,3k) i R2 (3,3k) sterują pracą buzzera z generatorem B1, ktorego zadaniem jest sygnalizacja dźwiękowa upłyniętego czasu. Złącze prog (Goldpin) pełni funkcję interfejsu programującego, podobnie jak pojedyńcze piny Res i VCC. Złącze OUT dostarcza dwa sygnały sterujące (jeden jest negacją drugiego) dla układu wykonawczego, ktorym może być triak lub przekaźnik. Wyświetlacz LCD W1 (16x2) odpowiada na prezentację odliczanego czasu i statusu działania urządzenia. Potencjometr montażowy P1 (10k) umożliwia regulacje kontrastu wyświetlacza a rezystor R3 (47R) ogranicza prąd jego podświetlania. Za stabilizację napięcia podłączonego do złącza Zas odpowiada układ U2 (7805) wraz z kondensatorami C3 (220uF), C4 (47uF) i C5 (100nF).

Budowa:

Timer można zbudować w oparciu o dostępna tutaj płytkę drukowaną. Rysunek w odbiciu lustrzanym można pobrać tutaj. Montaż należy rozpocząć od wlutowania trzech zworek, a w szczegolności tej znajdującej się pod mikrokontrolerem. W drugiej kolejności należy wlutować wszystkie rezystory. Jeżeli klawiatura nie będzie montowana na płytce, należy ją odciąć na prawo od punktow lutowniczych, ktore w końcowej fazie montażu posłużą do przylutowania kawałka tasiemki od klawiatury. Pod mikrokontroler U1 dobrze jest zastosować podstawkę. Rezonator kwarcowy X1 powinien być w wersji "niskiej" aby wyświetlacz LCD mogł być zamontowany nad całością bez większych problemow. Stabilizator napięcia U2 oraz kondensatory C3 i C4 mają być wlutowane na leżąco z tych samych powodow. Brzęczyk z generatorem B1 pełni funkcję sygnalizacyjną i nie jest wymagany do poprawnej pracy całego urządzenia. Gdy nie jest używany nie należy montować elementow T1, R1 i R2. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj.

Wykaz Elementów:


6x uSwitch 5x5mm
1x Listwa Goldpin 1x2
1x Listwa Goldpin 1x3
1x Listwa Goldpin 1x4 (Prog)

2x 3,3k
1x 47R
1x Potencjometr Montażowy 10k

2x 22pF
1x 100nF
1x 47uF Elektrolit
1x 220uF Elektrolit

1x Rezonator Kwarcowy 16MHz
1x BC556
1x Stabilizator 7805
1x Mikrokontroler ATMEGA8 + Podstawka
1x Buzzer z Generatorem 5V
1x Wyświetlacz LCD 16x2

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 = &B11111111 : Portb = &B11111111
Config Portc = &B11111111 : Portc = &B11111111
Config Portd = &B00000011 : Portd = &B11111111
 
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 31 , 14 , 4
Cls
Cursor Off Noblink
 
Sw_port Alias Pind
Triak Alias Portb.2
Triak2 Alias Portb.1
Buzzer Alias Portd.1
 
Config Timer0 = Timer , Prescale = 256
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim Tryb As Byte , Wyswietl As Byte
Dim Odliczanie As Bit , Poz_ust As Byte
Dim Licz_01s As Word , Licz_01s_u As Word , Dzielnik As Byte
Dim Help As Word
Dim Flaga_4ms As Bit
Dim Sw As Byte , Stan_sw As Byte , Licznik_sw As Byte
'*************  Zmienne Koniec  ****************
'************ Warunki Poczatkowe ***************
'***********************************************
Licz_01s = 600
Licz_01s_u = 600
 
Wyswietl = 1
Poz_ust = 2                                                 'ktora sie ustawia pozycja
'*******  Warunki Poczatkowe Koniec  ***********
Lcd "  Wersja  0.97  "
Lowerline
Lcd " Autor:  Mirley"
Wait 2
Reset Buzzer
Waitms 200
Set Buzzer
'**************  Petla glowna ******************
'***********************************************
Do
  If Flaga_4ms = 1 Then
    Flaga_4ms = 0
    Gosub Wyswietlanie
    Gosub Przyciski
  End If
Loop
End
'************ Petla glowna Koniec **************
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:                                                  'co 4ms
  Timer0 = 5
  Flaga_4ms = 1
  If Odliczanie = 1 Then
    Incr Dzielnik
    If Dzielnik = 25 Then
      Dzielnik = 0
 
      If Licz_01s = 0 Then
        Gosub Zatrzymaj_liczenie
        Reset Buzzer
        Waitms 200
        Set Buzzer
        Waitms 200
        Reset Buzzer
        Waitms 200
        Set Buzzer
        Waitms 200
        Reset Buzzer
        Waitms 200
        Set Buzzer
      Else
        Decr Licz_01s
        Wyswietl = 2
      End If
 
    End If
  Else
    Dzielnik = 0
  End If
Return
'******** Przerwanie timer 0 Koniec ************
 
'**************    Wyswietlannie    ***********
Wyswietlanie:
 If Wyswietl <> 0 Then
  Select Case Wyswietl
    Case 1:
      Cls
      Lcd "            Stop"
      Locate 1 , Poz_ust
      Lcd Chr(0)
    Case 2:
      If Tryb <> 2 Then
        Cls
        Lcd " Odliczanie ..."
      End If
    Case 3:
      Cls
      Lcd "   Podglad"
 
  End Select
 
  Help = Licz_01s Mod 10                                    'dzies sek
  Locate 2 , 7
  Lcd "," ; Help ; "  mm:ss"
  Help = Licz_01s / 10
  Help = Help Mod 60                                        'sekundy
  Locate 2 , 4
  Lcd ":"
  If Help < 10 Then Lcd "0"
  Lcd Help
  Help = Licz_01s / 600                                     'minuty
  Locate 2 , 2
  If Help < 10 Then Lcd "0"
  Lcd Help
 
  Tryb = Wyswietl
  Wyswietl = 0
 End If
Return
'************** Wyswietlannie Koniec ***********
 
'**************    Przyciski  ***********
Przyciski:
Sw = Sw_port And &B11111100
 
If Sw <> &B11111100 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 100 Then
      Licznik_sw = 0
      Select Case Stan_sw
        '*********************
        Case &B01111100:                                    'up
          If Tryb = 1 Then
            Select Case Poz_ust
              Case 2:
                If Licz_01s_u <= 54009 Then Licz_01s_u = Licz_01s_u + 6000
              Case 3:
                If Licz_01s_u <= 59409 Then Licz_01s_u = Licz_01s_u + 600
              Case 5:
                If Licz_01s_u <= 59909 Then Licz_01s_u = Licz_01s_u + 100
              Case 6:
                If Licz_01s_u <= 59999 Then Licz_01s_u = Licz_01s_u + 10
              Case 8:
                If Licz_01s_u <= 60008 Then Licz_01s_u = Licz_01s_u + 1
            End Select
            Licz_01s = Licz_01s_u
            Wyswietl = 1
          Else
            Gosub Zatrzymaj_liczenie
          End If
        '*********************
        Case &B10111100:                                    'right
          If Tryb = 1 Then
            Incr Poz_ust
            If Poz_ust = 9 Then Poz_ust = 2
            If Poz_ust = 4 Then Poz_ust = 5
            If Poz_ust = 7 Then Poz_ust = 8
            Wyswietl = 1
          Else
            Gosub Zatrzymaj_liczenie
          End If
        '*********************
        Case &B11101100:                                    'down
        If Tryb = 1 Then
            Select Case Poz_ust
              Case 2:
                If Licz_01s_u > 6000 Then Licz_01s_u = Licz_01s_u - 6000
              Case 3:
                If Licz_01s_u > 600 Then Licz_01s_u = Licz_01s_u - 600
              Case 5:
                If Licz_01s_u > 100 Then Licz_01s_u = Licz_01s_u - 100
              Case 6:
                If Licz_01s_u > 10 Then Licz_01s_u = Licz_01s_u - 10
              Case 8:
                If Licz_01s_u > 1 Then Licz_01s_u = Licz_01s_u - 1
            End Select
            Licz_01s = Licz_01s_u
            Wyswietl = 1
          Else
            Gosub Zatrzymaj_liczenie
          End If
 
        '*********************
        Case &B11011100:                                    'left
         If Tryb = 1 Then
            Decr Poz_ust
            If Poz_ust = 1 Then Poz_ust = 8
            If Poz_ust = 4 Then Poz_ust = 3
            If Poz_ust = 7 Then Poz_ust = 6
            Wyswietl = 1
          Else
            Gosub Zatrzymaj_liczenie
          End If
        '*********************
        Case &B11111000:                                    'start stop
          If Odliczanie = 0 Then
            Reset Triak
            Set Triak2
            Licz_01s = Licz_01s_u
            Odliczanie = 1
            Wyswietl = 2
          Else
            Gosub Zatrzymaj_liczenie
          End If
        '*********************
        Case &B11110100:                                    'podglad
          If Tryb = 1 Then
            Reset Triak
            Set Triak2
            Wyswietl = 3
          Else
            Gosub Zatrzymaj_liczenie
          End If
 
      End Select
    End If
  Else
    Stan_sw = Sw
    Licznik_sw = 70
  End If
Return
'************** Przyciski Koniec ***********
'**************    Stop  ***********
Zatrzymaj_liczenie:
  Set Triak
  Reset Triak2
  Licz_01s = Licz_01s_u
  Odliczanie = 0
  Wyswietl = 1
Return
'************** stop Koniec ***********

Poniżej przedstawione są ustawienia bitów konfiguracyjnych mikrokontrolera ATMEGA8 (zaznaczone pole odpowiada bitowi zaprogramowanemu - stan "0"):

Zdjęcia Projektu:

ZałącznikWielkość
Schemat83.98 KB
Płytka15.18 KB
Płytka (odbicie lustrzane)15.26 KB
Płytka (3 na stronie)40.34 KB
Montowanie20.63 KB
Kod Źródłowy6.84 KB
Program po kompilacji (BIN)2.6 KB
Program po kompilacji (HEX)7.34 KB
Kod Źródłowy (2009.04.25, dodano zapis do EEPROM)7.18 KB
Program po kompilacji (BIN) (2009.04.25)2.8 KB
Program po kompilacji (HEX) (2009.04.25)7.9 KB
Kod Źródłowy (2013.07.25, czas do 12h co 1s) nie kompilowany i nie testowany7.25 KB



Portret użytkownika mirley

Re: Timer

Ten projekt jest dobry do przeróbek ale menu widział bym inaczej. Obecnie sterujesz strzałkami w lewo i prawo ustawiając czas. Wystarczy dodać drugie tyle pozycji do ustawień i jak pojedzie się strzałką w prawo to wyjeżdżając za ekran wskoczysz do ustawień czasu 2. Wtedy nie trzeba grzebać w menu. Trzeba dodać drugą zmienną licz_01s_u2, która się będzie ustawiała w takim momencie. Zapis do eeprom można zrobić w chwili startu a odczyt na początku programu.

-

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 kociakkociak

timer

Chodzi mi tylko o to by po wlaczeniu pojawialy sie cztery zera i abym mogl ustawic odliczanie wlaczonego urzadzenia (minuty i sekundy) i tyle bez innych zbednych rzeczy.

Portret użytkownika Hotbird

230V

Witam, chciałbym by mi ten timer wyłączał urządzenie na 230V, i zastanawiałem się co musiałbym dodać na wyjście, czy układ wykonawczy na triaku czy tez wystarczy przekaźnik ?

Portret użytkownika mirley

Re: Timer

Albo przekaźnik z tranzystorem, diodą i rezystorem, albo ukłąd wykonawczy z triakiem, czyli rezystor ograniczający prąd led optotriaka, rezystor ograniczający prąd bramki i triak

-

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 sq9ked

hej

Hej Mirley pomóż :)
Zaprogramowałem Atmega8 , niby wszystko działa ale timer odlicza 10 razy wolniej :(
Zamiast 0,1sekundy są sekundy. Gdzie zrobiłem błąd ? Sprawdziłem już i wymieniłem kwarce, kondensatorki i dalej to samo. Nawet wbijam program z pliku hex.

Portret użytkownika mirley

Re: Timer

Przestawiłeś fusebity wprocku według tabelki w opisie? Pewnie nie przestawiłeś i liczy 16x za wolno bo działa na 1MHz wewnętrznym oscylatorze

-

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 sq9ked

Przestawiłem i dalej nie

Przestawiłem i dalej nie działało. Okazał się uszkodzony procek. Nie dało zmienić się żadnego z fusebitów. Dałem drugi i odpaliło od pierwszego włączenia. Dzięki.

Portret użytkownika kamil192

Zasilanie

Witam!
Wykonałem ten projekt, ale jedyne co ujrzałem po podłączeniu zasilania to podświetlanie wyświetlacza i nic poza tym. I tu moje pytanie: czy zasilanie 5V 350mA jest wystarczające dla tego układu? Jeśli tak to chyba uszkodziłem procesor (pierwszy raz w życiu nie dałem podstawki :/ ).
Zapomniałbym - na środkowym pinie OUT jest cały czas napięcie zasilania, a na drugim ~0V.
Pozdrawiam

Portret użytkownika sq9ked

U mnie zadziałał z zasilacza

U mnie zadziałał z zasilacza 100mA. Pod procek zawsze powinno się dawać podstawkę :)

Portret użytkownika mirley

Re: Timer

A programator go wykrywa? Może to kwestia tylko złego kontrastu na LCD?

-

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 Antonov

230v

Jeżeli chciałby aby to urządzenie sterowało lampami uv (230v), czy mogą one być podłączone przez ten http://mirley.firlej.org/wykonawczy_triak układ?

Portret użytkownika mirley

Triak

Tak mogą być podłączone przez taki właśnie układ wykonawczy, dodaj jeszcze szeregowy rezystor do sterowania optotriakiem bo go brakuje na schemacie układu wykonawczego

-

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 sulkom

2 programowalne czasy odliczania + sterowanie urządzeniem 350W

Witam,
Czy ten (lub inny Twój) projekt można zmodyfikować, aby odliczał 2 zdefiniowane czasy z zakresu 0,00-99,00 s (te miejsca po przecinku są ważne) i dodatkowo sterował silnikiem 350W 15A? Najlepiej gdyby każdy czas był przypisany do innego klawisza (start/reset) + dodatkowy klawisz z manualną obsługą (przyciskam - silnik działa, puszczam - stop).

Portret użytkownika mirley

Re: Timer

Dało by się pewnie dorobić drugi kanał do tego układu ale nie mam kiedy tego dokonać. Trzeba dodać do timera drugi dzielnik i drugi zestaw zmiennych "odliczanie, licz_01s". Najwięcej będzie zabawy z menu b trzeba jakoś zorganizować ustawienia.

-

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 Doctore

Przyciski.

Ma ktoś może filmik z działania układu?
Bo nie jest opisane jaki przycisk co robi :)

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika mirley

Re: Przyciski

Te ułozone na płytce w formie strzałek: lewo/prawo zmiana pozycji ustawień, góra/dół modyfikacja czasu. Dwa dodatkow przyciski to start/stop i podgląd pozwalający sprawdzic działanie wyjścia

-

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 Doctore

Schemat i PCB

Zrobiłem schemat i pcb, czy ktoś może sprawdzić czy wszystko jest ok?
http://speedy.sh/67HFn/fototimer.rar
Z góry dzięki.

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika mirley

Schemat

Wrzuć schemat i płytkę w formacie pdf żeby można było bezpośrednio oglądać. Mogę popatrzyć pod względem ułożenia komponentów na pcb i na schemat. Od sprawdzania połączeń jest program

-

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 Doctore

Problem z zaprogramowaniem

Zrobiłem już ten timer Mirku ale mam problem z zaprogramowaniem atmegi który opisałem tu: http://mirley.firlej.org/jak_zaprogramowac_pierwszy_avr?page=6#comment-20807
Układ już zrobiony ale wstawiam schemat...:
http://img571.imageshack.us/img571/6145/schematfototimer.png

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika Doctore

Ok już wszystko działa,

Ok już wszystko działa, wgrałem soft za pomocą burn-o-mat'a, oczywiście nie obyło się bez problemów, najgorszym problemem jest to że pcb jest o około 3% za mała i nie wiem dlaczego, drukowałem u kolegi i w punkcie ksero i to samo.
Fotki:



Edit: aha teraz przeczytałem, podgląd wyjść, jak mam ustawianie czasu i włączę "podgląd" to znika strzałka i pojawia się napis "podgląd" a czas na dole nadal jest i nie widać żadnego podglądu wyjść, natomiast gdy jest odliczanie też nie można włączyć podglądu bo wszystkie przyciski robią za stop.

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika Doctore

Tranzystor

Siena, to jak z tym tranzystorem(np. BC557) do tego układu który ma zwierać obwód(sygnał zasilacza do masy zasilacza)?
Najlepiej schemat w paincie, eaglu lub w czymś innym.

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika Doctore

A zmiana softu dla obsługi

A zmiana softu dla obsługi dłuższego czasu?
Obiecałeś!
PS teraz żałuje że znalazłem tą stronę...

-

Co cie nie zabije to cie wzmocni(nie dotyczy kondensatora 400V w zasilaczu impulsowym).

Portret użytkownika mirley

Re: timer

jaki zakres czasu potrzebujesz..... mam tego troche na głowie i nie pamiętam wszystkiego.

-

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 fsdfsdfsd

10h

10h

Portret użytkownika mirley

Re: TImer

Kod jest w załącznikach.... musisz sobie sam skompilować i sprawdzić bo pisałem na sucho

-

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 czarny30

Timer

Witam
Czy możesz podesłać projekt tej płytki w eaglu ?

Portret użytkownika mirley

Re: Płytki

Nie ma możliwości uzyskania płytki w formie edytowalnej

-

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 Tomek 77

Idealny Timer do naświetlarki

Witam serdecznie.

Jako, że piszę tu pierwszy raz, przedstawię się. Na imię mam Tomek, mam 36 lat i elektroniką zajmuję się zawodowo.
Niestety pomimo mojej jak sądzę dość sporej wiedzy nie potrafię jeszcze pisać swoich programów. Twoja strona mnie do tego zachęciła, a pierwsze efekty z pewnością będą w ciągu kilkunastu tygodni. Póki co muszę polegać na Twoim doświadczeniu w tej dziedzinie, ale do rzeczy.

Przedstawiony przez Ciebie projekt timera fotograficznego jest idealnym sterownikiem budowanej przezemnie naświetlarki UV. Wykonywaniem płytek metodą UV zajmuję się od wielu lat. Moje doświadczenie wyraźnie wskazuje na ścisłą zależność jakości produktu (zwłaszcza przy wykonywaniu serii naświetleń) i czasu wymaganego naświetlania od starzenia się świetlówek. Dostępne powszechnie świetlówki UV o wymaganej długości fali mają trwałość producenta 500 do 600 godzin pracy. W rzeczywistości przy zastosowaniu półprofesjonalnym świetlówki te trzeba dla zachowania jakości wymieniać już przy 350 do 400 godzin pracy.

I tu prośba do Ciebie. Byłoby idealną sprawą, gdyby taki timer mógł zliczać czas sumaryczny naświetlania i go zapamiętywać. Niekoniecznie we flashu. Podtrzymanie bateryjne pamięci to nie problem. Czas taki mógłby być ręcznie kasowany dopiero po wymianie świetlówek na nowe. Ułatwiłoby to pracę z naświetlarką bez konieczności codziennego notowania.

Pozdrawiam

Tomek

Portret użytkownika mirley

Re: Timer

Da się tak zrobić bez większego kłopotu... Zapisywanie do eeprom czasu powinno się odbywać jak triak się wyłączy.... W eepromie mozna zapisać coś 100000 razy w każdej komórce więc jest to pewne ograniczenie... Ja bym zrobił zmienną typu long:

Dim licznik_pracy as Long

i do niej zapisywał czas pracy w dziesiątkach sekund albo zrobić dzielnik i w sekundach zapisywać

Na starcie trzeba odczytać zmienną z EEPROM np z komórki 10:

Readeeprom licznik_pracy, 10

Czyli faktycznie z komórek 10-13

W miejscu gdzie jest liczony czas (komenda decr licz01s) trzeba dopisać incr licznik_pracy a w procedurze Zatrzymaj_liczenie trzeba dodać zapis do eeprom

Na starcie dopisał bym jeszcze aby wyświetlał sobie ten czas po właczeniu ukąłdu żeby wiadomo było ile jeszcze go zostało przed wymianą

-

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 demsy1

Licznik pracy

Witam wszystkich
Projekt super sprawa, zastanawiam się czy można bez większych problemów przerobić program tak żeby liczył czas(nie odliczał), chodzi mi dokładnie o licznik pracy, czyli na wejściu przekaźnik lub jakiś tranzystor i po podaniu stanu niskiego czy wysokiego włącza nam zegar puścimy i wyłącza itd... no i plus zapis do eeprom-u.

Portret użytkownika lejk

Prośba o podpowiedź

Witam. Nie jestem zbyt biegły w programowaniu, więc zwracam się z prośbą o pomoc w zmianie kodu do naświetlarki z projektu. Usunąłem z programu tryb podgląd a przycisk chciałbym wykorzystać do zapisu aktualnie ustawionego czasu po dłuższym przyciśnięciu i wywołania czasu po krótkim naciśnięciu. Mam problem z napisaniem procedury zapisu po dłuższym przytrzymaniu przycisku. proszę o jakieś wskazówki. Dziękuję i pozdrawiam.

Portret użytkownika george

Problem z OUT

Cześć wszystkim.
Właśnie poskładałem układ i pojawił się pewien problem.
Chcę go wykorzystać w zgrzewarce do ogniw, ale po załączeniu układu na wyjściu gdzie powinno być 0 mam stan wysoki. Po wciśnięciu start utrzymuje się stan wysoki do końca odliczania po czym przechodzi w niski. Potem jest już normalnie. zmiana czasu, start, zapala się dioda, odliczanie, dioda gaśnie.
Nie bardzo wiem dlaczego stan wysoki pojawia się po podłączeniu zasilania. Stan wysoki pojawia się też po włączeniu podglądu. Jakieś pomysły o co może chodzić?
Sprawdziłem z innym prockiem i efekt identyczny. Kłopotliwe to nieco i może niebezpieczne, ale przy zgrzewarce pewnie da się używać, trzeba tylko pamiętać przy włączaniu sprzętu.
Pozdrawiam.
George

Portret użytkownika EDC

Odp. Problem z Out

Do tego, by po włączeniu nie było stanu wysokiego, wystarczyłoby zmienić
Config Portb = &B11111111 : Portb = &B11111111
na
Config Portb = &B11111111 : Portb = &B11111101
na samym początku programu i go skompilować ponownie.

-

BARTek
Moja strona

Portret użytkownika Ben

Timer

Witam. Mam mimo niewielkiegodoświadczeniia w temacie, timerek zadziałał od razu w momencie załadowania hexa. Bawiłem się nim jakiś czas w celu wykrycia wad i nic nie wykryłem. Postanowiłem ożenić go z naświetlarką, dodałem układ wykonawczy z triakiem i zamknąłem całość w metalowej obudowie i się zaczęło dziać. Wyświetlacz krzaczy w momencie odliczania. Dzieje się tak tylko w momencie zamknięcia obudowy. Sądząc z mrugania krzaczków i sygnale po ustawionym czasie wszystko działa tylko na wyświetlaczu nie widać. Dokładałem kondziołki na zasilaniu procka i nic. Morze jakieś pomysły gdzie jeszcze szukać przyczyn takiego stanu? Dodam że gdy obudowa jest otwarta, w pokrywie umieszczony jest kompletny timer bez zasilania, wszystko działa a gdy tylko dotknę pokrywę bo obudowy zaczyna krzaczyć. Byłbym wdzięczny za pomoc kogoś mądrzejszego. Z góry dziękuję za wszelkie sugestie.

Portret użytkownika EDC

Odp. Timer

Wykonaj taki test.
Dodaj mały kondensator pomiędzy pin wyświetlacza EN i masę. Mały oznacza tu coś z przedziału kilku nF.
Dawałem u siebie 10nF i mniejsze i nie w tym konkretnym projekcie tylko w przypadkach takich krzaków.

-

BARTek
Moja strona

Portret użytkownika matetiau1

Witam Was. Mam pytanie do

Witam Was.
Mam pytanie do Mirka oraz do bardziej doświadczonych programistów Bascoma.
Chodzi mi o procedurę obsługi wyświetlacza.
Mianowicie, gdy ja w swoim programie zrobię podobnie jak Mirek. W sensie w zależności od trybu pracy jest procedura selcet case która wyświetla odpowiednią stronę LCD.
Jednak w moim przypadku cały ekran miga gdy mam procedurę CLS, natomiast jak ją wyłączę to niestety program się nadpisuje na LCD.
Nie jest to wina LCD ponieważ gdy przeportuje program Mirka do mojej płytki testowej, jego program nie miga.
W czym tkwi problem ?

Pozdrawiam!

Portret użytkownika kaktus

taki urok

To jest naturalne zjawisko gdy instrukcja CLS jest powtarzana nagminnie czytaj zbyt często. Jej wykonanie zabiera trochę czasu a potem zapewne coś zapisujesz - nową zawartość ekraniku. Efekt końcowy znasz.
Spróbuj zoptymalizować kod by wykonywanie CLS odbywało się tylko wtedy gdy jest to faktycznie niezbędne, i jak najmniej razy. Pamiętaj że część tekstu, nazwijmy ją starą, możesz zgumować nadpisując spacjami ;-)
Dla przykładu: aktualna treść na wyświetlaczu "napis trochę długi" zostanie z powodzeniem zastąpiona nową treścią "napis 2 ".
Dodatkowo pamiętaj że każdy znak do wysłania zabiera sporo przestrzeni w pamięci Flash. Ktoś wymyślił na podobną sytuację wynalazek w postaci instrukcji SPACE.
Owocnego poznawania środowiska BASCOM ;-D

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".