Radio Frequency Navigational Tracker
Main Objective
 Create a vehicle that will track a high
frequency RF/IR transmitter
 The practical application is a golf caddy
that will follow a golfer when requested.
Matthew Sharp
Platform
Processor
Motor
Digital
Compass
Motor
(Right)
GPIO
RS/232
Base of Vehicle
Transmitter
IR TX
RF TX
GPIO
Digital
Compass
Motor
(Left)
Motor
ControlGPIO
RS/232
RF RX
Hardware Overview
IR RX
Transmitter
Ben Says: “It Transmits!!”
Matthew Sharp
RF Transmission
Matthew Sharp
IR TX
Matthew Sharp
Receivers
Matthew Sharp
RF RX
Matthew Sharp
IR RX
Simple, yet sophisticated!!
Matthew Sharp
Sensors
Matthew Sharp
Timing is Everything
Matthew Sharp
8051 to the Rescue
Matthew Sharp
Powering the Transmitter
Fabien Nervais
Base Motors
 Two 12V ServoDisk Motors
 Power – 12V Car Battery
 Optocoupler
 Solid-State Relays
 4 Amp Fuses
Fabien Nervais
Rotating Mount Configuration
 5V DC Servo Motor
 Grooved Rubber Belt
 Power
 12V to 5V linear
voltage regulator
 Solid-State Relay
Fabien Nervais
Rotation Control
 Wire Routing Resolved:
 Approximately 350º Rotation
 Serial Cable Connection
 2 Limit Switches Controlling the Rotational
