mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ungenauigkeit beim STM32 ADC


Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende einen STM32F103 auf einem Olimex STM32-H103 Board.
Der gleiche uC soll in meiner Hardware Verwendung finden; ich teste 
momentan die verschiedenen Funktionen des uC um den Schaltplan für meine 
Hardware zu erstellen.

Ich habe jedoch Probleme mit der Genauigkeit des 12-Bit ADC.  Es soll 
ein 10K Potentiometer ausgelesen werden.  Ich bekomme eine Genauigkeit 
von 7 Bit.
Ich benötige 8 Bit Genauigkeit, min 9 Bit sollten als Sicherheit drin 
sein.

Laut Schaltplan(*) hat das Board einen Low-Pass Filter vor VDDA.
Die Spannung (VDDA/VSSA) ist sehr stabil, VDD/VSS ist ebenfalls stabil.
Selbst direktes Verbinden von VDDA mit dem ADC input gibt mir nur eine 
Genauigkeit von 10 Bit.
Der STM32 hat wohl low impedance inputs, ob das das Hauptproblem 
darstellt? Ich habe einen OPA2350 bestellt, der sich auf dem Weg zu mir 
befindet, den ich als simplen 3.3V single supply rail-to-rail Voltage 
Buffer nutzen werde.
Was habt Ihr noch für Tricks auf Lager, um aus dem STM32 ADC mehr 
Genauigkeit herauszukitzeln?

* http://www.olimex.com/dev/images/ARM/ST/STM32-H103-sch.gif

Autor: Noname (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der STM32-AD-Wandler muss nach dem Einschalten kalibriert werden. Steht 
im Datenblatt.

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig, mache ich natürlich :)
Ich meinte eher hardwareseitig.

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende die maximalen (239.5uS) Samplezeiten, da die ADC inputs 
damit hochohmiger werden.  Bin mir aber nicht hunderprozentig sicher, 
dass es an den niedrigohmigen ADC Eingängen liegt...

Autor: Noname (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 10k-Poti hat maximal eine Quellimpedanz von 5k (Mittelstellung). Das 
ist niederohmig genug, um den AD-Eingang des Controllers in seinen Specs 
zu betreiben. Es ist nicht notwendig eine so große Samplezeit zu wählen. 
Schau mal nach, ob eventuell noch ein Pullup aktiviert ist. Du kannst 
auch einfach mit einem Multimeter die Spannung des Pins gegen VCC und 
gegen GND messen. Aus dem Eingangswiderstand des Multimeters und der 
gemessenen Spannung kannst Du den Strom berechnen, der aus dem Portpin 
fließt. Er sollte nicht höher sein als der im Datenblatt angegebene 
Leckstrom. Wenn das passt, liegts an der Software. Mit einem Oszi (am 
AD-Eingnangspin) würde man die Einbrüche beim Abtasten sehen.

Autor: Jean Payer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich habe hier 3 Demo Boards vom STM32, sowie ein Selbsthergestelltes und 
bei keinen der 4 Boards habe ich solche Ungenauigkeiten. Nur das LSB 
wackelt.

Zeig doch mal deine ADC Routinen. Schaltest du den ADC ein und machst 
sofort ne Messung ? Dann kannst du nämlich die erste Messung getrost 
vergessen.
Falls dem so ist schmeiss die erste Messung weg und starte eine 2te, die 
sollte dann stimmen.

Gruß

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal ein Minimalbeispiel zusammengestellt, mit dem das Verhalten 
reproduzierbar auftritt:
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
        ADC_DeInit(ADC1);
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);

        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        ADC_InitTypeDef  ADC_InitStructure;
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
        ADC_InitStructure.ADC_ScanConvMode = DISABLE;
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
        ADC_InitStructure.ADC_NbrOfChannel = 1;
        ADC_Init(ADC1, &ADC_InitStructure);

        ADC_Cmd(ADC1, ENABLE);

        ADC_ResetCalibration(ADC1);
        while (ADC_GetResetCalibrationStatus(ADC1));

        ADC_StartCalibration(ADC1);
        while (ADC_GetCalibrationStatus(ADC1));

        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1,
                ADC_SampleTime_239Cycles5);

        for (;;) {
                ADC_SoftwareStartConvCmd(ADC1, ENABLE);
                while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
                uint32_t v = ADC_GetConversionValue(ADC1);
                __show(v);
        }

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der oben erwähnte voltage buffer hat rein gar nichts gebracht.  Die 
Spannung zwischen AD-Eingangspin und VCC und zwischen AD-Eingangspin und 
GND ist mehr als ausreichend (>=12 bit) konstant.

