breezer
03.02.2015, 18:02
Hallo,
zurzeit beschäftige ich mich mit meinem Projekt eines Kurshaltesystems für mein Sportboot.
Als Aktuator verwende ich einen Schrittmotor welcher mittels Zahnriemen und selbstgedruckter Halterung + Zahnrad auf die Teleflexlenkung des Bootes wirkt.
Die Elektronik besteht im wesentlichen aus einem Arduino nano, LS303 Kompassmodul, 3A Schrittmotortreiber (Step/Dir), und einem kleinen Display (Nokia 5110).
Mometan spiele ich mit einer PID-Regelung rum, ohne nenenswerte Erfolge...
Mein Ansatz sieht wie folgt aus:
- Abweichung des Sollkurses vom Istkurs berechnen, es wird immer der kürzere Weg eingeschlagen z.B. Soll: 350° ,Ist: 20°, Rückgabewert: -30° (Abweichung)
- das Vorzeichen beim Rückgabewert gibt die Drehrichtung des Schrittmotors an
- Stellwert vom PID-Regler in Abhängigkeit der Abweichung berechen lassen
- Timer im Arduino auf bestimmte Zeitbasis eingestellt mit Interruptauslösung
- In der Interruptroutine läuft eine Zählschleife von 1 - 100 welche bei jedem Interrupt einen weiter zählt
- abhängig vom Stellwert des PID-Reglers wird die If Bedingung des Zählers bei 1 bis 100 erfüllt und ein Step ausgelöst, gleichzeitig wird die Schleife auf 0 zurückgesetzt
- d.h. bei 1 dreht der Schrittmotor schnell und bei 100 am langsamsten
Ich denke allerdings das der ganze Ansatz nichts taugt, da der Motor quasi nie zur Ruhe kommt und sich das Ruderblatt laufend hin und her dreht.
Aber welche Regelung würde sich für dieses Problem anbieten?
MfG
breezer
zurzeit beschäftige ich mich mit meinem Projekt eines Kurshaltesystems für mein Sportboot.
Als Aktuator verwende ich einen Schrittmotor welcher mittels Zahnriemen und selbstgedruckter Halterung + Zahnrad auf die Teleflexlenkung des Bootes wirkt.
Die Elektronik besteht im wesentlichen aus einem Arduino nano, LS303 Kompassmodul, 3A Schrittmotortreiber (Step/Dir), und einem kleinen Display (Nokia 5110).
Mometan spiele ich mit einer PID-Regelung rum, ohne nenenswerte Erfolge...
Mein Ansatz sieht wie folgt aus:
- Abweichung des Sollkurses vom Istkurs berechnen, es wird immer der kürzere Weg eingeschlagen z.B. Soll: 350° ,Ist: 20°, Rückgabewert: -30° (Abweichung)
- das Vorzeichen beim Rückgabewert gibt die Drehrichtung des Schrittmotors an
- Stellwert vom PID-Regler in Abhängigkeit der Abweichung berechen lassen
- Timer im Arduino auf bestimmte Zeitbasis eingestellt mit Interruptauslösung
- In der Interruptroutine läuft eine Zählschleife von 1 - 100 welche bei jedem Interrupt einen weiter zählt
- abhängig vom Stellwert des PID-Reglers wird die If Bedingung des Zählers bei 1 bis 100 erfüllt und ein Step ausgelöst, gleichzeitig wird die Schleife auf 0 zurückgesetzt
- d.h. bei 1 dreht der Schrittmotor schnell und bei 100 am langsamsten
Ich denke allerdings das der ganze Ansatz nichts taugt, da der Motor quasi nie zur Ruhe kommt und sich das Ruderblatt laufend hin und her dreht.
Aber welche Regelung würde sich für dieses Problem anbieten?
MfG
breezer