Sensorik
Sensorik der gegnerischen Spielfiguren
Um die Mögloichkeit zu haben das später eine Spielstrategie zu entwickeln ist es wichtig zu wissen wo und wie die Gegnerfiguren stehen.
Dieses soll nach Möglichkeit absolut geschen um Kalibrirungen am Anfang zu vermeiden und einen "einfachen" Plug&Play-Betrieb zu realisieren.
Als Problem gestaltet sich wie auch bei den Antrieben, dass rotatorische und lineare Bewegung gleichzeitig erfasst werden müssen. Daher scheiden einfache Absolut-Dreh-/Winkelgeber aus, da das Gehäuse immer mitgeführt werden müsste.
Nach ersten Überlegungen über eine gleichzeitige Bewegung in zwei Achsen wurden wir auf das System der guten alten Kugelmaus aufmerksamm. Doch stellte sich leider herraus, das hier keine Absolutwert-Fähigkeit vorliegt.
Desweiteren sollte die Sensorik den Spieler in keinster Weise behindern geschweigeden die Bewegung der Stangen beinträchtigen.
Linearbewegung
Zur Messung der Stangeverschiebung bieten sich daher folgende Lösungen an:
Messung mittels Ultraschall:
z.B. Waycon UFA 1002/1003:
Messbereich: 1000mm
Genauigkeit: 1,5mm
Reaktionszeit: 100ms
allerdings ist die sehr lange Reaktionszeit zu beachten!
Messung mittels Triangulationslaser:
z.B. Waycon LAS T-500:
Messbereich: 100-600mm
Genauigkeit: 2mm
Reaktionszeit: 0,9ms
Messung mittels Induktivität:
Die Spielstange taucht in eine Luftspule ein und verändert dadurch die Induktivität der Spule. Dieses kann recht einfach durch Beschaltung als Hoch- oder Tiefpass gemesssen werden.
Rotationsbewegug
Zur messung des Drehwinkels gibt es ebenfalls verschiedene Ansätze:
Auf das Ende einer Spielstange wird eine dünne runde Scheibe montiert auf die durch ein Muster z.B. ein kleiner und ein großer Punkt aufgebracht wird. Dieses Muster kann man dann mittels einer billigen Webcam aufnehmen und von einem Algorhtmus analysieren lassen. Desweiteren kann man in die Scheibe einen Binärcode (z.B. 4 Bit) reinstanßen und die Stellung mit IR-Dioden und Fototransistoren aufnehmen. Dabei ist darauf zu achten, das immer nur eine IR-LED und ein Fototransistor aktiv sind, da es sonst durch die starke Streuung des Infrarotlichts zu inkosistenten Daten kommt wenn die Scheibe nahe der IR-LEDs steht.
Zeichnung der Inkrementalscheibe
Hier das kleine Asamblerprogramm für einen Atmel (z.B. Atmega8 mit 4MHz):
.NOLIST ; List-Output unterdrücken
.INCLUDE <m8def.inc> ; das gibt es für jeden Controllertyp
.LIST ; List-Output wieder aufdrehen
.CSEG ; was nun folgt, gehört in den FLASH-Speicher
.equ TFLAG = 0
;------------------------------------------------------
; Start Adresse 0000
;------------------------------------------------------
RESET:
rjmp INIT ; springen nach "INIT"
.ORG INT_VECTORS_SIZE ; dadurch haben wir für die Vektoren Platz gelassen
INIT:
;------------------------------------------------------
; INITIALIZE
;------------------------------------------------------
ldi r24,high(RAMEND) ;Stack Pointer setzen
out SPH,r24 ; "RAMEND" ist in m8def.inc (s.o.) festgelegt
ldi r24,low(RAMEND) ;
out SPL,r24 ;
;------------------------------------------------------
; eigene Initialisierungen
;------------------------------------------------------
;Status LED an Port B 5, Starttaster an Port B 4
;Fototransistoren Port B 0-3, IRLED Port C 0-3, LED für Anzeige Port D 0-7
;configuration der Datadirection Register der I/O Ports
clr r16
ldi r18, 0b11111111
out DDRD, r18
ldi r18, 0b00100000
out DDRB, r18
ldi r18, 0b00011111
out PORTB, r18
ldi r18, 0b00000000
out PORTC, r18
clr r18
clr r17
LOOP1:
sbis PINB,4 ;überprüft ob der Starttaster einmal gedrückt wurde, wenn nicht wird die nächste Anweisung übersprungen
rcall LOOP2
rcall LOOP1
;Ab hier Endlosschleife
LOOP2: sbi PORTB, PB5 ;Einschalten der Staus-LED
LOOP3:
;Anfang für 1. LED
sbi PORTC, PC0 ;Anschalten der IR-LED
cbi PORTD, PD0 ;löschen des alten Wertes
in r17, PINB ;einlesen des neuen Wertes vom Fototransistor in das Register 17
sbrc r17,0 ;üerspringt die nächste Anweisung wenn Bit 0 im Register 17 "NULL" ist
sbi PORTD, PD0 ;setzt das entsprechen Bit im Port D für die Visualisierung der Stellung
cbi PORTC, PC0 ;Schaltet die IR-LED aus
;Anfang für 2. LED
sbi PORTC, PC1
cbi PORTD, PD1
in r17, PINB
sbrc r17,1
sbi PORTD, PD1
cbi PORTC, PC1
;Anfang für 3. LED
sbi PORTC, PC2
cbi PORTD, PD2
in r17, PINB
sbrc r17,2
sbi PORTD, PD2
cbi PORTC, PC2
;Anfang für 4. LED
sbi PORTC, PC3
cbi PORTD, PD3
in r17, PINB
sbrc r17,3
sbi PORTD, PD3
cbi PORTC, PC3
rjmp LOOP3
Kombinationen beider Bewegungen
Ein Ganz anderer Ansatz ist die Verwendung von Hallsensoren. Dabei werden kleine Magnete auf dem Stagenende befestigt und eine Art Röhre üder das Ende gestülbt und an dem Kicker befestigt. In dieser Röhre sind nach innen hin Hallsensoren befestigt, die das Magnetfeld der Magnete dedektiert. Die Sensoren müsssen über die komplette verfahrstecke der Stange und rundrum um die Stange angebracht werden, so das eine Art Schlauch aus Hallsensoren gibt. Auch diese Methode ist Absolutwert-gebend. Leider gibt es soetwas nicht frei auf dem Markt zu kaufen und müsste daher selbst hergestellt werden. Mit dieser Methode kann gleichzeitig die Längs- und Drehbewegung ermittelt werden.
to be continude