Schaltung für elektronische Zählkette gesucht!

Moin Julien,

Julien Thomas schrieb:

Hab ich ihm 2x empfohlen... offenbar isser zu blöd zum lesen und googlen... Wie es aussieht ist er nun beleidigt von dannen gezogen, weil ihm das usenet nicht das gewünschte passende Ergebnis serviert hat und schlimmer noch, es Widerworte gab ;-).

Grüße aus dem Norden (na ja, eher westlich von Dir wenn Du in Kiel bist) *g

Kai

Reply to
Kai Ebersbach
Loading thread data ...

Eine feste Zeit von 1 Sekunde für das eintippen einer Ziffer finde ich nicht sinnvoll, besonders bei "10" muß man sich schon ganz schön anstrengen. Ich würde nur eine Timeout-Zeit t1 definieren (mit 1 Sekunde), was die maximal erlaubte Zeit zwischen zwei Impulsen ist. Wenn die Zeit größer ist, dann wird der nächste Impuls zum Inkrement der nächsten Ziffer verwendet und wenn bei der zweiten Ziffer die Zeit größer ist, dann werden beide Ziffern ausgewertet und ggf. das Relais geschaltet. Eine zusätzlche Erleichterung, damit man beim Wechsel auf die zweite Ziffer nicht direkt in den Abschluss-Timeout landet, gibt es beim Start und beim Wechsel auf die zweite Ziffer keinen Timeout, bis man den ersten Impuls gegeben hat.

Sind beide Ziffern eingetippt, dann wird nach der Zeit t1 entweder das Relais für 3 Sekunden freigegeben, oder es wird für 60 Sekunden jede weitere Eingabe verhindert, falls die Kombination falsch war.

Definieren wir zunächst die Eingänge:

s1: Klingeltaster 1: aktiviert die Zifferneingabe, solange gedrückt gehalten s2: Klingeltaster 2: Taster für die Zifferneingabe und Klingel, wenn s1 nicht gedrückt

Ausgänge:

k: Klingel r: Relais

Das als Microcontroller-Programm zu implementieren ist trivial. Interessant wäre es tatsächlich nur mit CMOS-Bauteilen aufzubauen. So müsste es eigentlich funktionieren, habe aber jetzt keine Lust, das aufzubauen:

formatting link

9 ICs gegenüber einem Microcontroller ist schon eine ganze Menge. Die Leute sind nicht zu beneiden, die das vor 30 Jahren so aufbauen mussten. Kann man es mit weniger Bauteilen hinbekommen (ohne Microcontroller)? Und jetzt Jörg, nur diskret mit Transistoren :-)
--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Geht schon analog, man muss dann aber einige One-Shots mit Transistoren aufbauen. In etwa so: Differenzierer (CR) plus sanfter Tiefpass (RC) zum Wegpusten von Prellern triggert One-Shot #1. Dieses schickt ueber eine Stromquelle definierte Ladungspakete in einen Kondensator. Ein Tiefpass fischt die Pause heraus und schaltet auf einen zweiten Kondensator um, das gleiche geht von vorn los. Zwei Fenster-Komparatoren, Dioden. Wenn beides "true" -> One-Shot #3 zieht fuer drei Sekunden den Magnetoeffner. Die Komparatoren koennte man notfalls auch mit Transistoren bauen, falls das in Sport ausarten soll. Am Ende werden beide Kondensatoren entladen.

Ich wuerde das ganze aber mit einem uC aufbauen.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

8051, wetten?!

Damit man das Ding auch in 20 Jahren, wenn's den Geist aufgibt, exakt gleich nochmal aufbauen kann.

;o)

Reply to
Heiko Nocon

Jawollja, watt'n sonst? Gusseisern :-)

Es tut aber auch irgendein Mini-Atmel oder ein MSP430F2001 fuer fuffzig Cents. Braucht nicht einmal externe Bauteile ausser etwas ESD Schutz, Elko und Abblock-C.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Da könnte man mittlerweile wohl auch einen ARM nehmen. Mit 10 Milliarden verkauften CPUs sollte das auch für die Zukunft recht sicher sein:

formatting link

Und soll es ja auch schon für 1,68$ in hunderter Stückzahlen geben, wie gerade in einer anderen Newsgroup gepostet wurde:

formatting link

