Sensorik

Aus Kicker
Wechseln zu:Navigation, Suche

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 gemessen werden. Spule Details

Rotationsbewegung

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 Algorithmus 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):

<source lang="asm">

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

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 über 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