Forum: Mikrocontroller und Digitale Elektronik STM32 vs. AVR16 messen von Spannungen von 0,5-1,2V


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jochen D. (joe_d1)


Lesenswert?

Mit einem uC möchte ich eine Spannung von einem 5V Hallsensor ACS724 
(0-5A Variante) messen. Der erwartete Strom wird maximal 650mA und 
demzufolge wird wohl am Ausgang vom ACS724 maximal 1020mV rauskommen. 
Ich dachte ich könnte da nun einfach eine REF35125 als 
Referenzspannungsquelle (1250mV) für den ADC verwenden und mit 12Bit 
wandeln. Mein erste Wahl fiel auf den AVR16EB20 der das wohl so kann.

Eine weitere Anforderung war nun Multimaster (am Ende 22 Teilnehmer). 
Zuerst dachte ich da an I2C-Multimaster.. das könnte ja wohl noch mit 
dem AVR16EB20 funktionieren.

Noch eine Anforderung war nun ständiger Sleep. Das bedeutet das Gerät 
wird entweder von einer Tastenbedienung aufgeweckt oder das Gerät wird 
über den Kommunikationskanal aufgeweckt. Über den sendet das Gerät dann 
nach Statusmeldungen bis es sich wieder schlafen legt.

Dafür ist mir dann CAN mit partial Networking "über den Weg" gelaufen, 
was auch die Multimaster-Anforderung und den ständigen Sleep ganz gut 
abdeckt. Aber leider muss ich dann an den AVR16EB20 einen CAN-Controller 
(MCP2515) und noch einen Tranceiver mit partial Networking (TJA1145) 
dranhängen...

Da dachte ich mir das das doch mit einem STM32, die oftmals einen 
CAN-Controller und einen 12Bit-ADC enthalten einfacher gestalten könnte.

Für mich würde z.B. der STM32F042 völlig ausreichen, nur lese ich in 
vielen STM32-Datenblätter etwas von minimaler VDDA/VREF+ Spannung von 
2,0V (STM32F303, STM32C011) - beim STM32F042 sind es sogar 2,4V...

Wie misst man mit einem STM32 dann z.B. 0,5V-1,0V ohne 50% oder mehr der 
Auflösung zu verschenken?

von Kevin M. (arduinolover)


Lesenswert?

Mit einem Analogfrontend, das die eingehenden Messwerte auf den 
richtigen Bereich abbildet.

von Jochen D. (joe_d1)


Lesenswert?

Kevin M. schrieb:
> Mit einem Analogfrontend, das die eingehenden Messwerte auf den
> richtigen Bereich abbildet.

Bis gerade eben wusste ich gar nicht was ein Analogfrontend ist.

Hab' mir mal einen MCP3901 angeschaut - der hat zwei differentielle 
Eingänge, einen integrierten ADC und FPGAs. Braucht einen Quarz und 
erscheint mir viel zu mächtig für meine Aufgabe.

Und warum sollte ich dann nicht einfach einen MCP4726 AD-Wandler mit I2C 
und Ref-Eingang nehmen?

Oder einen OpAmp als nichtinvertierenden Verstärker mit Offset?

von Frank K. (fchk)


Lesenswert?

Jochen D. schrieb:

> Und warum sollte ich dann nicht einfach einen MCP4726 AD-Wandler mit I2C
> und Ref-Eingang nehmen?

Weil das die falsche Richtung ist. Das ist ein Digital->Analog Wandler. 
Du brauchst einen Analog->Digital Wandler.

Sowas wie den hier:
https://www.analog.com/en/products/max11613.html

I2C, 12 Bit SAR (d.h. Wandlung beim Auslesen, wenn Du den Wert 
ausgelesen hast, bist Du fertig. Bei anderen Architekturen musst Du die 
Wandlung starten, warten bis fertig und dann auslesen.)

VRef geht ab 1V aufwärts.


fchk

von Vanye R. (vanye_rijan)


Lesenswert?

> Bis gerade eben wusste ich gar nicht was ein Analogfrontend ist.

Du kannst natuerlich irgendeinen coolen Luxus AD-Wandler mit 
integriertem PGA usw nehmen, aber du kannst auch einfach einen 
Operationsverstaerker nehmen und damit die Spannung anpassen. Und falls 
deine Anforderung nur gering genug ist reicht es vielleicht auf 
Aufloesung zu verzichten. Allerdings solltest du mal pruefen welchen 
Ausgangswiderstand dein Hallsensor hat und ob er den ADC am COntroller 
treiben kann. Sowas geht oft, aber nicht immer.

Vanye

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Vanye R. schrieb:
> Operationsverstaerker

Manche STM32 haben einen OPAMP integriert. Damit kannst du die Spannung 
z.B. verdoppeln damit der ADC sie gut messen kann.

Jochen D. schrieb:
> STM32F042

Jochen D. schrieb:
> Noch eine Anforderung war nun ständiger Sleep.

Heißt dass Stromverbrauch wichtig ist? Dann schaue dir die STM32U und 
STM32L Serien an, welche deutlich weniger verbrauchen als die STM32F.

von N. M. (mani)


Lesenswert?

Niklas G. schrieb:
> Manche STM32 haben einen OPAMP integriert. Damit kannst du die Spannung
> z.B. verdoppeln damit der ADC sie gut messen kann.

Das ist mir auch als erstes in den Kopf gekommen. Vielleicht irgend 
einen STM32Gx. Die sind ja hauptsächlich auf stromsparend/ analog 
ausgelegt.

Bei denen gibt es auch welche mit CAN(FD).

Jochen D. schrieb:
> Das bedeutet das Gerät wird ... über den Kommunikationskanal aufgeweckt.

Eine andere Möglichkeit wäre noch UART oder mit dem Pegel deiner Wahl 
(RS485,232,...) wenn du den 9 Bit multiprocessor communication mode 
verwendest. Brauchst du halt einen Master der das kann. Bekommt man aber 
selbst mit einem FTDI am PC bin.

Bei dem Mode wird das 9.Bit für das Marking einer Adresse verwendet. Die 
Peripherie im STM kann auf eine eingestellte Adresse triggern. Filtert 
also alles unnötige aus. Zusammen mit einem DMA kannst du dir damit den 
kompletten (für den jeweiligen Teilnehmer gedachten Frame) ausschneiden 
ohne den Sleep verlassen zu müssen.

von Jochen D. (joe_d1)


Lesenswert?

Frank K. schrieb:

> Weil das die falsche Richtung ist.

Ja stimmt - habe ich nicht aufgepasst. Meinte sowas wie den MCP3201

Niklas G. schrieb:
> Manche STM32 haben einen OPAMP integriert. Damit kannst du die Spannung
> z.B. verdoppeln damit der ADC sie gut messen kann.

Muss ich mir mal genauer anschauen, Danke!

> Heißt dass Stromverbrauch wichtig ist?

Der Stromverbrauch insgesamt ist mir schon wichtig. Der Stromverbrauch 
der MCU ist nicht wichtig. Der Tranceiver TJA1145 hat einen Ausgang mit 
dem sämtliche anderen Komponenten der Saft abgedreht werden kann.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Jochen D. schrieb:
> Der Stromverbrauch der MCU ist nicht wichtig

Dann ist aber der Sleep egal?

Jochen D. schrieb:
> Der Tranceiver TJA1145 hat einen Ausgang mit dem sämtliche anderen
> Komponenten der Saft abgedreht werden kann.

Wenn du den MCU komplett stromlos schaltest statt einen effizienten 
Standby zu nutzen dauert aber auch das Starten länger, und sämtliche 
RAM-Inhalte sind futsch.

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.