Go Down

Topic: Wie auslesen ob Strom an der 12V Schiene anliegt? (Read 6005 times) previous topic - next topic

rancor187

Hallo,

ich habe einen Funkmeldeempfänger mit Dockingstation, an der Dockingstation hängt eine kleine Sirene (12,7 V/DC mit DMM gemessen), die im Falle eines Alarms ausgelöst wird. Die Sirene habe ich abgeklemmt, stattdessen soll über Arduino nun festgestellt werden ob Strom anliegt oder nicht. Im Prinzip ist der Aufbau ja wie ein Pushbutton aber das Problem liegt bei den 12V. Kann ich die iwie auf 5V wandeln? Im Netz habe ich Ansätze mit LM317 gefunden aber da gab's auch Nachteile. Oder wäre es einfacher mit einem Relais umzusetzen?

2. Die kleine Sirene ist ein Verbraucher und zieht daher Strom. Diese ist ja nun abgeklemmt, muss ich mir trotzdem sorgen machen, dass mehr als 40mA durch den digitalen Pin reinkommen können? Das Board kann doch nicht als Verbraucher angesehen werden oder? Will da natürlich nichts zerstören auf dem Board.

Ich denke an der Art meiner Fragen habt ihr schon festgestellt, dass ich nicht aus der Elektrotechnik komme ^^
Danke für die Hilfe.

Gelegenheitsbastler

Dein Problem ist "Wie bekomme ich 12,7 Volt auf weniger als 5 Volt" Richtig?

Mach doch einen Spannungsteiler (2 Widerstände) dran. Damit gehst du dann in einen der analogen Eingänge. Oder du nimmst einen Festspannungsregler, der weniger als 5 Volt hat, z. B. 78L02.

Frank
Anfänger, der sich am Mega versucht. (Wegen Pin-Mangel bin ich vom Uno auf den Mega umgestiegen) Aktuelles Projekt: http://mfc-wittgenstein.

Serenifly


Damit gehst du dann in einen der analogen Eingänge.

Unnötig. Es reicht auch ein Digital-Eingang. Die brauchen nämlich gar nicht genau 5V um als HIGH erkannt zu werden.

Gelegenheitsbastler

Anfänger, der sich am Mega versucht. (Wegen Pin-Mangel bin ich vom Uno auf den Mega umgestiegen) Aktuelles Projekt: http://mfc-wittgenstein.

Manawyrm

Zunächst mal rein sicherheitstechnisch die Frage:
Du besitzt aber schon noch einen richtigen abgenommenen und garantiert funktionsfähigen Pager, oder?

Ich würde hier ebenfalls die Lösung mit dem 780* empfehlen, allerdings noch mit einem sehr großen Widerstand (10k oder so), wir wollen ja nur die Spannung messen (und mit dem Widerstand den Arduino schützen).
Ich hätte imho gerne noch nen paar mehr Infos zu dem BME, weil ich mir nicht sicher bin, ob da wirklich einfach DC anliegt, oder noch andere Dinge.

Meistens können DMMs das nicht so einfach messen.

Klaus_ww

Noch ne Empfehlung: nimm einen Optokoppler, dann bist Du in mehrfacher Hinsicht auf der sicheren Seite.
Freizeit-Programmierer mit moderatem Ehrgeiz besseren Code zu schreiben.

Serenifly


Das wusste ich nicht. Wieder was gelernt :)

Atmega328 Datenblatt Seite 313:

"Input High Voltage: min. 0.6 * Vcc", d.h. 3V

Maximal ist Vcc + 0.5V = 5.5V

rancor187

Hallo zusammen,

vielen Dank für die vielen Vorschläge. Viele Wege führen wohl nach Rom ^^
Ich werde mich in der kommenden Woche mal damit befassen.

Optokoppler kannte ich gar nicht, klingt auf jeden Fall nach einer interessanten Technik.


@Manawyrm: Der ist von Bosch und heißt "BOSCH FME 85" ist baugleich mit Swissphone re228

uwefed


