Es gab hier schon einige Beiträge zum Thema Drehzahlregelung. z.B. Beitrag "Nähmaschine, Umbau auf Phasenanschnittsteuerung" sowie mein Beitrag Beitrag "Drehzahlsteuerung Singer Nähmaschine K29 class29 LPC1769" Richtig befriedigend war das Ergebnis jedoch nicht. Problematisch ist bei der Phasenanschnittsteuerung die Erkennung und Auswertung des Nulldurchgangs. Als Abfallprodukt einer Heizungssteuerung hier der Vorschlag für eine einfache Lösung: Für die Motorsteuerung wird ein 2€-China-Motor_Control-Modul verwendet. Das Potentiometer wird durch eine PWM-gesteuerte LED-LDR-Kombination ersetzt. Die Messung der Motordrehzahl erfolgt wie beim Asuro durch Fototransistor/LED am Lüfterrad. Der Wechsel von dunklen und hellen Lüfterflügeln steuert einen Interrupt. Sowohl PWM-Steuerung wie auch Drehzahlmessung funktionieren. Es fehlt noch das Programm zur Einregelung der Motorleistung unter verschiedenen Belastungen. Für Anregungen/ Verbesserungsvorschläge bin ich dankbar. Dass man bei 230Volt aufpassen muss, weiß ich bereits.
Gut den leichten Teil hast du umgesetzt. Die Regelung der Drehzahl wird sich als weniger trivial herausstellen. Bei einer Nähmaschine hast du häufig Lastwechsel auf die deine Regelung entsprechend reagieren muss. Je nach Anspruch wird es beliebig komplex.
Erster Versuch einer Regelung:
1 | //+++++++++++++volleSecunde ++++++++++++++++++++
|
2 | if(gbi(bool1,schalterVolleSecunde )){ |
3 | cbi(bool1,schalterVolleSecunde);zl_sec_wdg=0; |
4 | zl_drehzahl=isr_imp; |
5 | |
6 | if(zl_drehzahl<460) |
7 | {OCR1A+=10;} |
8 | else{if(zl_drehzahl<480) |
9 | {OCR1A+=5;} |
10 | else{if(zl_drehzahl<490) |
11 | {OCR1A+=2;}}} |
12 | |
13 | if(zl_drehzahl>540) |
14 | {OCR1A-=5;} |
15 | else{if(zl_drehzahl>520) |
16 | {OCR1A-=3;} |
17 | else{if(zl_drehzahl>510) |
18 | {OCR1A-=2;}}} |
19 | |
20 | |
21 | isr_imp=0; |
22 | selectfont(2); |
23 | lcd_time;lw("-");li(zl_drehzahl);lw("-");li(OCR1A); |
24 | //_____________________________________________
|
Im Trockenversuch funktioniert das unter Last schon ganz gut. Werde den Motor jetzt einbauen und mit Nähmaschine probieren. Gibt es für solche Regelungen fertige Agorithmen?
grundschüler schrieb: > Motor jetzt einbauen und mit Nähmaschine probieren. Gibt es für solche > Regelungen fertige Agorithmen? Gibt es. Einer der bekanntesten Regler ist der sog. PID Regler. http://rn-wissen.de/wiki/index.php/Regelungstechnik PS. tu dir selbst einen Gefallen und formatier deinen Code ein wenig um So ...
1 | if( zl_drehzahl < 460 ) |
2 | OCR1A += 10; |
3 | else if( zl_drehzahl < 480 ) |
4 | OCR1A += 5; |
5 | else if( zl_drehzahl < 490 ) |
6 | OCR1A += 2; |
7 | |
8 | if( zl_drehzahl > 540 ) |
9 | OCR1A -= 5; |
10 | else if( zl_drehzahl > 520 ) |
11 | OCR1A -= 3; |
12 | else if( zl_drehzahl > 510 ) |
13 | OCR1A -= 2; |
... ist das viel einfqacher zu lesen, als wie wenn du bei jedem else erneut in einen Block einsteigst. Ob du die abhängigen Anweisungen (die Veränderungen von OCR1A) in Klammern einschliessen willst oder nicht, überlass ich gerne dir und darüber kann man diskutieren. Aber bei den else - if braucht man nicht diskutieren. Dein Code wandert sonst immer weiter sehr schnell nach rechts aus, ohne dass du dafür etwas kriegst. Für die dadurch wegfallenden { } kaufst du dir statt dessen ein paar Leerzeichen und positionierst sie im Code zwischen dem, was man wohl Umgangssprachlich ein 'Wort' nennen würde. Das kostet dir nichts, macht aber den Code noch viel leichter zu lesen, weil du seit deinem 7. Lebensajhr dein Gehirn darauf trainiert hast, dass beim Lesen zwischen 2 Wörtern ein Leerraum steht und du nicht eine Buchstabensuppe daraufhin absuchen musst, wo ein Wort aufhört und das nächste anfängt.
:
Bearbeitet durch User
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.