Hey, Vorhaben: Es soll ein Arduino mini Pro 5V am KFZ Bordnetz 12V betrieben werden. Um eine sauber Spannung zu erhalten habe ich mir von Anker eine 5V Usb Kfz Netzteil besorgt. Mit dem Arduino soll eine Analogmessung durchgeführt werden. Jetzt liefert das Netzteil aber 5,2V! 1. Ist das ein Problem für die Analogmessung. Muss ich dan mit 5,2V rechnen? bezogen auf diesen Sensor. https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf 2. Wäre diese Umrechnung dann so richtig? Druck in bar = (0.743999*sensor-15.444444)/100 Fragt mich nicht wie ich auf die Formel kamm. Hatte das zur meiner Schulzeit gemacht. Leider habe ich es vergessen wie man eine Formel anhand einem Diagarmm erstellt. Wäre nett, wenn da jemand mal drüber schauen könnte! 2. Oder wäre es besser die 5,2V auf 5V runter zu bekommen? Grüße Tobias
Tobias G. schrieb: > Um eine sauber e Spannung zu erhalten habe ich mir > von Anker eine 5V Usb Kfz Netzteil besorgt. ein Netzteil, ohne e am Ende.
1 | analogReference (INTERNAL); // min 1.0 / typ 1.1 / max. 1.2 Volt |
ist die Lösung, sich auf die Versorgung zu verlassen, ein ungeschickter Ansatz.
Tobias G. schrieb: > Ist das ein Problem für die Analogmessung. Nein. > Muss ich dann mit 5,2V rechnen? Wenn du die 5V als Referenzspannung verwendest, dann ja. Man kann aber auch auf eine interne Referenz mit konstanter Spannung umschalten. > Fragt mich nicht wie ich auf die Formel kam. Tja, das wollte ich aber fragen, weil da die 5V nicht drin vorkommen, nach der du gefragt hast. Im Datenblatt vermisse ich einen Hinweis, ob die Ausgangsspannung des Sensors relativ zur Versorgungsspannung ist. Vermutlich ja. Wenn ich damit Recht habe, spielt die absolute Höhe der Versorgungsspannung keine Rolle, solange du den Sensor mit der gleichen Spannung versorgst, die auch als Referenz für den ADC dient. Das hast du ja vor. Wird schon klappen.
Stefanus F. schrieb: > Im Datenblatt vermisse ich einen Hinweis, ob die Ausgangsspannung des > Sensors relativ zur Versorgungsspannung ist Dann schau Dir mal das Diagramm im Datenblatt an - oben links steht die Formel :-)
Dieter F. schrieb: > Dann schau Dir mal das Diagramm im Datenblatt an - oben links steht die > Formel Cool, dann passt es mit den 5,2V ja so.
Stefanus F. schrieb: > Im Datenblatt vermisse ich einen Hinweis, ob die Ausgangsspannung des > Sensors relativ zur Versorgungsspannung ist. Vermutlich ja. Wenn ich > damit Recht habe, spielt die absolute Höhe der Versorgungsspannung keine > Rolle, solange du den Sensor mit der gleichen Spannung versorgst, die > auch als Referenz für den ADC dient. Das hast du ja vor. Wird schon > klappen. Habe es soeben ausprobiert. Es spielt keine Rolle ob 5,2V oder 5V der sensor liefert immer den gleichen Digitalwert. (Arduino und sensor wurden jeweils mit der gleichen Spannung bei dem test versorgt!) Also wäre das ja geklärt. Aber mit der Formel im Diagramm komm ich nicht zurecht. Vout = VS*(0.0012858*P+0.04) ± Error 1: 7,0479 = 5,2*(0.0012858*1023+0.04) ± Error (abweichung von 0,67%) 2: 6,7768 = 5,0*(0.0012858*1023+0.04) ± Error (abweichung von 3,18%) Das heist jetz das der Seonor in meinem Fall sogar genau misst??? Oder habe ich die Formel falsch verstanden? Grüße Tobias
Vout kann ja nur bis 4,75V laut DB, bei 5V supply und 700kPa maximal. P ist der Druck, Beispielhaft für 500kPa: Vo = 5v*(0,0012858*500+0,04) Vo = 3,4145V Passt mit dem Diagramm überein. Und: der Sensor reagiert auf die Betriebsspannung, ist also ratiometrisch, da Vs (Vsupply) in der Rechnung steht. Dein Versuch war also falsch.
:
Bearbeitet durch User
Manfred schrieb: > ist die Lösung, sich auf die Versorgung zu verlassen, ein ungeschickter > Ansatz. Bei einem ratiometrischen Sensor ist das sogar ein notwendiger Ansatz. Die Versorgungsspannung des Sensors und die Referenzspannung des ADC müssen identisch sein. Die Versorgungsspannung kürzt sich beim Wandeln raus, ihr Absolutbetrag ist damit irrelevant.
Jens M. schrieb: > Vout kann ja nur bis 4,75V laut DB, bei 5V supply und 700kPa maximal. > P ist der Druck, Beispielhaft für 500kPa: > Vo = 5v*(0,0012858*500+0,04) > Vo = 3,4145V > Passt mit dem Diagramm überein. Ok Danke für das Beispiel. Jens M. schrieb: > Und: der Sensor reagiert auf die Betriebsspannung, ist also > ratiometrisch, da Vs (Vsupply) in der Rechnung steht. > Dein Versuch war also falsch. Hmm und warum hat dann der Serialmonitor in der Arduino IDE bei 5,2V sowie bei 5,025V(PC USB Portspannung) den gleichen ADC Wert angezeigt?
Tobias G. schrieb: > Aber mit der Formel im Diagramm komm ich nicht zurecht. > > Vout = VS*(0.0012858*P+0.04) ± Error > > 1: 7,0479 = 5,2*(0.0012858*1023+0.04) ± Error (abweichung von 0,67%) > 2: 6,7768 = 5,0*(0.0012858*1023+0.04) ± Error (abweichung von 3,18%) > > Das heist jetz das der Seonor in meinem Fall sogar genau misst??? Oder > habe ich die Formel falsch verstanden? das sieht falsch aus. der Sensor misst doch nur bis 700kPa, und du setzt da 1023 ein? und Vout soll größer als VS sein? was sind denn die 1023 und was willst du berechnen? irgendetwas hast du falsch eingesetzt. Tobias G. schrieb: > Jens M. schrieb: >> Und: der Sensor reagiert auf die Betriebsspannung, ist also >> ratiometrisch, da Vs (Vsupply) in der Rechnung steht. >> Dein Versuch war also falsch. > > Hmm und warum hat dann der Serialmonitor in der Arduino IDE bei 5,2V > sowie bei 5,025V(PC USB Portspannung) den gleichen ADC Wert angezeigt? weil das genau das ist was bei ratiometrischem Ausgang passiert beispiel: der Sensor gibt bei ca. 400kPa ca 1/2 VS aus der Arduino misst die Ausgangsspannung im Verhältnis zu der Referenz (VS) => er misst also nur die 1/2, unabhängig von VS; 1/2 des Messbereiches 0-1023 sind immer 511, egal ob 5V oder 3V oder 5.2V. Außer du hast jetzt doch eine interne Referenz verwendet, dann ist der ADC entweder in Sättigung/Übersteuert (immer 0 oder 1023), oder der Unterschied ist so gering dass der 10bit ADC es nicht auflösen kann. SChau mal ins Datenblatt vom Atmega?, da steht was zur Filterung der Versorgungsspannung vom ADC, das solltest du eventuell machen (und den Sensor auch aus dieser Spannung versorgen)
:
Bearbeitet durch User
K. S. schrieb: > weil das genau das ist was bei ratiometrischem Ausgang passiert > beispiel: > der Sensor gibt bei ca. 400kPa ca 1/2 VS aus > der Arduino misst die Ausgangsspannung im Verhältnis zu der Referenz > (VS) > => er misst also nur die 1/2, unabhängig von VS; 1/2 des Messbereiches > 0-1023 sind immer 511, egal ob 5V oder 3V oder 5.2V. > > Außer du hast jetzt doch eine interne Referenz verwendet, dann ist der > ADC entweder in Sättigung/Übersteuert (immer 0 oder 1023), oder der > Unterschied ist so gering dass der 10bit ADC es nicht auflösen kann. > SChau mal ins Datenblatt vom Atmega?, da steht was zur Filterung der > Versorgungsspannung vom ADC, das solltest du eventuell machen (und den > Sensor auch aus dieser Spannung versorgen) Ok, habe jetz mal den Vout des Sensor bei 5,2V und 5V gemesen. bei 5,2V = 0,967V bei 5,0V = 0,898V Habe mal in das DB geschaut und bin auf Aref gestoßen. Wäre nicht das die Lösung für das Problem wenn ich die %,2V auf den Aref Pin gebe und im Quellcode auf "analogReference(EXTERNAL)" umschalte? https://michaelsarduino.blogspot.com/2015/07/aref-pin.html
Tobias G. schrieb: > Habe mal in das DB geschaut und bin auf Aref gestoßen. Wäre nicht das > die Lösung für das Problem wenn ich die %,2V auf den Aref Pin gebe und > im Quellcode auf "analogReference(EXTERNAL)" umschalte? welche Referenz benutzt du denn bis jetzt? Wenn du nix änderst wird VCC verwendet (standard Einstellung), also das was du jetzt als Lösung beschrieben hast machst du bereits. Deswegen funktioniert es ja auch, dass bei 5V und 5.2V derselbe ADC Wert angezeigt wird. AREF ist für externe Referenzen, die nicht VCC sind, oder um einen Kondensator für die Interne Referenz anzuschließen. du brauchst beides nicht, also lass es so wie es ist. Du hast bereits durch nichts tun alles richtig gemacht.
Jens M. schrieb: > Vout kann ja nur bis 4,75V laut DB, bei 5V supply und 700kPa maximal. > P ist der Druck, Beispielhaft für 500kPa: > Vo = 5v*(0,0012858*500+0,04) > Vo = 3,4145V > Passt mit dem Diagramm überein. In meinem Fall müste ich ja dann für Vs 5,2V verweden!? die Formel auf P umstellen und für Vo dann (Vo = adcwert / 1024.0 * 5,2) einsetzen um einen Druck in kPa zu erhalten. Das ich die Einheit Bar erhalte teile ich die kPa durch 100. Wäre der Gedankengang so richtig?
Nein, mir ging es um die "Deine Rechnung gibt Vo über Vs" und "Vo ist verschieden bei 5 und 5,2V", was 1. nicht geht und 2. nicht stimmt. Welche Spannung du da einsetzt ist egal, denn der ADC muss Vs als Referenz nehmen, denn der Sensor tut das auch. Dadurch ist "1023" entsprechend 5V entsprechend "der Sensor platzt", aber bei 5,2V eben 1023 entsprechend 5,2V entsprechend "der Sensor platzt". Effektiv ist es egal welche Zahl du da einsetzt, denn du willst ja nicht Volt sondern int wissen, also "was spuckt der ADC aus". Du musst den Vo-Wert also noch durch "Vs/1023" teilen, und dann kürzt sich Vs ja raus. 500kPa ergeben dann a) 5v*(0,0012858*500+0,04)/(5V/1023) = 699 oder b) 5,2v*(0,0012858*500+0,04)/(5,2V/1023) = 699 Also c) (0,0012858*P+0,04)*1023=int, unabhängig der Spannung Wie du jetzt von 699 auf 500kPa kommst, darfst du aber selber rechnen ;)
:
Bearbeitet durch User
Jens M. schrieb: > Wie du jetzt von 699 auf 500kPa kommst, darfst du aber selber rechnen ;) P=((int/1023)-0,04)/0,0012858 Wenn ich jetzt für int 699 einsetzt erhalte ich P=500,299kPa. Das würde ja passen. setzte ich 962 für int ein bekomme ich für P=700,242kPa auf die 962 komm ich: 5V/1024=0,0048828125V 4,7V/0,0048828125V=962,56 Um eine Referenz zu haben, habe ich den Atmosphrischen Druck gemessen der dann 104.9739837kPa wäre. Vergleiche ich diesen mit dem Luftdruck an meinem Standort 101.4kPa passt es nicht ganz. Und ist auch nicht mehr in der Tolleranz von 2%. Jetzt könnte man noch +-ERROR in die Formel einbinden um das auszugleichen. Aber ich vermute das ich dazu mehrere genau Referenzpunkt benötige!?
Deine Formel hab ich jetzt nicht kontrolliert, aber die Kunst ist die ganze Berechnung von ADC-Wert zu Druck ohne floats zu machen und ohne die Grenzen der Werte zu verlassen. 0,001... und 0,004... mit 10 Stellen nach dem Komma ist nix was man auf einem Atmega 328 machen sollte, der hat nur 8bit, alles andere ist extrem zeitaufwändig. Du bist sicher das dein Referenzbarometer genau ist? Mit +-Error ist die Toleranz gemeint, und wer es genau haben will muss kalibrieren, 2% sind schon recht gut aber eben nicht genau. Also mehrere exakt gemessene Referenzdrücke anschließen und Werte messen, speichern und dann für genau diese Temperatur und genau diesen Sensor exakte Werte bekommen. Oder sich einfach sagen: 2% passt schon. Immerhin ist dein ADC mit 1024 Schritten auf 7 Bar jetzt auch nicht der Ausbund an Genauigkeit, schließlich hast du nur eine Auflösung von 6,8mBar, damit 1004 oder 1001mBar zu unterscheiden ist sportlich... ;) Effektiv sogar noch weniger, weil der Sensor ja nicht 0-5V geht.
:
Bearbeitet durch User
Jens M. schrieb: > aber die Kunst ist die > ganze Berechnung von ADC-Wert zu Druck ohne floats zu machen und ohne > die Grenzen der Werte zu verlassen. Wie soll das gehen? In Brüche könnte man die floate umwandeln!? Jens M. schrieb: > 0,001... und 0,004... mit 10 Stellen nach dem Komma ist nix was man auf > einem Atmega 328 machen sollte, der hat nur 8bit, alles andere ist > extrem zeitaufwändig. Der Controller muss eig eh nur das machen und anschließenden via funk versenden... Jens M. schrieb: > Du bist sicher das dein Referenzbarometer genau ist? Nein, habe den Wert von meiner örtlichen Wetterstation Jens M. schrieb: > mmerhin ist dein ADC mit 1024 Schritten auf 7 Bar jetzt auch nicht der > Ausbund an Genauigkeit, schließlich hast du nur eine Auflösung von > 6,8mBar, damit 1004 oder 1001mBar zu unterscheiden ist sportlich... ;) > Effektiv sogar noch weniger, weil der Sensor ja nicht 0-5V geht. Da hast du natürlich Recht...
Tobias G. schrieb: > In Brüche könnte man die floate umwandeln Ohne floats. Das geht auch mit Ganzzahlenmathematik, wenn man erst multipliziert und dann dividiert. Der Proz kann deutlich besser 64bit Ganzzahlen verarbeiten als Floats mit 10 Stellen. Z.B. könntest du 0,0012858*x auch darstellen als x*12858/10000000, das geht deutlich flotter und genauer, auch wenn das Ergebnis 0,6429 in diesem Fall nicht in eine Ganzzahl passt. Es hält dich aber keiner auf, statt 10000000 nur 1000 einzusetzen und am Display den 4stelligen Wert mit dem Komma vorne falsch zu drucken. Genau so könnte man den Wert für "Ein" ADC vorberechnen (also du) und zwar z.B. als -700kPa entsprechen 1023 ADC -1 ADC ist also 0,684261974 kPa -Merke 684 -Nehme ADC*684 in ein Long -Ergibt bei 1023ADC also 699732 -Füge ein Komma vor der dritten Stelle von rechts ein: -Tada 699,732kPa. Ganz ohne Floats, klein, schnell, simpel. Du musst nur beim Coden einmal richtig rechnen, dann passt das. Du kannst auch Nullwert und Skalenendwert als kalibrierbare Werte in die Rechnung einbringen, aber das würde erfordern das Gerät bei 0 und 7 bar zu prüfen. Tobias G. schrieb: > von meiner örtlichen Wetterstation Die sollte kalibriert sein, wenn sie offiziell "Wetterdienst" ist. Allerdings ist der Wert nicht unbedingt "live", oder bist zu hingegangen und hast da auf die Anzeige gesehen? Dennnoch bleibt, das die Auflösung des Systems nur ca. 684Pascal ist.
Da ich keine 700kPa messen werde könnte man nicht den Messbereich zb auf 400kPa umstellen? Dann wäre die messung hochauflösender!
Du kannst die Referenzspannung nach Prozessordatenblatt variieren und damit die Skala reduzieren. Evtl. (bzw. im Allgemeinen) verlierst du dann aber die Ratiometrie. Also Auflösung++; Genauigkeit--; Stabilität--;
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.