Pages: [1] 2   Go Down
Author Topic: Türöffner auslösen wenn 3 mal klingeln  (Read 2836 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

ich will dass unser Türöffner automatisch öffnet, sobald jemand innerhalb von 2 Sekunden 3 mal klingelt. Der Code (sketch) ist kein Problem für mich. Eher was ich dann triggern muss wenn die Bedingungen zutreffen.

Es handelt sich um eine ganz normale Klingelanlage mit Gegensprechfunktion. Ich hatte mir das eigentlich ganz einfach gedacht, der Klingelknopf wird gleichzeitig mit dem Arduino als Input verbunden. Wenn dann dreimal ein Signal innerhalb von 2 Sekunden rein kam, würde ich über einen digitalen Ouput das auslösen des "Türöffner-Summer-Knopfes" triggern.

Und genau da ist jetzt die Frage, wie? Dazu braucht man dann sicher ein Relais oder? Was würde sich da anbieten?

Fällt euch auf anhieb irgendetwas auf wo ich auf Probleme stoßen könnte? Da es eine wohnung im Miethaus ist würde ich ungern die ganze Anlage zerschießen.

Über Anregungen würde ich mich freuen!

Viele Grüße
Andi
Logged

Offline Offline
Edison Member
*
Karma: 39
Posts: 1174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die meisten Klingelanlagen arbeiten mit Wechselspannung.

Wenn du die direkt auf den Arduino legst wirst du den töten.

Du mußt das Eingangssignal zuerst gleichrichten (diode), dann glätten (kondensator) und auf Arduino taugliche Werte runterteilen (Spannungsteiler) und sicherheitshalber noch eine Z-Diode zum Schutz.
Der Ausgang, wie du schon richtig geschreiben hast, über ein Relais.
Logged

Grüße
Gunther

Karlsruhe
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Andi1982,

eventuell kann ich dir als "alter Postler" weiterhelfen. Gibt es zu der Gegensprechstelle ein Typenschild und/ oder Name (Bezeichnung)? Vor DIREKTEN Eingriffen in die Anlage sei gewarnt ... schlimmstenfalls ist der Kauf einer neuen nötig - zudem können durch äußere Einwirkungen der Arduino (und somit DEINE Arduino-Anlage) zerstört werden. Zur Potentialtrennung zwischen beiden ist also mindestens ein Relais nötig, eventuell kann das Signal auch "direkt" in der Sprechanlage abgenommen werden.

Mit Gruß aus Badisch-Landen
Michel


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey,

danke für die schnelle Antwort. Es war wohl etwas zu naiv zu glauben dass der Klingelknopf wirklich nur ein Knopf ist der durchschaltet oder auch nicht. Hast du einen Link für ein Relais?
Logged

Offline Offline
Edison Member
*
Karma: 39
Posts: 1174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey,

danke für die schnelle Antwort. Es war wohl etwas zu naiv zu glauben dass der Klingelknopf wirklich nur ein Knopf ist der durchschaltet oder auch nicht. Hast du einen Link für ein Relais?

Manchmal hilft Google

Und hier hat das jemand schonmal gelöst:
http://www.mikrocontroller.net/topic/269913

und es gibt auch fertige Module mit Relais zu kaufen:
2 Kanal 5V Relais Module
Logged

Grüße
Gunther

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also,

ich habe das ganze jetzt mal auf einem Steckbrett simuliert. Als "Klingelschalter" habe ich nun erstmal einen push-button benutzt der über einen Digital-Pin eingelesen wird. Bei drei mal drücken innerhalb von 2 Sekunden wird dann über einen anderen Digital-Pin ein Relais (JRC-21F 5VDC / 220VAC 3A) geschalten. Das funktioniert auf dem Steckbrett alles bestens.

Nun habe ich mir Gedanken gemacht wie ich den Push-Button durch das Schaltsignal an der Sprechanlage ersetzen kann. Das ganze ist ja eigentlich ein anderer Stromkreis den ich eigentlich nicht unterbrechen will. ich möchte ja nur das Signal abfangen wenn in dem Stromkreis strom fließt und dem Aruino über ein Digital-Pin mitteilen dass da jetzt was rein kommt.

Kann ich mich in den Stromkreis der Türklingel einfach parallel schalten mit Diode und Spannungsteiler um dann in den Pin des Arduinos gehen?

Gruß
Andi
Logged

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3495
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Optokoppler + Vorwiderstand. Danach ein Tiefpass mit ausreichend großer Zeitkonstante. Den Tiefpass kann man auch in Software abbilden (z.B. wie hier: http://blog.blinkenlight.net/experiments/dcf77/binary-clock/).

Ggf. musst Du mit der Auslöseschwelle etwas spielen, also statt dem Originalcode eher so:

Code:
void low_pass_filter() {
    // http://en.wikipedia.org/wiki/Low-pass_filter#Continuous-time_low-pass_filters
 
    // I will use fixed point arithmetics with 5 decimals
    const uint16_t decimal_offset = 10000;
    static uint32_t smoothed = 0*decimal_offset;
 
    const uint32_t input = digitalRead(sample_pin) * decimal_offset;
 
    // compute N such that the smoothed signal will always reach 50% of
    // the input after at most 50 samples (=50ms).
    // N = 1 / (1- 2^-(1/50)) = 72.635907286
    const uint16_t N = 72;
    smoothed = ((N-1) * smoothed + input) / N;
 
    // introduce some hysteresis
    static uint8_t square_wave_output = 0;
 
    if ((square_wave_output == 0) == (smoothed >= decimal_offset/3)) {
        // smoothed value more >= 33%
        // ==> switch output
        square_wave_output = 1-square_wave_output;
        // ==> max the smoothed value in order to introduce some
        //     hysteresis, this also ensures that there is no
        //     "infinite memory"
        smoothed = square_wave_output? decimal_offset: 0;
    }
 
    digitalWrite(filtered_pin, square_wave_output);   
}

In Hardware brauchst Du stattdessen einfach einen Kondensator und einen Widerstand. Wie man die Zeitkonstanten ausrechnet findest Du im Netz ("RC Filter").
Logged

Check out my experiments http://blog.blinkenlight.net

Offline Offline
Edison Member
*
Karma: 39
Posts: 1174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kann ich mich in den Stromkreis der Türklingel einfach parallel schalten mit Diode und Spannungsteiler um dann in den Pin des Arduinos gehen?

ja, kannst du.

die beiden Drähte, die an der Kingel angeschlossen sind kanst du einfach anzapfen.
Dann, wie du geschrieben hast, mit Diode gleichrichten und über Spannungsteiler runterteilen.
Unbedingt nötig: Kondensatur zum glätten, sonst kriegst du alle 20ms einen Puls (Weil Wechselspannung)
Sehr empfehlenswert: Eine Z-Diode, um den Arduino zu schützen.

sicherer ist der von Udo vorgeschlagene Optokoppler, der braucht aber die gleiche Eingangsspannung wie der Arduino.
Logged

Grüße
Gunther

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
der braucht aber die gleiche Eingangsspannung wie der Arduino

Nicht ganz richtig:
Ein Optokoppler ist eingangsseitig eine LED, käme also auch mit weniger aus als der Arduino, verträgt aber auch bei entsprechendem Vorwiderstand mehr als der Arduino. Ein Klingeltrafo liefert eigentlich immer genug/zuviel Spannung für den Arduino direkt.

Einen Optokoppler kannst du ausgangsseitig als "Open Collector" direkt an den Input-Pin mit internem Pullup anschliessen.

Die 50 Hz Pulse kannst du auch ausnutzen, um zu zählen, wie lang die Klingel gedrückt wurde. Das vereinfacht die elektrische Seite, und ob du millis() oder 20millis Einheiten benutzt, ist ja praktisch egal.


Das Problem ist eher die zulässige Sperrspannung der Opto-LED --> Die erwähnte Diode (oder eine echte LED, dann sieht man auch was) antiparallel.

Nachtrag: s. Bild.


* EasyOpto.PNG (5.35 KB, 513x236 - viewed 269 times.)
« Last Edit: May 21, 2013, 04:43:12 am by michael_x » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke michael_x für die Zeichnung, das macht es schon viel einfacher für mich. Anfangs habe ich nur Bahnhof verstanden als der  Optokoppler ins Spiel kam.

Ich habe das mit dem Signal aus einem anderen Stromkreis jetzt mal ganz schlicht versucht zu simulieren auf dem Steckbrett. Dazu habe ich einen 9V-Stromkreis (gleichstrom) mit einer LED, Pushbutton und Vorwiderstand aufgesetzt.

Vom PushButton geht dann noch eine Leitung zum Digitalen-Eingangspin des Arduinos.

Das sollte einfach nur mal zum Ausprobieren sein. Aber wenn ich mir mal im Serial-Monitor anzeigen lasse was da so rein kommt über den Pin, dann sehe ich ganz viele 1 und 0 abwechselnd. Muss ich da noch irgendwas zum GRND des Arduinos legen? Also eine Art pulldown-Widerstand?

Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tasten prellen
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ne das war kein prellen, sonst hätte nach spätestens einer Sekunde drücken ein vernünftiges Signal kommen müssen. Aber die 0 und 1 kam auch wenn garnicht gedrückt wurde. Ich nehm heute mittag wenn ich zu Hause bin mal einen Widerstand zu Ground mit rein. Vielleicht bringt das dann was:

Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Normalerweise verbindet man den Minus einer Batterie mit GND. Die + 9V sind aber zuviel für den Arduino.

Ich würde den R1 z.B. in einen 470 Ohm und einen 220 Ohm Widerstand aufteilen.
Also 9V Batterie + an 470 an (x) an 220 an LED + und LED - mit Batterie - and GND.
Wenn die LED ca.2V Spannungsabfall hat, teilen sich die restlichen 7 V ca 5 : 2 auf.
An (x) ist dann etwas mehr als 4V, das ist genau richtig für den Arduino.

So wie du es vorher hattest, war das Ganze ohne GND- Verbindung, d.h. mehr eine Antenne für irgendwas.
Sorry, hab ich nicht genau hingeguckt...


Der LED2 fehlt auch ein Vorwiderstand!
« Last Edit: May 21, 2013, 06:57:21 am by michael_x » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke michael_x,

das model mit dem 9V Stromkreis durchschalten hat wunderbar funktioniert.

Nun habe ich an der Türklingel gemessen, da kommen 13,8V Wechselstrom an. Diese müsste ich gleichrichten und auf die knapp über 4V herunterbrechen. Ich habe das mit PSPice probiert zu simulieren. Dazu eine Diode und einen Kondensator genommen:



R2 ist quasi die Türklingel, da hätte ich mich dran gehängt.

Mit diesem Beispiel bin zwar bei Gleichstrom angekommen, aber knapp über 13V. Ich habe nun auch schon mit verschiedenen Widerständen herumgespielt (vor der Diode, hinter der Diode, vor dem Kondensator, usw.). Ich glaube ich stehe nun einfach auf dem Schlauch.

Wie müsste ich hier eingreifen um rechts bei 4,x V herauszukommen und dennoch einigermaßen geglättete Kurven zu haben?

Gruß
Andi
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na, mit einem Spannungsteiler. Der darf bei dir natürlich nicht deine 13V peak dritteln, sondern muss auf den Effektivwert einer Halbwellen-Gleichrichtung angepasst sein.

( oder -- mit LTspice -- hinfummeln: statt 1/3 der Eingangsspannung (2:1 teilen)  eher 2/3 (also 1:2 teilen ) )


Kannst auch 2 Kondensatoren nehmen, ich würde es allerdings ganz ohne machen und eher per Software prüfen: wenn seit 50 msec kein Puls mehr kommt, ist die Klingel aus.

Noch ein Nachtrag: 4.8 oder 5.1 V Zenerdiode parallel zum Kondensator, wie gunther empfohlen hat...


* Spannungsteiler.JPG (54.5 KB, 720x517 - viewed 222 times.)
« Last Edit: May 23, 2013, 05:18:55 pm by michael_x » Logged

Pages: [1] 2   Go Up
Jump to: