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


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.

von Maxim B. (max182)


Lesenswert?

Jochen D. schrieb:
> 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...
>
Von STM32 gibt es noch H-Serie, z.B. H723. Zuerst scheint zu groß für 
diese Aufgabe. Aber H723 ist nicht wesentlich teurer (z.Z. 5,75 € bei 
Reichelt, bei Mouser teurer), und man muß nicht unbedingt mit vollen 550 
MHz arbeiten. Man kann auch mit 8 oder 24 MHz viel Strom sparen, dafür 
auch viele "Low-power" Modi. Als Bonus 2x 16 bit ADC (und 1x 12 bit 
auch), viele USARTs, SPI und Timer, darunter vier 32 bit (!) Timer. 2x 
CAN gibt es natürlich auch. Und double-precision FPU!
Es gibt ja keine Pflicht, alles gleich zu verwenden. Mit Mucleo-Board 
und Cube kann man LEDs genau so einfach blinken lassen wie mit F103.

Was Vdd betrifft: ohne DAC schon ab 1,62 V, mit DAC ab 1,8 V.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Maxim B. schrieb:
> Von STM32 gibt es noch H-Serie, z.B. H723.

Es gibt insgesamt 1308 STM32s die die Anforderungen erfüllen, warum 
ausgerechnet der massiv überdimensionierte STM32H723?

Maxim B. schrieb:
> Man kann auch mit 8 oder 24 MHz viel Strom sparen,

Und verbraucht trotzdem mehr Strom im Vergleich zu einem kleineren 
Prozessor bei gleichem Takt.

Maxim B. schrieb:
> Was Vdd betrifft: ohne DAC schon ab 1,62 V, mit DAC ab 1,8 V.

Unerheblich wenn man den integrierten OPAMP nutzt.

von Maxim B. (max182)


Lesenswert?

Niklas G. schrieb:
> Es gibt insgesamt 1308 STM32s die die Anforderungen erfüllen, warum
> ausgerechnet der massiv überdimensionierte STM32H723?

Weil alle 1308 gleich gut zu erlernen kaum möglich wird. Deshalb besser 
einige zu lernen, die alle möglichen Projekte in ein paar Jahren 
bedecken.

> Und verbraucht trotzdem mehr Strom im Vergleich zu einem kleineren
> Prozessor bei gleichem Takt.

Stimmt nicht. H7 wird mit 40 nm hergestellt, dadurch deutlich 
stromsparender unter gleichen Bedingungen.

Viele Optionen wie double-precision FPU oder CORDIC-Einheit sparen auch 
viel Energie, da dadurch entweder F_CPU oder Laufzeit zwischen Sleeps 
kleiner sein können.
Wenn F_CPU bis zu 550 MHz sein KÖNNTE, bedeutet das längst nicht, daß 
F_CPU 550 MHz sein SOLLTE. H723 läuft auch mit 8 MHz gut. Nur 
stromsparender als 130 nm Serien.

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Maxim B. schrieb:
> Stimmt nicht. H7 wird mit 40 nm hergestellt, dadurch deutlich
> stromsparender unter gleichen Bedingungen.

Stimmt wohl, bei 24 MHz und Ausführung aus dem Flash:
- STM32H723 6.85 mA
- STM32U083 2.65 mA

Standby Modus 3.3V, mit SRAM retention:
- STM32H723 4.3 µA
- STM32U083 90nA

Bei niedrigeren Frequenzen ist der Verbrauch für den STM32H723 überhaupt 
nicht spezifiziert... warum wohl.

Maxim B. schrieb:
> Weil alle 1308 gleich gut zu erlernen kaum möglich wird.

Wo ging es in diesem Thread um Didaktik? Es ging um ein konkretes 
Projekt. Für ein konkretes Projekt einen komplett ungeeigneten 
Controller für den Lerneffekt zu wählen ist kurios. Die Anforerung für 
das Projekt war "low power", du schlägst einen "High Performance" 
Controller vor nur weil der für andere Projekte besser wäre... Mehr 
Leistung bedeutet nicht unbedingt mehr geeignet, wie z.B. am 
Stromverbrauch zu erkennen.

