Forum: Mikrocontroller und Digitale Elektronik Monoflop mit großer Dauer


von Michael (Gast)


Lesenswert?

Ich hab da derzeit ein kleines Problem mit der Suche nach einem 
Monoflop. Der Aufbau ist ja eigentlich immer sehr einfach, wird ja die 
Zeit für gewöhnlich mittels RC-Kombination hergestellt. Problem bei mir 
ist nun, dass ich bei einem Eingangsimpuls einen zwei Stunden 
andauerenden Ausgangsimpuls benötige. Bei den Monoflopschaltungen, die 
ich kenne (z.B. 555 oder 74HTC4538) würde das aber bedeuten, da ich mit 
dem Widerstand nicht aus dem einstelligen Megaohmbereich will, dass der 
Kondensator im Millifaradbereich liegen muss. Auch das wäre noch kein 
Problem, das Problem ist, dass diese ICs zum Beenden des 
Ausgangsimpulses den Kondensator kurz schließen und wenn der im 
Millifaradbereich ist würde da einiges an Strom durch den IC fließen und 
den so quasi braten.

Vielleicht hat jemand von euch eine Idee wie man das realisieren kann. 
Sicherlich wäre ein µC eine Idee aber ich habe damit weder Erfahrung 
noch habe ich da überhaupt einen. Wäre jetzt natürlich die Idee damit in 
die µC-Ecke einzusteigen nur hab ich kein Windows-System sonder ein 
Macintosh und meine Motivation zu Windows hält sich doch extrem in 
Grenzen.

von jack (Gast)


Lesenswert?

555 mit nachgeschaltetem Binärzähler.
Damit lassen sich fast beliebig lange Zeiten erreichen.

von Hmm... (Gast)


Lesenswert?

Verstehe ich dich richtig, dass du das im Grunde gerne mit einem 
Mikrocontroller lösen würdest, allerdings wegen deines Macs dich nicht 
so recht traust? ;)

Schau mal hier:

Beitrag "AVR Tutorial für Mac"

Da wird eine Toolchain für den Mac diskutiert. Ob die angesprochenen 
Tools so laufen kann ich allerdings nicht testen, da ich hier nur Linux 
und (falls die alte Hdd wieder belebbar ist) WinXP.

Notfalls würde auch ein Flashtool reichen, so ein paar Zeilen Assembler 
würde dir vielleicht auch jemand schnell zusammenstricken.

von H.Joachim S. (crazyhorse)


Lesenswert?

naja irgendwie geht das schon noch mit dem NE555. Solltest dann aber die 
CMOS-Variante wegen der geringeren Eingangsströme nehmen. Wenn der 
Eingangsstrom in die gleiche Grössenordnung kommt wie der Strom durch 
den Ladewiderstand, kannst du ewig warten :-)
Und ein paar Ohm in der Entladeleitung lösen das Problem des zu hohen 
Stromes, spielen für die Funktion kaum eine Rolle.
Ebenso störend: Restströme des Elkos, hat den gleichen Effekt wie oben 
beschrieben, also ausgesuchte Elkos verwenden mit deutlich höherer 
Spannung als eigentlich erforderlich.

Wiederholgenauigkeit wird nicht berauschend sein.

Bau es lieber zumindest ein bißchen Digital auf, in der 4000-Serie gibt 
es etliche ICs mit vielen FF drin (4020, 4040) damit lässt sich sowas 
ganz gut realisieren.

Ein kleiner MC ist, wie du schon erkannt hast, die mehr oder weniger 
perfekte Lösung, ein kleiner 8Pin-Tiny reicht aus.

von Hmm... (Gast)


Lesenswert?

> Ein kleiner MC ist, wie du schon erkannt hast, die mehr oder weniger
> perfekte Lösung, ein kleiner 8Pin-Tiny reicht aus.

Jap. und wenn dir die 2h auf 1% genau ausreichen (als etwa +/-72s) dann 
brauchst du für den Tiny noch nicht einmal einen Quarz. Allerdings denke 
ich mal, dass du mit diskretem Aufbau auch nicht ohne weiteres 
wesentlich genauer als +/-1% hinkommen wirst.

Und kleiner dürfte es auch kaum zu machen sein:
(Zwischen Vcc und Gnd muss noch ein 100nF Kerko)


             Vcc
              |
              |
          ----------
          | ATtiny |
 Input----|   13   |-----Output
          ----------
              |
              |
            -----

von [Frank] (Gast)


Lesenswert?

mit einem normalen Logikchip (74HC4060) ist dies wohl die einfachste 
Variante (bis zu 24h).
http://uk.geocities.com/ronj_1217/c4060s.html