Sieht gar nicht so schlecht aus, sogar mit integriertem Multiplizierer und Dividierer. Allerdings was wenig Analog-Fähigkeiten.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

[80C51]

Datenblaetter nur gegen Registrierung? Na ja, das mag ich nicht so gern.

Schon, aber 2nd Source ist da meist nicht. Zumindest im 44pin Gehaeuse bestehen beim 80C51 bessere Chancen, etwas bei anderen Herstellern zu finden, wenn einer Lieferengpaesse hat. Jedenfalls solange man nicht irgendeine Staerke des gewaehlten Fabrikats voll ausgeknirzt hat.

Das sollte in diesem Fall aber keine Rolle spielen, da offenbar Einzelstueck. Dann nimmt man am besten den kleinsten uC aus einer Baureihe, mit der man schon ein wenig vertraut ist.

FYI (auch fuer andere uC Spezialisten): TI hat Foren aufgemacht. Sind noch duenn besiedelt, aber der RSS Feed klappt schonmal. Leider kann man ueber RSS nicht antworten und ich habe denen vorgschlagen, parallel in Newsgroups zu fuettern. Mal sehen

formatting link

--
Regards, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Da kann man sich ohne Registrierung durchklicken, wenn man nur oft genug auf "ich will mich wirklich nicht registrieren" (unten etwas versteckt) klickt.

Eine fette CPU braucht man schon, denn am einfachsten würde man das Problem lösen, indem man erstmal in Visual Basic .NET einen Schaltungssimulator schreibt (und damit auch praktischerweise ein wenig VB lernt), ähnlich wie Parsic es vorgemacht hat. Ein Und-Gatter könnte z.B. so aussehen:

Public Class AndGate Private _a As Boolean Private _b As Boolean Private _q As Boolean

Public Sub tick() _q = _a And _b End Sub

Public WriteOnly Property a() As Integer Set(ByVal value As Integer) _a = value End Set End Property

Public WriteOnly Property b() As Integer Set(ByVal value As Integer) _b = value End Set End Property

Public ReadOnly Property q() As Integer Get q = _q End Get End Property End Class

Damit kann man dann die Schaltung implementieren, siehe unten. Mit VB.NET kann man das auch recht leicht mit LEDs usw. darstellen, also ein WindowsCE-System mit einem leistungsfähigen ARM-Prozessor müsste es schon sein, auch damit die virtuellen Gatterlaufzeiten nicht zu hoch werden :-)

Public Class Form1 Private ic1a As New Inverter Private ic1b As New Inverter Private ic1c As New Inverter Private ic1d As New Inverter Private ic1e As New Inverter Private ic1f As New Inverter Private ic2 As New DecimalCounter Private ic3 As New DecimalCounter Private ic4 As New DecimalCounter Private ic5a As New AndGate Private ic5b As New AndGate Private ic5c As New AndGate Private ic5d As New AndGate Private ic6a As New AndGate Private ic6b As New AndGate Private ic6c As New AndGate Private ic6d As New AndGate Private ic7a As New Monoflop(1000, True) Private ic7b As New Monoflop(3000, False) Private ic8b As New Monoflop(60000, False) Private ic9a As New AndGate Private ic9b As New AndGate Private ic9c As New AndGate Private ic9d As New AndGate

Private Function oneNull(ByVal value As Boolean) As String If value Then oneNull = "1" Else oneNull = "0" End If End Function

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim code1 As Boolean = ic3.q3 Dim code2 As Boolean = ic4.q4 ic1a.input = s1.Checked ic1b.input = s2.Checked ic1c.input = ic1b.q ic1d.input = ic9a.q ic1e.input = ic5a.q ic1f.input = ic9b.q ic2.clk = ic7a.qn ic2.ena = ic1e.q ic2.res = ic1a.q ic3.clk = ic6c.q ic3.ena = False ic3.res = ic1a.q ic4.clk = ic5b.q ic4.ena = False ic4.res = ic1a.q ic5a.a = ic1d.q ic5a.b = ic1f.q ic5b.a = code1 ic5b.b = ic6b.q ic5c.a = ic2.q2 ic5c.b = ic7b.qn ic5d.a = ic1c.q ic5d.b = ic8b.qn ic6a.a = ic1a.q ic6a.b = ic5d.q ic6b.a = ic5d.q ic6b.b = ic2.q1 ic6c.a = ic2.q0 ic6c.b = ic5d.q ic6d.a = code2 ic6d.b = ic2.q2 ic7a.reset = True ic7a.trigger = ic5d.q ic7b.reset = code1 ic7b.trigger = ic6d.q ic8b.reset = True ic8b.trigger = ic5c.q ic9a.a = ic2.q0 ic9a.b = ic3.q0 ic9b.a = ic4.q0 ic9b.b = ic2.q1 ic9c.a = False ic9c.b = False ic9d.a = False ic9d.b = False

