Hallo zusammen Ich habe eine knifflige Aufgabe bei der ich nicht weiterkomme. Ich lese einen billigen stinknormalen Gasgriff (Poti) der mit 5V betrieben wird ein. Dieser gibt aber nicht nicht 0 und 5V aus, sondern bei 0-Stellung 0.83V und 4.32V bei maximaler Stellung. Diese Spannung habe ich dem ADC zugeführt. Den Spannungsteiler habe ich so ausgelegt, dass ich bei 4.32V die 3V habe, weil der ADC eine Referenzspannung von 3V hat (STM32L431CBT6). Siehe Bild ADC_Spannungsteiler. Bei 0.83V liegt am ADC eine Spannung von 0.575V an. Das Sieht man auch an den Oszibildern oszi_1 und Oszi_2. Jetzt folgt die 1. Frage: Wenn ich die Spannung mit dem ADC umwandle und die Spannung berechne erhalte ich eine Spannung von 0.475V statt 0.575V. Ein ADC Wert von ca. 650 statt wie von mir berechnet 785. (4096/3V*0.575V) Bei der Maximalstellung erreiche ich auch nicht 4096 und nur ca. 2.6V. Siehe Bild ADC_WerteSpannungen Die Berechnung erfolgt folgendermassen: voltage = (adcValue * adcRefVoltage) / period; // ADC-Wert in eine Spannung umrechnen adcRefVoltage = 3V period = 4096 eingestellter Takt uC 16MHz Warum sind die Werte so daneben? Ist das normal? static void MX_ADC1_Init(void) { /* USER CODE BEGIN ADC1_Init 0 */ /* USER CODE END ADC1_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; /* USER CODE BEGIN ADC1_Init 1 */ /* USER CODE END ADC1_Init 1 */ /** Common config */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.NbrOfConversion = 1; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc1.Init.DMAContinuousRequests = DISABLE; hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc1.Init.OversamplingMode = DISABLE; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_5; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; sConfig.SingleDiff = ADC_SINGLE_ENDED; sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.Offset = 0; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */ }
:
Bearbeitet durch User
Den schrieb: > Ich lese einen billigen stinknormalen Gasgriff (Poti) der mit 5V > betrieben wird ein. Welchen Innenwiderstand hat die Quelle des analogen Signals? Beeinflusst der Spannungsteiler etwa diesen Pegel?
Ja, schade. Du hast den interessanten Teil vom Schaltplan abgeschnitten. Dann hast du den vom Bildschirm abfotografiert statt schlicht einen Screenshot zu machen oder den Schaltplan als PDF anzuhängen. Dann ist leider nicht beschrieben was das Oszi zeigt. Was sind da die beiden Kanäle Orange und Grün? Wieso sind bei Grün diese Zacken nach unten? Johannes F. schrieb: > Welchen Innenwiderstand hat die Quelle des analogen Signals? > Beeinflusst der Spannungsteiler etwa diesen Pegel? Wenn das so wie man es sieht direkt am ADC hängt, dann ist das sehr hochohmig. Wenn der ADC also seinen Samplekondensator auflädt, dann kann die Spannung einbrechen. Warum also so hohe Widerstandswerte? Wieso ein OPV als Puffer? Damit könnte man auch gleich verstärken und einen Offset abziehen.
Hallo Gustl Die Spannung vom Spannungsteiler ist direkt mit dem ADC verbunden. Achja klar, wenn der Spannungsteiler zu hochohmig ist, wird der Samplekondensator womöglich nicht schnell genug während der Abtastzeit aufgeladen und somit kann die Spannung am Spannungsteiler einbrechen. Da würden die komischen Zacken am grünen Signal (Spannung am Spannungsteiler bzw. ADC Eingang) auch Sinn ergeben. Das gelbe Signal ist die PWM, die nicht den Tastgrad 100% erreicht, bzw. durch den Offset einen bestimmten Tastgrad hat. Grün ist die Spannung am ADC. Das wäre dann das nächste Problem das ich lösen muss, denn ich muss den Offset irgendwie wegbringen und zwar so, dass ich trotzdem über den gesamten Spannungsbereich des ADC 0-3V auch den maximalen Tastgrad erreiche. Deshalb knifflige Aufgabe, aber wenn der ADC schon falsche Werte ausgibt, bzw. die Schaltung falsch ausgelegt ist, dann wird es mit der Rechnerei nichts. Ich mache morgen mal den Spannungsteiler niederohmiger. Ich lege das morgen mal gemäss Bild aus.
Niklas G. schrieb: > Führst du die Selbstkalibrierung vom ADC durch? Hallo Niklas Nein ich habe den ADC direkt über das CubeMX initialisiert. Da stand nichts von Kalibrierung. Denkst dudass es daran liegt? Muss dann das eigentlich vor jeder Konvertierung machen oder eeicht es einmal nach dem ADC Start?
Den schrieb: > Da stand nichts von Kalibrierung Das steht im Reference Manual. Den schrieb: > Muss dann das eigentlich vor jeder Konvertierung machen oder eeicht es > einmal nach dem ADC Start? Einmal beim Start. Da gibt es eine HAL Funktion für.
Niklas G. schrieb: > Den schrieb: >> Da stand nichts von Kalibrierung > > Das steht im Reference Manual. > > Den schrieb: >> Muss dann das eigentlich vor jeder Konvertierung machen oder eeicht es >> einmal nach dem ADC Start? > > Einmal beim Start. Da gibt es eine HAL Funktion für. Ok danke Ich mache beides morgen gleich. Widerstände anpassen und Kalibrieren. Gute Macht 😊
Niklas G. schrieb: > Den schrieb: >> Gute Macht 😊 > > Möge die Macht mit dir sein! Ich habe mir alle Episoden von Starwars gestern Nacht noch reingezogen und 1000 mal über den ADC nachgedacht. Es hat nichts gebracht :) Heute habe ich die Widerstände angepasst und den ADC kalibriert. Siehe Bild Leider ohne Erfolg, er springt jetzt zwar von 0.45V auf fast 0.5V, aber immer noch zu wenig. Er müsste auf 0.575V hinauf. Woran kann es noch liegen?
Was "Informatiker" natuerlich nicht wissen koennen, schalte dem
"unteren" Widerstand noch einen 100 nF/1 uF Kondensator parallel.
Die Spannung am ADC-Eingang sollte dann glatt sein.
> wenn der ADC schon falsche Werte ausgibt
Ein ADC gibt keine falschen Werte aus. Die ausgegebenen Werte
entsprechen in erster Naeherung der Eingangsspannung am ADC.
Zieh auch mal dickere Massekabel die sinnig angeschlossen sind.
Welchen Spannungsbereich kannst du denn messen, wenn der ADC nicht angeklemmt ist - mit dem Multimeter an Testpunkt 26 und natürlich mit den drei Widerständen? Welchen Wert hat denn das Poti im Gasgriff? Ist es wirklich ein einfaches Poti? Wenn das nur den Bereich von 0.83V bis 4.32V ausgibt bei 5V Versorgung, sind da auch noch jeweils Widerstände zu GND und 5V verbaut. Ich vermute, dass es nicht am ADC liegt (kenne allerdings die STM32-Welt nicht), sondern eher an den unbekannte Werten im Gasgriff zusammen mit deiner Teilerbeschaltung.
Hallo Klaus Klaus H. schrieb: > Welchen Spannungsbereich kannst du denn messen, wenn der ADC nicht > angeklemmt ist - mit dem Multimeter an Testpunkt 26 und natürlich mit > den drei Widerständen? Naja es muss in diesem Fall am ADC liegen. Denn es sollte doch keine Rolle spielen, was vorher geschaltet ist. Ist ja sozusagen eine Blackbox. Mit dem Multimeter gemessen erhalte ich eben die Offsetspannung 0.83V, halt heruntergebrochen mit dem Spannungsteiler an TP26 0.575V, und 4.4V bei Maximalstellung am Spannungsteiler TP26 3V. Der ADC sieht am TP26 die Spannung 0.575V, wenn er fertig konvertiert muss er einfach auch die 0.575V bzw. 3V ausgeben. Tut er aber nicht. > Welchen Wert hat denn das Poti im Gasgriff? Ist es wirklich ein > einfaches Poti? Wenn das nur den Bereich von 0.83V bis 4.32V ausgibt bei > 5V Versorgung, sind da auch noch jeweils Widerstände zu GND und 5V > verbaut. Falls es wirklich wichtig sein sollte habe ich es mal gemessen. Der Gasgriff hat 3 Leitungen rot 5V, schwarz GND, weiss Signal. Zwischen Signal und GND messe ich ca. 0.5MOhm, zwischen 5V und GND 1.8kOhm, zwischen 5V und Signal ca. 427kOhm. Es erschließt sich mir nicht ganz, warum gerade zwischen 5V und GND ein 1,8 kOhm-Widerstand verwendet wird. Wenn ich den Gasgriff verstelle, bleibt alles gleich. Also ist es kein Poti. > > Ich vermute, dass es nicht am ADC liegt (kenne allerdings die STM32-Welt > nicht), sondern eher an den unbekannte Werten im Gasgriff zusammen mit > deiner Teilerbeschaltung. Naja, ich wüsste nicht was.. ich könnte ja einfach auch eine DC Spannung direkt zum ADC führen zB 2.2V und der ADC müsste diesen Wert ausgeben, ohne zu wissen wie die 2.2V generiert werden.
Den schrieb: > Der ADC sieht am TP26 die Spannung 0.575V, wenn er fertig konvertiert > muss er einfach auch die 0.575V bzw. 3V ausgeben. Tut er aber nicht. Ein ADC ist kein Multimeter das Spannungswerte anzeigt. Ein unsigned 12 bit ADC wird Werte von 0 bis 4095 ausgeben. Die kann man, evtl. nach einer Kalibrierung, auf Spannungswerte umrechnen. Statt deiner "fiktiven" Spannungswerte solltest du den Ausgabewert des ADC nennen. > Falls es wirklich wichtig sein sollte habe ich es mal gemessen. Der > Gasgriff hat 3 Leitungen rot 5V, schwarz GND, weiss Signal. Es ist ueberhaupt nicht wichtig. :) Hast du den Kondensator schon verbaut? > Wenn ich den Gasgriff verstelle, bleibt alles gleich. Also ist es kein > Poti. Vermutlich ein Hallsensor. > Naja, ich wüsste nicht was.. ich könnte ja einfach auch eine DC Spannung > direkt zum ADC führen zB 2.2V und der ADC müsste diesen Wert ausgeben, > ohne zu wissen wie die 2.2V generiert werden. Siehe oben.
Motopick schrieb: > Den schrieb: >> Der ADC sieht am TP26 die Spannung 0.575V, wenn er fertig konvertiert >> muss er einfach auch die 0.575V bzw. 3V ausgeben. Tut er aber nicht. > > Ein ADC ist kein Multimeter das Spannungswerte anzeigt. > Ein unsigned 12 bit ADC wird Werte von 0 bis 4095 ausgeben. > Die kann man, evtl. nach einer Kalibrierung, auf Spannungswerte > umrechnen. Statt deiner "fiktiven" Spannungswerte solltest du > den Ausgabewert des ADC nennen. Naja, der ADC lädt den Samplekondensator und gibt je nach Ladung unterschiedliche ADC Werte aus, klar. Aber wenn die Spannung am TP26 0V ist, ist die Ladung vom Samplekondensator auch 0V, ergo adcWErt =0 Wenn die Spannung an TP26 dem Referenzwert enstpricht, hat der Samplekondensator auch die entsprechende Ladung, also gibt der ADC einen Wert von 4095 aus. und bei 1.5V muss es demnach ein adcWert von 2048 sein. Das ist ja auch der Grund weshalb man höhere Spannungen auf die Range der ADC-Referenzspannung anpasst. Die ADC-Ausgabewerte siehst du oben im Bild rechts Beitrag 24.02.2024 18:32 Oben bei 0-STellung unten Maximalstellung Du siehst dass er bei 0-STellung Werte um die 680 ausgibt. und bei Maximalstellung ca. 3600 > >> Falls es wirklich wichtig sein sollte habe ich es mal gemessen. Der >> Gasgriff hat 3 Leitungen rot 5V, schwarz GND, weiss Signal. > > Es ist ueberhaupt nicht wichtig. :) > Hast du den Kondensator schon verbaut? Nein noch nicht, ich mach das morgen :) Hatte deinen Beitrag gar nicht gesehen. > >> Wenn ich den Gasgriff verstelle, bleibt alles gleich. Also ist es kein >> Poti. > > Vermutlich ein Hallsensor. > >> Naja, ich wüsste nicht was.. ich könnte ja einfach auch eine DC Spannung >> direkt zum ADC führen zB 2.2V und der ADC müsste diesen Wert ausgeben, >> ohne zu wissen wie die 2.2V generiert werden. > > Siehe oben.
Gustl B. schrieb: > Wenn der ADC also seinen Samplekondensator auflädt, dann kann > die Spannung einbrechen. Warum also so hohe Widerstandswerte? Das Problem ist nicht der hohe Widerstand, sondern die fehlende Ladung. Oder was meinst du, welche Grenzfrequenz für das Ablesen eines billigen, stinknormalen Gasgriffes erforderlich ist.
Den schrieb: > Du siehst dass er bei 0-STellung Werte um die 680 ausgibt. > und bei Maximalstellung ca. 3600 Und wo ist jetzt das Problem diesen Wertebereich auf einen Wertebereich der PWM von 0 bis 100 % abzubilden? Darum geht es ja wohl.
Na klar ist das die Ladung. Aber ein Widerstand steht dem Strom, das ist Ladung je Zeit, im Weg. Wenn schnell abgetastet wird dann kann das zu einem Problem werden. Hier ist das vermutlich nicht das Problem. Und auch der geforderte Kondensator wird die Situation nicht spürbar verbessern. Mit ADCs innerhalb von uCs kenne ich mich nicht aus. Die bieten oft viele Konfigurationsmöglichkeiten und somit Möglichkeiten zur Fehlkonfiguration. Ist die richtige Referenz ausgewählt? Wird richtig umgerechnet? Ist der Wert Offset Binary oder Zweierkomplement? Ist der Eingang Uni oder Biploar? Singleended oder differentiell? Trenne den Sensor und lege den Eingang auf Masse, welchen Wert liefert der ADC? Lege den Eingang auf eine bekannte Referenzspannung, ...
Gustl B. schrieb: > ... Wenn schnell abgetastet wird dann kann das zu > einem Problem werden. Es geht um einen Gasgriff. > Hier ist das vermutlich nicht das Problem. Und auch der geforderte > Kondensator wird die Situation nicht spürbar verbessern. Eine niedrige dynamische Quellimpedanz hat bei nahezu DC noch nie geschadet. > Mit ADCs innerhalb von uCs kenne ich mich nicht aus. Ja. Das koennte wohl sein.
Motopick schrieb: > Den schrieb: >> Du siehst dass er bei 0-STellung Werte um die 680 ausgibt. >> und bei Maximalstellung ca. 3600 > > Und wo ist jetzt das Problem diesen Wertebereich auf einen > Wertebereich der PWM von 0 bis 100 % abzubilden? > Darum geht es ja wohl. Nirgends, das habe ich schon gemacht. Ich finde einfach, dass das gebastelt ist, wenn ich extra Code schreiben und alles umrechnen muss. Der ADC muss meiner Meinung nach Werte von 0 bis 4095 ausgeben. Er gibt aber bei 0.575V nur 680 aus statt 780 und erreicht bei 3V am tP26 nur einen Wert von 3660 und nicht 4095. Das ist doch quatsch. Der nächste der den Code liest fragt sich dann auch was das für ein Unfug ist, wenn ich den Wertebereich 0 bis 2.1V (2.68-0.575) auf die Pwm umrechne anstatt 0 bis 3V. Ich bau morgen den Kondenser ein und miss auch mal mit GMD an TP26 was der ADC macht. Wenn das dann immer noch nicht klappt muss ich mir das fette Manual zur Gemüte führen...
:
Bearbeitet durch User
Hallo Den, also ich kann dir z.B. mal die Situation beim ESP32 schildern: dort ist der ADC ziemlich murksig, und hat einen Totbereich von AFAIK ca. 100mV. Das heißt, bis zur Eingangsspannung von ca. 100mV ist der Ausgangswert des ADC 0. Der ADC hat auch keine gute Linearität. Und natürlich ist die Referenzspannung auch Exemplarstreuungen unterworfen. Deshalb gibt es im Espressif-SDK Funktionen, mit denen der ADC kalibriert werden kann. Ruft man dann die Werte über die entsprechenden API-Funktionen ab, funktioniert alles wie gewünscht. ciao Marci
Marci W. schrieb: > also ich kann dir z.B. mal die Situation beim ESP32 schildern: > dort ist der ADC ziemlich murksig, Das ist beim STM32 nicht so. Dessen ADC ist viel besser, genauer und schneller. Der kann problemlos im mV-Bereich messen. Bei hochohmigen Quellen ist eine lange Samplezeit empfehlenswert.
Den schrieb: > Motopick schrieb: >> Den schrieb: >>> Du siehst dass er bei 0-STellung Werte um die 680 ausgibt. >>> und bei Maximalstellung ca. 3600 >> >> Und wo ist jetzt das Problem diesen Wertebereich auf einen >> Wertebereich der PWM von 0 bis 100 % abzubilden? >> Darum geht es ja wohl. > > Nirgends, das habe ich schon gemacht. > > Ich finde einfach, dass das gebastelt ist, wenn ich extra Code schreiben > und alles umrechnen muss. Der ADC muss meiner Meinung nach Werte von 0 > bis 4095 ausgeben. > Er gibt aber bei 0.575V nur 680 aus statt 780 und erreicht bei 3V am > tP26 nur einen Wert von 3660 und nicht 4095. Das ist doch quatsch. Nein. Kein vernuenftiger Konstrukteur wuerde den vollen Wertebereich nutzen wollen. Schon allein um Fehler wie: Es ist kein Drehgriff angschlossen, Masseschluss und Schluss gegen die Betriebsspannung zu erkennen. Bei einem Wert von 4095 waere statt Vollgas wohl eben eher ein "Notaus" angebracht. Wenn du solche Konstruktionsprinzipien nicht kennst, solltest du dein "Gebastel" vielleicht einfach sein lassen. Mittlerweile ist dir ja auch klar, dass kein normales Potentiometer in dem Ding ist. Gebastel ist es, dass du bislang nicht mal den wirksamen Innenwiderstand deines Drehgebers z.B. in Mittelstellung kennst oder gemessen haettest. Das kann man naemlich. U.U. ist dein nachgeschalteter Spannungsteiler fuer den naemlich viel zu niederohmig. Ein Richtwert waere, den nachgeschalteten Teiler so hochohmig zu machen, dass der Fehler durch dessen Belastung kleiner als 5 oder 10 % ist. Das ist fuer einen Gasdrehgriff voellig akzeptabel. Genauso wie ein Linearitaetsfehler von 5 % nicht stoert. Auch der wird durch die Belastung durch den Teiler verursacht. Mit der gegenwaertigen Dimensionierung nutzt du 75 % des Wertebereichs des ADC aus. Auch das waere ein voellig akzeptabler Wert. Das 100 % ueberhaupt nicht angestrebt werden, siehst du schon am Wertebereich der Ausgangsspannungen des Drehgriffs. Der muesste dann 0 bis 5 V ausgeben. > Der nächste der den Code liest fragt sich dann auch was das für ein > Unfug ist, wenn ich den Wertebereich 0 bis 2.1V (2.68-0.575) auf die Pwm > umrechne anstatt 0 bis 3V. Wenn du in deinem Code mit Spannungen rechnest, hast du etwas nicht verstanden. Das ist naemlich Unfug. Und voellig unnoetig. Es steht dir natuerlich frei, solchen Unsinn weiter zu kultivieren. > Ich bau morgen den Kondenser ein und miss auch mal mit GMD an TP26 was > der ADC macht. Wenn das dann immer noch nicht klappt muss ich mir das > fette Manual zur Gemüte führen... Der Kondensator wird, wenn richtig angeschlossen, Stoerungen auf dem ADC-Eingang filtern. Den Wertebereich wird er nicht vergroessern.
Den schrieb: > und erreicht bei 3V am tP26 nur einen Wert von 3660 und nicht 4095 Das spräche für eine Referenzspannung des ADC von 3.3V statt 3.0V ... LG, Sebastian
:
Bearbeitet durch User
Gustl B. schrieb: > Wenn schnell abgetastet wird dann kann das zu einem Problem werden. Sag mir einen vernünftigen Grund, warum ein billiger, stinknormaler Gasgriff (Poti) schnell (aus Sicht eines uC) abgetastet werden sollte.
Deine Frage passt nicht zu meiner Aussage. Ich: Wenn schnell abgetastet, dann könnte Problem entstehen. Du: Nenne einen Grund wieso man schnell abtasten sollte. Hatte nie empfohlen schnell abzutasten. Ich weiß nicht wie schnell abgetastet wird, daher meine Warnung. Du hast aber nach einem Grund gefragt. Nun um z. B. Rauschen wegzumitteln. Klar das kann man auch analog mit Tiefpass, aber der verschiebt die Grenzfrequenz. Macht hier bei der Anwendung alles keinen Sinn.
Den schrieb: > sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5 Es wird doch gar nicht so schnell abgetastet. Im Datasheet steht wie hoch die Eingangsimpedanz sein darf, in Abhängigkeit von der Sampletime.
Motopick schrieb: > Mit der gegenwaertigen Dimensionierung nutzt du 75 % des Wertebereichs > des ADC aus. Auch das waere ein voellig akzeptabler Wert. Es geht ihm aber nicht drum ob etwas akzeptabel ist oder nicht, er möchte verstehen warum das so ist. Er misst an einem Testpunkt zwischen Spannungsteiler und ADC eine Spannung und bekommt vom ADC einen Wert der nicht dazu passt. Das würde ich auch nicht akzeptieren ohne Erklärung denn vermutlich kann man daran was ändern.
Sebastian W. schrieb: > Das spräche für eine Referenzspannung des ADC von 3.3V statt 3.0V ... Blöd nur, dass der STM32L431CBT6 laut Datenblatt eine interne Referenz von 3.0V ± 10mV im Temperaturbereich 25° ... 35° hat.
Klaus H. schrieb: > Blöd nur, dass der STM32L431CBT6 laut Datenblatt eine interne Referenz > von 3.0V ± 10mV im Temperaturbereich 25° ... 35° hat. Die wird aber nicht direkt benutzt um den ADC zu betreiben. Die kann man nur auch messen und damit manuell die Werte abgleichen.
Klaus H. schrieb: > Sebastian W. schrieb: >> Das spräche für eine Referenzspannung des ADC von 3.3V statt 3.0V ... > > Blöd nur, dass der STM32L431CBT6 laut Datenblatt eine interne Referenz > von 3.0V ± 10mV im Temperaturbereich 25° ... 35° hat. Kann man bei diesem STM am VREF+ Pin diese ADC-Referenzspannung messen? Ich meine, es ist doch absolut seltsam, dass ein 12-Bit ADC einen Wert von 3660 liefert, wenn laut Oszi 3.0V stabil am Eingang anliegen und die ADC-Referenz auch 3.0V beträgt. LG, Sebastian
Klaus H. schrieb: > Sebastian W. schrieb: >> Das spräche für eine Referenzspannung des ADC von 3.3V statt 3.0V ... > > Blöd nur, dass der STM32L431CBT6 laut Datenblatt eine interne Referenz > von 3.0V ± 10mV im Temperaturbereich 25° ... 35° hat. Kann man bei diesem STM am VREF+ Pin diese ADC-Referenzspannung messen? Ich meine, es ist doch absolut seltsam, dass ein 12-Bit ADC einen Wert von 3660 liefert, wenn laut Oszi 3.0V stabil am Eingang anliegen und die ADC-Referenz auch 3.0V beträgt. Da hat man dann halt schnell die Versorgung des STM im Verdacht ... LG, Sebastian
Niklas G. schrieb: > Die wird aber nicht direkt benutzt um den ADC zu betreiben. Die kann man > nur auch messen und damit manuell die Werte abgleichen. Und: > und die ADC-Referenz auch 3.0V beträgt. > muss ich mir das fette Manual zur Gemüte führen... Das tut wohl dringend Not. Edith: Vermutlich muesste der TO auch sonst noch viel lesen.
:
Bearbeitet durch User
Gustl B. schrieb: > Motopick schrieb: >> Mit der gegenwaertigen Dimensionierung nutzt du 75 % des Wertebereichs >> des ADC aus. Auch das waere ein voellig akzeptabler Wert. > > Es geht ihm aber nicht drum ob etwas akzeptabel ist oder nicht, er > möchte verstehen warum das so ist. > Er misst an einem Testpunkt zwischen Spannungsteiler und ADC eine > Spannung und bekommt vom ADC einen Wert der nicht dazu passt. Das würde > ich auch nicht akzeptieren ohne Erklärung denn vermutlich kann man daran > was ändern. Danke für deine Klarstellung. Genau das wollte ich gerade schreiben. Ich glaube so schwer ist das nicht zu verstehen. Alle habens gerafft, nur Motopick steht noch neben der Spur. @Motopick Sorry nicht böse gemeint, aber ich glaube dass dir eher lesen gut täte. Oder sag mir was du bei der Konfiguration am TP26 für eine Spannung erwartest, damit der ADC 4095 ausgibt. 5V, 6V?? oder einfach irgendwie höher wie 3V? wohl kaum.. Ich hoffe du siehst es ein, wenn wir morgen ein Rennen in der Formel 1 fahren und das Auto nicht läuft, brauchen wir nicht über die Strecke und sonstigen Strategien quatschen, um erster zu werden, wenn das Auto nicht richtig funzt. Soviel zu deinen Konstruktionsprinzipien über Sicherheiten und Fehlern. Das ist alles Zukunftsmusik. Ich komme heute wahrscheinlich nicht mehr dazu, um daran zu arbeiten.
Sebastian W. schrieb: > Klaus H. schrieb: >> Sebastian W. schrieb: >>> Das spräche für eine Referenzspannung des ADC von 3.3V statt 3.0V ... >> >> Blöd nur, dass der STM32L431CBT6 laut Datenblatt eine interne Referenz >> von 3.0V ± 10mV im Temperaturbereich 25° ... 35° hat. > > Kann man bei diesem STM am VREF+ Pin diese ADC-Referenzspannung messen? > > Ich meine, es ist doch absolut seltsam, dass ein 12-Bit ADC einen Wert > von 3660 liefert, wenn laut Oszi 3.0V stabil am Eingang anliegen und die > ADC-Referenz auch 3.0V beträgt. > > Da hat man dann halt schnell die Versorgung des STM im Verdacht ... > > LG, Sebastian Du bringst es auf den Punkt. Jetzt sind einige Tipps gekommen. ich muss erstmal Daten sammeln und melde mich dann nochmals.
Vorsicht! Die interne Referenzspannung bei den meisten STM32 dient nur dem Abgleich. Die ADC-Werte werden immer auf die Versorgungsspannung(!) bezogen, also ~3,3V. Bei bekannter und stabiler Versorgungsspannung kannst du den ADC-Wert der internen Referenzspannung auslesen und damit die exakte interne Referenzspannung ermitteln. Bei schwankender Versorgungsspannung lässt sich dann über den momentanen ADC-Wert der internen Referenz auf den momentanen Wert der Versorgungsspannung schließen und damit auch auf den momentanen Referenzspannungswert deiner ausgelesenen ADC-Werte.
Nein. Man kann die interne Referenz zwar auch AD wandeln und so den Wert davon bekommen, aber es gibt auch den VREFBUF Datenblatt 3.17. Damit kann man VREF puffern und als Referenz für den ADC oder für externes Zeug verwenden. Aber: VREFBUF kann nur 2.048 V und 2.5 V.
Gustl B. schrieb: > Deine Frage passt nicht zu meiner Aussage. > > Ich: > Wenn schnell abgetastet, dann könnte Problem entstehen. Dann mach doch für deine Aussage einen neuen Thread auf. Hier gibt es keinen Anlass für eine schnelle Abtastung und damit auch nicht das von dir angesprochene Problem, weil es sich um einen billigen, stinknormalen Gasgriff handelt.
Gustl B. schrieb: > Nein. Man kann die interne Referenz zwar auch AD wandeln und so den Wert > davon bekommen, aber es gibt auch den VREFBUF Datenblatt 3.17. In diesem Baustein ist das nicht vorhanden. VREF ist also die Versorgungsspannung. Rainer W. schrieb: > Dann mach doch für deine Aussage einen neuen Thread auf. Hier gibt es > keinen Anlass für eine schnelle Abtastung und damit auch nicht das von > dir angesprochene Problem, weil es sich um einen billigen, stinknormalen > Gasgriff handelt. Ich habe nie behauptet, dass da schnell abgetastet wird. Aber da der ADC schnell abtasten kann habe ich auf mögliche Probleme hingewiesen.
> Motopick steht noch neben der Spur
Dann muss der TO wohl auf einer erdnahen Umlaufbahn sein.
Von einer geistigen "Mangellage" tappt er in die Naechste.
Die er ja aber auch selbst verursacht.
Und was er auch anstellt, wirklich genau wird so sein ADC nie sein
und werden. Er kennt das Wort "ratiometrisch" naemlich nicht.
(Hier standen noch einige Zeilen ueber das zu erwartende Berufsleben.
Wenn die nicht eintreten sollen, muesste der TO seine Arbeitsweise
aber deutlich aendern.)
Motopick schrieb: > Er kennt das Wort "ratiometrisch" naemlich nicht. Hummeln kennen das Wort Aerodynamik auch nicht, fliegen aber trotzdem.
Das "ratiometrisch" Informatikern auch ein Fremdwort ist, liegt wohl an deren mangelhafter Ausbildung. Und von Aerodynamik haben sie auch keine Ahnung. Wo eine Hummel locker weiterfliegt, fliegen die naemlich auf die Schn....
:
Bearbeitet durch User
Jedes Studium welches nicht genau die Inhalte vom Ingenieusstudium hat ist automatisch mangelhaft? Ist "die Weisheit mit Löffeln fressen" da eigentlich Wahlpflicht? Sagst du auch deinem Arzt er hätte lieber mal Ingenieur studiert?
Niklas G. schrieb: > Jedes Studium welches nicht genau die Inhalte vom Ingenieusstudium hat > ist automatisch mangelhaft? Ist "die Weisheit mit Löffeln fressen" da > eigentlich Wahlpflicht? Sagst du auch deinem Arzt er hätte lieber mal > Ingenieur studiert? Kenntnisse von "Quereinsteigern" sind naturgemaess in der Vollstaendigkeit und im Detail als mangelhaft anzusehen. Dem Informatiker reicht im Zusammenhang mit einem ADC, die formal richtige Loesung, diesen ADC an die Quelle anzuschliessen, und den ADC moeglicherweise mit einer stabilen Referenz zu versorgen. Ein Elektroniker weiss natuerlich, dass das nicht der Weisheit letzter und bester Schluss ist. Da Informatiker ausserdem ganz ueberwiegend nicht in der Lage sind, ihre Arbeit selbstkritisch zu reflektieren und zu hinterfragen, bleibt solcher Informatikermurks dann im Produkt erhalten. Mein Studium habe ich sehr entspannt wahrgenommen. Meine schlechteste Note in den Hauptfaechern war ein "Zwei". Der Rest war besser. Es gab auch Faecher, in denen mein Durchschnitt auf .0 endete. Und das war vor der Noteninflation. Ich bin kerngesund. Mein letzter Arztbesuch ist einige Jahre her. Das war ein ausgebildeter Sportarzt, in seinen besten Jahren. Mit einigem Befremden habe ich dann von seinem ploetzlichen Ableben erfahren.
Motopick schrieb: > Mein Studium habe ich sehr entspannt wahrgenommen Weil es so einfach ist, dass auch wir Informatiker das können ;-)
Will man eine Potistellung einlesen, dann nimmt man dazu die ratiometrische Messung. D.h. die Referenz des ADC wird von der gleichen Spannung abgeleitet, an der auch das Poti hängt.
Peter D. schrieb: > Will man eine Potistellung einlesen, dann nimmt man dazu die > ratiometrische Messung. D.h. die Referenz des ADC wird von der gleichen > Spannung abgeleitet, an der auch das Poti hängt. Da hat mal ein richtiger Elektroniker gesprochen. :)
Niklas G. schrieb: > Motopick schrieb: >> Mein Studium habe ich sehr entspannt wahrgenommen > > Weil es so einfach ist, dass auch wir Informatiker das können ;-) Wohl kaum. Von der Anfangsstaerke des Matrikels blieb zum Schluss nur die Haelfte uebrig. Und wer nix konnte, landete im Schiffs- oder Waschmaschinennbau. Sich seinen Wunscharbeitsplatz selbst auszusuchen, war im "System" eigentlich auch nicht vorgesehen. Aber auch das habe ich geschafft. Ganz ohne Vitamin B. Nur mit Leistung. Und scheinbar kannst du ja auch bis heute nichts mit "ratiometrisch" anfangen. Deine letzten Beitraege legen das jedenfalls nahe.
Wenn dein Gasgriff ein Poti mit sagen wir 10 kOhm oder 50 kOhm ist und du schaltest einen Spannungsteiler dahinter, der in der gleichen Größenordnung liegt, kann da nichts Gutes bei raus kommen. Einfacher wäre es den Gasgriff auch an 3V3 zu hängen oder einen passend berechneten Vorwiderstand dazwischen zu schalten, um den Maximalwert auf 3V zu begrenzen. Ansonsten wird ein Impedanzwandler nötig
:
Bearbeitet durch User
Motopick schrieb: > Wohl kaum. Von der Anfangsstaerke des Matrikels blieb zum Schluss > nur die Haelfte uebrig. Uiuiui. Das ist in jedem Studium so. Motopick schrieb: > Sich seinen Wunscharbeitsplatz selbst auszusuchen, > war im "System" eigentlich auch nicht vorgesehen. > Aber auch das habe ich geschafft. Ganz ohne Vitamin B. Nur mit Leistung. Ist für Informatiker normal. Motopick schrieb: > Und scheinbar kannst du ja auch bis heute nichts mit "ratiometrisch" > anfangen Sicher kann ich das. Aber ich habe es nicht nötig mit so etwas trivialem anzugeben. Aber wenn du es unbedingt wissen musst: Rein zufällig habe ich sogar schon eine Gaspedal-Auswertung für ein Rennauto implementiert. Mit Erkennung der Tot-Bereiche/Wire-Off, Konsistenzprüfung der redundanten Potis, Motor-Sanftabschaltung im Fehlerfall, Auto-Selbst-Kalibration des Messbereichs, außerdem Bremsdruck-Messung und Konsistenzcheck dagegen, CAN-Anbindung und Logging. Aber führt uns das hier weiter? Nö. Daher hatte ich sinnvolle Beiträge geschrieben, mit Hinweis auf die Funktionsweise der Referenz und Sampletime-Einstellung sowie Kalibration.
Torben schrieb: > Wenn dein Gasgriff ein Poti mit sagen wir 10 kOhm oder 50 kOhm ist und > du schaltest einen Spannungsteiler dahinter, der in der gleichen > Größenordnung liegt, kann da nichts Gutes bei raus kommen. Den Gedanken hatte ich auch erst, aber: Den schrieb: > Mit dem Multimeter gemessen erhalte ich eben die > Offsetspannung 0.83V, halt heruntergebrochen mit dem Spannungsteiler an > TP26 0.575V, und 4.4V bei Maximalstellung am Spannungsteiler TP26 3V.
Niklas G. schrieb: > Ist für Informatiker normal. Und wenn die Performance fehlt, wird der Informatiker fremdgecancelt. Auch voellig normal. Kennst du ja selbst? Was heute "normal" ist, war in einem anderen Wirtschaftssystem und zu seiner Zeit uebrigens eher die gaaaanz seltene Ausnahme. > Sicher kann ich das. Aber ich habe es nicht nötig mit so etwas trivialem > anzugeben. ... Die Erwaehnung eines trivialen Begriffs ist also angeben? > ... Daher hatte ich sinnvolle Beiträge geschrieben, mit > Hinweis auf die Funktionsweise der Referenz und Sampletime-Einstellung > sowie Kalibration. Ich halte nichts davon, fuer faule TOs Referenzen "fremdzulesen". Das sollen sie mal schoen selbst machen. Diese Beitraege waren sicher fuer den TO hoechst wertvoll. Aber im Moment trollst du nur noch. Und das ganz schlecht.
Motopick schrieb: > Und wenn die Performance fehlt, wird der Informatiker fremdgecancelt. Aber unfähige Ingenieure werden behalten, aus Mitleid? Motopick schrieb: > Die Erwaehnung eines trivialen Begriffs ist also angeben? Darauf wiederholt zu bestehen, und zu behaupten andere würden es nicht kennen und hätten deswegen eine mangelhafte Ausbildung - definitiv ja. Motopick schrieb: > Ich halte nichts davon, fuer faule TOs Referenzen "fremdzulesen" Dann bist du im Forum falsch. Jeder fängt mal an, und die ST Doku kann einen schon erschlagen. Und du hast nichts zu den spezifischen Tücken der STM32-ADCs gesagt, nur Allgemeinplätze und Nörgeleien. So toll scheinst du dich auch nicht auszukennen.
Niklas G. schrieb: > Motopick schrieb: >> Und wenn die Performance fehlt, wird der Informatiker fremdgecancelt. > > Aber unfähige Ingenieure werden behalten, aus Mitleid? Ich bin selbststaendig taetig. Wenn der Kunde meine Leistung gut befindet, gibt es immer ein Folgeprojekt. Und das ist schon seit Jahren so. > Darauf wiederholt zu bestehen, Ich habe es nicht wiederholt. Du hast es wiederholt. Mein Beitrag war hier der erste der darauf hingewiesen hat. > Motopick schrieb: >> Ich halte nichts davon, fuer faule TOs Referenzen "fremdzulesen" > > Dann bist du im Forum falsch. Jeder fängt mal an, und die ST Doku kann > einen schon erschlagen. Und du hast nichts zu den spezifischen Tücken > der STM32-ADCs gesagt, nur Allgemeinplätze und Nörgeleien. So toll > scheinst du dich auch nicht auszukennen. Ich bin hier. Also kann ich hier nicht falsch sein. Mit dem L431 habe ich tatsaechlich noch nicht gearbeitet. Spezifika kann ich daher nicht kennen. Wenn ich einen Controller auswaehle, wird vor der eigentlichen Projektarbeit, die im Projekt zu erwartende Peripherie evaluiert. Bei einem ADC z.B. Rauschen, Linearitaet, TK etc. pp. und natuerlich die Konfiguration. Darauf aufbauend, gibt es dann im allgemeinen auch keine "Ueberraschungen". Wenn der TO diese Schritte auslaesst, ist er selbst verantwortlich.
Den schrieb: > Die Berechnung erfolgt folgendermassen: > voltage = (adcValue * adcRefVoltage) / period; // ADC-Wert in eine > Spannung umrechnen > adcRefVoltage = 3V > period = 4096 Wie schon einige Vorredner (Niklas, Mikey, Gustl, auch Motopick hat indirekt darauf hingewiesen) erwähnt haben, ist diese deine Berechnung höchstwahrscheinlich fehlerhaft. Ich hab mir diesbezüglich mal das Referenzhandbuch des STM32L43 zu Gemüte geführt. Der ADC des STM32L43 misst nicht ratiometrisch zu der internen 3.0V-Referenzspannung Vrefint, sondern zu Vref+ beziehungsweise Vdda! Ich habe den entsprechenden Ausschnitt aus dem RM angehängt. Sollte dein STM also mit 3.3V versorgt werden, so würde dies deine Meßwerte erklären. Dann müssten diese 3.3V an TP26 den ADC-Wert 4095 ergeben. LG, Sebastian
:
Bearbeitet durch User
Der ganze Drops waere uebrigens gelutscht, wenn er seinen "komischen" Gasdrehgriff auch aus den 3.3 V des Controllers versorgen wuerde. Das waere dann auch "echt" ratiometrisch und wuerde den vermutlich voellig flasch dimensionierten Spannungsteiler eruebrigen. Es koennte natuerlich sein, dass der Geber bei 3.3 V nicht mehr arbeitet. Das waere dann persoenliches Pech. Edith: Ein 1 uF Kondensator zwischen ADC-Eingang und GND bliebe weiterhin eine brilliante Idee um Stoerungen wegzufiltern. Der Vorposter hat ratiometrisch irgendwie auch nicht richtig verstanden.
:
Bearbeitet durch User
ADC Messwerte und Messungen sind idR durch Kalibrieren zu korrigieren. Schon mal über eine Zwei-Punkt Korrektur nachgedacht? Offset Fehler beim ADC sind eig. normal. Zwei Messpunkte festlegen, extern Spannung anlegen und Korrekturgerade aus IST/SOLL berechnen. Diese musst du dann in deiner Software entsprechend auf die Messwerte anwenden. Dadurch erhälst du für jeden Messpunkt einen Korrekturwert. So kannst du den Offset raushauen. Nichtlinearitäten sind eher dann eine theoretische Betrachtung hier aber nicht sonderlich relevant. Jo
:
Bearbeitet durch User
Wenn ich sehe wie kompliziert eine solch recht einfache Sache angegangen wird muss ich mich wundern. Ich habe seit über 20 Jahren mit diesen Drehgriffen zu tun und hunderte von diesen eingesetzt. Normalerweise bekommt man die nur mechanisch kaputt, elektrisch hatte ich da nie einen Defekt. Also zuerst einmal, es sind analoge Hallsensoren drin die 5V brauchen, mit 3,3V wird das nichts. Sie geben eine Spannung aus die wie schon festgestellt mit gewissen Streuungen von 0,85 bis 4,2V geht. Sind also als Spannungsquelle zu sehen und NICHT als Poti. Die über einen Spannungsteiler direkt an eine ADC Eingang zu schalten ist nicht die beste Idee. Ich hab da immer einen OPV als nicht invertierenden Verstärker geschaltet als Impedanzwandler zwischengeschaltet. So hat man die Probleme mit dem Spannungsteiler gar nicht erst. Und auch die Anpassung an den ADC-Bereich ist so einfach zu machen. Der - Eingang des OPV wurde an eine einfache 'Ref' Spannung mit ner Si Diode in Flussrichtung gelegt damit der untere Pegel etwas runter kam. Absichtlich nicht ganz auf Null damit der kleine Sprung zur Einschalterkennung genutzt werden konnte. Auch die Fehlererkennung bei Drahtabriss muss bedacht werden. Dazu ist auch der Abstand von 4,2 bis 5V wichtig. Den Bereich von 0,85-4,2 auf den gesamten ADC Bereich zu spreizen ist also keine gute Idee. Die alten Fahrradsteuerungen aus China hatten einen IC drin der diese Eckwerte entsprechend verwendet hat.
:
Bearbeitet durch User
Steffen W. schrieb: > Der - Eingang des OPV wurde > an eine einfache 'Ref' Spannung mit ner Si Diode in Flussrichtung gelegt Autsch, Temperatur-Drift ...
Ist schon klar das das nicht sonderlich stabil ist, doch für den Zweck reichte das aus. So super präzise brauchts für die Drehgriffabfrage nicht zu sein. Wenn man das will ist es auch kein Problem da was genaueres zu nehmen. In der Praxis war das nie nötig. Die Schwankungen kann man in der Software leicht berücksichtigen. So genau kann man den Griff in der Praxis ohnehin nicht bedienen.
Niklas G. schrieb: > Motopick schrieb: >> Und wenn die Performance fehlt, wird der Informatiker fremdgecancelt. > > Aber unfähige Ingenieure werden behalten, aus Mitleid? > > Motopick schrieb im Beitrag > > Motopick schrieb: >> Ich halte nichts davon, fuer faule TOs Referenzen "fremdzulesen" > > Dann bist du im Forum falsch. Jeder fängt mal an, und die ST Doku kann > einen schon erschlagen. Und du hast nichts zu den spezifischen Tücken > der STM32-ADCs gesagt, nur Allgemeinplätze und Nörgeleien. So toll > scheinst du dich auch nicht auszukennen. Ach Niklas lass ihn doch einfach reden. Bringt ja eh nichts. Wenn er meint er sei schon als Meister vom Himmel geflogen, dann lass ihn das glauben. Mich wundert es immer wieder welche Respektlosigkeit hier manchmal herrscht. Man kann nicht einmal mehr sachlich über ein Thema sprechen. Aber noch mehr wundert mich, dass er immer noch nicht begriffen hat, worum es mir eigentlich geht und der Spannungsteiler eigentlich nur Mittel zum Zweck ist, um die Funktion und Implementierung des ADC zu testen. Hinzu kommt noch, dass er sich die Fragen selbst beantwortet und davon ausgeht der ITler (und ich bin nicht mal das) 😊 sei ein Blödmann, nur weil er nicht ratiometrisch einliest.. warum, weshalb, wieso interessiert hier nicht Wie gesagt es macht einfach keinen Sinn sich mit solchen Leuten zu unterhalten, sich auf das selbe Niveau herab zu lassen, sich im Ton zu vergreifen und zuletzt nicht respektvoll mit anderen umzugehen. Das ist nicht meine Art. Deshalb Ignoremodus on!
Den schrieb: > nur weil er nicht ratiometrisch einliest Analog ratiometrisch zu messen ist mit deinem Mikrocontroller auch schwierig, weil du dem ADC seine Referenzspannung nur über Vdda vorgeben kannst, also erst aus der Drehgriffversorgung eine niederimpedante Quelle ableiten müsstest, die zudem beim Hochlauf von Vdd das richtige Timing haben müsste. Du könntest allerdings die Drehgriffversorgung selbst, gleichartig spannungsgeteilt, auch noch messen, und dann digital ratiometrisch rechnen. Aber wenn deine Versorgungsspannungen einigermaßen bekannt sind, scheint mir das ratiometrische Vorgehen für diese Anwendung übertrieben. Aber zurück zur Ausgangsfrage: Läuft der STM denn tatsächlich mit den vermuteten 3.3V? LG, Sebastian
:
Bearbeitet durch User
Sebastian W. schrieb: > Aber zurück zur Ausgangsfrage: Läuft der STM denn tatsächlich mit den > vermuteten 3.3V? > > LG, Sebastian Ja, 3V3.
Den schrieb: > Sebastian W. schrieb: >> Aber zurück zur Ausgangsfrage: Läuft der STM denn tatsächlich mit den >> vermuteten 3.3V? > Ja, 3V3. Dann entspricht ein ADC-Wert von 4095 diesen 3.3V. Den schrieb: > Die Berechnung erfolgt folgendermassen: > voltage = (adcValue * adcRefVoltage) / period; // ADC-Wert in eine Spannung umrechnen > adcRefVoltage = 3V > period = 4096 Du solltest also adcRefVoltage in deinem Code auf 3.3V ändern. Und laut Berechnungsformel im Datenblatt sollte zudem period (dort FULL_SCALE genannt) 4095 sein. Dann sollte fürs Erste (zumindest was die "seltsamen" ADC-Meßwerte betrifft) alles passen. LG, Sebastian
:
Bearbeitet durch User
Sebastian W. schrieb: > Den schrieb: >> Sebastian W. schrieb: >>> Aber zurück zur Ausgangsfrage: Läuft der STM denn tatsächlich mit den >>> vermuteten 3.3V? >> Ja, 3V3. > > Dann entspricht ein ADC-Wert von 4095 diesen 3.3V. > > Den schrieb: >> Die Berechnung erfolgt folgendermassen: >> voltage = (adcValue * adcRefVoltage) / period; // ADC-Wert in eine Spannung > umrechnen >> adcRefVoltage = 3V >> period = 4096 > > Du solltest also adcRefVoltage in deinem Code auf 3.3V ändern. Und laut > Berechnungsformel im Datenblatt sollte zudem period (dort FULL_SCALE > genannt) 4095 sein. > > Dann sollte fürs Erste (zumindest was die "seltsamen" ADC-Meßwerte > betrifft) alles passen. > > LG, Sebastian Hallo Sebastian, Vielen Dank für deine Bemühungen. Also in diesem Fall stimmt meine Formel bis auf die 3.3V und ja 4095 statt 4096. Ich habe das im Manual selbst mal nachgeschlagen. Was ich nicht verstehe ist, warum sollte VDDA nicht bekannt sein? Das ist ja schon aufgrund der Beschaltung des uC bekannt. Oder meint man hier was dieser exakt für einen Wert hat, da dieser von der Versorgung abhängt und diese variieren kann. Und was ist denn eigentlich VREFINT_CAL is the VREFINT calibration value & VREFINT_DATA is the actual VREFINT output value converted by the ADC Ich meine wie kommt man zu diesen Werten? STRG+F nach VREFINT_CAL & VREFINT_DATA gibt kein Ergebnis heraus. Die stehen so auch in keinem Register, sodass man sie auslesen könnte. Bzgl. Vrefint (internal Ref Voltage) sind auch gemäss Bild 2 unterschiedliche Werte angegeben. Deshalb bin ich von 3V ausgegangen, weil ich vorher die anderen Werte zw. 1.18 und 1.23 nicht gesehen hatte. Sonst hätte ich mir die Frage schon vorher gestellt.
Den schrieb: > Ich habe das im Manual selbst mal nachgeschlagen. Was ich nicht verstehe > ist, warum sollte VDDA nicht bekannt sein? Das ist ja schon aufgrund der > Beschaltung des uC bekannt. Oder meint man hier was dieser exakt für > einen Wert hat, da dieser von der Versorgung abhängt und diese variieren > kann. Genau. Ein 3V3-Linearregler ist halt keine exakte Spannungsreferenz, er liefert vielleicht 3.25V oder 3.35V. Wenn du es also genauer haben willst, dann misst du die Spannung zwischen Vdda und Vssa mit einem genauen Voltmeter, und benutzt dann diesen Wert als adcRefVoltage in deinem Code. Dieser Wert kann sich aber u.U. temperaturabhängig verändern. Da kann dann die interne 1.2V-Bandgap-Referenz Vrefint des STM32 helfen (https://de.wikipedia.org/wiki/Bandabstandsreferenz#Ausgangsspannung). Deren exakter Wert variiert zwar von IC zu IC, aber ihre Temperaturabhängigkeit ist relativ gering, und vor allem ist ihr Wert ab Werk mit dem ADC (gegen eine Vdda von 3.0V, das bedeuten die Angaben unter Description im RM wohl!) ermittelt und an Speicheradresse 0x1FFF75AA/AB gespeichert worden (dies ist VREFINT_CAL). Wenn du also nun selbst die Bandgap-Referenz Vrefint erneut mit dem ADC vermisst (dies ergibt VREFINT_DATA), dann ergibt dessen Verhältnis zu dem damals für 3.0V ermittelten Wert VREFINT_CAL einen Faktor, der dir mit 3.0V multipliziert relativ genau die aktuelle Vdda errechnet. Und diese so recht genau ermittelte Vdda kannst du benutzen, um dann bei folgenden Messungen von Eingangspins womöglich noch genauer zu wissen was 4095 an absoluter Spannung bedeutet. Dieser ganze Aufwand ist allerdings für deine Anwendung relativ witzlos, weil Vdda vielleicht gar nicht so sehr schwankt, oder weil die Spannungsversorgung deines Drehgriffs auch schwanken könnte. Diese Schwankungen könnte eine ratiometrische Messung auffangen. Ich denke aber all das ist unnötig, und dass die Annahme von Vdda mit 3.3V für deine Zwecke ausreicht. HTH. LG, Sebastian
:
Bearbeitet durch User
Sebastian W. schrieb: > Den schrieb: >> Ich habe das im Manual selbst mal nachgeschlagen. Was ich nicht verstehe >> ist, warum sollte VDDA nicht bekannt sein? Das ist ja schon aufgrund der >> Beschaltung des uC bekannt. Oder meint man hier was dieser exakt für >> einen Wert hat, da dieser von der Versorgung abhängt und diese variieren >> kann. > > Genau. Ein 3V3-Linearregler ist halt keine exakte Spannungsreferenz, er > liefert vielleicht 3.25V oder 3.35V. > > Wenn du es also genauer haben willst, dann misst du die Spannung > zwischen Vdda und Vssa mit einem genauen Voltmeter, und benutzt dann > diesen Wert als adcRefVoltage in deinem Code. > > Dieser Wert kann sich aber u.U. temperaturabhängig verändern. Da kann > dann die interne 1.2V-Bandgap-Referenz Vrefint des STM32 helfen > (https://de.wikipedia.org/wiki/Bandabstandsreferenz#Ausgangsspannung). > Deren exakter Wert variiert zwar von IC zu IC, aber ihre > Temperaturabhängigkeit ist relativ gering, und vor allem ist ihr Wert ab > Werk mit dem ADC (gegen eine Vdda von 3.0V, das bedeuten die Angaben > unter Description im RM wohl!) ermittelt und an Speicheradresse > 0x1FFF75AA/AB gespeichert worden (dies ist VREFINT_CAL). > > Wenn du also nun selbst die Bandgap-Referenz Vrefint erneut mit dem ADC > vermisst (dies ergibt VREFINT_DATA), dann ergibt dessen Verhältnis zu > dem damals für 3.0V ermittelten Wert VREFINT_CAL einen Faktor, der dir > mit 3.0V multipliziert relativ genau die aktuelle Vdda errechnet. Und > diese so recht genau ermittelte Vdda kannst du benutzen, um dann bei > folgenden Messungen von Eingangspins womöglich noch genauer zu wissen > was 4095 an absoluter Spannung bedeutet. > > Dieser ganze Aufwand ist allerdings für deine Anwendung relativ witzlos, > weil Vdda vielleicht gar nicht so sehr schwankt, oder weil die > Spannungsversorgung deines Drehgriffs auch schwanken könnte. Diese > Schwankungen könnte eine ratiometrische Messung auffangen. > > Ich denke aber all das ist unnötig, und dass die Annahme von Vdda mit > 3.3V für deine Zwecke ausreicht. > > HTH. > > LG, Sebastian Hey Sebastian, vielen Dank für deine Erklärungen. Jetzt habs ich gerafft. Und ja klar, für meine Anwendung ist das Overkill und eigentlich muss der ADC nicht mal genau sein, aber trotzdem muss er richtig konvertieren. Ich wollte das mit den obigen Vrefint Werten einfach nur verstehen. Bei 0.475V (ADC Wert ca. 680) statt 0.575V (ADC Wert 780) hätte ich jetzt nichts gesagt, aber wenn der ADC tatsächlich umgerechnet 2.6V statt statt 3 konvertiert, sprich 3600 statt 4095 ausgibt, ist das dann schon fraglich. Ich passe den Code mal an. Ich bedanke mich herzlich bei dir und allen anderen Helfenden. Hebt die Ohren steif Leute und passt auf euch auf. 😊
Den schrieb: > Ich wollte das mit den obigen Vrefint Werten einfach nur verstehen. Du kannst ja spaßeshalber Vrefint mal mit dem ADC messen. Da sollte, wenn ich alles richtig verstanden habe, irgendwas zwischen 1450 und 1530 bei rauskommen, und der Wert sollte ungefähr 91% des in VREFINT_CAL hinterlegten Wertes betragen (weil du ja gegen 4095=3.3V misst, und VREFINT_CAL bei 4095=3.0V ermittelt wurde). LG, Sebastian
Für einen Gasgriff braucht man eh keine Präzision, da der Mensch ja nachregelt. Man muß nur darauf achten, daß man keinen Einstellbereich verschenkt. In der Praxis hat man daher an den Endanschlägen einen kleinen Totbereich einberechnet, wo sich der Stellwert nicht mehr ändert. So läßt sich der maximale Stellbereich des Motors ausnutzen. Denn keiner will einen Motor, der nur 95% der Nennleistung schafft.
Sebastian W. schrieb: > Den schrieb: >> Ich wollte das mit den obigen Vrefint Werten einfach nur verstehen. > > Du kannst ja spaßeshalber Vrefint mal mit dem ADC messen. Da sollte, > wenn ich alles richtig verstanden habe, irgendwas zwischen 1450 und 1530 > bei rauskommen, und der Wert sollte ungefähr 91% des in VREFINT_CAL > hinterlegten Wertes betragen (weil du ja gegen 4095=3.3V misst, und > VREFINT_CAL bei 4095=3.0V ermittelt wurde). > > LG, Sebastian Werde ich mal probieren. Aber im Moment haben uns die Dozenten mit Aufgaben vollgestopft, sodass ich das Programmieren erstmal beiseite legen muss 😄
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.