Weiter mit dem Testprogramm
von
am 04.12.2012 um 16:54 (3110 Hits)
Nach Umstieg von BASCOM 2.0.5.0 auf Version 2.0.7.5 lief das vorige Testprogramm erstmal nicht mehr. Grund: In der Encoder Funktion stand für die Abfrage Pins PINC5 und PINC4. Das akzeptierte die alte Version und wurde auch richtig ausgeführt. Die neue Version kompilierte, Programm lief aber nicht richtig. Es muß PINC.5 und PINC.4 heißen.
Hab dann noch ein, zwei Bugs berichtigt und als Hauptneuerung eine Rampe hinzugefügt.
Wenn nun die vorgewählte Drehzahl beim Einschalten zu hoch ist oder bei zu hoher Drehzahl die Laufrichtung umgeschaltet wird, wird auf eine niedrige Drehzahl geschaltet, die der Motor noch verkraftet und bis zur Solldrehzahl beschleunigt. Dabei wird etwa alle 2ms die Drehzahl um 0,5 rps erhöht. Die Einsetzschwelle für die Rampe ist belastungsabhängig (im Augenblick nur mit rotem Zahnrad wie im Video aus letztem Blogeintrag) und ist ausprobiert.
Die Rampe wird mit Timer0 gesteuert. In der Hauptschleife des Hauptprogramms wird das Timer0 Overflow Flag abgefragt und bei Bedarf die Frequenz vom Timer1 erhöht. Da der Stepper in einer ISR seinen Takt bekommt, habe ich erstmal auf weitere Interruptroutinen verzichtet. Das vermeidet hoffentlich Jitter im Steppertakt durch andere laufende Interruptroutinen. Das Berechnen des OCR1A Wertes nimmt durch die Division einige Zeit in Anspruch, ist in der Praxis aber nicht zu spüren.
Für den, den es interessiert ist das Programm im Anhang. Paßt leider nicht zwischen die CODE Tags, da es mit den Anmerkungen mehr als 10000 Zeichen hat. Zusammen mit diesem Text sprengt es die 10000er Zeichengrenze sowieso.
Gruß
Searcher