www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 5V-Signal an ATmega16 mit Vcc=3.3V


Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe an meine ATmega16, der mit 3.3V versorgt wird, an PB2
(Interrupteingang) einen Sensor, dessen Ausgangssignal entweder 0V oder
5V ist. Nun wollte ich zum Test ein kleines Programm schreiben, dass
pollend diesen Eingang abfrägt.
Wenn ich mit meinem JTAG Ice mk2 debugge, so sehe ich im AVR-Studio
nicht, wenn der Pin auf 1 oder wechselt, obwohl ich es mit dem Oszi
messen kann.
Kann das an dem 5V-Pegel liegen? Was mach ich falsch.

Danke, Stefanie

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das dabei dank der Schutzdiode im AVR-Pin passieren kann:

- Wenn der Sensor relativ wenig Strom liefern kann, wird dessn Signal
auf ca. 4V begrenzt.
- Wenn er genug Strom liefern kann, wird die Stromversorgung vom
Controller vom Sensor übernommen und liegt nun bei gut 4V.
- Bei hinreichendem Strom durch die Schutzdiode zündet ein parasitärer
Thyristor schliesst VCC kurz.

Und da dieser Betriebszustand undefiniert ist, wär's kein Wunder wenn
es das Ergebnis auch ist.

Rest: Stichwort "Pegelkonverter".

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann natürlich auch ein kleiner Softwarefehler sein....
in PORTB,...
sbis/sbic PORTB,....
funktionieren dafür nicht. Die Abfrage muss immer mit PINB erfolgen.

Die einfachste Pegelwandlung: Diode und pullup, oft reicht dafür sogar
der interne. Also vom Eingang einen pullup-Widerstand nach 3,3V, Diode
vom MC-Eingang zu deinem Sensor-Ausgang, Katode zum Sensor.
Funktioniert  natürlich nur, wenn die Quelle auch aktiv L-Pegel
liefert.

Autor: Erwin Reuss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Antwortenden, solch ein Quatsch habe ich ja schon lange nicht mehr
gelesen. Da dreht sich ja jedem Elektronik-Experten der Magen um.

Zitat:
- Bei hinreichendem Strom durch die Schutzdiode zündet ein parasitärer
Thyristor schliesst VCC kurz.

Nirgendwo ist ein Thyristor und schließt irgendwas kurz. Ich weiß
nicht, wo diese Weisheiten herkommen. Wenn irgendwas kurzschließt, dann
ist es wahrscheinlich die zerstörte Schutzdiode im Eingang, die bei zu
hohem Strom das zeitliche gesegnet hat. Dann kannst Du diesen
Eingangspin vergessen.

Zitat:
- Diode und pullup, oft reicht dafür sogar der interne.

Geht wahrscheinlich, ist aber die schlechteste aller Lösungen.


Lösung:
Die Einfachste Methode, ein 5 Volt-Signal in einen mit 3,3 Volt
betriebenen AVR einzuspeisen ist ein Vorwiderstand zum Eingang. Das
habe ich hunderte Male erfolgreich so gehandhabt und es ist noch nie
etwas passiert. Selbst der direkte Anschluß eines RS-232-Anschlusses
vom PC mit +/- 12 Volt wird durch die internen Schutzdioden und des
Vorwiderstandes sauber auf Betriebsspannung begrenzt.

Also, einfach einen 1 Kiloohm - Widerstand in den Eingang legen und
fertig ist es.

Warum das Pollen des Pins nicht funktioniert, kann ich so auch
diagnostizieren. Versuche erstmal einen anderen Eingangspin, falls der
letzte die hohe Spannung nicht überlebt hat. Ich hoffe, Du begehst
nicht denselben Fehler in der Software, der mich schon so manche
Stunden Zeit gekostet hat: Eingänge werden mit den Registern PINx und
NICHT mit PORTx abgefragt.

Erwin

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lieber Experte, das ist Basiswissen Mikroelektronik, Stichwort
Latchup-Effekt, siehe
http://www.elektronik-kompendium.de/public/schaere... und für
eine präzisere Erklärung
http://www.fairchildsemi.com/an/AN/AN-600.pdf#sear....

Diese parasitären Thyristoren sind ein ungewollter aber kaum
vermeidbarer Nebeneffekt der CMOS Herstellungstechnik. Die Transistoren
und Dioden befinden sich ja auf dem gleichen Substrat und sind damit
nicht wirklich voneinander isoliert. Das Ergebnis sind ungewollte
Halbleiterstrukturen wie eben solche Thysistoren.

Es gibt bisweilen auch noch andere parsitäre Elemente, die zu
unerwünschten Effekten führen. So ist für manche CMOS-Logikfamilien
dokumentiert, dass parasitäre Bipolartransistoren bei signifikantem
Strom durch die Schutzdioden benachbarte Pins miteinander verbinden.
Wird so ein benachbarter Pin dann hochohmig angesteuert, entsteht eine
Fehlfunktion.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A.K.
warum erzählst du das einem ausgewiesenem Elektronik-Experten? :-)

Autor: Olaf K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als schnelle, stromsparende, billige und leicht zu beschaffende
Pegelwandler kann Schaltkreise der 74VHC... oder 74LVX...-Familie
verwenden, diese haben im Gegensatz zu 74HC... auch bei niedriger
Betriebsspannung 5V-tolerante Eingänge. Beispiele sind die 8-Bit-Buffer
74LVX244 oder 74VHC541.

MfG Olaf

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe nun das 5V Signal über einen 1K Widerstand an den Atmega
angeschlossen.
Nun war es so, dass ich an der Leitung entweder 3.3V bzw. 4V gemessen
habe, sie ist nicht mehr zurück auf 0V. Wenn der Bewegungsmelder etwas
erkannt hat, konnte ich an der Leitung 4V messen, ansonsten 3.3V.

Habe nun die Leitung wieder abgelötet und nun zeigt der Sensor wieder
5V an, wenn sich etwas rührt, ansonsten 0V.

Was mach ich da falsch??

P.S.: Wenn ich den Eingang dann abfragen möchte, sage ich dann
bit_is_set(PIND, PIND3) oder bit_is_set(PORTD, PIND3) bzw. was würde
letzteres bedeuten?

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also miss mal den Port ohne dass der sensor dran ist. ich würde den
Fehler in erster linie in deiner Software suchen. (Evtl port als
ausgang geschalten, oder pullup aktiv?) ich weiss ja nicht wie dein
sensor am ausgang beschalten ist, aber evtl reicht der interne pullup
des AVR ja um die spannung auf solch einen Pegel zu ziehen.
Sollte dies der Fall sein, kannst du ganz einfach ne Tranistorstufe
vorschalten. ansonsten Pullup deaktivieren, etc.

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso evtl hast du den Port schon kaputt gemacht... das kann auch
möglich sein

Autor: T-Brox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns nur in die eine Richtung geht sprich nur der Sensor sendet, dann
reicht ein einfacher Spannungsteiler für die Anpassung von 5 auf 3,3V.
Ohne Halbleiter oder sonstigen Aufwand. Zum Beispiel zunächst vom
Sensor aus einen 1k Widerstand und dann parallel zum Eingangspin
nochmal 2,2k. Gibt nach Eva Zwerg etwa 3,4V. Da sollte kein/e noch so
kleine/r Diode/Thyristor durchschalten können ...

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haha,
das war die Ursache:
PORTD = _BV(PD3);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.