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.
 
  |