Frank

von Jürgen B. (hicom)


Lesenswert?

in Vor Controller Zeiten habe ich sowas mit
einem 4060 gemacht, der hat Oszillator und Binärzähler on board.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ist ja langweilig... ;-)

von Jens (Gast)


Lesenswert?

Hier mal ne Quelle für ein Langzeit Timer
Das Programm togelt PB0 während der Timerzeit.

;----------------------------
; ATmega8
;----------------------------

.include "m8def.inc"

;Konstanten

.equ clock     = 1000000    ;Taktfrequenz 1MHz

.def SaveSReg     = r16     ;Statusregister Merker
.def OutPort      = r17     ;Ausgangsregeiter
.def Timer1       = r18     ;Zählt die Timer-Überleufe von Timer 0
.def Minute       = r19     ;Minuten Zähler
.def Stunde       = r20     ;Stunden Zähler
.def TempReg      = r21     ;Allgmeines Register

;Pinbelegung
;PB0 Status LED
;PB1 Ausgangstreiber (StromQuelle)

;******************************************************************
.cseg                   ;CODE segment

.org 0x000
  rjmp  Reset           ;Resethandler
.org OVF0addr
  rjmp  timer0_overflow ;Timer Overflow Handler

 Reset:                 ;alles auf Anfang
  ;Stack einrichten
  ldi TempReg, LOW(RAMEND)
  out SPL, TempReg
  ldi TempReg, HIGH(RAMEND)
  out SPH, TempReg

  ;** Port B **
  ;Portrichtung
  ldi   TempReg, 0b00000011    ;PB0 und PB1 -> Ausgang
  out   DDRB, TempReg
  ;Pull Up's an allen Eingängen
  ldi   TempReg, 0b11111111    ;für alle Pins Pull Up R's
  out   PORTB, TempReg         ;und Lampe aus -> PB2 = H


  ;Zähler löschen
  ldi   Timer1,  0
  ldi   Minute,  0
  ldi   Stunde,  0

  ;Timer 0 initalisieren und starten
  ldi   TempReg, 0b00000101   ;Vorteiler auf 1024 CS00 setzen: Teiler 1
  out   TCCR0, TempReg
  ldi   TempReg, 0x00000001   ;Interrupt bei Timer Overflow
  out   TIMSK, TempReg


  ;Enable Interrupts
  sei

;***************** Main Loop  **********************
start:
  sleep
  rjmp  start
;************** Ende Main Loop *********************


;***************** Interrupt Routinen **************
timer0_overflow:
  ;Statusregister sichern
  in    SaveSReg, SREG

  ;findet alle 0.262144s statt
  ;Status Lampe blinken lassen
  mov   TempReg,  Timer1
  andi  TempReg,  0b00000001  ;Bit 0 ausmaskieren
  ori   TempReg,  0b11111100  ;bit 7 bis 2 setzen
  out   PORTB,    TempReg     ;Port Ausgabe

  inc   Timer1
  cpi   Timer1, 229
  brne  Timer_Exit

  ;findet alle 60,030976s (1 min) statt
  ldi   Timer1, 0
  inc   Minute
  cpi   Minute, 60 ;Minuten
  brne  Timer_Exit

  ;findet alle 3601,85856s (1 h) statt
  ldi   Minute, 0
  inc   Stunde
  cpi   Stunde, 2 ;Stunden
  brne  Timer_Exit

  ;findet alle 2 h statt

  ;************ Tue irgend was ************

Timer_Exit:
  ;Statusregister zurückschreiben
  out   SREG, SaveSReg
  reti
;***************** Ende Interrupt Routinen **********

von spess53 (Gast)


Lesenswert?

Hi

Der 4541 aus der 4000er CMOS-Reihe ist für solche Anwendungen geeignet.

MfG Spess

von Michael (Gast)


Lesenswert?

Mit einem Zähler kann man das machen? Das muss ich mir mal anschaun und 
Google damit fürttern, im MOment fehlt mir die Idee dafür. Es geht ja um 
ein Monoflop, in meinem Falle sogar um ein nicht retriggerbares aber das 
ist leicht zu lösen. Danke euch schonmal für eure Tipps, auch das mit 
dem µC werd ich mir mal anschaun, allerdings hab ichs mit dem Terminal 
net so.

von spess53 (Gast)


Lesenswert?

Hi

>Mit einem Zähler kann man das machen?

Der 4541 arbeitet auf dieser Basis. RC-Oszillator und programmierbare 
Zähler.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.