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?
Mit einem Analogfrontend, das die eingehenden Messwerte auf den richtigen Bereich abbildet.
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?
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
> 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
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.
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.
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.
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.
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.
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.
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
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.
Hallo, mit CAN gibt es noch folgende 8Bit Controller Serien PIC16F180 PIC18-Q83 PIC18-Q84 und "ältere" ATmegas.
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
Glaubt Ihr denn, dass der TE nach fast einem Jahr immer noch sucht?
Np R. schrieb: > Glaubt Ihr denn, dass der TE nach fast einem Jahr immer noch sucht? Vielleicht. Mag sein.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.