ic1a.tick() ic1b.tick() ic1c.tick() ic1d.tick() ic1e.tick() ic1f.tick() ic2.tick() ic3.tick() ic4.tick() ic5a.tick() ic5b.tick() ic5c.tick() ic5d.tick() ic6a.tick() ic6b.tick() ic6c.tick() ic6d.tick() ic7a.tick() ic7b.tick() ic8b.tick() ic9a.tick() ic9b.tick() ic9c.tick() ic9d.tick()

kLed.onState = ic6a.q rLed.onState = ic7b.q End Sub End Class

Der Vollständigkeit halber noch die beiden anderen ICs:

Public Class Monoflop Private delay As Integer Private resetCounter As Integer Private retriggerable As Integer Private _q As Boolean = False Private _qn As Boolean = True Private _oldTrigger As Boolean = False Private _trigger As Boolean = False Private _reset As Boolean = True

Public Sub New(ByVal _delay As Integer, ByVal _retriggerable As Boolean) delay = _delay retriggerable = _retriggerable resetCounter = 0 End Sub

Public WriteOnly Property trigger() As Boolean Set(ByVal value As Boolean) _trigger = value End Set End Property

Public WriteOnly Property reset() As Boolean Set(ByVal value As Boolean) _reset = value End Set End Property

Public ReadOnly Property q() As Boolean Get q = _q End Get End Property

Public ReadOnly Property qn() As Boolean Get qn = _qn End Get End Property

Public Sub tick() If retriggerable Then If Not _oldTrigger And _trigger Then resetCounter = delay End If Else If Not _q Then If Not _oldTrigger And _trigger Then resetCounter = delay End If End If End If If resetCounter > 0 Then resetCounter = resetCounter - 100 _q = True Else _q = False End If If resetCounter < 0 Then resetCounter = 0 End If If Not _reset Then _q = False End If _qn = Not _q _oldTrigger = _trigger End Sub End Class

Public Class DecimalCounter Private _res As Boolean = False Private _clk As Boolean = False Private _ena As Boolean = False Private _q0 As Boolean = False Private _q1 As Boolean = False Private _q2 As Boolean = False Private _q3 As Boolean = False Private _q4 As Boolean = False Private _q5 As Boolean = False Private _q6 As Boolean = False Private _q7 As Boolean = False Private _q8 As Boolean = False Private _q9 As Boolean = False Private counter As Integer = 0 Private oldClk As Boolean = False

Public Sub tick() If _res Then counter = 0 Else If Not oldClk And _clk Then If Not _ena Then counter = counter + 1 End If If counter = 10 Then counter = 0 End If End If End If _q0 = False _q1 = False _q2 = False _q3 = False _q4 = False _q5 = False _q6 = False _q7 = False _q8 = False _q9 = False Select Case counter Case 0 _q0 = True Case 1 _q1 = True Case 2 _q2 = True Case 3 _q3 = True Case 4 _q4 = True Case 5 _q5 = True Case 6 _q6 = True Case 7 _q7 = True Case 8 _q8 = True Case 9 _q9 = True End Select oldClk = _clk End Sub

Public WriteOnly Property res() As Boolean Set(ByVal value As Boolean) _res = value End Set End Property

Public WriteOnly Property clk() As Boolean Set(ByVal value As Boolean) _clk = value End Set End Property

Public WriteOnly Property ena() As Boolean Set(ByVal value As Boolean) _ena = value End Set End Property

Public ReadOnly Property q0() As Integer Get q0 = _q0 End Get End Property

Public ReadOnly Property q1() As Integer Get q1 = _q1 End Get End Property

Public ReadOnly Property q2() As Integer Get q2 = _q2 End Get End Property

