Humble HubbleTeam 18
Tim Brown
Abstract
The proposed project is a self-aiming telescope. This telescope will obtain its global position and
the local time via GPS. It will then automatically orient itself to
point at a user selected target (star) using a variety of onboard
sensors.
Background: http://www.nasa.gov/images/content/708180main_hubble_lose_spiral_full_full.jpg
PSSCs• An ability to establish a coordinate system
based on the telescope's absolute global position via a GPS chipset, and relative orientation based on an accelerometer and electronic compass.
• An ability to compensate for combined variations in the Earth's gravitational and magnetic field, and variations in telescope geometry and mounting configurations via electronic user calibration.
PSSCs• An ability to retrieve celestial coordinates and
targets via Bluetooth from an external host.• An ability to automatically move and point the
telescope at the designated target using feedback loops from integrated motor encoders.
• An ability to allow the user to manually override the telescope's target coordinate using an onboard electronic control interface, and to display information regarding headings on an onboard LCD.
Software Design Considerations
• Flexibility in workload• Ability to manage multiple communications
protocols simultaneously• Maintain as much user functionality as
possible while waiting for sensor data• Capable of trig functions (or simulation) for
stellar target calculations
Software Design Decisions
• Completely Interrupt-driven code– Enables each communications interface to
demand attention when it needs it– Allows sensor initialization to take place “in the
background”– Allows the processor to pass into a low-power
“idle” state while not busy• Use look-up tables for trig calclulations
Memory Map• Executable code• Sine lookup tables• LCD character lookup table• Bluetooth message lookup table• Current position, Current Target, Automatic
Target, Manual Target• Button/encoder states.• Message Buffers for each communication protocol
Peripherals Used• I2C x2 – Sensor Breakout, Motor Encoders• UART x2 – Bluetooth, debugging serial port• SPI – GPS chip• PWM x2 – 2 motors• Timers x2 – Timed interrupts
Main Board
Auxiliary Board
7.2V NiMHBattery
V+ (7.2V Unregulated)
Vss (Ground)
Vss (Ground)Vdd (3.3V regulated)Vcc (5.0V regulated)Hold Power OnOn/Off InterruptV+ (7.2V Unregulated)Motor 1 – BrakeMotor 1 – PWMMotor EnableMotor 2 – BrakeMotor 2 – PWM
Header 111 wires
Breakout Board
Gyro, Compass, Accelerometer
SDA SCL
Vdd (3.3V regulated)Vss (Ground)
I2C Port 34 wires
GPS RXGPS TXGPS ON / OFFBluetooth RESETBluetooth CTSBluetooth RTSBluetooth RXDBluetooth TXD
Header 28 wires
VEX 269 MotorIn
tegr
ate
d En
code
rM
odul
e
Pan Assembly
VEX 269 MotorIn
tegr
ate
d En
code
rM
odul
e
Tilt Assembly
SDA SCLVcc (5V regulated)Vss (Ground)
I2C Port 24 wires
Motor 1 Leads
Motor 2Leads
PIC 24FJ64GB106μCICSP
Header
Hold Power OnOn/Off Interrupt
Motor 1 – BrakeMotor 1 – PWMMotor EnableMotor 2 – BrakeMotor 2 – PWM
GPS RXGPS TXGPS ON / OFFBluetooth RESETBluetooth CTSBluetooth RTSBluetooth RXDBluetooth TXD
Header 28 wires
SDA SCL
I2C Port 3
V+ (7.2V Unregulated)
Vss (Ground)
Header 111 wires
Vss (Ground)Vdd (3.3V regulated)Vcc (5.0V regulated)
Hold Power OnOn/Off Interrupt
V+ (7.2V Unregulated)Motor 1 – BrakeMotor 1 – PWM
Motor EnableMotor 2 – BrakeMotor 2 – PWM
GPS RXGPS TX
GPS ON / OFFBluetooth RESET
Bluetooth CTSBluetooth RTS
Bluetooth RXDBluetooth TXD
VoltageTranslator
SerialPort
Reset Button
Manual / Auto Button
RotaryEncoder 1
RotaryEncoder 2
RotaryEncoder 3
SDA SCLVdd (3.3V regulated)Vss (Ground)
Menu Button 1 Menu Button 2
/ 6 IO pins
/ 2 IO pins
PGE1
/3 Pins
SDA SCL
I2C Port 2
PWM Port 1&2
UART 1&2
SDA SCL
Vcc (5V regulated)Vss (Ground)
/ 2 interrupts
8 pin parallel
Shift Register LCD
DataClockShift
4 Pin UART
I2C Port 2
MainBoar
d
Software Design (Main Loop)
Init
Start
Wait for Interrupts (Idle)
End
Stop Interrupt
Shut Down Peripherals (GPS)
Wait 1 Second
Cut power to Voltage Converters
Init
Initialize Registers for Peripherals
Start GPS chip
Initialize LCD
Initialize Sensors
Init Bluetooth
Load Polaris as Target for
Calibration
End Init
Calibrate Interrupt
Move to Polaris
Allow user to correct position
via rotary encoders
Store encoder offsets
End Calibrate
Initialization and Calibration
Auto or Manual
Get Target From Bluetooth
Get Target From Manual
Update Motor speed + direction
Motor Interrupt
End Motor
UI Interrupt
Check Button States
De-bounce
Update Button Positions
Check Encoder States
Update Encoder Positions
End UI
Motors and UI
Communication Peripherals
Data EventInterrupt
Decode Message Type
Process Data
Invoke Appropriate Response
End Data Event
Questions?