Behavior
Fabien Nervais
Powering the Rotating
Mount Platform
Fabien Nervais
Processor
Ryan Hitchler
System Clock
Ryan Hitchler
Capacitors and Vcc/Gnd Bus
.1 uF
Vcc Gnd
Ryan Hitchler
Headers
Ryan Hitchler
Memory
Ryan Hitchler
Memory Map
$0000
$FFFF
$8000
$8400
$FFFF
EPROM
SRAM
PERFS
$FFF
F
$0000
$7FFF
$8000
EPROM
SRAM
Current Memory
Map
Future Memory Map
Ryan Hitchler
Power
Ryan Hitchler
Reset
Ryan Hitchler
FPGA
Ryan Hitchler
EPROM Test Program
; Capstone test code
; for MC68HC11
CodeBase EQU $8000 ; address of start of code
ORG $FFFE ; start of address
pointer
DW CodeBase ; set up pointer address to start of
code
ORG CodeBase ; start of code
Start:
nop
nop
nop
jmp Start
Ryan Hitchler
EPROM Test Results
Ryan Hitchler
Parts Listing
Part Quantity Price
.1 uF Cap 28 Donated
1 uF Cap 2 Donated
Through Hold Pins 26 Donated
Power Bus 2 Donated
Raltron 8MHz Clk Oscillator 1 Donated
Heat Sink 1 Donated
LM7805 5V Regulator 1 Donated
78M33 3.3V Regulator 1 Donated
Banana Plug (Female) 3 Donated
LED (Yellow) 1 Donated
Diode 1 Donated
Various Resistors 3 Donated
SPST Switch 1 Donated
Push Button Switch 1 Donated
XCS10 FPGA 1 Donated
18V256 EEPROM 1 Donated
10 Pin 4.7KOhm SIP 3 Donated
6 Pin JTAG Header 1 Donated
20 Pin Logic Analyzer Header 2 Donated
27C256 EPROM 1 Donated
62256 SRAM 1 Donated
28 Pin ZIF 1 Donated
MC68HC11 E0 1 Donated
74373 Transparent Latch 1 Donated
MAX233 2 Donated
DB9 Connector 2 Donated
Perf Board 1 $19.00
Stand Off 10 $10.00
Total Cost $29.00
Ryan Hitchler
Power On RF
Signal
?
Set up
Interrupts
Set up
Serial
Poll RF
Receiver
No
Turn
Antenna
Poll IR
Receiver
IR
Signal
?
No
Yes
Yes
Stop
Antenna
Read Ant.
Compass
Turn Base
-> Ant
Base
=
Ant.?
Read Base
Compass
No
Stop
Turning
YesTurn Ant.
-> Base
Read Ant.
Compass
Ant. =
Base
?
No
Stop
Antenna
Move
Base
Yes
IR
Signal
?
Poll IR
Receiver
No
Yes
Poll RF
Receiver
RF
Signal
?
Yes
No
John Maitin
Software Algorithm Redux
Code
; Capstone algorithm code
; for MC68HC11
; begin code section
ORG CodeBase ; start of code
Start:
lds #Stack ; load stack pointer
bsr enable_int ; enable interrupts
pollrf:
ldaa PORTA ; get GPIO information
anda #RFMASK ; mask out RF information
cmpa #RFMASK ; compare to RF information
bne pollrf ; if no RF signal, continue polling
startantenna:
ldaa PORTA ; get GPIO information
oraa #MAONFMASK0 ; mask in antenna motor control info
anda #MAONFMASKF ; mask out unwanted info
staa PORTA ; write out GPIO stuff
pollir:
ldaa PORTA ; get GPIO information
anda #RFMASK ; mask out RF information
cmpa #RFMASK ; compare to RF information
bne stopantenna ; jump to stopantenna if no RF signal
found
ldaa PORTA ; get GPIO information again
anda #IRMASK ; mask out IR information
cmpa #IRMASK ; compare to IR mask
bne pollir ; if no IR signal, continue polling
stopantenna:
ldaa PORTA ; get GPIO information
oraa #MAOFFMASK0 ; mask in antenna motor control info
anda #MAOFFMASKF ; mask out unwanted info
antennacompass:
oraa #CMPAMASK ; select antenna compass
staa PORTA ; write out GPIO information
bsr read_compass ; read from the antenna compass into d
std compass ; store antenna compass reading into compass
baseturn:
ldaa PORTA ; get GPIO information
anda #CMPBMASK ; select base antenna
staa PORTA ; write out GPIO information
bsr read_compass ; read from the base compass into d
subd compass ; subtract compass value
beq movebase ; if equal, then move base
cpd $0167 ; compare d to halfway value for compass
bge turnright ; turn right if difference greater than halfway
turnleft:
ldaa PORTA ; get GPIO information
oraa #MLONRMASK0 ; write in left motor information
anda #MLONRMASKF ; write out unwanted information
staa PORTA ; write GPIO information
ldaa PORTA ; get GPIO information
oraa #MRONFMASK0 ; write in right motor information
anda #MRONFMASKF ; write out unwanted information
staa PORTA ; write GPIO information
bra pollcomp1 ; jump to pollcomp1
John Maitin
Code (Pt. 2)
turnright:
ldaaPORTA ; get GPIO information
oraa #MLONFMASK0 ; write in left motor information
anda #MLONFMASKF ; write out unwanted information
staaPORTA ; write GPIO information
ldaaPORTA ; get GPIO information
oraa #MRONRMASK0 ; write in right motor information
anda #MRONRMASKF ; write out unwanted information
staaPORTA ; write GPIO information
pollcomp1:
movebase:
stop
; enable interrupt control
enable_int:
sei ; disable interrupts
ldaa#$30 ; 9600 baud, assuming 8 MHz clock
staaBAUD ;
ldaa#$00 ; 8 data bits
staaSCCR1 ;
ldaa#$2c ; Receive interrupt, poll transmit, enable TX,RX
staaSCCR2 ;
ldaaSCSR ; clear RDRF, error flags
ldaaSCDR ; clear receive buffer
clra ; clear a
tap ; transfer a to cc register (enable XIRQ and IRQ)
cli ; enable interrupts
rts
; SCI interrupt handler
rec:
psha
ldaa SCSR
anda #$40
cmpa #$40
bne quit
ldaa SCDR
staa compass
quit:
pula
rti
; change antenna direction (XIRQ interrupt handler)
changeant:
psha
pshb
ldaa PORTA
ldab antdir
comb
bmi goreverse
goforward:
oraa #MAONFMASK0
anda #MAONFMASKF
bra finishchange
goreverse:
oraa #MAONRMASK0
anda #MAONRMASKF
finishchange:
staa PORTA
pulb
pula
rti
John Maitin
Simple Memory Map, Simple
Decode
 Memory map is divided in half, so only 1
