AVR-Projekt coach2.2_04_drehgeber - Verwendung des Drehgebers zur Erfassung der Winkelgeschwindigkeit
- Folgende virtuellen Klassen wurden implementiert:
|
class DrehgeberBASIS
{
public:
virtual int holeOmegaViertel();
};
Code 0-1: Virtuelle Basisklasse der Klasse Drehgeber
Methodenname |
Beschreibung |
Beispiel |
int holeOmegaViertel() |
Liefert Integer-Werte, bei denen eine Einheit 1/4 rad/s entspricht. |
omega=0.25*(double)drehgeber.holeOmegaViertel(); |
Tabelle 0-1: Methoden der Klasse Drehgeber
- Achten Sie beim Testen des Hauptprogramms auf folgendes:
- Das Programm arbeitet unter Verwendung des Hyperterminals und meldet sich dort mit Hinweisen zur Benutzung.
- Kanal Z muß durch Kanal B ersetzt worden sein (s.o.)
- Bei positiven Werten sollte das Fahrzeug gerade vorwärts fahren, bei negativen rückwärts.
- Es wurde auf effiziente Implementierung mit wenig Rechen- und Speicherbedarf geachtet. Die Auflösung von 1/4 rad/s paßt zum Meßverfahren.
- Für 0,0251111s werden Kanal A und B abgetastet.
- Es gilt: omega = Anzahl_Flankenwechsel*2PI/(1000*Dauer)
- hier: omega = Anzahl_Flankenwechsel*2PI/(1000*0.0251111s)
- deshalb: omega_viertel ungefähr = Anzahl_Flankenwechsel
- Als "Stopuhr" wird Timer 2 verwendet.
- Um die Drehrichtung zu erkennen, wird bei positiver Flanke bei Kanal A geprüft, ob die letzte Flanke bei Kanal B ebenfalls positiv war (Rückwärtsfahrt), oder nicht (Vorwärtsfahrt).
- Machen Sie sich schon einmal Gedanken darüber, wie das Drehgebersignal möglichst einfach numerisch differenziert oder integriert werden kann, um die Voraussetzungen zur Implementierung eines PID- oder Zustands-Reglers zu schaffen.
|