Hallo zusammen, habe folgendes Problem: Über eine 4-20mA Stromsteuerung wird über den ADC eines PIC 16F876 die analoge Spannung (über einen 250 Ohm Wid) am PIC eingelesen und daraus 16 log. Stufen für ein PWM Signal erzeugt (für LEDs) Leider kann es passieren, das die LED zwischen 2 Stufen mal hin und herspringt (die LED flackert) , mein Gedanke war entweder eine Mittelwertbildung oder pro Stufe eine "Hysterese" einzufügen.... Was würdet Ihr bevorzugen oder hat vielleicht jemand ein ähnliches Projekt realisiert ?? Gruß Michael
Hallo, ich würde 256 Messungen machen, in ein 16 Bit Register alle gemessenen Werte hinzuaddieren. Nach 256 Messungen steht das Ergebnis in Bit 15 - Bit 8 als 8-Bit Wert zur verfügung. Danach nochmal /16 und du hast deine 16 Stufen Gruß, Tubie
Eine Möglichkeit wäre ein gleitender Mittelwert. In einen Ringspeicher wird jeder Messwert eingeschrieben und danach alle Zellen des Ringspeichers addiert und durch die Anzahl der Speicherstellen des Ringspeichers geteilt. Durch die gleitende Mittelwertbildung wird verhindert, daß erst alle X Messungen ein gültiger Wert herauskommt. Das lässt sich relativ einfach mit einem Array aufbauen. Frank
Hallo Frank, danke für die Antwort. Das Problem ist nur, das ich in Assembler (nicht in C, was wahrscheinlich einfacher gewesen wäre) programmiert habe, da kann ich zwar addieren, nur teilen wir schwierig, oder ich muss erstmal einlesen^^ Gruß Michael
Michael R. schrieb: > da > kann ich zwar addieren, nur teilen wir schwierig, oder ich muss erstmal > einlesen^^ Wenn du deinen Teilerfaktor in 2er Potenzen anlegst brauchst du nur zu shiften. z.B. durch 16 teilen ist 4 mal nach rechts schieben. Also solltes du deinen Buffer im 2er Potenzen Groesse anlegen.
Hi >danke für die Antwort. Das Problem ist nur, das ich in Assembler (nicht >in C, was wahrscheinlich einfacher gewesen wäre) programmiert habe, da >kann ich zwar addieren, nur teilen wir schwierig, oder ich muss erstmal >einlesen^^ Nur wenn man es sich selbst schwer macht. Bei einer Puffergröße von 2,4,8,16... reichen zum teilen einfache lsr/ror Befehle. MfG Spess
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.