Forum: Analoge Elektronik und Schaltungstechnik Bessere Lösung um 8 Öffner am Arduino auszulesen gesucht


von Frank B. (frank78)


Angehängte Dateien:

Lesenswert?

Hallo,

wie es im Betreff steht, hoffe ich, Ihr wisst eine bessere Lösung 
(bestimmt!). Stehe vor folgender Aufgabe:

Ein mechanisches Kinderspielzeug mit 8 Tasten (Bedienfeld einer 
Supermarkt Waage, siehe Foto) soll einen Arduino steuern (und 
interessante Aktionen auslösen).

1. Lösung: Der Einbau von 8 kleinen Tastern (Schließer = Schalter mit 
"normal aus") mit Bohrmaschine und Klebstoff ist möglich - aber etwas 
aufwendig und im Hinblick auf das Nutzungsverhalten eines Kindes nicht 
die favorisierte Lösung (dazu sogleich mehr).

2. Lösung: Die vorhandene Mechanik lässt sich mit wenig Aufwand (es 
reichen ein paar Drähte) dazu nutzen, aus den 8 Tastern Öffner (= 
Schalter mit "normal an") zu machen. (Schön für ein Kinderspielzeug ist 
an dieser Lösung auch, dass Tasten nicht ganz heruntergedrückt werden 
müssen, um eine Aktion auszulösen und dass auch bei starker und 
unsachgemäßer Beanspruchung keine kleinen Taster von möglicherweise 
fragwürdiger Qualität kaputtgemacht werden können.)

Was ist nun aber die beste Lösung, um das Öffnen eines Schalters am 
Arduino erkennen zu können?

8 separate Eingänge am Arduino zu nutzen, wäre natürlich möglich aber 
etwas schade, da mir dann Pins für die Aktionen fehlen, die ich mit den 
Tasten verknüpft will.

Was tun? R2R-Netzwerk (auch Widerstandsnetzwerk genannt) funktioniert 
bei Öffnern ja leider nicht...

(Mehrere gedrückte Schalter gleichzeitig erkennen zu können, wäre schön 
ist aber nicht notwenig.)

Danke Euch schon jetzt für Eure Ideen!

von Schlaumaier (Gast)


Lesenswert?

Ich wurde ein PFC-8574 verbauen.

Daran die 8 Schalter anschließen (Je Port einer) gegen Masse. Mit den 
Arduino über i2c Bus den Chip auslesen und was machen.... . ;)

Das verbraucht die wenigsten Kabel. Ist jedenfalls die Lösung die ich 
verbaue.

Hinweis : Für den Chip gibt es hier info in der Wiki o.wie man das 
nennt.

von asdf (Gast)


Lesenswert?

ordne die Taster in einer 3x3 Matrix an. Ist aber auch schon hier 
behandelt:
Beitrag "3x4 Tastenmatrix auslesen"

von A. S. (Gast)


Lesenswert?

Warum sollte mit Öffnern nicht alles gehen, was mit Schließern geht?

von min (Gast)


Lesenswert?

oder mit einem Schiftregister z.B. 74HC165 die Eingänge abfragen.

von Falk B. (falk)


Lesenswert?

asdf schrieb:
> ordne die Taster in einer 3x3 Matrix an. Ist aber auch schon hier
> behandelt:
> Beitrag "3x4 Tastenmatrix auslesen"

Und wieviele IO-Pins braucht es für eine 3x3 Matrix? 6 Stück. Wenn, dann 
eher Charliplexing, da kann man mit 4 IOs 12 Taster einlesen, man 
braucht lediglich noch 12, hier nur 8 Dioden.

https://www.mikrocontroller.net/articles/LED-Matrix#Charlieplexing

Das geht auch mit Tastern.

Ein IO-Expander ala PCF8574 braucht nur 2 IOs für I2C.

von Thomas (Gast)


Lesenswert?

A. S. schrieb:

> Warum sollte mit Öffnern nicht alles gehen, was mit Schließern geht?

So ist es.

Einfach diese Idee:

https://www.mikrocontroller.net/attachment/368710/Tastaturmatrix_2.PNG

in eine mit Öffner verwandeln.

von Schlaumaier (Gast)


Lesenswert?

Falk B. schrieb:
> Ein IO-Expander ala PCF8574 braucht nur 2 IOs für I2C.

Und da das ein Bus ist, sind die nicht wirklich belegt. Da können auch 
noch andere Mitfahren.

z.b. ein 2.ten PCF8574 (nur andere Adresse) und damit dann die 
Funktionen die der TO will auslösen.

Was dann wiederum KEINE Extra Leitungen vom  Arduino erfordert.

