Motorfader und PWM

OP #1880477
Hi Leute,

Im Moment beschäftigte ich mich mit einem Motorfader von Alps ( 
http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=B28;GROUPID=3713;ARTICLE=73884;START=0;SORT=artnr;OFFSET=100;SID=29sfML7awQAR0AACbbFJke0efda24467e2d3c5646779ec3e922dd 
).
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
Gast #1880523
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 ^^
OP #1880554
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
Gast #1880900
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.