Forum: Mikrocontroller und Digitale Elektronik Level-Shifter mit Offset (und viel Prolog)


von Alfons K. (muehkrokontroller)


Angehängte Dateien:

Lesenswert?

Moin,

zweiter Beitrag hier, ich hoffe die Blamage wird sich im Rahmen halten:

Ich möchte gerne einen ACS758LCB-050B-PFF-T mit einem Feld-Wald-Wiesen 
STM32 ADC (0-3.3, 12bit) intim abtasten.

Jetzt sind diese Sensor-Boards leider meistens für die versammelte 
Arduino-5V-Kommune gemacht und noch dazu in China. Siehe Schaltplan. Ach 
ja, bei der Übersetzung macht euch gar keine Mühe, da kann nicht einmal 
ein Muttersprachler was rausholen:

OU1 analog signal output
OU2 process follower's signal output
follower so wie voltage follower

Nun - da der ACS758 mit 5V aber auch mit 3.3V betrieben werden kann, hat 
man sich in China gedacht, man schaltet irgendwie einen TLC2272 dazu, 
der das OU1 Signal im 3.3V Fall auf 0-5V levelshiften könnte. Glaube ich 
- aber nix genaues weiß man nicht.

Leider hat der fernöstliche Ingenieur nur einen Vcc spendiert, nämlich 
5V. Wenn man da 3.3V reinspeist, dann bekommt man zwar auf OU1 ein 
Signal, OU2 ist tot, da TLC2272 mit 3.3V nix anfangen kann.

Wenn man - wie wohl geplant - 5V einspeist, dann sind OU1 und OU2 
identisch. Wenn die Chinesen wüssten, dass sie sich 0.2374 komma 8 cent 
sparen könnten und den TLC2272 einfach rausrupfen könnten...

Nunja genug des Prologs, kommen wir zu meinem Problem:

Ich habe hier also einen ACS758LCB-050B-PFF-T, werde den niemals nie gar 
nicht als Bidirektionalen Strommesser benutzen, sondern immer nur - 
großes Indianerehrenwort - unidirektional. Damit es auch was zu lachen 
gibt, speise ich auch 5V ein.

