Hallo! Ich bin noch relativ neu hier und auf noch ein ziemlicher Noob, was Elektronik angeht. Trotzdem lerne ich immer weiter fleißig dazu. Momentan habe ich eine relativ einfache Schaltung aufgebaut. Darin steuert ein Potentiometer mittels PWM und einem AtTiny13 einen Gleichstrommotor. Im Programm ist eine Untergrenze eingebaut, ab der der Motor stehen bleiben soll. Wenn ich nun meinen Potentiometer auf ungefähr diese Untergrenze einstelle, dann fängt der Motor wie wild an zu "blinken". Ich denke mal, dass das einfach aus minimalen Spannungsänderungen resultiert, die der Mikrocontroller dann eben als an/aus Signale weitergibt. Meine Frage ist jetzt, wie ich diesen Effekt verhindern kann? Per Hardware die Spannung glätten? Gruß
Vielleicht solltest Du einen Schwellwert mit etwas Toleranz in Deine Software einbauen. Durch minimale Schwankungen, bei einem Analogsystem, sind fixe Werte wie z.B. "gleich 68" als A/D-Wandler Wert kaum zu erreichen. Meist hüpft der Wert dann munter zwischen 70 und 66 (z.B.) herum. Wenn Deine Software aber auf genau irgendwas abfragt, bist Du der Gelackmeierte. Also einfach bei Deinen Abfragen: "von ... bis" erfragen und glücklich werden. Soll z.B. ein Motor mit einem Poti gesteuert werden, so ist das Problem im Grunde genommen recht einfach zu lösen. Für den Stoppwert nimmst Du nicht den Wert, den das Poti beim Anschlag liefert, sondern einen Wert, der sicher erreicht wird und etwas höher liegt. Dann fragst Du einfach auf "kleiner als" oder "kleiner gleich" ab. Natürlich musst Du den Rahmen, den Du unten abschneidest bei der Skalierung der PWM berücksichtigen. Das sollte aber das kleinste Problem sein. Übrigens: Wie hast Du Deinen Motor zum Leuchten gebracht?
Kuno Zoltner schrieb: > Meine Frage ist jetzt, wie ich diesen Effekt verhindern kann? Per > Hardware die Spannung glätten? Nein, das hilft nicht wirklich. Um den Wert 1 kann ein AD-Wandler prinzipbedingt immer "wackeln". Was du brauchst, ist eine so genannte Umkehrhysterese, wegen der Eigenschaften des AD-Wandlers mindestens mit dem Wert 2. Er kann aber auch größer festgelegt werden, wenn der Wandler wegen des Rauschens stärker wackelt als bloß um +-1. D.h.: Deine Steuerung folgt der Eingabe, solange sich deren Werte sich in die gleiche Richtung bewegen, also z.B. immer kleiner werden. Fangen sie aber an, sich in die Gegenrichtung zu bewegen, akzeptiert die Steuerung die Änderung erst, wenn sie die von dir festzulegende Umkehrhysterese übersteigt. Wenn du das als Programm umsetzt, mußt du dir zwei Sachen merken: 1) den jeweils letzten akzeptierten Wert 2) die jeweils letzte bestätigte Bewegungsrichtung Beachte bei der Programmierung, daß es beim Start der Sache beides noch nicht geben kann. Deswegen brauchst du für die Startphase neben den beiden normalen Bewegegungsrichtungen noch zwei weitere Zustände, nämlich "alles unbekannt" und "Bewegungsrichtung unbekannt". Bei "alles unbekannt" akzeptiert die Steuerung jeden Meßwert und speichert ihn auch als solchen. Zusätzlich wechselt sie in den Zustand "Bewegungsrichtung unbekannt". Im Zustand "Bewegungsrichtung unbekannt" wiederum verhält sie sich schon fast so wie bei bekannter Bewegungsrichtung. Der einzige Unterschied ist, daß Meßwertänderungen in beide Richtungen erst die Hysterese überschreiten müssen, bevor die Steuerung sie akzeptiert. Tritt dieser Fall ein, wechselt die Steuerung je nach erkannter Bewegungsrichtung in einen der beiden Normalzustände. Ab dann läuft alles wie oben dargestellt.
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.