Autor: Gregory Eckersley (Firma: Wimmera Logic Company) (gpecke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist Du dahinter gekommen , wie das Geräusch enstanden ist?

Meine Erfahrung war ähnlich. Mehrere kommerzielle Platten sowie eine 
selbst
gebaute zeigten Genauigkeiten < 10 bit. Die selbst gebaute Karte hatte 
viele
Filter angehängt.

Meine Vermutung ist RFI Verseuchung, denn ein Versuch ausserhalb der 
Stadt
brachte fast 12 bits.

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Gregory.

Nein, ich habe das ungeklärte Problem nach hinten geschoben, da sich die 
Funktionalität vorerst auch anders realisieren ließ.  Ich werde aber, 
wohl in den nächsten Tagen, den ADC des STM32F103 für eine andere 
Funktionalität testen müssen, die definitiv nicht anders gelöst werden 
kann und die als Letztes auf der Liste der Entwicklung der Hardware 
steht.  Ich werde dann wieder berichten.

Autor: Martin S. (drunkenmunky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Eingang verwendet ihr denn?

Autor: Gebhard Raich (geb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Layout und Versorgungs/Referenzspannungs Pufferung spielen eine 
entscheidende Rolle. Zur Pufferung ist 10uF//0,1uF X7R ,so nah wie 
irgendwie möglich an den Versorgungspins, kein Luxus. Auch eine 
getrennte Verorgung des ADC macht Sinn.(Da allerdings gegenparallel 
Dioden zwischen analog und digital Versorgung vorsehen). Weiters bilde 
ich unmittelbar vor dem ADC-Pin einen TP (je nach Frequenz) mit einem 
möglichst grossen C. Damit sollte eine Auflösung bis zum letzten Bit 
möglich sein.

Grüsse

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
genau bitte nicht PA0 benutzen, Errata sheet lesen.
Ich bekomme saubere 12 Bit von dem Wandler, allerding auch nur mit 
Oversampling und DSP-Filter.
Wenn langsame Signale gewandelt werden, setz doch mal 100nF nach Masse.
Der AD-Wandler zieht das Eingangspotential nach Vref/2. Soll es also von 
0...4095 linear sein braucht man einen OP dafor. z.B. MCP6051 oder 
MCP6071 also RTR OP.
Habe im moment nur noch Probleme mit Funkeinstrahlungen auf den STM32F, 
dann spinnt der AD-Wandler total. Gehe aber am Wochenende in ein 
HF-Labor mal sehen wo das Problem liegt. Gleiches Problem tritt auch auf 
wenn der MCO Ausgang aktiv ist. Dann verseucht der Chip sich quasi 
selber.....

Gruß Sascha

Autor: Marcus P. (spell)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, hat einer von euch zufällig Erfahrungen mit dem 
STM3F_ARM_KIT(STM32F107VC) was Steinert verkauft? Ich habe hier gerade 
mal ST Beispiele und eigene ADC Beispiele geschrieben und meine 
Abweichungen liegen bei mehr als 6 Bit (bei genutzter 12 Bit Auflösung 
und momentant zu messender Gleichspannung). Gibt es zu empfehlende 
externe ADC Alternativen wenn der STM sich doch als übermäßig 
empfindlich herausstellen sollte?


Gruß Marcus

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marcus,
also der AD-Wandler ist auch bei einem 103 Typ schon nicht gut. Da meine 
Signale aber recht langsam sind (Spannung, Temperatur usw), mache ich 
128faches Oversampling, dann sieht es besser aus.
Habe nun seit ca. 15 Jahren Erfahrung gesammelt mit den Mikrokontrollern 
was AD-Wandler betrifft. Es ist immer sehr schwierig alles auf einem 
Waver sauber hinzubiegen. Meine besten Erfahrungen habe ich mit Analog 
Device Kontroller gemacht. Auch der AVR (ATxmega) Kontroller hat da 
seine Probleme.
Wenn also jedes Sample so ca. mit 1 lsb Error sein soll ist ein externel 
AD-Wandler über SPI oder Parallel die beste Lösung.
Zur Zeit habe ich auch das Gefühl die Chips werden immer schlechter 
statt besser..... (oder Die Datenblätter mit der Marketingabteilung 
immer besser)
Jedoch ist die Wahl zu einem STM32F107VC sicherlich bei der Performance 
und Preis sehr gut. Also externer AD-Wandler suchen bei bedarf.

Gruß Sascha

Autor: Torsten R. (tom365)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich beschäftige mich auch gerade mit dem Stm32 und hab da mal eine 
Frage:
Wie hochohmig sind die ADC-Eingänge wenn diese mit einen 100n 
Kondensator abblocke und alle 20ms eine Wandlung mache? Wollte wie ich 
es bei den AVR gemacht habe einen RC-Filter (100k+100n)vorsehen gegen 
Störung und Spannungsspitzen.
Brauche ich dafür dann einen extra OV oder muß ich das ganze 
niederohmiger ausführen?


@Sascha
"Zur Zeit habe ich auch das Gefühl die Chips werden immer schlechter..."
Bei kleiner werdenden Chipstrukturen scheint es schwieriger zu werden 
die Analog-Komponenten sauber und ohne große Parameterstreuung 
hinzubekommen.
Bei Digital muss jeder Transistor nur sauber schalten.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Torsten, also ich habe als max. so 1K bis 3K6 herausgefunden. 
Kommt immer darauf an, wie viele LSBs Error man zulassen möchte.
Bei 1K knapp unter 1 LSB , bei 3K6 1 bis 2 LSBs. Allerdings mit 
permanenter Abtastung so bei 70KHz, da ein DSP Filter bei mir mitlauft.
Habe die ATxmega auch getestet sind aber noch viel schlechter, kommt 
aber ein neuer Typ raus (wohl eine überarbeitete Version).
Wenn du etwas geniales für extern brauchst, Semtech SX8724.
Oder mit CPU Analog Device ADuC8xx oder ADuC7xxx.


Hat jemand mit dem EFM32 Typen bezüglich des AD-Wandlers Erfahrung ?


Gruß Sascha

Autor: Jean Player (fubu1000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
also erstmal:

Torsten R. schrieb:
> "Zur Zeit habe ich auch das Gefühl die Chips werden immer schlechter..."
Oder die Entwickler / Benutzer immer schlechter ;-)

Torsten R. schrieb:
> Wie hochohmig sind die ADC-Eingänge wenn diese mit einen 100n
> Kondensator abblocke und alle 20ms eine Wandlung mache?
Die ADC Eingänge sind laut Datenblatt maximal 1k, bei sampling.
Der max. Eingangswiderstand errechnet sich für 1/4 LSB Fehler:
Rain = (Ts / (Fadc x Cadc x ln(2^(N+2))) - Radc;
für N=12; Fadc = Clock des Adc'S; Cadc = ca. 8pF; Radc = ca 1kOhm
Diese Rechnung gilt natürlich nur ohne zusätzlichen Kondensator vorm ADC 
Eingang, ansonsten erhöht sich natürlich C.
Zu beachten ist bei einem Tiefpassfilter vorm ADC natürlich
auch TAU (=R*C).
Wobei man theoretisch annehmen kann, das der Kondensator nach 5 TAU ca. 
99% voll ist.

Sascha schrieb:
> Hallo Torsten, also ich habe als max. so 1K bis 3K6 herausgefunden.
> Kommt immer darauf an, wie viele LSBs Error man zulassen möchte.
> Bei 1K knapp unter 1 LSB , bei 3K6 1 bis 2 LSBs.
Naja da biste ja auch an der Grenze mit 1k und 100n bei 70kHz.

GRUß

Autor: Torsten R. (tom365)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sascha

Ziehen die ADC-Eingänge nur während der Messung Strom?
Wollte gern RC-Filter an die Eingänge schalten.
Die Werte ändern sich nur langsam. Jede Störung die ich vom MC fernhalte
brauche ich hinterher nicht mittels Software unterdrücken.
Externe Komponenten wollte ich eigentlich nicht extra verbauen.
Wie  zeitaufwendig war bei dir der Umstieg vom AVR auf den STM32?
Habe mir den Primer2 und RLink geholt. Meine Entwicklungsumgebung ist 
Ride.
Habe mir das Referenz Manuell des STM32 heruntergeladen.
Die Timer des STM32 sind aber ganz schön komplex. Die 
Hardwarebeschreibung geht ja über min. 100 Seiten.
Im Moment kämpfe ich noch mit den Layout 0.5mm Pin-Abstand.
Werde die Platine wohl nicht mehr selber nach der Toner-Methode 
herstellen können...

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Torsten, also der Umstieg von ATxmega also AVR auf STM32F kann ich 
so nicht sagen das er Zeit in anpruch nimmt, die Einarbeitungszeit auf 
eine Hardware ist immer von der Qualität der Manuals abhängig. Leider 
finde ich die bei ST nur mittelmäßig gut, weil alles etwas verrissen 
ist, ich bin ständig nur am suchen, und dass auch noch über 3 
verschiedene PDFs.

Die ADCs ziehen nur Strom bei einer aktiven Wandlung am jeweiligen 
Eingang.
Der Wandler hat halt keinen Eingangsbuffer, dafür kommt er auf saubere 
0V runter.

Die Stromaufnahme ist beim STM32F halt etwas höher als beim ATxmega. Ich 
will den STM32L in den kommenden Wochen dazu mal testen.

Leiterplatten mit 0.5mm Pitch mit der Toner Methode d.h. Laserprinter 
macht kein Spass mehr, dazu einfach einen guten PCB-Pool suchen.

Noch eine Anmerkung zu den Störungen, wenn ich eine 144 Pin CPU nehme, 
habe ich bestimmt immer viel dran, und somit ist es leider unumgänglich 
Störungen fern zu halten.

STM32F und Timer, ja habe ich auch schon gelesen finde einiges recht 
schwerverständlich zumindest am Anfang.

Autor: Torsten R. (tom365)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin echt schwer am Überlegung ob ich für mein aktuelles Projekt auf 
den
STM32 umschwenke.
0.5mm für Follienleitersteckverbinder gehe noch einigermaßen aber ein 
kompletter 100piniger MC!?
Mein geplantes Projekt ginge zwar mit dem ATMega64 mit ein paar Tricks 
auch noch. Ist aber ein wenig fricklich mit den 4K Ram und einen 240x128 
Grafikdisplay. Müßte das Display in zwei Teilen beschreiben um mit 2K 
Bildbuffer auszukommen.
Meine Menüausgabe zwei teilen!?
Performance ist mit geschätzten 36ms für die Displayausgabe immer noch 
um Welten schneller als das LCD selber (min. 200ms Pixelwecksel)
Layout und Software sind für den ATMega64 zu 70% fertig.
Der ATMega64 würde mir bestimmt min. 2 Wochen Einarbeitung sparen und 
noch mal 10 Arbeitstage weil ich die Prototypenplatine noch selber 
machen kann.
Bin zwar dann mit den Erdweitermöglichkeiten und Rechenpower ein wenig 
eingeschränkt.
Wie gesagt der Mega ist fast bis aufs letzte Kontrollregister ausreizt.
zbp. Timer1:
Counter ist freilaufend für 8x Drehzahlmessung und zur Gewinnung von 3 
unterschiedliche Zeittakte(20ms,100ms,1s) mittels Compare-Registers

Was die Verständlichkeit der Manuals angeht fand ich die der AVR leicht 
verständlich. Man konnte das ganze dann noch im Simulator Schritt für 
Schritt überprüfen und dem MC beim arbeiten zusehen.
Bei der Funktionsvielfalt des STM32  ist alles so verstreut selbst im 
Ref.-Manuals. Zum Glück gibt es noch Beispielcode für die STM32-Lib.

Autor: Zonk-8000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei der Funktionsvielfalt des STM32

Tja genau das macht es eben nicht einfacher das zu beschreiben.
Die AVRs sind da schon deutlich simpler.

Autor: Tante Käthe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... oder halt EFM32 (www.energymicro.com):
max 350µA bei 12Bit und 1MSamples/s..
STK bestellen(inkl. IAR)
Simplcity Studio herunterladen
glücklich sein!

Einfacher geht's nicht.

Ich gebe zu, ich bin mittlerweiler ein Gecko-Fan! :-)

Grüß

TK

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tante Käthe,
wie gut ist der ADC des EFM ?
Um wieviele lsbs springt und hüpft der ?
Gruß Sascha

Autor: Tante Käthe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe http://www.energymicro.com/downloads/datasheets

DNL Differential non-linearity(DNL)    ±0.7 LSB
INL Integral non-linearity (INL),
End point method                               ±1.2 LSB

MC (No missing codes): Min: 11.9991 Typical:12 bits

Mehr Details dazu im Datenblatt.

Gute Nacht

TK

Autor: rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,


benutze p107 von olimex und kann o.g. 7 bit bestätigen...wenn man
die beispiel-codes von olimex/stm/Ronald Macdonald verwendet.

bei dma+ADC_InitStructure.ADC_ContinuousConvMode = ENABLE (!);

sehe ich nur noch +/-3 lsb...warum auch immer...mit oversampling krieg 
ich sauber 0

nun meine frage:

schalte ich gpio (z.b. 3 leds) wirds mehr, bis zu 10 lsb. ext stabile V 
ist da.
bin kein elektroniker, woran kanns liegen? ich will exteren MAX etc 
vermeinden

gruss

rudi

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du verwendest bei den Tests keine anderen GPIOs, nur den ADC?
+-0 würde ich -trotz oversampling- nicht trauen.  ;)
Die Ungenauigkeiten liegen zum Teil am Chip und zu Teil am Board-Layout.
Ich habe es mittlerweile getestet auf einem Olimex STM32-H103, zwei 
WaveShare Boards (103 und 105), und diversen anderen.

Ich habe das ursprüngliche Problem mehr oder weniger umgangen, indem ich 
die zu messende AC-Spannung vorher gleichrichte und vom mcu über ein 
digitales Potentiometer periodisch in Abhängingket der Wellenform 
variabel skaliere, das ganze wird dann digital wieder rekonstruiert. 
Ich kämpfe also um jedes Bit.

Ich möchte Euch übrigens auf den STM32F37x aufmerksam machen.  Endlich 
ein Cortex-M3/4 von ST mit 16-Bit SD-ADC.  Damit hat sich das Problem 
dann -zumindest für meine Anwendung- wahrscheinlich erledigt und ich 
kann für Revision 3 die ganze ADC-Peripherie wieder aus dem Schaltplan 
kicken.

Autor: sample-rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Du verwendest bei den Tests keine anderen GPIOs, nur den ADC?

bei dem 0/+-1 test kein gpio, später (mit den abweichungen) schon

>> +-0 würde ich -trotz oversampling- nicht trauen.  ;)

wir reden hier von knackigen 100 Hz für eine PID temperatur steuerung 
bei der es um leben und tod geht ;)

