Forum: Mikrocontroller und Digitale Elektronik MCP3421 Pegelwandler


von Steve M. (jodziste)


Lesenswert?

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

von Samuel K. (secures)


Lesenswert?

Du möchtest also den ADC zwischen -3V (VSS) und 3V (VDD) betreiben den 
Mikrocontroller allerdings zwischen 0 und 3V?

von Steve M. (jodziste)


Lesenswert?

Samuel K. schrieb:
> Du möchtest also den ADC zwischen -3V (VSS) und 3V (VDD) betreiben den
> Mikrocontroller allerdings zwischen 0 und 3V?

genau.

von Samuel K. (secures)


Lesenswert?

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

von Rob111 (Gast)


Lesenswert?

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)

von Rob111 (Gast)


Lesenswert?

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!)

von Crazy Harry (crazy_h)


Lesenswert?

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.

von my2ct (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.