Hallo,
Ich stehe vor folgendem Problem, zwei Taster sollen an "einen" Port des
Raspberry Pi und dieser soll auswerten welcher Taster gedrückt wurde.
Ich dachte mir, vielleicht gibt es einen IC, an welchem man mehrere
Schalter anschließen kann und der dann auswertet, welcher gerade
gedrückt wurde und dann einen codierten Wert an den Raspi schickt. Gibt
es solch einen IC oder bin ich auf dem Holzweg und man löst das Problem
auf andere Art eleganter? Für eure Antworten und Bemühungen danke ich
bereits im Voraus.
MfG
Simon
Kann man z.Bsp. mit ADC (MCP3204 oder MCP3208 oder MCP3004/MCP3008) und
ein paar Widerständen machen: R2R-Netzwerk.
Bin mir aber nicht sicher was die Anforderung ist; nur ein Kabel oder
nur einen Pin benutzen?
AD-Wandler für arme Leute.
Ein Pullup am Port, hochohmig, 100kOhm.
Jeder Taster schaltet einen Kondensator nach Masse an diesem Port, 10nF
und 20nF als Beispiel.
0 ausgeben, sofort auf Eingang schalten und warten, bis 1 gelesen wird.
1 ist sofort da: Kein Taster betätigt.
1 ist nach wenigen Zyklen da: 10nF-Taster ist betätigt.
Es dauert länger, bis die 1 kommt: 20nF-Taster ist betätigt.
Es dauert noch länger: Beide Taster sind betätigt.
Simon schrieb:> Ich dachte mir, vielleicht gibt es einen IC, an welchem man mehrere> Schalter anschließen kann und der dann auswertet, welcher gerade> gedrückt wurde und dann einen codierten Wert an den Raspi schickt.
Wie wäre es mit zwei Dioden? Das sind auch nur vier Beine zu löten.
Joe F. schrieb:> Details bitte.
Wenn der Strom "links" rum durchs Kabel fließt, wird über die eine Diode
in Serie zum Taster 1 der Zustand von Taster 1 abgefragt, wenn der Strom
"rechts" rum fließt, entsprechend über die zweite Diode der Taster 2.
Andere Mögliochkeit: 3-adriges Kabel verwenden ...
Wolfgang schrieb:> Wenn der Strom "links" rum durchs Kabel fließt
(...)
Bist du sicher, dass du gerade im richtigen Thread postest?
Wie soll denn das alles mit einem Port-Pin funktionieren?
Wolfgang schrieb:> Joe F. schrieb:>> Details bitte.>> Wenn der Strom "links" rum durchs Kabel fließt, wird über die eine Diode> in Serie zum Taster 1 der Zustand von Taster 1 abgefragt, wenn der Strom> "rechts" rum fließt, entsprechend über die zweite Diode der Taster 2.>> Andere Mögliochkeit: 3-adriges Kabel verwenden ...
Da lohnt sich ignorieren mehr als zu antworten.
Joe F. schrieb:> Wie soll denn das alles mit einem Port-Pin funktionieren?
"ein Port-Pin" wirfst du hier erstmals in die Runde.
Vielleicht sollte man erstmal ein paar Grundlagen klären.
- Geht es nun um einen Port oder um einen einzelnen Port-Pin
- Wieviele Adern hat das Kabel?
högli schrieb:> Da lohnt sich ignorieren mehr als zu antworten.
Sorry, wenn ich dich mit der Kurzbeschreibung etwas überfordert habe ...
Wolfgang schrieb:> Joe F. schrieb:>> Details bitte.>> Wenn der Strom "links" rum durchs Kabel fließt, wird über die eine Diode> in Serie zum Taster 1 der Zustand von Taster 1 abgefragt, wenn der Strom> "rechts" rum fließt, entsprechend über die zweite Diode der Taster 2.>> Andere Mögliochkeit: 3-adriges Kabel verwenden ...
Versuch das mal aufzubauen. ^^
Nette idee, aber so geht es leider nicht. Das wirst du in dem Moment
merken indem du es mal aufzeichnest und durchspielst.
die beiden besten Vorschläge sind bislang:
Analogwert lesen oder ohne ADC das Zeitverhalten beobachten.
Wolfgang schrieb:>> Wie soll denn das alles mit einem Port-Pin funktionieren?> "ein Port-Pin" wirfst du hier erstmals in die Runde.
Ok, das wörtliche PIN hat gefehlt, aber bei einem Port mit mehreren Bits
ist die Aufgabe ohne Witz.
Carsten R. schrieb:> Nette idee, aber so geht es leider nicht. Das wirst du in dem Moment> merken indem du es mal aufzeichnest und durchspielst.
Und warum nicht? Spiel das mal durch.
Abfrage Taster 1:
GPIO2 als Ausgang auf Low, Pegel GPIO1 lesen
Abfrage Taster 2:
GPIO1 als Ausgang auf Low, Pegel GPIO2 lesen
Das ganze nennt sich dann Zeitmultiplex
@Simon
Warum sollen mehrere Taster an einen Pin?
Hast du nur noch einen Pin frei oder geht es darum sich eine Leitung zu
teilen? Je nachdem eröffnet dieses weitere Alternativen.
Carsten R. schrieb:> Ok, das wörtliche PIN hat gefehlt, aber bei einem Port mit mehreren Bits> ist die Aufgabe ohne Witz.
Das kommt auf die Zahl der Adern im Kabel an.
Je wabeliger die Frage gestellt ist, um so mehr Irrläufer entstehen.
Hallo,
wow ich bin begeistert, in welch kurzer Zeit so viele konstruktive
Antworten gepostet wurden. Nochmals vielen Dank.
@Soeren Die MCP AD-Wandler hatte ich auch schon entdeckt, deren
Anbindung an den Raspi funktioniert aber nur über SPI, welcher mehr als
ein Kabel voraussetzt. Trotzdem Danke.
@Georg Dein AD-Wandler für arme Leute sollte so wirklich funktionieren,
dass werde ich mir mal näher anschauen.
@Joe Wie konnte ich nur den NE555 vergessen? Damit sollte es auf jeden
Fall funktionieren und scheint mir die "schönste" Lösung zu sein. Vielen
Dank
@Wolfgang hier muss ich mich den anderen anschließen, ich verstehe die
deinen Ansatz mit zwei Dioden nicht wirklich. Trotzdem auch dir vielen
Dank
MfG
Simon
Simon schrieb:> Ich stehe vor folgendem Problem, zwei Taster sollen an "einen" Port des> Raspberry Pi und dieser soll auswerten welcher Taster gedrückt wurde.
@Wolfgang
Du bist anscheinend der einzige hier, der "zwei" Portpins gelesen hat.
@Wolfgang
Da stimme ich dir völlig zu, darum auch meine Frage nach dem Warum?
Was das andere betrifft, so haben wir aneinander vorbeigeredet. Du
benutzt zwei Pins.
@ Simon
Das Warum ist noch immer offen. Ich kann nur aus dem Zusammenhang
erraten, daß du nur noch einen Pin am Raspi frei hast.
@Carsten,
es geht um zwei Klingeltaster welche ihr Signal an den Raspi schicken
sollen. Ich hab leider nicht die Möglichkeit einen weiteren Klingeldraht
zu verlegen ohne das halbe Haus ein zu reißen.
Simon schrieb:> es geht um zwei Klingeltaster welche ihr Signal an den Raspi schicken> sollen. Ich hab leider nicht die Möglichkeit einen weiteren Klingeldraht> zu verlegen ohne das halbe Haus ein zu reißen.
Hihi, Wolfgang kann als einziger hellsehen...
Bashing einstellen!
Das ist eben der Knackpunkt. Wie viele Adern hat das Kabel, der
Klingeldraht?
Aus Wikipedia: "Als Kabel wird allgemein ein mit Isolierstoffen
ummantelter ein- oder mehradriger Verbund von Adern (Einzelleitungen)
bezeichnet, welcher der Übertragung von Energie oder Information dient."
"Draht ist in der Regel dünn, lang und biegsam geformtes Metall oder
Kunststoff mit oft kreisförmigem Querschnitt. " - Also eine einzelne
Ader.
Ich weiß, dass vermutlich wieder einige Besserwisser, Egomanen und
Glaskugelbesitzer behaupten werden, dass völlig klar ist, was sie
persönlich vermutet oder geraten haben. Aber es bleibt der Fakt, dass
die Darstellung mindestens widersprüchlich, eher aber unvollständig ist.
Was den TO angeht, kann man ihm das eigentlich nicht vorwerfen. Da kann
man sich schon mal irren und annehmen, dass die Bezeichnung bezüglich
der relevanten Fakten eindeutig ist. Aber das ist sie nicht.
Simon schrieb:> es geht um zwei Klingeltaster welche ihr Signal an den Raspi schicken> sollen. Ich hab leider nicht die Möglichkeit einen weiteren Klingeldraht> zu verlegen
So langsam kommt doch Licht ins Dunkel ;-)
Simon schrieb:> @Wolfgang hier muss ich mich den anderen anschließen, ich verstehe die> deinen Ansatz mit zwei Dioden nicht wirklich.
Die Sache mit den Dioden funktioniert so, dass derselbe Draht
nacheinander für zwei verschiedene Stromrichtungen benutzt wird. Über
die Dioden wird jeder Stromrichtung einer der beiden Taster zugeordnet.
Der Raspberry läßt durch Schalterei an zwei GPIO-Pins abwechselnd den
Strom in der einen oder anderen Richtung fließen und guckt dabei den
Pegel am anderen der beiden Port-Pins an (wie bei Anfrage eines
Einzeltasters). Damit fragt man dann unter Verwendung eine 2-adrigen
Kabels beide Taster immer abwechselnd ab.
ok, ich hab mich da wirklich unklar ausgedrückt. Das Wort Kabel ist in
dem Zusammenhang wirklich schlecht gewählt. Um es jetzt eindeutig zu
machen:Es handelt sich um eine Ader die ich zur Verfügung habe.
Mit einer Ader alleine kann aber kein Strom fließen. Dazu wird auf jeden
Fall ein Bezugspunkt benötigt (GND). Du meinst vermutlich eine
Signal-Ader und dazu eine Masse-Ader. Richtig?
Simon schrieb:> ok, ich hab mich da wirklich unklar ausgedrückt. Das Wort Kabel ist in> dem Zusammenhang wirklich schlecht gewählt. Um es jetzt eindeutig zu> machen:Es handelt sich um eine Ader die ich zur Verfügung habe.
Hm. Bist Du da GANZ sicher?
Falls ja, dann gibt es keine Lösung, denn mit nur einer leitenden
Verbindung kannst Du keinen Stromkreis herstellen.
Schau Dir bitte mal das oberste Bild in dem Artikel
https://de.wikipedia.org/wiki/Stromkreis an. Dort siehst Du drei
Adern. Eine zwischen der Spannungsquelle und der Lampe, eine zweite
zwischen der Lampe und dem Schalter und die dritte zwischen Schalter und
Spannungsquelle.
Denke Dir die Lampe als Klingel. Den Schalter als Klingeltaster. Denke
Dir die Spannungsquelle und die Klingel nahe beieinander (etwas einige
Zentimeter bis zu einem Meter, wie es häufig in Wohnungen der Fall ist).
Dann ist die eine Verbindung zwischen Klingel und Spannungsquelle ebenso
kurz. Dennoch hast Du zwei Adern zum Schalter. Eine von der
Spannungsquelle zum Taster. Eine zweite vom Taster zur Klingel. Diese
beiden führen meistens bis in Deine Wohnung.
Ist das bei Dir so? Oder anders?
An sich wäre eine Ader auch unüblich für eine Verkabelung, die
zwischen Klingel und Klingeltaster besteht (oder bestanden hat).
Andererseits ist es auch nicht ausgeschlossen, dass die zweite
Verbindung für Dich nur an den Endpunkten zugänglich ist und auf einem
Potential liegt. Wo ist denn der Klingeltrafo? Wo die Klingel?
Gut. Dann ist Wolfgangs Lösung die einfachste und für einen Anfänger
auch leicht zu verstehen. Brauchst Du zu der Lösung noch weitere
Erklärungen? Dann frage bitte.
Mit 2 Adern geht's selbstverständlich auch mit ADC; der ADC sitzt dann
einfach am Raspberry. Der neue analoge Eingang (du hast dann übrigens
noch 3 oder 7 übrig für andere Sachen) bekommt dann z.Bsp. 1.5V oder 3V,
je nach Wahl deines R2R Netzwerk.
Zweifellos funktioniert es auch mit einem AD-Wandler und R2R-Netzwerk.
Einem Anfänger aber ist es vielleicht nützlich, wenn er die potentiellen
Schwierigkeiten und die notwendigen Schritte vergleichen kann.
1. Wolfgangs Lösung
a) Schaltplan kann einfach nachgebaut werden.
b) Zum Verständnis und Implementierung der Funktion ist die Kontrolle
der Port-Richtungen sowie die Funktionsweise von Dioden notwendig.
c) Kabelverbindungen sind an sich nicht perfekt. Die Toleranz der
Eingänge mit der High und Low unterschieden werden spielt eine Rolle.
(Siehe unten bei Sörens Lösung). Leitungslänge spielt bei den üblichen
Längen fast keine Rolle.
2. Sörens Lösung
a) Schaltplan ist "komplizierter". Je nach Erfahrung wird evtl. eine
Schwelle überschritten, die kein Verständnis mehr erlaubt.
b) Neben der Port-Kontrolle ist auch die AD-Wandlung zu implementieren
(hat der Pi einen AD-Wandler? Keine Ahnung) und/oder die Schnittstelle
zu dem Wandler sowie die Berechnung des R2R-Netzwerkes (dazu gibt es
allerdings auch Applets im Netz).
c) Je nach Auslegung des R2R-Netzwerkes kann man den Einfluss von
imperfekten Kabelverbindungen verringern. In dem man höhere Ströme
fliessen lässt. Aber dazu muss man wissen was man tut. Leitungslänge
begrenzt aber den Spielraum.
Ich will mich hier nicht für eine der beiden Lösungen aussprechen.
Mindestens aber wollte ich einen Eindruck vermitteln was die
Unterschiede sind.
Isolator schrieb:> Ich will mich hier nicht für eine der beiden Lösungen aussprechen.> Mindestens aber wollte ich einen Eindruck vermitteln was die> Unterschiede sind.
Danke für deine ausführliche Antwort für ihn! Klar ist Wolfgangs Lösung
einfacher, ich wollte meine nur auch noch einmal für ihn ausführen.
Eine weitere Frage, die sich mir förmlich aufdrängt...
Was macht dann eigentlich der Raspberry Pi?
2 unterschiedliche Klingeln ansteuern?
Das könnte man (auf Wolfgangs Schaltung basierend) auch noch einfacher
haben... ;-)
ich bin der Suche auf diesen Beitrag gestoßen, denn ich habe ein
ähnliches Problem und bevor ich Wolfgangs-Dioden Lösung ausprobieren
wollte ich mir noch Expertenrat einholen.
Situation:
Ich habe am Haus einen Sickerschacht mit ein Tauchpumpe. Dorthin führt
ein 5-adriges Stromkabel (1,5mm^2) von denen 3 Adern die Pumpe mit Strom
versorgen. Ein weiters Kabel zu legen ist sehr auswändig und steht außer
Disskussion. Zudem herrscht in dem Schacht ein sehr
Elektronik-unfreundliches Klima (feucht) so das ich dort keine
zusätzliche Elektronik nebst Netzteil installieren möchte.
Die Leitung ist etwa 30m lang, die Tauchpumpe hat einen Nennleistung von
300W jedoch sicher einen höheren Anlaufstrom.
Nun möchste ich zwei Schwimmschalter im Schacht installieren:
1. Wasserstand unter dem Einschaltpunkt der Tauchpumpe
2. Wasserstand über dem Einschaltpunkt der Pumpe
Schalter 1 sagt mir ob überhaupt Wasser im Schacht vorhanden ist,
welches nicht von selbst versickert.
Schalter 2 sagt mit ob die Wassermenge entweder die Pumpenleistung
übersteigt oder wenn dauerhaft an ob die Pumpe evtl. defekt ist, oder
hängt.
Ein Raspberry PI soll diese beiden Signale auswerten und regelmäßig in
eine Datei zur Auswertung sichern.
Ich habe Bedenken bezüglich der Leitungslänge und dem induzierten Strom
auf die Steuerleitung, wenn die Pumpe anspringt.
Auf Seite des Raspi sind noch min 3 GPIOs frei und dort liesse sich auch
eine aufwändigere Schaltung (24V ist vorhanden) mit Optokopplern zu
galvanischen Trennung aufbauen.
Ideal wäre noch ein 3ter Schwimmschalter, der sich zwischen
Aus-/Einschaltpunkt der Pumpe befindet und anhand dessen sich auf die
Einschaltdauer der Pumpe schliessen lässt.
Es muss aber alles über 2 Drähte...
Danke für die Tipps und Grüße
vdb
Ich weiss nicht ob Du jetzt nen neuen Thread aufgemacht hast, aber
letztendlich ist doch Dein Problem ganz einfach, sofern Deine
Schwimmerschalter für 230V zugelasen sind
- die Pumpe hat L, N und PE, sicher wird nur L geschaltet, N ist also
immer vorhanden
- die beiden Schwimmerschalter an N, dann die beiden geschaltete N über
die freien Adern zurück
- im Haus 2 Kleine Trafos zwischen L und den geschalteten N,
Sekundärseitig dann zum Raspi