ECE 445: Robotic Microphone Stand Alejandro Gomez and Dennis Yuan University of Illinois at Urbana-Champaign Fall 2012
Outline Introduction Requirements Design Overview Control Scheme
Introduction Objective: Create a prototype robotic microphone stand for Pogo Studios Benefits: Precision control of microphone position Protection of personnel from potentially dangerous recording environment Enhance recording environment
Requirements Wireless control Movement along x,y,z Store and recall positions Be less expensive that similar products
Power supply and voltage regulation Computer and control interface Design Overview Power supply and voltage regulation Stepper motors Motor control circuit Microcontroller Sensors Bluetooth TX/RX Power Information Computer and control interface
Power Supply AC to DC power supply 5V output, 35W Directly powers the microcontroller, motor controllers, and voltage regulators
12V Voltage Regulation Motor voltage requires 8-35V Using TI LM2585-12 3A switching regulator in a boost configuration Challenges: burned out 3 samples due to not having large enough capacitors
12V Voltage Regulation
12V Voltage Regulation Had to change from original 2.7V regulator Significant voltage spikes and transients
3.3V Voltage Regulation Bluetooth module requires 3.3V Using TL497A 300mA switching regulator in step-down configuration
3.3V Voltage Regulation
3.3V Voltage Regulation Used the 3.3V regulated output from Arduino Uno for the demo
Motors Stepper Motors 200 steps/revolution 1in/rev lead screws
Motor Control IC Simplifies control signals to just STEP and DIR Contains active current limiting into the motor Problems: burned out our original chips, control signals were shorting
Motor Control IC
Bluetooth Communication Using the RN-41 with integrated antenna Relays data to and from microcontroller Original design included using just the chip instead of it mounted on breakout board. Igor suggested we just use the breakout board version, since we had tested it already.
Bluetooth Communication
Bluetooth Communication “1” = x31 = 00110001 “a” = x61 = 01100001 “A” = x41 = 01000001 “!” = x21 = 00100001 Automatic discovery mode SPP (Serial Port Profile) ASCII is pushed from least significant bit to most significant bit 1 1 1 Hardset to 9600 baud rate
Bump Sensors Used to detect limits of movement range Output goes straight to microcontroller NC/Vcc NO/GND Common
Microcontroller ATMega328 on Arduino Uno 5V to 3.3V circuit for TX/RX 3.3V source from arduino board used to power bluetooth in final demo In Out 5V 3.296V 0V .216V Voltage drop of schottky diode
Microcontroller
PCB Fabrication Utilized ECE Service Shop Eagle 6.2.0 Lite Total of 2 revisions Had to make a second revision for changing 2.7V regulator to 12V regulator
PCB Fabrication Isolation of 60mils, had to make own footprint in Eagle for the bluetooth part
PCB Fabrication 3 separate power regulators, 1 for each motor for simplicity, testing modularity, and ability to use lower power parts. Had to make own footprint for the motor controller breakout board.
Control
Motor Movement Dependent on user key presses, to move in the x, y, z plane. motorSteps(steps,delay,x,y,z) Also moves to a certain input location, and a stored location. goToLocation(x,y,z) Moves to the origin each time the program is started. goToOrigin()
motorSteps(steps,delay,x,y,z) Moves motors a specific number of steps Delay of microseconds after HIGH and after LOW signals are sent to the motor x, y, and z can be either 1, -1, or 0 to move each motor clockwise, counterclockwise, or keep it still.
Precision The lead screws move 1in per revolution. We move 50 steps per key press, which gives us 1/5 in precision
Storing Position When key ‘c’ is pressed, listens to a key from ‘0’ to ‘9’ to be pressed, then stores position memory. To return to a stored position, press a key from ‘0’ to ‘9’.
Keyboard Inputs j, l -> +/- x axis i, k -> +/- y axis q, a -> +/- z axis c then 0 to 9 -> store location 0 to 9 -> restore location g then coordinates -> go to location r -> reset position to origin
Feedback x, y, and z location are displayed on the computer screen Stored locations are also displayed
Bumpers Program is always listening if any bumper is pressed When a bumper is pressed it stops all movement Resets location in software in case there were any previous errors in movement
Simulation Used JavaScript to create a simulation of the movement of the robot Programed it keeping in mind Arduino functions and programing structure (setup(), loop(), digitalWrite(), etc.) http://web.engr.illinois.edu/~gomez14/445/arduino.php
Met Requirements? Wireless control – yes, using bluetooth Movement along x,y,z – yes Store and recall positions – yes, in memory Be less expensive than similar products – yes, production budget < $300
Improvements Add pan/tilt functionality Fix 3.3V regulation Incorporate microcontroller on PCB Grease lead-screws Make enclosure for PCBs Incorporate JavaScript plugin for GUI More robust music algorithm, to play arbitrary songs easily
Special Thanks Igor Fedorov Mark Smart and the ECE Service Shop Scott McDonald and the ECE Machine Shop
Stepper Motor Music! Robot noise when moving is dependent on speed of the motors We can map the frequency of a musical note to delay between steps. delay=500000/f motorSteps(steps, 2040, 0, 0, 1); // B 246 Hz motorSteps(steps, 2273, 0, 0, 1); // A 220 Hz motorSteps(steps, 2551, 0, 0, 1); // G 196 Hz …
Stepper Motor Music! www.dropbox.com/s/fs4p7mn9i2zpmrw/2012-12-03%2015.58.28.mp4