kramann.info
© Guido Kramann

Login: Passwort:










COACH2
1 Planung
2 Architektur
3 Anzeige
4 EEPROM
5 I2C
..5.1 MasterSendByte
..5.2 MasterSend2Bytes
..5.3 MasterReceiveByte
..5.4 MasterReceive2Bytes
6 UART
7 DFT
8 FFT
9 Planung2
10 Klassen
..10.1 AnzeigeTaster
..10.2 RS232
..10.3 MotorServo
..10.4 Drehgeber
..10.5 Sensor
..10.6 Funk
11 Adaption
..11.1 Programmiertechnik
..11.2 Evoopt
12 Fuzzy
..12.1 Uebungsaufgabe
..12.2 Fuzzygroesse
..12.3 Fuzzyset
..12.4 Lookuptable
13 Skript
..13.1 Funkkorrektur
..13.2 Skriptsprachen
..13.3 Anforderungen
..13.4 Agentensysteme
..13.5 Implementierung
..13.6 Experimente
14 Gesamtkonzept
..14.1 Skripterweiterung
..14.2 Makroverhalten
67 Echtzeitsysteme
..67.1 Einfuehrung
....67.1.1 Echtzeit
....67.1.2 Korrektheit
....67.1.3 Hardware
....67.1.4 Ziele
....67.1.5 Synchronprogramm
..67.2 Threads
....67.2.1 Java
....67.2.2 Synchronisierung
..67.3 COACH
....67.3.1 Kaskadenregler
....67.3.2 Zeitebene1
....67.3.3 Zeitebene2
....67.3.4 Zeitebene3
....67.3.5 Puck
....67.3.6 Puckschwarm
..67.4 RTAIlab
....67.4.1 Slax
....67.4.1 USB_Stick
....67.4.2 Sinus
..67.5 Semaphor
....67.5.1 Laufkatze
....67.5.2 Java
....67.5.3 Semaphor
..67.6 Audio
....67.6.1 wav
....67.6.2 Linux
..67.7 Lookup
....67.7.1 Fuzzy
....67.7.2 PWM
..67.8 NeuronaleNetze
....67.8.1 Neuron
....67.8.2 Backpropagation
....67.8.3 Umsetzung
....67.8.4 Winkelerkennung
..67.9 Internetprogrammierung
....67.9.1 Codegenerierung
....67.9.2 PHP_Programmierung
....67.9.3 PHP_OOP
....67.9.4 Java
....67.9.5 UDP
..67.10 DFT
..67.11 FFT
..67.12 Zustandsmaschine
..67.13 Fuzzy
....67.13.1 Fuzzylogik
....67.13.2 FuzzyRegler
....67.13.3 Uebung9
....67.13.5 Softwareentwicklung
......67.13.5.1 AgileSoftwareentwicklung
......67.13.5.2 FuzzyRegler
......67.13.5.3 Uebung
....67.13.6 Umsetzung
......67.13.6.1 FuzzyRegler
......67.13.6.2 Simulation
......67.13.6.3 Optimierung
......67.13.6.4 Uebung
....67.13.7 Haengependel
......67.13.7.1 Haengependel
......67.13.7.2 Simulation
......67.13.7.3 FuzzyRegler
......67.13.7.4 Optimierer
......67.13.7.5 Genetisch
....67.13.8 Information
....67.13.9 Energie

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