Hallo zusammen, ich verstehe gerade meine eigene Schaltung nicht mehr und benötige mal einen Denkanstoß von außen. Ich möchte eine Spannung oberhalb der Versorgungsspannung des ATMega 328 dazu nutzen einen Eingang von Low auf High zu setzen. Versorgungsspannung des 328: 3,7 - 4,2 V Zu erkennende Spannung: 4,7-6V Um zu verhindern das am Port eine Spannung anliegt, die höher ist als die Versorgungsspannung habe ich einen BC547 verwendet. Sein Kollektor hängt an der Versorgungsspannung des 328, der Emitter am Port des 328. Der Port wird über einen 10kOhm R auf Masse gezogen. Die Basis des 547 hängt über einen 1k Ohm R an der "zu erkennenden Spannung". Es funktioniert soweit alles. Jedoch auch wenn ich den Kollektor abklemme. Es scheint als das der Basis-Emitter Strom bereits ausreicht um den Port am ATMega328 auf High zu schalten. Ist das ein Problem? Oder kann ich das so lassen? Gemessen habe ich: UBE=0,65V UCE=5,8mV IC=0,12mA IBE=0,2mA Danke!
Michael schrieb: > Es scheint als das der Basis-Emitter Strom bereits ausreicht > um den Port am ATMega328 auf High zu schalten. Klar. Nur könntest du den Transistor dann auch noch weglassen, und einen 1K Widerstand zwischen dein Signal und den Port setzen. Besser wäre, einen 10K Pullup vom Kollektor nach VCC, und deinen Port an den Kollektor anzuschließen. Emitter an GND, und Basis wie gehabt mit Basiswiderstand (kann ruhig auch 10K sein) an dein Signal. Das ganze invertiert dein Signal zwar, schützt aber auch wesentlich besser.
:
Bearbeitet durch User
Michael schrieb: > Die Basis des 547 hängt über einen 1k Ohm R an der "zu erkennenden > Spannung". Dann liegen an dem Pin aber trotzdem deine 6V-U_BE, also etwa 5,3V an. Michael schrieb: > Es funktioniert soweit alles. Wahrscheinlich begrenzen die Schutzdioden am Eingang des Pins. Da der 10kΩ den Strom begrenzt funktioniert das. Besser wäre es jedoch, den Emitter auf GND zu legen, deine Fremdspannung über einen 10kΩ Widerstand auf die Basis zu legen und den Kollektor an den Pin des Atmega. Dann entweder den Pullup einschalten oder einen externen Pullup verwenden. Das Signal ist dann allerdings invertiert.
:
Bearbeitet durch User
Danke! Klingt gut.. Invertiertes Signal allerdings nicht so sehr, das ist recht aufwändig umzuschreiben da es nur so mit Sleepmode und Interrupt sicher klappt. Ich habe aber auch noch ein paar 557 hier rumliegen- das hilft nicht, oder?
Michael schrieb: > Ich habe aber auch noch ein paar 557 hier > rumliegen- das hilft nicht, oder? Doch, einfach noch eine Stufe dahinter. Dann ist es wieder gleichphasig.
Hilfe.. ich steuer dann mit dem Kollektor vom 547 die Basis vom 557? Und der 557 hängt dann auch wieder mit Emitter an Masse und Kollektor an VCC? Ich stehe gerade auf dem Schlauch
Michael schrieb: > ich steuer dann mit dem Kollektor vom 547 die Basis vom 557? Nein, kein BC557. 2 BC547. Siehe Anhang.
Liegt der low-Pegel des Signals bei maximal ~0,5V? Dann Schottky-Diode vor den Eingang, Kathode ans Signal, Anode an den Pin. Externen Pulldown raus, internen Pullup rein.
Geht auch so, wenn das externe Signal bis auf 0V runtergeht. Nachtrag: ah, geht ja schnell hier. A.K. hatte die gleiche Idee.
:
Bearbeitet durch User
Krass, geht! Ich danke euch! Habe jetzt zwei 547 hintereinander.. klappt. Schottky Dioden hab ich leider nicht hier. Die zu messende Spannung kann eigentlich nur nicht da sein, oder +4,7-6V Sein. Es ist ein USB Anschluss, den ich überwache. Stecker drin-Stecker raus und noch ein wenig Sicherheit bei abweichenden USB Ladern. Grüße
Michael schrieb: > Um zu verhindern das am Port eine Spannung anliegt, die höher ist als > die Versorgungsspannung habe ich einen BC547 verwendet. Und warum keinen popeligen Spannungsteiler benutzen?
Weil die tiefere Spannung dann nicht mehr ausreicht um einen Interrupt auszulösen und weil ich die dann auch nicht sicher auswerten kann. Die Schaltung ist Batteriegespeist und daher etwas komplizierter was das Einlesen von Spannungen angeht. Es geht bestimmt..nur mir sind zwei bc547 lieber als noch zwei Seiten Code (und vor allem 2 Wochen Code schreiben-wenn ich das schreiben muss) :-)
Ich mach sowas imma mit Z-Diode und Widerstand, joa. :)
Mit 2 BC547 und den 10 kOhm Kollektorwiderständen fließen IMMER 0,4 mA. - Da kannst du dir fast den Sleep-Mode sparen...
Dein Signal an den Emitter, den Controller mit aktiviertem Pullup an den Kollektor, über 10kΩ die Basis an 5V. Gruß Jobst
Jobst M. schrieb: > Dein Signal an den Emitter, den Controller mit aktiviertem Pullup an den > Kollektor, über 10kΩ die Basis an 5V. Gleiches Problem wie bei der Diode. Das Signal hat entweder Spannung oder ist offen. Es kann also keinen Strom aufnehmen, nur liefern.
:
Bearbeitet durch User
Ruhestrom..ja das war nicht optimal. Ich habe es nun mit einem BC547 gebaut, wie oben beschrieben, Controller und Pullup am Kollektor. Das Signal ist zwar invertiert, der 328 schafft den Interrupt aber auch aus dem Sleepmode mit fallender Flanke. Da war ich mir nicht ganz sicher, da ich nicht die beiden IR Ports nutze sondern das über PinChangeInterrupt mache. Glücklicherweise läuft der Code mit nur minimalen Veränderungen wieder:-) Und ich habe mir auch alles in meine kleines Entwicklerbüchlein geschrieben was hier an Tipps gekommen ist- echt gut! Danke
Michael schrieb: > Weil die tiefere Spannung dann nicht mehr ausreicht um einen Interrupt > auszulösen und weil ich die dann auch nicht sicher auswerten kann. Die > Schaltung ist Batteriegespeist und daher etwas komplizierter was das > Einlesen von Spannungen angeht. Es geht bestimmt..nur mir sind zwei > bc547 lieber als noch zwei Seiten Code (und vor allem 2 Wochen Code > schreiben-wenn ich das schreiben muss) :-) Schon mal drüber nachgedacht einen ADC-Eingang zu benutzen? Das braucht auch keine zwei Seiten Code ;)
M. K. schrieb: > Schon mal drüber nachgedacht einen ADC-Eingang zu benutzen? Das braucht > auch keine zwei Seiten Code ;) Wenn ein invertierter Pin schon 2 Seiten Code braucht...
A. K. schrieb: > Wenn ein invertierter Pin schon 2 Seiten Code braucht... Dann sollte man mal die Schriftgröße ändern :D
A. K. schrieb: > Gleiches Problem wie bei der Diode. Das Signal hat entweder Spannung > oder ist offen. Es kann also keinen Strom aufnehmen, nur liefern. Verdammt, das ist mir entgangen ... Also Zusammenfassung: - Eingang ist offen oder hat Spannung, zieht aber nicht runter. - Eingangsspannung geht über die Rails. - Keine Phasendrehung des Signals. (Wegen IRQ) - Zu erkennende Spannung: 4,7-6V - Darf im Ruhezustand keinen Strom verbrauchen. - Darf nur aus NPN + PNP + Glue bestehen.
1 | +3,7-4,2V o-+--, |
2 | | | |
3 | R | |
4 | | E |
5 | +-B BC557 |
6 | USB o--, | C |
7 | | R | |
8 | R | +----> µC |
9 | | C | |
10 | +---B | BC547 |
11 | | E | |
12 | R | R |
13 | | A | |
14 | | K | |
15 | | | | 2x 1N4148 |
16 | | A | |
17 | | K | |
18 | | | | |
19 | '----+--' |
20 | GND |
Alle R = 10kΩ M. K. schrieb: > Schon mal drüber nachgedacht einen ADC-Eingang zu benutzen? Das braucht > auch keine zwei Seiten Code ;) Genau, und wenn der ADC einen bestimmten Wert erreicht, wird der Prozessor aufgeweckt ... Gruß Jobst
Das wird ja ein immer größeres Gebastle. Der Vorschlag von "Batman" ist doch gut. 10K in Serie, am Pin Zenerdiode 4.8V nach GND, und gut ist.
Wäre in dem Fall gut gewesen, wenn die Controller-Vcc nicht darunterfallen könnte. Müßte aber auch einfach mit einem Spannungsteiler z.B. 5k:100k zum Portpin gehen? Die internen Portschutzdioden schaffen jeweils ca. 1mA.
Ich hätte noch 'ne extrem komplizierte Möglichkeit... Über den Wert des Widerstandes kann man allerdings noch diskutieren.
Die D1 liegt dann parallel zur internen Portschutzdiode. Die schafft das 1.) eigentlich alleine und 2.) gibts da bei offenem Anschluß keinen definierten Pegel und 3.) würde mit der Flußspannung von D1 alleine evt. das Vcc+0.5V Pin-Limit überschritten. Schlicht: USB--+ | 5k | +----->Port | 100k | --- GND
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.