Dein Problem ist "Wie bekomme ich 12,7 Volt auf weniger als 5 Volt" Richtig?

Mach doch einen Spannungsteiler (2 Widerstände) dran. Damit gehst du dann in einen der analogen Eingänge. Oder du nimmst einen Festspannungsregler, der weniger als 5 Volt hat, z. B. 78L02.

Frank


Der 78L02 ist nicht für 5V sondern gibt ca 2,5V.

Ein guter Vorschlag ist ein Optokoppler.
Grüße Uwe

rancor187

#9
Jul 20, 2013, 09:30 am Last Edit: Jul 20, 2013, 09:57 am by rancor187 Reason: 1
Hallo Leute,

habe einen 4N36 von einem Kumpel bekommen. Erst wusste ich nicht auf welcher Seite LED und Emitter/Collector waren, weil die Kerbe war nicht  unten oder oben sondern seitlich ^^

Auf der LED-Seite liegen 13,3V (schwankt wohl um 0,5V) mit einem 730Ohm Widerstand an. Beim Messen mit aktivem 4N36 werden daraus allerdings 1,15V und ich weiß nicht warum das so ist .... aber es funktioniert. Auf der Emitter/Collector kann der der Arduino seine eigenen 5V über einen Digitaleingang als HIGH auslesen, wenn Spannung auf der 12V Schiene liegt (10k Ohm Widerstand).

Auf dem Arduino läuft auch ein Ethernet-Server (EhternetShield W5100 [wohl nicht offiziell]) da ich die aktuelle Zeit und das Datum (über NTP Server) benötige. Den Arduino pinge ich während des Betriebs um zu schauen ob eine Verbindung besteht.

Trotz des Erfolgserlebnisses mit dem Optokoppler, kam es gestern zu Schwierigkeiten, deren Ursache ich noch nicht herausgefunden habe: Ping war auf einmal nicht mehr möglich, aber Arduino hat noch seine Schleife (in der er gerade war, die ging über 30Sek.) durchgeführt, dann hat er aber auch keine Befehle mehr entgegen genommen (z.B. Pushbutton, was vorher noch funktionierte).

Echt schade, dass alle Pins beim Shield durchgeschliffen werden, ich hoffe ich verwende keine Pins die vom Shield benötigt werden. Das offizielle Shield benötigt folgende Pins:


Quote
Der Arduino kommuniziert mit dem W5100-Chip und der SD-Karte über den SPI-Bus (über den integrierten ICSP-Anschluss auf den Platinen). Dieser liegt auf den digitalen Anschlüssen 11, 12 und 13 beim Arduino Duemilanove bzw. auf den Anschlüssen 50, 51 und 52 beim Arduino Mega.

Bei der SD-Karte setzt man dazu den Anschluss 4 als Ausgang und setzt ihn auf HIGH. Beim W5100-Chip setzt man dazu den Anschluss 10 als Ausgang und setzt ihn auf HIGH.

Ich benutze den Mega, wieso die Pins 50, 51 und 52 erwähnt werden ist mir schleierhaft, diese Pins werden vom Shield doch gar nicht berührt...?

Tja und gestern abend, konnte ich keinen Kontakt mehr mit Arduino aufnehmen. Die COM-Verbindung war weg und kam auch nicht zurück als ich ein paar mal USB abgezogen und wieder angesteckt habe. Auch blieben die LEDs auf dem Shield ausgeschaltet die normalerweise rot und grün werden.

Seit heute morgen habe ich wieder Kontakt. Vllt lag's auch am PC. Ich muss mal weiter teste...
P.S. Ich habe gerade bemerkt, dass sich Arduino neustartet sobald ich den SerialMonitor öffne, sehr strange ... :/


Vllt habt ihr ja eine Idee.
Auf jeden Fall wollte ich mich noch für die Sache mit dem Optokoppler bedanken :)



michael_x

Quote
P.S. Ich habe gerade bemerkt, dass sich Arduino neustartet sobald ich den SerialMonitor öffne, sehr strange


