Forum: Mikrocontroller und Digitale Elektronik Mittelwert Phyton


von luky (Gast)


Lesenswert?

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??

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von luky (Gast)


Lesenswert?

ok danke wie denkst du ist die Störung zu lösen ? Eventuell 
Tiefpassfilter oder was gäbe es noch

von Sebastian R. (sebastian_r569)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von MaNi (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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"...

von Schnedermann (Gast)


Lesenswert?

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...

von Sebastian R. (sebastian_r569)


Lesenswert?

Schnedermann schrieb:
> Ja, wieder was gelernt...

Und beliebte IDEs sind IDLE und Eric. Nach Eric Idle :D

von Schnedermann (Gast)


Lesenswert?

Sebastian R. schrieb:
> Und beliebte IDEs sind IDLE und Eric. Nach Eric Idle :D

In der Tat.

Außerdem noch IDOL ---> Billy Idol :-)

von Martin (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

von luky (Gast)


Lesenswert?

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

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von mm (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von luky (Gast)


Angehängte Dateien:

Lesenswert?

hier der grobe Schaltplan

von mm (Gast)


Lesenswert?

luky schrieb:
> hier der grobe Schaltplan

Was macht der 10k nach 5V da?

von mm (Gast)


Lesenswert?

... und wie ist Vref beschaltet? Vref=Versorgung?

von mm (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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?

von mm (Gast)


Lesenswert?

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.

von Roland F. (rhf)


Angehängte Dateien:

Lesenswert?

Hallo,
luky schrieb:
> hier der grobe Schaltplan

Ich habe mir mal erlaubt dein "Gekrakel" etwas übersichtlicher zu 
zeichnen.

rhf

von luky (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von luky (Gast)


Lesenswert?

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

von Johannes S. (Gast)


Lesenswert?

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

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von luky (Gast)


Lesenswert?

hab mich bei Python hald verschrieben omg wie schlimm

von Stefan F. (Gast)


Lesenswert?

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

von Nur_ein_Typ (Gast)


Lesenswert?

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.

von mm (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von mm (Gast)


Lesenswert?

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.

von Nur_ein_Typ (Gast)


Angehängte Dateien:

Lesenswert?

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)?

von my2ct (Gast)


Lesenswert?

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 ;-)

von achs (Gast)


Lesenswert?

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.

von achs (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.