Das war mein Gedanke. Davon abgesehen ist die Programmierung/Abfrage des 
Chips viel einfacher als ein Schieberegister.

von Einer (Gast)


Lesenswert?

Frank B. schrieb:
> Was tun? R2R-Netzwerk (auch Widerstandsnetzwerk genannt) funktioniert
> bei Öffnern ja leider nicht...

Aber wenn du 8 binär gestufte Widerstände in reihe schaltest geht es.
Jeweils von einer Taste Kurzgeschlossen.

Keine Taste gedrückt = 0 Ohm
Taste 1 = 1 kOhm
Taste 2 = 2 kOhm
usw.
1+2 = 3 kOhm
Also auch Mehrfach Betätigungen erkennbar.

von MaWin (Gast)


Lesenswert?

A. S. schrieb:
> Warum sollte mit Öffnern nicht alles gehen, was mit Schließern
> geht?

Oh Mann, weil bei einer Matrixauswertung oder Widerstandsspannungsteiler 
dann alle Leitungen kurzgeschlossen wären.

Die Schaltungsweisen können auch nicht n Tasten gleichzeitig gedrückt 
auswerten.

Unangenehm bei Öffnern ist auch dass bei üblicher Auswertung mit 1 
Taster pro Pin dauern der Strom durch die pull ups fliesst, für 
Batteriebetrieb doof.

Schlaumaier schrieb:
> Ich wurde ein PFC-8574 verbauen.

Dann lieber einen grösseren AVR mit mehr Pins. Es werden nicht nur uC 
mit 28 pins hergestellt, und das hat seinen Grund, auch andere Leute 
nutzen manchmal mehr I/Os und Überraschung: die Hersteller liefern das 
passende.

Einer schrieb:
> Aber wenn du 8 binär gestufte Widerstände in reihe schaltest geht es.

Analogauswertung von Tastern ist immer fehleranfällig. Bei 0V ohne und 
4V bei einem Tastendruck geht die Spannung halt mal kurz auch über 2.8V 
für eine andere Taste. Und wer 2 mal auswertet erwischt die Taste 
vielleicht schon wieder beim loslassen. Digitalauswertung ist immer 
besser.

von Joachim B. (jar)


Lesenswert?

MaWin schrieb:
> Analogauswertung von Tastern ist immer fehleranfällig.

habe ich an meinen PKW Lenkradtasten nach 4 Jahren auch bemerkt, nur kam 
ich an die Kontakte zum Putzen.
Hier würde ich auch PCF8574(a) vorziehen.

von Egon D. (Gast)


Lesenswert?

Frank B. schrieb:

> Was ist nun aber die beste Lösung, um das Öffnen eines
> Schalters am Arduino erkennen zu können?

" EINES Schalters" ?!


> 8 separate Eingänge am Arduino zu nutzen, wäre natürlich
> möglich aber etwas schade, [...]

74HC151.

von Stefan F. (Gast)


Lesenswert?

MaWin schrieb:
> Analogauswertung von Tastern ist immer fehleranfällig.

Davon kann ich ein Lied singen. Ich musste deswegen in meiner 
Stereoanlage mehrfach Taster wechseln. Irgendwann habe ich genervt 
aufgegeben und einen neuen Verstärker gekauft.

Frank, offenbar möchtest du die Schrauben als Kontakt benutzen. Ich 
hätte da bedenken, ob das langfristig zuverlässig funktioniert. 
Vernünftige Taster haben nicht ohne Grund ein spezielles Material auf 
den Kontakten.

von Stefan F. (Gast)


Lesenswert?

MaWin schrieb:
> Oh Mann, weil bei einer Matrixauswertung oder Widerstandsspannungsteiler
> dann alle Leitungen kurzgeschlossen wären.

Nicht, wenn man jedem Taster eine Diode spendiert.

Aber bei "nur" acht Tastern würde ich sie der Einfachheit halber lieber 
direkt oder über ein Schieberegister/Port Expander anschließen.

von Frank B. (frank78)


Lesenswert?

Danke Euch sehr! Die Argumente für PCF8574 haben mich überzeugt. Den 
74HC151 merke ich mir mal für ein Projekt, bei dem ich etwas mehr Zeit 
investieren will. Danke!

von A. S. (Gast)


Lesenswert?

MaWin schrieb:
>> Warum sollte mit Öffnern nicht alles gehen, was mit Schließern
>> geht?
>
> Oh Mann, weil bei einer Matrixauswertung oder Widerstandsspannungsteiler
> dann alle Leitungen kurzgeschlossen wären.
>
> Die Schaltungsweisen können auch nicht n Tasten gleichzeitig gedrückt
> auswerten.
>
> Unangenehm bei Öffnern ist auch dass bei üblicher Auswertung mit 1
> Taster pro Pin dauern der Strom durch die pull ups fliesst, für
> Batteriebetrieb doof.

