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.
Pin als Input setzen. Wie sehen deinen Spannungen aus (Controller bzw. Pin der betätigt werden soll)?
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
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
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.
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.