Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller statt Taster, frage


von frager (Gast)


Lesenswert?

Hallo,
ich möchte, wegen einem Automatisierungsprojekt, ein Taster per 
Mikrocontroller schalten.

Dieser Taster schleift GND bei gedrückter taste durch.

Ich verwende zum programmieren Bascom. Nun kann ich ja per PORTB.0 = 0 
den taster bestätigen.

Meine frage ist nun, soll ich bei nicht gedrückten Taster PORTB.0 = 1 
oder diesen Pin als Input setzen?

Das problem ist, das ich meinem System (ein Autoradio), mehrere 
unterschiedlichen Spannungen vorliegen und ich nicht weiß wie viel 
Spannung der Controller in diesem Radio, der die Tastenauswertung 
vornimmt, aushält.

von uwe (Gast)


Lesenswert?

Man könnte aber auch einen Optokoppler benutzen.

von Coder (Gast)


Lesenswert?

Stichwort Open Collector

von Nuthan (Gast)


Lesenswert?

Pin als Input setzen.

Wie sehen deinen Spannungen aus (Controller bzw. Pin der betätigt werden 
soll)?

von Karl H. (kbuchegg)


Lesenswert?

frager schrieb:
> Hallo,
> ich möchte, wegen einem Automatisierungsprojekt, ein Taster per
> Mikrocontroller schalten.
>
> Dieser Taster schleift GND bei gedrückter taste durch.

Lass uns das mal aufmalen. ZUgegebenermassen treffe ich da jetzt eine 
Annahme, die ich allerdings als begründet ansehen würde.

Wenn der Taster beim Drücken 'GND' durchschleift, dann wird die 
relevante Tasterbeschaltung höchst wahrscheinlich so oder so ähnlich 
aussehen
1
                        o  +Versorgungsspannung
2
                        |
3
                        |
4
                       Pullup-Widerstand
5
                        |
6
                        |
7
               +--------+--------> zur weiteren Verarbeitung
8
               |
9
                / Taster
10
               |
11
               |
12
            ---+----------------- Masse

das ist eigentlich eine Standard-Sache. Ist der Taster offen, dann muss 
dafür gesorgt werden, dass auf der Leitung 'zur weiteren Verarbeitung' 
trotzdem ein definierter Pegel liegt. Wäre der Pullup nicht vorhanden, 
dann wäre das ansonsten ja nur ein Stück Draht, welches in der Luft 
endet. So etwas nennt man dann aber Antenne und nicht 'definierte 
Eingangsleitung'.

Wir können also getrost davon ausgehen, dass es so etwas wie den Pullup 
Widerstand geben wird. Der Widerstand wird auch nicht zu klein sein, 
denn wenn man den Taster drückt ....
1
                        o  +Versorgungsspannung
2
                        |
3
                        |
4
                       Pullup-Widerstand
5
                        |
6
                        |
7
               +--------+--------> zur weiteren Verarbeitung
8
               |
9
               |  Taster (geschlossen)
10
               |
11
               |
12
            ---+----------------- Masse

... dann schliesst man ja den Stromkreis, der von der 
+Versorgungsspannung über den Widerstand direkt nach Masse führt. Die 
Leitung 'zur weiteren Verarbeitung' ist zwar direkt auf Massepotential, 
und das ist auch gut so, aber über den Widerstand fliesst dann ein Strom 
(Ohmsches Gesetz) direkt nach Masse, was man ja eigentlich nicht will.

Soweit das Vorgeplänkel.
Jetzt ersetzt du den Taster durch deinen µC
1
                        o  +Versorgungsspannung
2
                        |
3
                        |
4
                       Pullup-Widerstand
5
                        |
6
                        |
7
       Portpin  --------+--------> zur weiteren Verarbeitung
8
9
10
11
            --------------------- Masse


In deinem µC verbirgt sich hinter dem Portpin (wenn er auf Ausgang 
geschaltet ist) im Prinzip auch nichts anderes als 2 Schalter, die den 
Pin wahlweise mit der + Versorgung des µC oder eben mt Masse verbinden 
können
1
  Vcc ---+                      o  +Versorgungsspannung
2
         |                      |
3
         |                      |
4
          /               Pullup-Widerstand
5
         |                      |
6
         |                      |
7
         +---- Portpin  --------+--------> zur weiteren Verarbeitung
8
         |
9
          /
10
         |
11
      ---+---------------------------------------- Masse

je nachdem, ob du den Portpin auf 0 oder auf 1 stellst, ist entweder der 
untere oder der obere Schalter geschlossen.

Um den unteren Schalter wirst du nicht rumkommen. Damit du den 
geschlossenen Taster simulierst, muss der geschlossen werden (und macht 
dann nichts anders als das, was der originale Taster auch gemacht hat).

Aber was ist, wenn du den oberen Schalter schliesst?
Dann verbindest du die Leitung 'zur weiteren Verarbeitung' mehr oder 
weniger direkt mit der Versorgungsspannung Vcc des µC. Und ob das für 
die Leitung reicht um als 'Taster offen' angesehen zu werden, ist 
fraglich. Es hängt alles davon ab, wie hoch die Spannung ist, mit der 
die original Tester-Einheit durch den Pullup versorgt wurde. Das kann 
man aber ausmessen. Wenn die mit der Versorgungsspannung des µC 
identisch ist, dann kannst du den Pin auf 1 stellen (und im Prinzip 
könnte man sich dann auch den Pullup sparen, denn die Leitung ist ja 
dann auch nicht offen, sondern wird über den µC auf Vcc gezogen).