>> Ich habe das ursprüngliche Problem mehr oder weniger umgangen, indem
>> ich die zu messende AC-Spannung vorher gleichrichte und vom mcu über
>> ein digitales Potentiometer periodisch in Abhängingket der Wellenform
>> variabel skaliere, das ganze wird dann digital wieder rekonstruiert.

davon verstehe ich leider nix / klingt irgendwie chinesisch

>> Ich kämpfe also um jedes Bit.

me too

>> Ich möchte Euch übrigens auf den STM32F37x aufmerksam machen.  Endlich
>> ein Cortex-M3/4 von ST mit 16-Bit SD-ADC.  Damit hat sich das Problem
>> dann -zumindest für meine Anwendung- wahrscheinlich erledigt und ich
>> kann für Revision 3 die ganze ADC-Peripherie wieder aus dem Schaltplan
>> kicken.

effektive bits sind dann wieviele ?

Autor: bump-rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bump - einmal nur, versprochen

andererseits, vieleicht hat RONALD MACDONALD einen ganz 
höchstpersönlichen suchfilter ? wer weiss

andere hinweise bzgl. eingebauter adc probleme sind auch willkommen

Autor: Ronald Macdonald (ronaldmcdonald)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sample-rudi schrieb:
>>> Du verwendest bei den Tests keine anderen GPIOs, nur den ADC?
>
> bei dem 0/+-1 test kein gpio, später (mit den abweichungen) schon
>
>>> +-0 würde ich -trotz oversampling- nicht trauen.  ;)
>
> wir reden hier von knackigen 100 Hz für eine PID temperatur steuerung
> bei der es um leben und tod geht ;)

