Forum: Mikrocontroller und Digitale Elektronik PWM mit Startwert stabilisieren


von Ein N. (Gast)


Lesenswert?

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ß

von Amateur (Gast)


Lesenswert?

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?

von Müder Leser (Gast)


Lesenswert?


von c-hater (Gast)


Lesenswert?

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