420 likes | 571 Views
Critical Design Review Laser Choreographer 2500FX. Team ThunderForce February 26, 2004. Introduction Features System Overview Software Hardware. Expansions and Upgrades Risks and Contingency Plans Questions. Table of Contents. Laser Choreographer 2500FX Overview.
E N D
Critical Design ReviewLaser Choreographer 2500FX Team ThunderForce February 26, 2004
Introduction Features System Overview Software Hardware Expansions and Upgrades Risks and Contingency Plans Questions Table of Contents
Laser Choreographer 2500FX Overview • Designed to aid the in choreography of large groups of performers • Projects laser dots to represent the location of each performer at any time in a show • Includes software to write the choreography and control the projector
Laser Choreography PC Software Goals • To be able to input data from a standard drill or choreography sheet into the program in a natural, easy-to-understand way • To be flexible and extensible to accommodate the extending of the scope of the hardware • To generate a compiled and optimized set of point data to send to the projection system, supporting such features as animation
Laser Choreography PC Software Backend Base Classes • Common Functions to the Base Classes • Constructor • Destructor • Recursively deletes all of the members of its children when called • addChild() • Instantiates a new child class, adds a pointer to the child[ ] pointer array, and returns a pointer to the new child
Laser Choreography PC Software Backend Base Classes • More Common Functions of the Base Classes • removeChild() • Deletes the child specified, which in turn causes everything under that child to also be destroyed, preventing memory leaks • visitor() • The heart of the compiler. Recursively steps through all entire tree, grabbing the appropriate information from each node. This information is then parsed, and printed out in the desired format.
Laser Choreography PC Software Backend Base Classes Hierarchy
Laser Choreography PC Software Backend Code Example cShow::~cShow() { // The page is removed, so kill all of its // children mercilessly // NOTE: If all goes well, calling the // destructors of the children pages // should propagate down to include all // dots and formations as well as the // member pages for(int i = 0; i < pageCount; i++) delete pages[i]; }
Laser Choreography PC Software Backend Code Example int cPage::visitor() { int returnCode; // COMPILER: Print out any page information // in this section printf("Page:\n==========\n"); // COMPILER END // Call the visitors of all the children returnCode = visitForms(); return returnCode; }
Laser Choreography PC Software Backend Code Example int cPage::visitForms() { // Iterate through the children, calling their // visitors for(int i = 0; i < formCount; i++) forms[i]->visitor(); return 1; }
Laser Choreography PC Software Backend – Looking Forward • Children classes should only be created by their parent class, and can therefore retain a pointer to the class that they were spawned from. This helps in various front-end tasks, such as clicking on a dot, and determining which formation it belongs to • The visitor allows for very quick and easy changes to the compiled file. Data can either be printed on the fly, or collected into a new data structure to be sorted to best suit the constraints of the hardware • For the formations, all the drawing functions were made as general parametric curve drawing functions, and thus can be used for both the backend and the front-end GUI drawing routines, to ensure consistency
Laser Choreography PC Software Schedule • Right now, we have a fully functioning software package, able to choreograph shows, as well as create the compiled output files for the Laser Choreographer to read in and project on the field • Next phase of the project: GUI construction to make these data structures easy to manipulate for the end user
Laser Choreographer 2500FX Embedded Systems Hardware • Hardware Components • MC68000 CPU • MC68881 FPU • AMD 27C512 EPROM x2 • KM681000ALP-7 SRAM (128K) x2 • Max 233 RS232 Transceiver • National 16550 UART • Spartan XCS10 FPGA • Xilinx XC18V256 EEPROM
Parts List 2 Banana Plug Sockets 1 9-pin female serial connector 1 power bus strip 1 74HC14 Logic Inverter 1 push button switch 1 68 pin PGA socket 10 20-pin sockets (DIP) 2 28-pin sockets (DIP) 2 32-pin sockets (DIP) 1 40-pin socket (DIP) 1 12MHz clock generator 3 20-pin headers 6 10-pin SIPs (Isolated 4.7k) 10 .01 micro Farad Capacitors 1 220 micro Farad Capacitor 1 1Mohm resistor 1 Motorola 68000 Processor 1 Motorola 68881 or MC 68882 FPU 5 74LS245 Bus Transceiver 1 LM340 5V voltage regulator 2 AMD 27C512 EPROMs 2 KM681000ALP-7 SDRAM(2) 1 Wire Wrap Board 1 MAX233 RS232 Transceiver 1 16550 UART Laser Choreographer 2500FX Embedded Systems Hardware
Boot Monitor Set up stack Test RAM Initialize laser device Initialize UART Start main process Main Process 3 states Idle Output Loop Datafile download to RAM Interrupts Input from serial device Reset Laser Choreographer 2500FX Embedded Systems Firmware
Laser Choreographer 2500FX Embedded Systems • Where are we now? • Processor running code stored on EPROM • nop, nop, jmp • Working on connecting RAM and UART • Developed plans for FPGA bus control • Researching FPU • Starting to develop more advanced code
Laser Choreographer 2500FX FPGA – Embedded Systems • Bus Master Functionality • We use a state in the state-machine to act as a bus controller • Allows for easy chip select • Prevents other devices from picking garbage off the bus
FPGA – Address Decoder EPROM CPU RAM … Laser Choreographer 2500FX FPGA – Embedded Systems • CPU sends a 4 – bit address to FPGA • This address is decoded and using “One-hot” encoding one of the 16 peripheral chips will be enabled • Short delay is inserted to stall clock to allow proper propagation time
Laser Choreographer 2500FX FPGA – Embedded Systems • Boundary Scan circuit to enable reprogramming of Xilinx XC18V256 • Address Decoder – Chip Selection
Laser Choreographer 2500FX FPGA – Embedded Systems • Simulation of Address Decoder
Laser Data Bus LCD Photogate Optical Systems Driver FPGA Positioning System Laser Choreographer 2500FX Optical Systems Overview
Laser Choreographer 2500FX FPGA – Optical Systems Driver • Scanner Interface • Buffers angles and passes them to driver circuit when mirrors ready to be positioned • Photogate Interface • Opens or closes photogate based upon blanking information received from the processor • Laser Interface • No interface; diode remains constantly on
Laser Choreographer 2500FXOSD State Machine • Four states • Rest: No motion of the mirrors, photogate closed. The projector is in this state whenever not actively projecting a page or animation. • DrawNone: Mirrors moving to the next dot location, photogate closed. The projector is in this state between projecting dots • DrawDot: No motion of the mirrors, photogate open. The projector is in this state only in the instant a dot is being placed on the field. • DrawLine: Mirrors moving to the next dot location, photogate open. The projector is in this state whenever a label is being drawn.
Rest DrawDot DrawLine DrawNone Laser Choreographer 2500FXOSD State Machine
Laser Choreographer 2500FX Optical Positioning System • GSI Lumonics G325DT Scanners in an XY configuration • 25 degrees optical excursion • 35 uA/degree Position detection sensitivity • A660 Driver Board • Ideally can find used components • Have full schematics to build our own, if absolutely necessary
Laser Choreographer 2500FX Projection Mathematics • Determine exact location and orientation of projector relative to field • Use vector subtraction to generate projection vectors • Calculate direction cosines and send to scanner
Laser Choreographer 2500FX Projection Mathematics P PB qPAB A AB B C
Laser Choreographer 2500FX – Power Systems • All ICs are currently running off of a 9 Volt source • Simplifies power requirements • Individual ICs provided either 3.3V or 5V via voltage regulators • Scanner driver board may require unusual voltages, such as +/- 22VAC or +/- 35VAC
Laser Choreographer 2500FX – Power System Parts • C1 - 14000uF or 10000uf 40 VDC Electrolytic Capacitor • C2 - 100uF 50Vdc Electrolytic Capacitor • C3 - 0.1uF Disc Capacitor • C4 - 0.01uF Disc Capacitor • R1 - 5K Pot • R2 - 240 Ohm 1/4 W Resistor • U1 - LM338K 1.2 to 30 Volt 5 Amp Regulator • BR1 - 10 Amp 50 PIV Bridge Rectifier • T1 - 24 V 5 Amp Transformer • S1 - SPST Toggle Switch • MISC - Wire, Line Cord, Case, Binding Posts
Laser Choreographer 2500FX – Backup Power System • Goal is to maintain information stored in RAM when device is powered off • Show data • Calibration Information • Ideally will use large capacity rechargeable battery for long duration
Laser Choreographer 2500FXRisks and Contingencies • Optical Systems • Risk: Finding affordable, suitable scanner • Contingency: March 11th deadline to obtain scanner before falling back on stepper motors • Risk: Interfacing to the scanner with Team ThunderForce built driver board • Contingency: Try to locate used board through GSI Lumonics
PC Software Nick Embedded Systems Jeremy FPGA Lars Optical Systems Matt and Lars Laser Quinton Power Quinton Projection Mathematics Matt Laser Choreographer 2500FX Questions