Ursprünglich bin ich mit dem Problem in Kontakt gekomnen, beim Auslesen 
eines motorisierten Potentiometers, also sogar ein (meist) konstanter 
Wert.
Aber selbst da hat oversampling nicht (genug) geholfen.

>
>>> Ich habe das ursprüngliche Problem mehr oder weniger umgangen, indem
>>> ich die zu messende AC-Spannung vorher gleichrichte und vom mcu über
>>> ein digitales Potentiometer periodisch in Abhängingket der Wellenform
>>> variabel skaliere, das ganze wird dann digital wieder rekonstruiert.
>
> davon verstehe ich leider nix / klingt irgendwie chinesisch
>

Das ist auch keine schöne Lösung. Eher ein Hack.

>>> Ich kämpfe also um jedes Bit.
>
> me too
>
>>> Ich möchte Euch übrigens auf den STM32F37x aufmerksam machen.  Endlich
>>> ein Cortex-M3/4 von ST mit 16-Bit SD-ADC.  Damit hat sich das Problem
>>> dann -zumindest für meine Anwendung- wahrscheinlich erledigt und ich
>>> kann für Revision 3 die ganze ADC-Peripherie wieder aus dem Schaltplan
>>> kicken.
>
> effektive bits sind dann wieviele ?

Ich hoffe, die Verantwortlichen bei ST haben aus dem ADC Desaster 
gelernt.
Da der SDADC aber eine komplett unabhängige Spannungsversorgung bekommt, 
bin ich da optimistisch. Mehr Bits als die 12 theoretisch verfügbaren 
des normalen ADCs werden es wohl schon sein. Allerdings hat ST mit der 
Pin-Belegung wieder einen Bock geschossen.
Waren bei einem Board Layout, das STM32F1xx und 
STM32F2xx/STM32F4xx-Bestückung ermöglichen soll, noch zwei Änderungen 
notwendig (Kondensatoren oder 0-Ohm Widerstand an zwei Pins), kann man 
nun faktisch nicht mehr von einem kompatiblen Board-Layout sprechen. Es 
geht (hatte eins fertig, für STM32F1xx, STM32F2xx/STM32F4xx und 
STM32f3xx), aber Drop-In-Kompatibilität sieht anders aus, so dass ich 
mich für Rev. 2 (STM32F1xx/F2xx/F4xx) und Rev 3 (STM32F3xx) entschieden 
habe.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.