Ist die aber nicht identisch (zb 12V), dann kann es sein, dass der Pegel 
nicht ausreicht für die Auswerteschaltung, die auf der Leitung entweder 
0V oder eben diese +12V sehen will, die sie normalerweise über den 
Pullup ja auch kriegt. Mit den dann dort anliegenden zb 5V vom µC reisst 
du dann nichts.
Zudem fliesst auch in diesem Fall ein Strom, weil es ja einen Weg von 
den +12V über den Widerstand zu den Vcc 5V des µC gibt. 
Spannungsdifferenz bedeutet aber, dass Strom fliesst. Und das will man 
ja eigentlich nicht haben.

Kurz und gut.
Ich würde den Pin bei der Simulation von 'nicht gedrückt' auf Eingang 
schalten. Denn das umgeht auf jeden Fall alle Probleme und kommt dem am 
nächsten, was ein nicht gedrückter Taster ist. Selbst dann, wenn die 
Versorgungsspannung des µC und die Versorgung des originalen Tasters 
gleich sind (was sie nie 100% ig sein werden).

: Bearbeitet durch User
von frager (Gast)


Lesenswert?

Vielen dank für die ausführliche erklärung.
Mit Optopkopplern oder Transistoren kann ich leider nicht arbeiten. 
Dafür ist einfach kein platz.

Es handelt sich um ein bedienteil eine Autoradios. Dort liegen 9V 5V und 
3.3V an. (Beschriftung auf der Platine)

Nun habe ich mir die mühe gemacht und das Display abgelötet. Dort ist 
ein tcc760hc01 
(http://www.bg-electronics.de/datenblaetter/Schaltkreise/TCC760.pdf) 
Controller zu finden.
Wenn ich das richtig lese: 1.5V ~ 1.95V for core, 1.8V ~ 3.6V
for I/O port (TCC760 / TCC761 signals)

Arbeitet der Controller mit 3.3V bei den I/O Pins.

Da ich den Attiny24A verwende, kann ich nun entweder 3.3V als 
Betriebsspannung wählen, oder eben die Pins dann auf Input setzen.

Allerdings weiß ich nicht was passiert wenn der Tiny mit 3.3V läuft, 
aber denn eben mehr anliegt. Vorstellen kann ich mir, das der Tiny das 
nicht mag :D

von chris (Gast)


Lesenswert?

frager schrieb:
> Mit Optopkopplern oder Transistoren kann ich leider nicht arbeiten.
> Dafür ist einfach kein platz.

kein Platz für einen kleinen NPN oder besser (spart den Basiswiderstand) 
N-Kanal MOSFET in SOT23?
http://www.infineon.com/dgdl?folderId=db3a30431936bc4b0119532290053c66&fileId=db3a30431936bc4b01195325b2453c6d


frager schrieb:
> Allerdings weiß ich nicht was passiert wenn der Tiny mit 3.3V läuft,
> aber denn eben mehr anliegt. Vorstellen kann ich mir, das der Tiny das
> nicht mag :D

genau das ist ein mögliches Problem. Es fließt dann Strom über den 
(wahrscheinlich vorhandenen) PullUp in die Schutzdiode des µC-Eingangs. 
Je nachdem wie groß der PullUp ist, ist der Strom klein genug um den µC 
nicht zu beschädigen oder halt nicht.

von frager (Gast)


Lesenswert?

chris schrieb:
> kein Platz für einen kleinen NPN

einen schon, aber ich benötige 6 stück.

Also betreibe ich den Attiny mit 3.3V. Mehr als kaputt gehn kann das 
Radio nicht :D

von chris (Gast)


Lesenswert?

frager schrieb:
> einen schon, aber ich benötige 6 stück.

falls du für einen IC in SO-16 Platz hast, wäre der ULN2003 auch eine 
Option:
http://www.reichelt.de/ULN-2003-AD-SMD/3/index.html?&ACTION=3&LA=446&ARTICLE=18887&artnr=ULN+2003+AD+SMD&SEARCH=uln2003

von frager (Gast)


Lesenswert?

Da es ja um das selbe Projekt geht, frag ich hier auch gleich mal.

Ich muss per Attiny einen drehimpulsgeber (Lautstärkeregelung) steuern. 
Das parallele anlöten an den impulsgeber klappt ja nicht. Deswegen muss 
ich den Drehimpulsgeber durch den Tiny durchschleifen, oder?

Da es ja kurz gesagt folgendermasen abgetastet wird:
Pin A wird im uhrzeigersin als erstes auf high, bzw low gesetzt, dann 
Pin B
Pin B wird gegen dem uhrzeigersin als erstes auf high, bzw low gesetzt, 
dann Pin A

Müsste ich doch per Interrupt, der jede Veränderung erkennt, einfach 
kucken welche der beiden Pins sich als erstes verändert und dann pro 
änderung auf high/low eine ausgabe machen?

So:

Pin A ist an Interupt-1 geknüpft
Pin B ist an Interupt-2 geknüpft
Ändert sich also der zustand an eines der Pins startet je nach dem 
Interupt-1 oder 2.

Interupt-1: Lauter
Interupt-2: Leiser

Damit bräuchte ich keine zeit abzuwarten. Da ja jedesmal ein Interupt 
ausgelöst wird.

von frager (Gast)


Lesenswert?

SO ich bins nochmal :D.
Wird der Pin als eingang gesetzt, erkennt das der Mikrocontroller "zur 
weiteren auswertung" nicht als LOW?

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.