Hallo, ich möchte mit einen Mcp3421 mit einem AVR kommunizieren lassen. Ich habe schon eine symmetrische Spannungsversorgung von +3/-3V eingeplant. Der AVR läuft von +3V und 0V (um Strom zu sparen). Ich möchte den MCP jetzt auch negative Spannungen messen lassen. Daher wird der mit +3V und -3V mit einer Diode betrieben. (um auf 5,5V zu kommen) Die Kommunikation erfolgt per I2C mit 100khz. Wie würde ein Levelshifter dafür aussehen? MfG, Steven
Du möchtest also den ADC zwischen -3V (VSS) und 3V (VDD) betreiben den Mikrocontroller allerdings zwischen 0 und 3V?
Samuel K. schrieb: > Du möchtest also den ADC zwischen -3V (VSS) und 3V (VDD) betreiben den > Mikrocontroller allerdings zwischen 0 und 3V? genau.
Prinzipiell brauchst du einen bidirektionalen Pegelwandler der in der Lage ist auf zwei verschiedenen Groundpotentialen zu arbeiten. https://datasheets.maximintegrated.com/en/ds/MAX14842.pdf Der hier dürfte funktionieren. Eine einfache Schaltung die diesen IC ersetzt (ala I2C MOSFET Level Shifter) fällt mir momentan nicht ein. Ich denke aber, dass es möglich wäre - mit mehr oder weniger Schaltungsaufwand. Gruss
Da I2C gut mit Open-Collector/open-Drain funktioniert, wäre es sinnvoller, den µC mit GND an -3V zu betreiben, dann reicht ein Transistor am Ausgang sowie ein Vorwiderstand am Eingang (gegebenfalls mit Z-Diode 3V, falls der µC keinen genügend hohen Injektionsstrom zulässt...). Generell sinnvoller wäre es aber, auf einen ADC mit herausgeführter Vref zu wechseln, dann kann man mit einem kleinen Widerstandsnetzwerk gg. Vref/2 messen und somit bekommt man die Bipolarität quasi geschenkt, ADC und µC laufen dann an einer Versorgung (oder eben einer Masse, die aber wirklich 0V ist und nicht verschoben...) Wenn man unbedingt bei diesem ADC bleiben will, könnte man auch mit der (gut gefilterten/gepufferten) Versorgung als 2. Referenz arbeiten und diese dann immer im Wechsel messen und aus dem Ergebnis somit wieder rausrechnen. (oder man lässt einen Op-Amp die Arbeit analog machen ;o)
Ergänzung: Der Transistor am Ausgang (als Open-Collector/Drain-Stufe) invertiert natürlich das I2C-Sendesignal. Das muss via SW oder mit einem 2. Inverter (also 2. Transistor oder Einzelgatter) korrigiert werden. Der (NPN oder N-Mosfet) Transistor hängt mit einem Pullup (ca 2k2) am Drain/Collector an der höheren Versorgungsspannung und mit Source/Emitter an Masse. Gate/Basis sind der Eingang (1k Widerstand vorschalten, zumindest im Falle NPN, aber auch beim Mosfet schadet es hier nicht...) Geeignete Bauteile: BSS123 als Mosfet oder BC547 etc. also Standardware ;o) Den Pullup braucht es übrigens systemweit=(I2C-weit) nur einmal. Der Empfänger muss mit dem höheren Pegel umgehen können. Am Eingang eines Empfängers, der mit niedrigerem Pegel arbeitet hängt entweder ein hinreichend großer Vorwiderstand (Größenordnung 5-10k)oder ein Spannungsteiler entsprechend der maximal zulässigen Eingangsspannung. Natürlich kann man anstelle des unteren Widerstands des Spannungsteilers auch eine Z-Diode mit dem Wert der max. Spannung nehmen... In der einfachsten Beschaltung nur mit Vorwiderstand wird ein Ableitstrom durch die Eingangsschutzdioden des Empfänger-ICs geleitet, meist sind min. 1mA, in robusteren Controllern (wie den meisten PICs) sogar 10-20mA zulässig. => Datenblatt konsultieren! Zudem empfiehlt es sich, nicht gleichzeitig mit Injektionsstrom und ADC zu arbeiten, da interne ADCs erfahrungsgemäß falsche Werte liefern, wenn gleichzeitig irgendwo am Chip nennenswerte Querströme Richtung pos. Versorgung (also aus dem Chip raus statt rein!) fliessen! Wie gesagt: nur meine persönliche Erfahrung (mit PIC und Infineon-Controllern) Eine Schaltung für die Messung von negativen Spannungen mit einem asymmetrisch betriebenen ADC (oder "normalen" internen ADC in einem µC) ist z.b. im Elektronik-kompendium im Internet zu finden. Der Trick ist schlicht, mal an den Knotensatz zu denken und somit daran, dass sich -ganz ohne Op-Amp- an einem Knotenpunkt die Ströme addieren, sprich welche mit neg. Vorzeichen auch subtrahieren:o) Also statt einfachem Eingangsspannungsteiler, ein solcher mit Anschluss an Vref oder eine andere bekannte pos. Spannung. Das Verhältnis der Widerstände bestimmt dann den Messbereich in beide Richtungen (über Vref raus kann man meist auch nicht messen, dh. 0-Punkt auf Vref/2 legen!)
Mal abgesehen davon, daß der Beitrag schon älter ist ..... Der MCP wird normal mit GND und +3V versorgt, nur der Vin- kommt auf -3V. Fertig. Ok nicht ganz: besser wäre Vin- auf minimal -2.048V wg. Messbereich.
Crazy H. schrieb: > Der MCP wird normal mit GND und +3V versorgt, nur der Vin- kommt auf > -3V. Fertig. Sehr kreativ :-( Mal abgesehen davon, dass Steven das Problem inzwischen wohl abgehakt hat, hast du mal eine Blick in das Datenblatt vom MCP3421 geworfen und überlegt, was wohl die Angabe
1 | All inputs and outputs w.r.t V_SS ...... –0.3V to V_DD +0.3V |
in den Absolute Maximum Ratings zu bedeuten haben mag? Um für den I2C unabhängig von Potentialdifferenzen zu sein, bietet sich ein ADuM1250 oder ADuM1251 an.
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.