Außerdem sind die meisten STM32 ziemlich ähnlich in der Programmierung, 
da muss man nicht viel neues lernen.

Maxim B. schrieb:
> Viele Optionen wie double-precision FPU oder CORDIC-Einheit sparen auch
> viel Energie

Eine Recheneinheit die für ein Projekt nicht gebraucht wird spart durch 
ihr Vorhandensein sicherlich keine Energie.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

mit CAN gibt es noch folgende 8Bit Controller Serien
PIC16F180
PIC18-Q83
PIC18-Q84
und "ältere" ATmegas.

von Maxim B. (max182)


Lesenswert?

Niklas G. schrieb:
> Eine Recheneinheit die für ein Projekt nicht gebraucht wird spart durch
> ihr Vorhandensein sicherlich keine Energie.

Noch mehr: der Hersteller gibt dir dann auch teils Geld zurück! :)

Wirklich: Teuerste ist die Zeit. Auch Zeit fürs Erlernen. Alles Andere 
kostet viel weniger.

Veit D. schrieb:
> mit CAN gibt es noch folgende 8Bit Controller Serien
> PIC16F180
> PIC18-Q83
> PIC18-Q84
PICs Problem ist teuere Compiler. Somit lohnt sich PIC nur für 
Großfirmen. Oder für Projekte, die mit Assembler auskommen.

: Bearbeitet durch User
von Np R. (samweis)


Lesenswert?

Glaubt Ihr denn, dass der TE nach fast einem Jahr immer noch sucht?

von Maxim B. (max182)


Lesenswert?

Np R. schrieb:
> Glaubt Ihr denn, dass der TE nach fast einem Jahr immer noch sucht?

Vielleicht. Mag sein.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Maxim B. schrieb:
> Wirklich: Teuerste ist die Zeit. Auch Zeit fürs Erlernen. Alles Andere
> kostet viel weniger.

Woher weißt du wie groß die Stückzahl des TO ist? Woher weißt du dass 
der TO da überhaupt erst viel lernen müsste und kein Experte bei STM32 
ist?

Die CAN, ADC und OPAMP Peripherien bei den STM32 sind bei allen 
Exemplaren nahezu gleich anzusteuern, da gibt's nicht viel dazu zu 
lernen, insbesondere wenn man die STM32CubeHAL nutzt. Im Gegenteil sind 
die großen STM32s durchaus komplexer in der Anwendung, weil man sich 
z.B. mit dem Cache und den verschiedenen Speichertypen befassen muss - 
das entfällt einfach bei den kleineren. Die STM32Uxx sind total simpel 
einzusetzen und sehr sparsam. Das Wissen was man dabei lernt kann man 
wunderbar auf die größeren Controller anwenden, da ist nichts 
verschwendet.

Außer vielleicht das Wissen in Bezug auf die besonderen Energiesparmodi, 
die es bei den großen Controllern (so) nicht gibt, die aber gerade bei 
diesem Projekt gefragt sind...

Überhaupt, wenn schon einen high-performance Controller, warum dann 
einen alten STM32H7 und nicht einen modernen STM32H5 mit Cortex-M33? 
Übrigens auch 40nm. Sinnvoller wäre ein STM32U3 mit ADC,OPAMP,CAN (auch 
40nm).

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Np R. schrieb:
> Glaubt Ihr denn, dass der TE nach fast einem Jahr immer noch sucht?

Hast Recht. Bestimmt nicht.

Beitrag #7915877 wurde vom Autor gelöscht.
Beitrag #7915879 wurde vom Autor gelöscht.
von Maxim B. (max182)


Lesenswert?

Niklas G. schrieb:
> Überhaupt, wenn schon einen high-performance Controller, warum dann
> einen alten STM32H7 und nicht einen modernen STM32H5 mit Cortex-M33?
> Übrigens auch 40nm. Sinnvoller wäre ein STM32U3 mit ADC,OPAMP,CAN (auch
> 40nm).

Weil H5 nur single-precision FPU und nur 2x 32-bit Timer hat.
H723 hat dagegen double-precision FPU und 4x 32-bit Timer.

Du schreibst so als wäre H723 ohne 16 bit ADC, ohne OPAMP und ohne
CAN.

: Bearbeitet durch User
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.