pin needed to decode
 If memory mapped I/O is used, we can
adapt logic with and gates from needed
address pins
Josh Bingaman
Motor Control Decoding
Josh Bingaman
RS232 Multiplexing
Josh Bingaman
Sensor Communication
 All GPIO
 No Decode logic
 1 pin for IR Reception
 1 pin for RF Reception
 Limit Switches on Antenna motor to
XIRQ
 1 spare GPIO input for Proximity
Sensor Josh Bingaman
QUESTIONS?

RFNT_CDR

  • 1.
  • 2.
    Main Objective  Createa vehicle that will track a high frequency RF/IR transmitter  The practical application is a golf caddy that will follow a golfer when requested. Matthew Sharp
  • 3.
    Platform Processor Motor Digital Compass Motor (Right) GPIO RS/232 Base of Vehicle Transmitter IRTX RF TX GPIO Digital Compass Motor (Left) Motor ControlGPIO RS/232 RF RX Hardware Overview IR RX
  • 4.
    Transmitter Ben Says: “ItTransmits!!” Matthew Sharp
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    IR RX Simple, yetsophisticated!! Matthew Sharp
  • 10.
  • 11.
  • 12.
    8051 to theRescue Matthew Sharp
  • 13.
  • 14.
    Base Motors  Two12V ServoDisk Motors  Power – 12V Car Battery  Optocoupler  Solid-State Relays  4 Amp Fuses Fabien Nervais
  • 15.
    Rotating Mount Configuration 5V DC Servo Motor  Grooved Rubber Belt  Power  12V to 5V linear voltage regulator  Solid-State Relay Fabien Nervais
  • 16.
    Rotation Control  WireRouting Resolved:  Approximately 350º Rotation  Serial Cable Connection  2 Limit Switches Controlling the Rotational Behavior Fabien Nervais
  • 17.
    Powering the Rotating MountPlatform Fabien Nervais
  • 18.
  • 19.
  • 20.
    Capacitors and Vcc/GndBus .1 uF Vcc Gnd Ryan Hitchler
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    EPROM Test Program ;Capstone test code ; for MC68HC11 CodeBase EQU $8000 ; address of start of code ORG $FFFE ; start of address pointer DW CodeBase ; set up pointer address to start of code ORG CodeBase ; start of code Start: nop nop nop jmp Start Ryan Hitchler
  • 28.
  • 29.
    Parts Listing Part QuantityPrice .1 uF Cap 28 Donated 1 uF Cap 2 Donated Through Hold Pins 26 Donated Power Bus 2 Donated Raltron 8MHz Clk Oscillator 1 Donated Heat Sink 1 Donated LM7805 5V Regulator 1 Donated 78M33 3.3V Regulator 1 Donated Banana Plug (Female) 3 Donated LED (Yellow) 1 Donated Diode 1 Donated Various Resistors 3 Donated SPST Switch 1 Donated Push Button Switch 1 Donated XCS10 FPGA 1 Donated 18V256 EEPROM 1 Donated 10 Pin 4.7KOhm SIP 3 Donated 6 Pin JTAG Header 1 Donated 20 Pin Logic Analyzer Header 2 Donated 27C256 EPROM 1 Donated 62256 SRAM 1 Donated 28 Pin ZIF 1 Donated MC68HC11 E0 1 Donated 74373 Transparent Latch 1 Donated MAX233 2 Donated DB9 Connector 2 Donated Perf Board 1 $19.00 Stand Off 10 $10.00 Total Cost $29.00 Ryan Hitchler
  • 30.
    Power On RF Signal ? Setup Interrupts Set up Serial Poll RF Receiver No Turn Antenna Poll IR Receiver IR Signal ? No Yes Yes Stop Antenna Read Ant. Compass Turn Base -> Ant Base = Ant.? Read Base Compass No Stop Turning YesTurn Ant. -> Base Read Ant. Compass Ant. = Base ? No Stop Antenna Move Base Yes IR Signal ? Poll IR Receiver No Yes Poll RF Receiver RF Signal ? Yes No John Maitin Software Algorithm Redux
  • 31.
    Code ; Capstone algorithmcode ; for MC68HC11 ; begin code section ORG CodeBase ; start of code Start: lds #Stack ; load stack pointer bsr enable_int ; enable interrupts pollrf: ldaa PORTA ; get GPIO information anda #RFMASK ; mask out RF information cmpa #RFMASK ; compare to RF information bne pollrf ; if no RF signal, continue polling startantenna: ldaa PORTA ; get GPIO information oraa #MAONFMASK0 ; mask in antenna motor control info anda #MAONFMASKF ; mask out unwanted info staa PORTA ; write out GPIO stuff pollir: ldaa PORTA ; get GPIO information anda #RFMASK ; mask out RF information cmpa #RFMASK ; compare to RF information bne stopantenna ; jump to stopantenna if no RF signal found ldaa PORTA ; get GPIO information again anda #IRMASK ; mask out IR information cmpa #IRMASK ; compare to IR mask bne pollir ; if no IR signal, continue polling stopantenna: ldaa PORTA ; get GPIO information oraa #MAOFFMASK0 ; mask in antenna motor control info anda #MAOFFMASKF ; mask out unwanted info antennacompass: oraa #CMPAMASK ; select antenna compass staa PORTA ; write out GPIO information bsr read_compass ; read from the antenna compass into d std compass ; store antenna compass reading into compass baseturn: ldaa PORTA ; get GPIO information anda #CMPBMASK ; select base antenna staa PORTA ; write out GPIO information bsr read_compass ; read from the base compass into d subd compass ; subtract compass value beq movebase ; if equal, then move base cpd $0167 ; compare d to halfway value for compass bge turnright ; turn right if difference greater than halfway turnleft: ldaa PORTA ; get GPIO information oraa #MLONRMASK0 ; write in left motor information anda #MLONRMASKF ; write out unwanted information staa PORTA ; write GPIO information ldaa PORTA ; get GPIO information oraa #MRONFMASK0 ; write in right motor information anda #MRONFMASKF ; write out unwanted information staa PORTA ; write GPIO information bra pollcomp1 ; jump to pollcomp1 John Maitin
  • 32.
    Code (Pt. 2) turnright: ldaaPORTA; get GPIO information oraa #MLONFMASK0 ; write in left motor information anda #MLONFMASKF ; write out unwanted information staaPORTA ; write GPIO information ldaaPORTA ; get GPIO information oraa #MRONRMASK0 ; write in right motor information anda #MRONRMASKF ; write out unwanted information staaPORTA ; write GPIO information pollcomp1: movebase: stop ; enable interrupt control enable_int: sei ; disable interrupts ldaa#$30 ; 9600 baud, assuming 8 MHz clock staaBAUD ; ldaa#$00 ; 8 data bits staaSCCR1 ; ldaa#$2c ; Receive interrupt, poll transmit, enable TX,RX staaSCCR2 ; ldaaSCSR ; clear RDRF, error flags ldaaSCDR ; clear receive buffer clra ; clear a tap ; transfer a to cc register (enable XIRQ and IRQ) cli ; enable interrupts rts ; SCI interrupt handler rec: psha ldaa SCSR anda #$40 cmpa #$40 bne quit ldaa SCDR staa compass quit: pula rti ; change antenna direction (XIRQ interrupt handler) changeant: psha pshb ldaa PORTA ldab antdir comb bmi goreverse goforward: oraa #MAONFMASK0 anda #MAONFMASKF bra finishchange goreverse: oraa #MAONRMASK0 anda #MAONRMASKF finishchange: staa PORTA pulb pula rti John Maitin
  • 33.
    Simple Memory Map,Simple Decode  Memory map is divided in half, so only 1 pin needed to decode  If memory mapped I/O is used, we can adapt logic with and gates from needed address pins Josh Bingaman
  • 34.
  • 35.
  • 36.
    Sensor Communication  AllGPIO  No Decode logic  1 pin for IR Reception  1 pin for RF Reception  Limit Switches on Antenna motor to XIRQ  1 spare GPIO input for Proximity Sensor Josh Bingaman
  • 38.