timer cykliczny

Poszukujesz schematu układu lub urządzenia, badź wzoru płytki do niego - pytaj. Na pewno ktoś Ci pomoże.
seg

timer cykliczny

Post autor: seg » 14 sie 2005, 21:16

Poszukuję schematu dokładnego (najlepiej kwarcowego) timera cyklicznego. Po prostu szukam urządzenia, które cyklicznie będzie włączać na 15min i wyłączać na również 15min przekaźnik. Może jest ktoś chętny do zaprojektowania tego układu dla mnie (mam na myśli uP bo z 555 sam dam radę, ale z 555 chyba trudno o dużą stabilność). Oczywiście zapłacę :)

Wojtek
Moderator
Posty: 2606
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Post autor: Wojtek » 15 sie 2005, 7:00

Po co zaraz płacić trzeba trochę poszukać. Zobacz to http://www.elb.vectranet.pl/~krzysztofg ... acznik.htm może Ci wystarczy, są tam również inne rozwiązania.

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 17 sie 2005, 0:07

Nawet jeżeli na procku, to jego program jest tak prosty, że prawie trywialny (no chyba, że jest jeszcze coś, o czym nie napisałeś).

seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Post autor: seg » 17 sie 2005, 1:17

Ja czaruję kilka dni z jakimiś dziwnymi układami ale za nic nie moge dobrać odpowiedniej pojemności i rezystancji i już mnie trafia albo i trafiło. Nie ważne jak prymitywny byłby układ, ważne, żeby działał i był DOKŁADNY. A odp. Wojtka to nie timer cykliczny raczej no i na 555 o czym pisałem powyżej. Kto zadziała z uP? Niech sobie ten prymitwny programik zlicza w kółko impulsy i poda mi "jedynkę" :) co 15 minut tak abym mógł wysterować jakiś przerzutnik, albo po prosto niech "trzyma" tą "jedynkę" na wyjściu przez 15min, następnie zrobi sobie "przerwę" na 15min ("0") i tak w kółko :) Ratujcie bo mam dość.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 17 sie 2005, 7:58

Może nie ma co szaleć z procem. Jeśli układ może zająć więcej miejsca i ważna jest stabilność, proponuję 4060 + kwarc 32KHz (K-kilo informatyczne = 2^10) - czyli tzw kwarc zegarkowy. Na wyjściu Q14 powinien pojawić się przebieg dokładnie 2Hz... później to już dzielniki dzielniki... wygodnie byłoby podzielić częstotliwość przez 1800 - na wyjściu przebieg o okresie 15minut, który można podać na dwójkę liczącą - i okres 15 minut zamieni się w 15 minut stanu wysokiego i 15 minut stanu niskiego.

Z drugiej strony, jeśli całość ma być malutka... ATtiny11 kosztuje około 5zł. Tylko trzeba się liczyć z programowaniem w asemblerze ;]

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 17 sie 2005, 9:00

Koppel pisze:Może nie ma co szaleć z procem. Jeśli układ może zająć więcej miejsca i ważna jest stabilność, proponuję 4060 + kwarc 32KHz...
:arrow: seg - bardzo dobry pomysł :D

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 17 sie 2005, 11:06

Ja bym proponowal uzycie ukladu 4541, nie trzeba bawic sie w duze pojemnosci oraz ogromne rezystancje. Uklad ten posiada wewnetrzny oscylator oraz programowalny licznik, kosztuje ok 1zł ;-) jesli uklad ma pracowac w warunkach domowych to rozwiazanie jest idealne. Jesli temperatury znacznie sie zmieniaja to tak jak wyzej 4060 + kwarc + przezutniki.
Pozdr.

seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Post autor: seg » 17 sie 2005, 11:24

Myślicie, że tego nie przerabiałem...nie doceniacie mnie :) Po tych 2Hz trzeba było to podzielić jakoś no i padło na 4018 (nigdy nic z nim nie robiłem) więc najpierw :2, potem :10, jeszcze raz :10 i jeszcze :9. Za tym 4017 w roli dwójki liczącej. NIE DZIAŁA :) Chyba coś popaprałem z 4018. A 4060 też cuda jakieś generował (inne częstotliwości, niż powinien). Chyba COŚ z układu miało na niego "wpływ".Oczywiście układ miał stablizowane napięcia itd. Ogólnie to leży teraz "gdzieś" i skrócił mi życie o kilka dni (nerwy) ;). Wiem, że dla niektórych na tym forum moje rozwiązanie techniczne tego problemu jest co najmniej zbyt skomplikowane, ale nie potrafię (LEŃ) nic z uP. Teraz męczę 4060 ale bez kwarca (rezystancja + pojemność). Chciałem otrzymać z tego "coś" co da mi na wyjściu impuls co 3 minuty. Potem 4017 modulo 5 i na koniec 4017 jako dwójka. Ogólnie działa, tyle, że "jedynka" jest krótsza niż 15min, a "zero" jest dłuższe :) Normalnie dajcie mi brzytwę :) Do 3 rano dziś to męczyłem. Wiem, że trzeba dobrać RC aby czasy były jednakowe (po 15min) ale nie wiem, jak się do tego zabrać. Trochę regulacji mnie czeka. Czy ktoś potrfi to policzyć? Jest jaki wzór na f dla 4060 (raczej musi być). Dodam, że mój czterdzieściosześćdziesiątkowy :) generatorek bazuje na schemacie czasomierza telefonicznego z EdW 07/99 (kit 2373). Pomocy...