Willkommen im Club, das hast du gut gesehen ;)

Das hilft beim Hochladen neuer Sketche, wofür zunächst ein Reset erforderlich ist.
Wenn möglich, schreib deine Sketche so, dass ein gelegentlicher Reset nicht weiter stört.

Ansonsten kann man das auch verhindern, viel Spass beim googeln.




Und dass an einer LED von 13V nicht viel übrig bleibt, gilt genauso für einen Optokoppler ( mit z.B. nur 1,2V Vf ), für den Rest ist der Vorwiderstand da. Auch richtig gesehen ;)
Wenn der Open Collektor Ausgang des Optokopplers vom Pullup des Arduino betrieben wird, brauchst du auch nur einen minimalen Strom auf der Eingangs-Seite: dein 730 Ohm Widerstand könnte also auch höher sein, muss aber nicht. ( Kannst ja mal 4,7k ausprobieren, das sollte auch noch gehen. )

rancor187


Quote
P.S. Ich habe gerade bemerkt, dass sich Arduino neustartet sobald ich den SerialMonitor öffne, sehr strange


Willkommen im Club, das hast du gut gesehen ;)

Das hilft beim Hochladen neuer Sketche, wofür zunächst ein Reset erforderlich ist.
Wenn möglich, schreib deine Sketche so, dass ein gelegentlicher Reset nicht weiter stört.

Ansonsten kann man das auch verhindern, viel Spass beim googeln.

...


Danke für die Anwort.

Bezüglich der Resets: Sicher, dass wir von der gleichen Sache sprechen?
Dass ein Reset nach dem Upload eines Sketches passiert ist mir schon klar und ist ja auch nachvollziehbar.

Ich bezog mich allerdings auf Resets die passieren wenn ich nur den SerialMonitor öffne.
Ich möchte jetzt nicht meine Hand ins Feuer legen, aber ich bin mir sicher, dass das vorher nicht so war.

Schönen Sonntag

Klaus_ww

Du kannst Dir sicher sein, das war vorher auch so.
Freizeit-Programmierer mit moderatem Ehrgeiz besseren Code zu schreiben.

TERWI

Kleine Anmerkung zum Resetten:

Beim Serial Monitor ist mir das auch aufgefallen.

Dann hatte ich mir mal mit Delphi und der ComPort-Komponente so was wie nen kleines Terminal gebastelt.
Zunächst habe ich das aus dem Demo-Code genommen, weil es für erste Test sehr gut geeignet war und man kleine Erweiterung "on th fly" dazuschreiben konnte.
Auch dieses Terminal verursachte jedes Mal bei Aufbau der seriellen Verbindung einen Reset, was mich eigentlich nie wirklich (bisher) gestört hat.

Nun habe ich greade dabei, für mein MegaStepper-Projekt eine entsprechende Steuerungs-Soft zu schreiben - und benutze auch da die gleiche Komponente.
Ich bin mir sicher alles 1:1 kopiert zu haben - es funktioniert ja auch tadellos.
ABER:
In der "Konstellation" habe ich interessanterweise KEINEN Reset ! Ich bin bisher noch nicht drauf gekommen, warum.
To young to die - never to old for rock'n roll

michael_x

Meines Wissens kann man nicht verhindern, dass das Betriebssystem ( Windows oder Linux ) beim Öffnen eines Seriellen Ports erstmal dessen DTR Signal mindestens kurz auf 0 zieht. Das führt in der Regel bei einem Arduino zu dessen Reset ( um Uploads zu erleichtern ).

@TERWI: Kann es sein, dass dein Programm so früh Serial.Open ausführt, dass du entsprechende Anzeichen gar nicht siehst ?
Sonst würde es mich schon interessieren wie du es per PC Software hinkriegst, denn alles andere ( Harware-Modifikationen am Arduino, zumindest ein Kondensator am Reset Pin, der für Uploads wieder weg sollte ) ist doch so lästig, dass ich mich an den Reset notgedrungen gewöhnt habe. 

Go Up