Public ReadOnly Property q3() As Integer Get q3 = _q3 End Get End Property

Public ReadOnly Property q4() As Integer Get q4 = _q4 End Get End Property

Public ReadOnly Property q5() As Integer Get q5 = _q5 End Get End Property

Public ReadOnly Property q6() As Integer Get q6 = _q6 End Get End Property

Public ReadOnly Property q7() As Integer Get q7 = _q7 End Get End Property

Public ReadOnly Property q8() As Integer Get q8 = _q8 End Get End Property

Public ReadOnly Property q9() As Integer Get q9 = _q9 End Get End Property

Public ReadOnly Property _counter() As Integer Get _counter = counter End Get End Property End Class

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Ist aber fuer einen Elektronikhersteller reichlich unprofessionell. Burggrabentunken sollte auch fuer Marketingleute hilfreich sein ;-)

[...]

Aber nein, da wird erstmal ein fettes RTOS aufgespult. Dazu braucht es aber erstmal ordentlich externes RAM, den dicksten verfuegbaren uC, einen Luefter und automatische Abschaltung, wenn die Aussentemperatur

20C uebersteigt ;-)
--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Joerg schrieb:

Und dann endet es so:

;-)

Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.com.ar/
PGP/GnuPG-Key-ID: 0x6DA025CA
Reply to
Christian Zietz

Harald Wilhelms schrieb:

Hallo,

aber bei der Zahl von verblichenen Päpsten führt der Vatikan seit langem und kann auch in diesem Jahrtausend kaum überboten werden. ;-)

Bye

Reply to
Uwe Hercksen

-------

Da fehlt noch der Teil für die Exemplarstreunungen sowie die parasitären Überraschungen ;-)

--
mfg hdw
Reply to
horst-d.winzler

"G. de Gerloch" schrieb im Newsbeitrag news:g5nqvc$rc4$01$ snipped-for-privacy@news.t-online.com...

Vor einiger Zeit hatte ein ähnliches Problem zu lösen. Dabei ging es darum, dass von aussen ein Garagentoröffner auch ohne Funk-Fernbedienung, Transponder oder ähnliches durch berechtigte Personen betätigt werden kann. Leider fehlt mir gerade die Zeit, um diesen Thread komplett zu studieren, aber meine Lösung kann ich dir kurz erklären. Vielleicht ist der Ansatz ja für deine Zwecke brauchbar.

Im Bereich der Garagenauffahrt habe ich einen ganz normalen Lichttaster angebracht und ihn via Steuerleitung mit der µC-Schaltung verbunden, die innerhalb der Garage installiert ist. (Ein vorhandener Klingelknopf, Lichtschalter/-taster wäre natürlich auch geeignet)

Der µC wertet die Tasterbetätigungen aus und schaltet entsprechend drei Relais:

1.) Schließer-R1 überträgt 1:1 die Tasteraktionen (wäre z.B. als Klingelknopf zu nutzen) 2.) Jeder Tastendruck triggert einen Timer, der R2 für 10 Minuten ansteuert (Lichtautomatik) 3.) Wird eine definierbare (DIP-Schalter 4-polig) Tastenfolge (z.B. kurz - kurz - lang - kurz) eingetastet, wird R3 für 5 Sekunden aktiviert. (kurz =500ms). (R3 würde in deinem Fall den Türöffner bedienen)

Entprellung, Sicherstellung definierter Einschaltzustande (nach Stromausfall) etc. sind komplett integriert. Die gesamte Schaltung besteht aus einem PIC 16F628, einem DIP-Schalter, einem ULN2803 als Leistungstreiber und den Relais und der Spannungsversorgung (Steckernetzteil)

Ein paar Gedanken zur Sicherheit:

- unauffälliger und funktionsfähiger Lichttaster Taster oder Klingelknopf, hinter dem man - anders als bei Ziffernterminals - kein Zugangskontrollsystem vermutet. Und keine Gebrauchsspuren auf den Ziffern.

- Anzahl der notwendigen Codes unbekannt.

- Nach 3-maliger Fehleingabe erfolgt eine 5-minütige Sperre von R3

Das System werkelt seit ca. 8 Monaten ohne Störung. Bei Interesse kannst du dich gern melden.

Gruß Franz

Reply to
Franz Herrmann

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.