Die Öffner kommen nicht von mir.

Widerstandsteiler lassen sich damit genauso aufbauen.

Matrix ist möglich, wenn mehr als 2 Tasten gleichzeitig erlaubt sind. 
Bei 8 Tasten spart eine einfache Matrix aber kaum etwas.

von sid (Gast)


Lesenswert?

Einer schrieb:
> Aber wenn du 8 binär gestufte Widerstände in reihe schaltest geht es.
> Jeweils von einer Taste Kurzgeschlossen.
>
> Keine Taste gedrückt = 0 Ohm
> Taste 1 = 1 kOhm
> Taste 2 = 2 kOhm
> usw.
> 1+2 = 3 kOhm
> Also auch Mehrfach Betätigungen erkennbar.

Jo, das könnte in der Tat gehen,
9 Widerstände, einen für den Spannungsteiler
drei Pins und dann voltage referenz.
aber man hat halt von ~50 bis ~12kOhm zu überbrücken,
dass kann also recht ungenau werden mit nur dem Widerstandsnetzwerk.

Ich bin dann auch eher bei egons port-multiplexer..
50ct chip (bezahlst für die widerstände auch nicht viel weniger)
und der drops ist gelutscht

'sid

von A. S. (Gast)


Lesenswert?

sid schrieb:
> Jo, das könnte in der Tat gehen,
> 9 Widerstände, einen für den Spannungsteiler
> drei Pins und dann voltage referenz.
> aber man hat halt von ~50 bis ~12kOhm zu überbrücken,
> dass kann also recht ungenau werden mit nur dem Widerstandsnetzwerk.

Klar ist ein Schieberegister oder Portmultiplexer immer einfacher. Und 
wenn man einen Spannungsteiler macht, dann hat der bei 8 Bit natürlich 
256 Stufen, ist also nicht einfach auswertbar. Man würde aber in jedem 
Fall das so dimensionieren, dass auch wirklich 256 gleichmäßige Stufen 
entstehen, z.B. mit dem vom TO vorgeschlagenen R2R-Netzwerk.

von Stefan F. (Gast)


Lesenswert?

A. S. schrieb:
> z.B. mit dem vom TO vorgeschlagenen R2R-Netzwerk.

Dafür brauchst du Taster mit makellos funktionierenden 
Wechsler-Kontakten.

von Schlaumaier (Gast)


Lesenswert?

sid schrieb:
> Ich bin dann auch eher bei egons port-multiplexer..
> 50ct chip (bezahlst für die widerstände auch nicht viel weniger)
> und der drops ist gelutscht

Genau. Und den Chip musst du auch nicht "Einpegeln" bzw. das Risiko 
eingehen das die mal "unsauber" werden. Wenn ich den Chip auf ein Sockel 
stecke, kann ich den im ungünstigsten Fall mal eben austauschen.

@TO.  Es gibt noch wenn gewünscht Ersatzchips mit 16 Anschlüssen, z.b. 
den PCF8575. Aber leider sind die SMD. Ich kenne keinen Steckbaren Chip 
mit 16 Ausgängen der Bezahlbar ist.

Was bedeutet du musst dir eine Adapter-Platine besorgen wenn du den Chip 
Steckpins verpassen willst. Kosten aber kaum was die Teile. Und wenn man 
viel mit Steckboards macht, sind die Gold wert. Ich persönlich bestelle 
immer min. 2 Chips so das ich einen dann so eine Platine auf Ewig 
verpassen kann.

Wenn du aber kein SMD magst, kannst du ja bis zu 8 Stück PCF8574 nehmen. 
Via I2C-Bus verbinden. Ist kein Problem. Musst halt nur die 
Codierungs-Pins unterschiedlich gegen GND ziehen. Ist übrigens bei 
deiner Konstruktion vielleicht sogar körperlich besser.

Was bedeutet du ziehst 4 Kabel zum Steuerchip für die Reaktionen und von 
dort 4 Kabel weiter zur Tastatur. Die Tastatur bekomme eine eigenen 
Platine wo dann die Taster da reagieren. Es ist vielleicht sogar möglich 
die Original-Taster zu verwenden. Einfach die Schraube da auf einen 
Mikroschalter drücken lassen. Reinste Mechanik.

Auf die Weise habe ich meinen TOP-Laptop für 50 Euro bekommen. Da ist 
nämlich besagte Mechanik einfach schrottig montiert gewesen ;)

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.