Moin, ich lese Spannungen über einen MCp3008 aus und auf meinem Raspi habe ich ein Phyton Programm. wenn meine Spannung z.B. 14 V ist dann sprint der Wert am Programm von 13,9 auf 13,97 und auf 14,05. Gibts da einen Befehl wie man den Mittelwert bildet??
luky schrieb: > wenn meine Spannung z.B. 14 V ist dann > sprint der Wert am Programm von 13,9 auf 13,97 und auf 14,05. Das sind weniger als 7 Bit (der Wert schwankt ein hundertstel), die du tatsächlich verwenden kannst. Du hast offenbar einen ziemlich schlechten Hardwareaufbau, wahrscheinlich mit Störeinkopplung und Brummschleifen. An dieser Stelle solltest du zuerst angreifen, das ist die Ursache deines Problems. > Gibts da einen Befehl wie man den Mittelwert bildet?? Man kann das aus ein paar Befehlen selbst zusammenbauen... Dazu musst du in bestimmten Zeitabständen mehrere Werte einlesen (das nimmt dir auch ein "fertige" Mittelwertfunktion nicht ab), diese dann zusammenaddieren und durch die Anzahl der eingelesenen Werte teilen. Und wenn mir das zu viel Aufwand wäre, dann würde ich einfach mal Google benutzen: https://www.google.com/search?q=python+mittelwertbildung+funktion
:
Bearbeitet durch Moderator
ok danke wie denkst du ist die Störung zu lösen ? Eventuell Tiefpassfilter oder was gäbe es noch
luky schrieb: > Eventuell > Tiefpassfilter oder was gäbe es noch Ein gleitender Mittelwert ist im Prinzip ein Software-Tiefpass. Aber das würde eben eventuell nur das Symptom unterdrücken und nicht die Ursache eines nicht optimalen Aufbaus lösen.
luky schrieb: > ok danke wie denkst du ist die Störung zu lösen ? Man muss erst mal wissen, welche Störung das ist. Und dazu braucht man Informationen zum Aufbau, also was wie womit verdrahtet ist. Denn "in der Theorie" sollte da bei 14V am ADC dieser auch 14V sehen, in der Praxis funktioniert das offenbar nicht. > Tiefpassfilter oder was gäbe es noch Kommt drauf an, wie schnell der Filter reagieren muss. Aber wenn du hochfrequente, schnelle Störungen herausfiltern willst, wird es letztlich immer eine Art Tiefpassfilter sein, das nur langsame, also niederfrequente Änderungen durchlässt.
luky schrieb: > Eventuell Tiefpassfilter oder was gäbe es noch Du hast Lothar glaube ich falsch verstanden. Er schlägt dir als erstes vor deinen Aufbau zu verbessern. Ein paar Dinge hat er ja bereits genannt. Lothar M. schrieb: > Du hast offenbar einen ziemlich schlechten Hardwareaufbau, > wahrscheinlich mit Störeinkopplung und Brummschleifen. An dieser Stelle > solltest du zuerst angreifen, das ist die Ursache deines Problems. Zusätzlich noch die Fragen zu den Basics: Wie sieht dein Aufbau aus? (Mach ein Bild) Hast du am ADC die im Datenblatt vorgeschlagenen 1uF, 10uF Kondensatoren und am besten noch ein 100nF parallel? Woher kommt dein Messsignal und wie hast du den ADC daran abgeschlossen? Was für eine Bandbreite hat dein Messsignal? Und hast du einen Eingangsfilter der Nyquist/Shennon erfüllt?
MaNi schrieb: > Was für eine Bandbreite hat dein Messsignal? 14V Gleichspannung, also annähernd 0 Hz. > Und hast du einen Eingangsfilter der Nyquist/Shennon erfüllt? Das mit den Herren Nyquist und Shannon wird erst später interessant, wenn mal ein echtes Signal angelegt wird. Weil diese Fragen für luky vermutlich zu abstrakt sind, probieren wir das andersrum: - was für ein Signal soll da gemessen werden? - was soll hinterher mit dem Signal passieren? - warum ist es ein Problem, dass der Signalwert ein wenig "zappelt"? luky schrieb: > Phyton Die von dir verwendete Sprache heißt übrigens nicht "Faiton", sondern "Paison" (= Python). Zugegebenermaßen schieriger als "C"...
Lothar M. schrieb: > Die von dir verwendete Sprache heißt übrigens nicht "Faiton", sondern > "Paison" (= Python). Zugegebenermaßen schieriger als "C"... Wikipedia --> "Der Name geht nicht, wie das Logo vermuten lässt, auf die gleichnamige Schlangengattung Python zurück, sondern bezog sich ursprünglich auf die englische Komikertruppe Monty Python." Ja, wieder was gelernt...
Schnedermann schrieb: > Ja, wieder was gelernt... Und beliebte IDEs sind IDLE und Eric. Nach Eric Idle :D
Sebastian R. schrieb: > Und beliebte IDEs sind IDLE und Eric. Nach Eric Idle :D In der Tat. Außerdem noch IDOL ---> Billy Idol :-)
Lothar M. schrieb: > Die von dir verwendete Sprache heißt übrigens nicht "Faiton", sondern > "Paison" (= Python). Zugegebenermaßen schieriger als "C"... Python ([ˈpʰaɪθn̩], [ˈpʰaɪθɑn], auf Deutsch auch [ˈpʰyːtɔn]) Quelle: Wikipedia Ansonsten: Jeder soll nach seiner Façon selig werden.
Martin schrieb: > auf Deutsch auch [ˈpʰyːtɔn]) Uah, "Püüton", sagt das echt wer? Das sind dann die gleichen, die zu QT auch "kuh tee" oder auch "kiu tii" statt wie vorgesehen einfach "kiut" sagen?
Ist blöd wenn der Messwert zappelt da ich mit diesem noch weiterrechne. Messsignal kommt von einer Batterie und nein ich habe keine Kondensatoren verbaut
Lothar M. schrieb: > Martin schrieb: >> auf Deutsch auch [ˈpʰyːtɔn]) > Uah, "Püüton", sagt das echt wer? Das sind dann die gleichen, die zu QT > auch "kuh tee" oder auch "kiu tii" statt wie vorgesehen einfach "kiut" > sagen? Zu der Schlange sage ich tatsächlich "Pühton". Ist schließlich ein Lehnswort, da gibt es keinen Grund, das "y" nicht als "ü" zu sprechen.
Lothar M. schrieb: > luky schrieb: >> wenn meine Spannung z.B. 14 V ist dann >> sprint der Wert am Programm von 13,9 auf 13,97 und auf 14,05. > Das sind weniger als 7 Bit (der Wert schwankt ein hundertstel) Woher hast Du diese Information? Falls die Beschaltung auf "max. 75V" Messen ausgelegt ist, wäre ein Bit etwa 70mV, das Zappeln also eigentlich nur +/- 1 bit um die 13,97V. Bevor man vorschlägt den Aufbau zu verbessern, sollte man ihn doch zumindest ein bisschen kennen.
luky schrieb: > und nein ich habe keine Kondensatoren verbaut Ja, war zu erwarten und deshalb zum wiederholten Mal: lass doch mal deinen Schaltplan und deinen realen Aufbau sehen. Sonst postet doch auch jeder sofort irgendwohin ein Foto von seiner Pizza beim Hipster-Italiener. Warum schafft man das hier im Forum nicht. > Ist blöd wenn der Messwert zappelt Jeder Messwert wird immer zappeln. Nur mit gutem Aufbau bei weitem nicht so stark. Trotzdem muss dein Programm damit zurechtkommen. > da ich mit diesem noch weiterrechne. Ja, war zu erwarten. Und was passiert deshalb? mm schrieb: > Woher hast Du diese Information? So kurz im Kopf überschlagen: 14V/0,15V (wegen 14,05-13,9) = 93 = weniger als 7 brauchbare Bits, weil 7 Bits nämlich 2^8 = 128 sind. > Falls die Beschaltung auf "max. 75V" Messen ausgelegt ist, Was man mangles Plan und sonstiger Informatioenn nicht weiß... > wäre ein Bit etwa 70mV Bei einem 10-Bit ADC mit 1024 Schritten wäre 1 LSB nicht nur 70mV, sondern es ist 70mV. > das Zappeln also eigentlich nur +/- 1 bit um die 13,97V. Ist es aber nicht. Es gehen also deutlich mehr Bits verloren, sodass letztlich weniger als 7 übrig bleiben.
:
Bearbeitet durch Moderator
Wenn ich mir die 10k wegdenke und Vref=VCC=5V annehme, komme ich auf 63,5mV pro bit. Also wäre das Zappeln tatsächlich in der Größenordnung 2-3 digits - was mit Vref=VCC gar nicht so schlecht wäre. Zum Ausrechnen mit den 10k bin ich grad zu faul, macht die Auflösung aber schlechter und somit den Fehler kleiner.
Lothar M. schrieb: > Martin schrieb: >> auf Deutsch auch [ˈpʰyːtɔn]) > Uah, "Püüton", sagt das echt wer? Klar gibt es Leute die ˈpʰyːtɔn sagen. Warum auch nicht?
Noch was... in den meisten Zeichenprogramme gibt es Werkzeuge um Linien, Rechtecke und Texte so zu "malen", dass sie auch ohne Mühen erkennbar sind. In der Regel werden Schaltpläne auch so dargestellt, dass der Signalfluss zumindest der ortsüblichen Leserichtung entspricht. Hier wäre das links nach rechts - also Eingänge der Schaltung (die zu messende Batterie) links, der ADC rechts.
Hallo, luky schrieb: > hier der grobe Schaltplan Ich habe mir mal erlaubt dein "Gekrakel" etwas übersichtlicher zu zeichnen. rhf
mm schrieb: > ... und wie ist Vref beschaltet? Vref=Versorgung? jap Vref = 5V und das ist eine Sternschaltung die ich hierangebracht habe die muss so sein damit die Spannungen die höhe haben mit denen der MCP arbeiten kann und Anmerkung noch meine widerstände sind sehr genau sorry ich weis dass es nicht schön gezeichnet ist aber grob ist alles erkennbar
Bei ADC ist saubere Leitungsführung nach den Regeln der Kunst elementar wichtig, um saubere Messergebnisse zu erhalten. Vermutlich benutzt der ADC die 5V Versorgung als Referenz. Dadurch wird die Leitungsführung doppelt so wichtig. Ich bezweifle allerdings, dass die 5V stabil genug sind. Vermutlich brauchst du für den ADC eine bessere Referenzquelle.
ja benutzt er auch der Wert an sich passt auch nur die leichten Schwankungen sind nervig. Würde mir auch Vref messen lassen und den gemessenen Wert als Vref nehmen allerdings ist der MCP auf 5v ausgelegt und bei 5,1 wirds schwierig
die einen Diskutieren noch wie man Python auspricht, andere nutzen das schon für ML, da läuft gerade ein schönes Heise Webinar... Natürlich muss die analoge Seite sauber sein, die Frage nach Mittelwert in Py ist aber auch einfach mit fertigen Statistikpaketen beantworten, z.B.: https://docs.python.org/3/library/statistics.html
Ich mag mich täuschen. Aber für mich sind "luky (Gast)" und "sebi (Gast)" aus dem Beitrag "Spannungsstabilisierung" ein und dieselbe Person. Immerhin beschreiben sie mehr oder weniger dasselbe Problem und auch die Merkbefreitheit ist dieselbe.
luky schrieb: > hab mich bei Python hald verschrieben omg wie schlimm So ist das, wenn man zwischen selbsternannte Deutschlehrer, Mediziner und Juristen gerät. Lass sie einfach reden: https://www.youtube.com/watch?v=LWU0hJ4K24s
luky schrieb: > hab mich bei Python hald verschrieben omg wie schlimm Das kann passieren, das ist nicht schlimm. Es ist auch nicht schlimm, daß Du da anscheinend etwas machen willst, von dem Du offensichtlich nicht so sehr viel Ahnung hast. Schlimm ist, daß Du nicht sagst, was das Ganze überhaupt werden soll, oder, kurz gefragt: WARUM Du das machen willst und WOZU Du so eine hohe Genauigkeit brauchst.
luky schrieb: > jap Vref = 5V und das ist eine Sternschaltung die ich hierangebracht > habe die muss so sein damit die Spannungen die höhe haben mit denen der > MCP arbeiten kann und Anmerkung noch meine widerstände sind sehr genau Äääh... bin ja jetzt schon eine Weile im Geschäft, aber von einer "Sternschaltung" am ADC höre ich zum ersten Mal. Beim Drehstrommotor ja, aber beim ADC??? Google findet da auch nur Forenposts, in denen eine sternförmige Leitungsführung für Masse/Versorgung gemeint ist. Normalerweise nimmt man einen ganz einfachen Spannungsteiler. Evtl. noch einen Kondensator (100p .. 1n) oder einen Impedanzwandler falls der Spannungsteiler zu hochohmig wird. Zusammenfassend würde ich sagen, dass das "zappeln" bei Vref=Vcc sogar weniger ist, als ich da erwartet hätte. Vielleicht dadurch, dass die "Sternschaltung" einen Teil des "Drecks" aus der 5V-Versorgung mit ins Messignal einprägt... Jetzt zur ursprünglichen Frage: Ich würde es wahrscheinlich manuell implementieren: Liste der letzten X Werte und ganz klassisch Mittelwert darüber bilden - ist natürlich nicht optimal/effizient, aber sonst langweilt sich der RaspPi ja. Wenn man fertige Sachen nutzen will, wären numpy_ringbuffer und numpy.mean Kandidaten.
mm schrieb: > Äääh... bin ja jetzt schon eine Weile im Geschäft, aber von einer > "Sternschaltung" am ADC höre ich zum ersten Mal. Den Offset des Widerstands gegen eine feste positive Spannung braucht man auch nur, wenn man auf einfach Art negative Spannungen mit einem unipolaren ADC messen will. Siehe Spannungsteiler
:
Bearbeitet durch Moderator
Lothar M. schrieb: > mm schrieb: >> Äääh... bin ja jetzt schon eine Weile im Geschäft, aber von einer >> "Sternschaltung" am ADC höre ich zum ersten Mal. > Den Offset des Widerstands gegen eine feste positive Spannung braucht > man auch nur, wenn man auf einfach Art negative Spannungen mit einem > unipolaren ADC messen will. Siehe Spannungsteiler Ja, mit der Schaltung wird ein Offset addiert. Aber der Name "Sternschaltung" ist mir dafür noch nie unter gekommen. Auch kann ich keinen Grund sehen, die Messung einer Batteriespannung mit einem (positiven) Offset zu beaufschlagen. Wenn sich die Batterie der Null auch nur nähert ist sie ja schon lange kaputt.
mm schrieb: > Auch kann ich keinen Grund sehen, die Messung einer Batteriespannung mit > einem (positiven) Offset zu beaufschlagen. Wenn sich die Batterie der > Null auch nur nähert ist sie ja schon lange kaputt. Dann wäre so eine Schaltung sinnvoller? Mit R1 = 15kΩ, R2 = 47kΩ (und C1 = 100nF um ganz ganz ganz sicher zu gehen)?
luky schrieb: > hab mich bei Python hald verschrieben omg wie schlimm Komisch, dass solche "Verschreiber" immer an Stellen passieren, die massive Unkenntnis durchblicken lassen. Verschreiben tut man sich gewöhnlich nicht systematisch ;-)
luky schrieb: > jap Vref = 5V und das ist eine Sternschaltung die ich hierangebracht > habe die muss so sein damit die Spannungen die höhe haben mit denen der > MCP arbeiten kann Was soll denn dein Messbereich sein? Von minus 10 V bis etwa 50V? Falls weniger, wird auch die Streuung weniger. Eine echte Referenzspannung hilft wie schon gesagt, natürlich auch. > und Anmerkung noch meine widerstände sind sehr genau Das spielt hier keine Rolle.
Wenn Du 100 (oder mehr) Rohwerte im festen Zeittakt (z.b. 10 ms) aufnimmst und hier postest (als Text, nicht handschriftlich), dann kann man ggf. Muster erkennen (zyklische Streuung, rauschen, Auflösungsprobleme, ...)
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.