Hey Ich fange gerade mit der Avr bastelei an und habe mal eine Frage. Ich lese einen Poti mit mein 10 Bit analog signal ein. dieses wackelt einwenig ~+-4 Jetzt würde ich gerne dieses Signal zu 8bit umwandeln aber eben nicht einfach nur teilen, weil dann würde das 8 bit signal ja auch wackeln. es muss doch eine möglichkeit geben dieses auszublenden? Meine idee das 8 bit erst +-1 wenn das 10bit +-5 macht? wenn dann aber das 10bit mal -+5 schwankt würde er das 8 bit unkontroliert rauf oder runterzählen. Fail Hat jemand mal einen Denkanstoss ?
du könnstest zb den mittelwert von hausnummer 16 messungen nehmen der sollte dann deutlich weniger schwanken kostet allerdings zeit
Hi Dein Bitwackeln deutet eher auf Hard- und/oder Softwarewareprobleme hin. -wie hoch ist dein ADC-Takt? -welchen Widerstand hat dein Poti? Ein 10...100nF Keramikkondensator vom ADC-Eingang nach Masse kann wahre Wunder bewirken. 8 Bit bekommst du auch, wenn du das ADLAR-Bit setzt und nur ADCH ausliest. MfG Spess
@Maximilian (Gast) >Ich lese einen Poti mit mein 10 Bit analog signal ein. dieses wackelt >einwenig ~+-4 Da ist eine kleine Störung auf deiner Versorgungs- oder Messpannung. >Jetzt würde ich gerne dieses Signal zu 8bit umwandeln aber eben nicht >einfach nur teilen, weil dann würde das 8 bit signal ja auch wackeln. >es muss doch eine möglichkeit geben dieses auszublenden? Filtern, einfach den Mittelwert mehrerer Messwerte bilden. Aber eine solide analoge Schaltung sollte man auch haben. Wie sieht deine aus?
Also mittelwert ist schonmal eine gute idee dadurch schaffe ich schwankungen +-1 Wenn jetzt der Poti aber blöd steht reicht das noch immer aus um den 8 bit wert zum wackeln zu bringen. Daher möchte ich irgendwie die normale teilung /4 umgehen. Nur 8 bit auslesen hat leider ja den gleichen efekt wie /4 teilen. Mit Keramikkondensatoren habe ich nicht gespart :) der Poti hat 10K (übrings aufschrift ist 10 Kilobyte warum auch immer ) Mal Offtipic Warum tickt meine Soundkarte wenn ich ein Byte in meinen Rs232 sende?
Maximilian schrieb: > dadurch schaffe ich schwankungen +-1 Darunter wirst Du wohl auch kaum kommen, denn daas ist der sog. Quatisierungsfehler. Gruss Harald
das muss nicht mal ein quantisierungsfehler sein, aber harald hat schon recht: das letzte bit wirst du so nicht festnageln können entweder du lebst damit oder du baust auf basis deines 10-bit mittelwertes noch eine hysterese ein da is dann aber wirklich schon die frage wozu
Medianfilter. Der ist wesentlich leistungsfähiger als der schnöde Mittelwert.
@Maximilian (Gast) >Also mittelwert ist schonmal eine gute idee dadurch schaffe ich >schwankungen +-1 Praktisch jeder normale ADC wackelt immer ein wenig zwischen zwei Stufen. Tut er das nicht, ist er a)defekt oder man hat zufällig eine Spannung exakt in der Mitte eines Quantisierungsintervalls mit sehr wenig Rauschen erwischt. Mit Hysterese kann man das Wackeln unterdrücken. Sprich, erst wenn die Änderung zwischen altem und neuem ADC-Wert > x ist, wird der neue Wert angezeigt. >Mal Offtipic Warum tickt meine Soundkarte wenn ich ein Byte in meinen >Rs232 sende? Weil irgendwo ein Eingang offen ist und die vom RS232 verursachte Störuing einfängt.
Also das ich "hardwareseitig" nicht darunter komme ist mir klaar. irgendwo muss der adc ja umschalten und wenn der Poti blöde steht passiert das wohl zwangsleufig. Daher suche ich nach einer Möglichkeit das eventuell über die Software zu lösen. Das ganze soll eine Bedinoberfläche für eine Lichtsoftware werden. Das original Stellpult lässt keine Schwankungen zu, egal wie fein ich die Fader einstelle es wackelt nix. Also muss da ja die Software das Wackeln erkennen und unterbinden. Wie sage ich aber meinem Avr das er das lassen soll. Den wert nur weitergeben wenn er <>2 als der alte ist führt ja dazu das ich auch nurnoch in 2er schritten stellen kann. dann eben die noch nicht ganz klaare idee wenn der 10bit sich genug verändert hat den 8 bit +- 1.
Der ADC sollte nicht um +-1 schwanken, sondern nur um +-0,5. Also wenn z.B. der "richtige" Wert 6 ist, dann sollten bestenfalls 6 und 7 oder 6 und 5 auftreten. Aber nicht: 5, 6 und 7.... Und ab da kann dann eine Mittelwertbildung und das Einberechnen des aktuellen Werts für Stabilität sorgen: wenn der aus 20 ADC Werten berechnete Mittelwert z.B. 5,5 ist, dann wird noch der aktuelle "Ausgabewert" (das was ausgegeben wird) von 6 dazuaddiert, und das Ganze durch 2 geteilt. Heraus kommt 5,75 was mit passender Rundung wieder 6 gibt. Erst, wenn der ADC Mittelwert mal auf 4,9 absinkt, ergibt sich nach 5+6 geteilt durch 2 gleich 5,45 eine gerundete 5 als Ausgabe, die dann aber bleibt, biss der ADC Mittelwert auf 6,0 ansteigt. Noch nicht ganz klar? Einfach mal nachdenken. Das Stichwort heisst: Hysterese
Maximilian schrieb: > Wenn jetzt der Poti aber blöd steht Da hat das Poti wohl eine Macke in der Bahn, kratzt.
Maximilian schrieb: > Also mittelwert ist schonmal eine gute idee dadurch schaffe ich > schwankungen +-1 Wackeln im letzten Bit ist bei digitaler Messung wegen der unumgägnglichen Diskretisierung einer kontinuierlichen Meßgröße ziemlich unvermeidbar. Das einzige, was man machen kann, ist zu steuern, wie häufig es wackelt, indem man einfach die Meß- und/oder Anzeigefrequenz niedrig genug wählt bzw. die Zeitkonstante einer wie auch immer gearteten Glättungsfunktion hoch genug.
Maximilian schrieb: > Also mittelwert ist schonmal eine gute idee dadurch schaffe ich > schwankungen +-1 > Wenn jetzt der Poti aber blöd steht reicht das noch immer aus um den 8 > bit wert zum wackeln zu bringen. Du brauchst einen Filter mit Hysterese. Du gibst nur Änderungen weiter, die lange genug anstehen. Dazu das Signal mit einem Wert runden, das im Rahmen einer längeren Zeitspanne von z.B. 5s zwischen 0 und 0,5 wechselt. Dann immer nur Werte weitergeben, die sich um wenigstens 2 digits geändert haben, wobei die Rundung und Glättung so erfolgen muss, das tatsächlich immer nur 1 Bit infolge des Rauschens zappelt.
c-hater schrieb: > Das einzige, was man machen kann, ist nach einer Messwertberuhigung (gleitender Mittelwert) eine vernünftige Hysterese zu programmieren... ...
Sooo Hysterese war wohl genau das was ich mir gewünscht hatte. Jetzt habe ich einen +-2 freiraum zwischen auf und abregeln und es wackelt nixmehr. Trozdem Noch einen sauberen regelbereich von 0-255 in einser schritten. Vielen Dank :)
> [Von 10 bit auf 8 bit]
Wo ist mein Denkfehler, wenn ich jetzt einfach vorschlagen würde, die 2
LSB wegzuwerfen?
Markus Witt schrieb: > Wo ist mein Denkfehler, wenn ich jetzt einfach vorschlagen würde, die 2 > LSB wegzuwerfen? Es klappert weiterhin, wenn es beim Klappern einen Übertrag ins dritte Bit gibt. Daher mit Mittelwertbildung (Software-Tiefpass) auf 10-Bit-Basis Ausreißer ausfiltern und dann (noch auf 10-Bit-Basis) eine Hysterese einrichten. Danach können die beiden unteren LSB weggeworfen werden, ohne dass da noch etwas klappert. Das geht natürlich nur bei relativ langsamen Signalen. ...
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.