PS Może Kolega Koppel ma chwilę czasu na tego Tiny?? Odwdzięczę się :)

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 17 sie 2005, 20:18

Wydaje mi się, że zanadto komplikujesz sprawę. Nie ma co bawić się w dzielenie częstotliwości po koleji najpierw przez 9, potem przez 5 przez 2.... itd. 1800 to dwójkowo:
111 0000 1000
Zapis podzieliłem czwórkami aby był bardziej czytelny. Wynika z tego, że potrzebny jest licznik minimum 11bitowy. Daj spokój programowalnym dzielnikom częstotliwości. Ich działanie wcale nie jest tak proste jak to się z pierwszego opisu wywaje. Elementy te są raczej przeznaczone do syntetyzerów częstotliwości.
Znakomitym dzielnikiem będzie 4040 - licznik 12 bitowy. Teraz wystarczą 4 diody i jeden rezystor, dajmy na to 10k. Diody katodami na pozycję Q4 oraz Q9-Q11, anody zwarte połączone z rezystorem podpiętym z drugiej strony do + zasilania. Cały ten węzeł: rezystor + anody połączone z wejściem zerowania 4040. Na wyjściu Q11 pojawi się przebieg o okresie 15minut. Oczywiście wypełnienie inne niż 50% ale to nie ma już znaczenia.

Pozdrawiam
RK

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 17 sie 2005, 21:05

seg pisze:...PS Może Kolega Koppel ma chwilę czasu na tego Tiny?? Odwdzięczę się :)
A który to TINY?

seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Post autor: seg » 18 sie 2005, 1:07

Panie Koppel, nie obchodzi mnie co Ci się wydaje. Jedni znają się na tym inni na tym! Nie jesteś omnibusem. Nie szpanuj, tylko prześlij proszę schemat na priv'a. Jeżeli uważasz, że jesteś we wszystkim najlepszy, to nie do Ciebie kieruję ten post. Dosłownie pisząc mam gdzieś jak i z pomocą czego tego dokonam. Ten generator to pikuś w porównaniu z całością układu. Piszę prosząc o pomoc a nie mądrzenie się.
Ostatnio zmieniony 02 wrz 2005, 13:56 przez seg, łącznie zmieniany 1 raz.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 18 sie 2005, 5:56

Panie seg... ubodła mnie Pańska odpowiedź, ale przecież o to właśnie chodziło, czyż nie?
Podałem więc dokładny przepis, krok po kroku co gdzie połączyć. Ewentualne zapytanie o schemat można napisać przecież bez personalnego "dojazdu".
Moja wypowiedź nie miała na celu jakiekolwiek wywyższania się. Przepraszam za pierwsze zdanie: "Wydaje mi się, że zanadto komplikujesz sprawę.".
Myślę, że tutaj EOT przepraszaniu i resztę uda nam się załatwić na PW.

seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Post autor: seg » 20 sie 2005, 19:12

Nici z "przepisu" kolegi Koppel. jakieś inne pomysły?

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 20 sie 2005, 20:05

1-st.
proszę spróbować tego, poniższa wersja tyka co 1 sek, wersja 15 min - zakomentowana,
ewentualny tuning - stała TIMER_RELOAD, sterowanie bitem 0 portu B proca '2313 taktowanego 8MHz

Kod: Zaznacz cały

//nati,2005
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

// 8MHz / 1024	-> jedno tykniecie co 128uS
#define TIMER_PRESC			5

// przerwanie co 10 mS
#define TIMER_RELOAD		(256 - 78)

#define TIME_100_MS			10	// 0.1 sek
#define TIME_ONE_SECOND		100	// 1 sek.
#define TIME_ONE_MINUTE		(long)(TIME_ONE_SECOND * 60)
#define TIME_ONE_HOUR		(long)(TIME_ONE_MINUTE * 60)


// #define REQUIRED_DELAY ( TIME_ONE_MINUTE * 15 )
#define REQUIRED_DELAY TIME_ONE_SECOND

volatile unsigned long ulTimeCounter = REQUIRED_DELAY;	// wartość N * 10mS

SIGNAL ( SIG_OVERFLOW0 ) {
    TCNT0 = TIMER_RELOAD;
    ulTimeCounter--;
    if ( ulTimeCounter == 0 ) {
        ulTimeCounter = REQUIRED_DELAY;
        // event!
        if ( bit_is_set (PORTB, 0 ) ) {
            cbi (PORTB, 0 );
        }
        else {
            sbi (PORTB, 0 );
        }
    }
}

int main ( void ) {
    sbi (DDRB, 0 );		// PB.0 - jako OUT
    cbi (PORTB, 0 );	// PB.0 -> low
    sbi ( TIMSK, TOIE0 );
    TCNT0 = TIMER_RELOAD;
    TCCR0 = TIMER_PRESC;
    sei();
    while ( 1 ) {
       //nothin' here
    }
    return (0);
}
//end

2-nd.
jeżeli dalsza dyskusja będzie przebiegała w podobnym tonie - temat zostanie zablokowany.

pozdrawiam
tasza

seg
Użytkownik
Posty: 223
Rejestracja: 17 sie 2005, 1:08
Lokalizacja: PÓŁNOC - POŁUDNIE

Post autor: seg » 21 sie 2005, 0:15

3-rd.
Wyjaśniliśmy sobie z kol. Koppel wszystko
4-th.
Jakbym rozumiał o co chodzi w tym programiku to sam bym go napisał. Prosiłem o rozwiązanie sprzętowe, lub przysługę w postaci zaprogramowania układu.

ODPOWIEDZ