www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Motorfader und PWM


Autor: Emanuel J. (e-sound)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

Im Moment beschäftigte ich mich mit einem Motorfader von Alps ( 
http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=B28... 
).
Gesteuert per L298 (Motortreiber) mit einem Pic16f876. Als Sourcecode 
benutze ich C.
Einlesen tu ich den Wert des Faders per AD-Converter. (IST-Wert)
Dann gibts noch einen SOLL-Wert, dieser ist praktisch das Ziel.
Ich habe schon versucht, sobald der IST-Wert kleiner als der SOLL wert 
ist Motor rauf; wenn größer runter.
Dies funzt aber leider nicht sehr gut, denn sobald der Fader seinen Wert 
erreicht hat ist er schon wieder überm Ziel und korrigiert wieder zurück 
- dies die ganze Zeit.
Jetzt kommt wohl nur noch pwm in Frage, da ich mich aber noch nie so 
richtig damit beschäftigt hab, und ich auch keine großen 
Programmierkünste besitze, meine Frage, wie mach ich das am besten?
Vorgestellt hab ich mir es so, dass der Motor immer langsamer wird um so 
näher er am SOLL-Wert ist. Wie kann man das am besten umsetzen?

Achja, der Motor läuft mit 5V.

Danke für eure Antworten!

MFG Emanuel

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für ne PWM brauchst du nur ein paar Register zu setzen, beim Tiny26 z.b. 
die hier:

//Einstellungen für PWM (Test)
TCCR1A = 0b01000010;
OCR1A = 100;
OCR1C = 255;
TCCR1B = 0b10001100;

Erläuterung: TCCR1A COM1A gesetzt: Ausgabepin (in diesem Fall PB0 und 
PB1) invertieren (toggeln)
TCCR1A PWM1A Bit gesetzt: Selbsterklärend ^^

Die beiden folgenden Register geben den Duty Cycle an: Desto näher OCR1A 
an OCR1C rückt, desto höher ist der Duty Cycle (imho sind 0-100% 
möglich, habs aber nie ans Oszi gehangen). Mit OCR1C kann man auch die 
Frequenz einstellen (niedrigerer Wert = höhere Frequenz), hauptsächlich 
passiert das aber mit TCCR1B (genauer: Den letzten 4 bits davon. Die 
geben den Prescaling-Wert an. 0000=Kein Prescaling, sprich hohe PWM 
Frequenz, 1111 = Prescaling von 16864, also extrem niedrige Frequenz. 
Ich hab momentan bei 1MHZ CPU Takt 256 Hz drin.)

Das erste Bit von TCCR1B ist CTC, also Clear Timer on Compare Match. 
Damit wird das Timer-Register geleert sobald ein Match mit OCR1A oder 
OCR1C vorliegt. OCR1B gibts auch noch, da kann man dann eine zweite PWM 
realisieren.

Zum Rest: Tjo, da musst du dir halt einen Algorithmus überlegen anhand 
dem entschieden wird, wann der Motor anhalten soll. Idealerweise sagst 
du einfach, dass ab einem gewissen "Abstand" (in V) gestoppt werden 
soll. Da der ADC 1024 bit Auflösung hat, sollte das nicht so schwer 
sein.
Ist wie debouncen, nur halt mit dem ADC statt Tastern ^^

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry: Mit meinen Einstellungen sinds 8 Herz. Das reicht für nen 
PC-Lüfter. Dann hört man das nervtötende Fiepen nicht.

Autor: Emanuel J. (e-sound)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Zunächst mal danke für deine Antwort.
Leider versteh ich von Assembler genauso viel wie Hebräisch. Daher bitte 
nur in C ;-)

thx

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war C...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das war C...

Fürn AVR. Gefragt wurde nach PIC.

Autor: Emanuel J. (e-sound)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, hihi, dass sah für mich aus wie Assembler.
Da ich auch nicht mit AVRs, sondern nur mit PICs arbeite, ist mir das 
leider ein bisschen zu komplitziert
Ausser deinem letzen Absatz ist mir nicht klar von was du sprichst xD

Wie gesagt, bin leider kein profi-programmierer, sorry!

mfg

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, den PIC-Teil hab ich glatt überlesen, sorry ^^

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der PIC dürfte einen Timer haben. DAmit sollte es möglich sein eine 
konstante Frequenz mit variablem Tastgrad zu erzeugen.
Das wäre schon mal die PWM.
Die wird von einem Regelalgorithmus vorgegeben, der den 
Soll-Ist-Vergleich auswertet. Je kleiner der Abstand zwischen Sollwert 
und Istwert ist, um so kleiner muss der Impuls im Verhältnis zur 
Periodendauer sein...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.