Zurück bekomme ich 0-5V je nach Stromfluss (-50A = 0V, 0A = 2.5V, 50A = 
5V). Da mich aber [-50A, 0A[ nicht interessiert möchte ich gerne JETZT 
KOMMTS

einen Pegelwandler mit Offset realisieren.

Vulgo: Ich möchte die 2.5V-5V auf 0-3.3V abbilden.
Ich habe da mal was in Perl vorbereitet

#!/usr/bin/env perl

use List::Util qw(min max);

my $Vin  = $ARGV[0];
my $Vout = min(3.3, max(0, ($Vin - 2.5) * 1.32));

say "Vin: $Vin V => Vout: $Vout V\n";

$ vtrans.pl -2
Vin: -2 V => Vout: 0 V
$ vtrans.pl -0
Vin: -0 V => Vout: 0 V
$ vtrans.pl 0
Vin: 0 V => Vout: 0 V
$ vtrans.pl 2
Vin: 2 V => Vout: 0 V
$ vtrans.pl 3.2
Vin: 3.2 V => Vout: 0.924 V
$ vtrans.pl 4.6
Vin: 4.6 V => Vout: 2.772 V
$ vtrans.pl 5
Vin: 5 V => Vout: 3.3 V
$ vtrans.pl 5.2
Vin: 5.2 V => Vout: 3.3 V

Das hätte ich gerne in Elektronik, aber keine Ahnung wie. Man sieht ich 
möchte gerne - in vernünftigem Rahmen Über-/Unterspannungen kappen, 
ansonsten halt den vollen Dynamikbereich des STM32 ADC ausnutzen.

Die Alternative wäre nur den halben Dynamikumfang des ADC zu nutzen 
(1.65-3.3V) aber das widerstrebt mir ein wenig, da ich auch schon vom 
ACS758 nicht den vollen Dynamikumfang nutze (0-20A plusminus).

Ich habe mich natürlich umgesehen, aber erfolglos.
Von WP https://de.wikipedia.org/wiki/Pegelumsetzer
bin ich auf den vorzüglichen Artikel
https://www.mikrocontroller.net/articles/Pegelwandler
gestoßen, finde dort aber nicht was ich bräuchte.

Wenn jemand Rat weiß...

Mueh

von Frank K. (fchk)


Lesenswert?

Alfons K. schrieb:

> Nun - da der ACS758 mit 5V aber auch mit 3.3V betrieben werden kann, hat
> man sich in China gedacht, man schaltet irgendwie einen TLC2272 dazu,
> der das OU1 Signal im 3.3V Fall auf 0-5V levelshiften könnte. Glaube ich
> - aber nix genaues weiß man nicht.

Nein, dafür ist der nicht da. Der dient als Impedanzwandler, d.h. er 
verstärkt das Ausgangssignal 1:1, kann aber mehr Strom liefern als der 
ACS.

> Vulgo: Ich möchte die 2.5V-5V auf 0-3.3V abbilden.

Gegenvorschlag: drehe den Eingang des ACS um, so dass Du dann nur 
Ausgangsspannungen von 2.5V...0V bekommst. Dann schließt Du an VREF+ 
eine 2.5V Spannungsreferenz wie MCP1525 oder LM4040-2.5 an, und schon 
hast Du den vollen Messbereich mit wenig Schmerzen zur Verfügung.

Man ist ja faul.

fchk

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Alfons K. schrieb:

>ACS758.png
>1,1 MB

Hast du dir mal dein Bild angeschaut? FAIL! Siehe Bildformate.

> zweiter Beitrag hier, ich hoffe die Blamage wird sich im Rahmen halten:
>
> Ich möchte gerne einen ACS758LCB-050B-PFF-T mit einem Feld-Wald-Wiesen
> STM32 ADC (0-3.3, 12bit) intim abtasten.

Wie meinen?

> Nun - da der ACS758 mit 5V aber auch mit 3.3V betrieben werden kann, hat
> man sich in China gedacht, man schaltet irgendwie einen TLC2272 dazu,
> der das OU1 Signal im 3.3V Fall auf 0-5V levelshiften könnte.

Du arbeitest hart für deine Blamage. "levelshiften", soso.

> Glaube ich
> - aber nix genaues weiß man nicht.

Es ist ein einfacher Spannungsfolger mit der Verstärkung 1.

> Leider hat der fernöstliche Ingenieur nur einen Vcc spendiert, nämlich
> 5V. Wenn man da 3.3V reinspeist, dann bekommt man zwar auf OU1 ein
> Signal, OU2 ist tot, da TLC2272 mit 3.3V nix anfangen kann.

Stimmt, der braucht mindestens 5V.

> einen Pegelwandler mit Offset realisieren.

Kann man, auch wenn man das eher nicht als Pegelwandler bezeichnet.

> Vulgo: Ich möchte die 2.5V-5V auf 0-3.3V abbilden.
> Ich habe da mal was in Perl vorbereitet

Was soll der Unsinn? Nimm einen OPV mit passender Beschaltung und gut.

> Wenn jemand Rat weiß...

Nimm einen einfachen Differenzverstärker, siehe Anhang. V4 ist die 
Referenzspannung von 2,5V, die erzeugt man sich praktisch mit einem 
10k+10k Spannungsteiler + OPV als Spannungsfolger. Als OPV nimmt man 
einen Rail 2 Rail Typen, z.B. TS912. Die duale Versorgung mit 12V ist 
nur für die Simulation, ich hab auf die Schnelle keinen andern OPV in 
dem ollen Programm gefunden. Ich muss mal LTspice installieren.

von Alfons K. (muehkrokontroller)


Lesenswert?

Frank K. schrieb:
> Gegenvorschlag: drehe den Eingang des ACS um, so dass Du dann nur
> Ausgangsspannungen von 2.5V...0V bekommst. Dann schließt Du an VREF+
> eine 2.5V Spannungsreferenz wie MCP1525 oder LM4040-2.5 an, und schon
> hast Du den vollen Messbereich mit wenig Schmerzen zur Verfügung.
>
> Man ist ja faul.

:-O Oh wow!

Das ist grenzgenial. Vielleicht schon leicht hinter der Grenze. Danke!

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.