Persistence of Vision LED Sphere Display Group 26 Michael Ling Lunan Li Jiale Quan Hi everyone and thank you for coming to our presentation today. I am Michael, this is Lunan, this is Jiale, we are group 26 and our project is the Persistence of Vision LED Sphere Display
Introduction A Spinning Ring of LEDs Capable of Creating a Persistence of Vision (POV) Effect at 24 Frames Per Second (FPS) A Visually Appealing and Entertaining Way to Display Images and Animations Potential New Digital Marketing Method In simple words, our project is a ring of LEDs that spins at high enough speeds such that it is capable of creating a persistence of vision (POV) effect at 24 frames per second. This effect refers to the optical illusion that occurs when multiple discrete images blend into a single image or animation. We wanted to invoke this effect at 24 FPS because that is approximately what movies are shot at, so we wanted to be able to create cinema-quality images/animations, and we chose to do this project to develop and create a visually appealing and entertaining way to display images and animations that could potentially be used as a new way to digitally market things.
System Overview Mechanical Custom-Built LED Ring Stand (ECE Machine Shop) Slip Rings DC Motors Hardware Microcontroller Motor control circuit 8-Bit RGB LEDs Software 2DOF Algorithm GUI Our project was split up into three main disciplines: mechanical, hardware, and software. I took responsibility for the mechanical portion, Jiale did the hardware work, and Lunan developed the software. Obviously there was a lot of overlap between the three of us during the semester, but these were our “primary” responsibilities.
The POV LED Sphere System LED Ring Slip Ring Motor Driving LED Ring Spinning Plate Here you can see the physical portion of our project, and to help you get a sense of what is what, the major mechanical and hardware parts are highlighted, with the exception of the Hall Effect Sensors we used, which Jiale will talk about later.
The POV LED Sphere System TIP Transistors Slip Ring Microcontroller PCB Motor Driving Spinning Plate This pictures shows the inner workings of our display. We decided to mount everything internally because we wanted the finished product to look nice and clean. The machine shop did a fantastic job giving us enough space to internally mount all of our components.
System Overview This is a block diagram of our system. We used two separate power sources to drive our system. The 5V source is used to drive our sensors, microcontroller, and LED Strip while the 12V source is used to drive both of our motors. Since each motor will require a different voltage, we used two TIP Transistors to control the voltage supplied to each one. The Hall Effect Sensors will then allow the microcontroller to calculate the RPM and orientation of the LED Ring and the Spinning Plate. Using this data, the microcontroller then drives and refreshes the LED Strip mounted on the LED ring such that the POV effect occurs. But in order for all of this to happen, the LED Ring stand needed to be made...
Mechanical Overview Custom Design LED Ring Stand Two Degrees of Freedom Stable Enough for High RPM Manufactured by the ECE Machine Shop (David Switzer) LED Ring Designing a stand that is stable enough to spin with two degrees of freedom at high RPMs was no easy task; however, with the help of David Switzer, we were able to create a beautiful display. Two DC motors were required to spin the wheel in two directions, and two slip rings were needed to supply power and transfer data to the spinning LED Ring. Spinning Plate
Theoretical Torque Calculations The graphs show how much torque needs to be supplied to the Spinning Plate and LED Ring based on how much they weighed. The graph on the left depicts how the weight of the Spinning Plate will affect the necessary torque and current drawn by the motor to spin at 720 RPM, and the graph on the right does the same for the LED Ring at 30 RPM. In the end, the Spinning Plate weighed around 0.5 kg, and the LED Ring a mere 0.1 kg, requiring less than 5 oz-in of torque collectively. The motors collectively drew little over 1.5 Amps while both spinning at the necessary RPMs
DC Motors Necessary to Spin the LED Ring in Two Directions 720 RPM for Spinning Plate 30 RPM for LED Ring 64 Counts Per Rotation Encoder (Not Used) Knowing how much torque would be needed to drive our display, I decided to use DC motors with a stall-torque of 84 oz-in and free-run speed of 500 RPM. To run the Spinning Plate at 720 RPM, a 1:2 gear ratio couplet was used to. And we actually first planned on using the motor’s built-in encoders to monitor the LED Ring’s RPM and position, but we soon realized that the position and orientation of the ring could not be calculate just with encoders. So we actually didn’t end up using them in the end.
Slip Rings Transfer Power and Data Between Stationary and Rotating Parts Transmit 12V to the LED Ring-Motor Transmit 5V to the LED Strip and Hall Sensors Able to Transmit Data (Design Change) Transmit Data to the LED Strip I also needed to get power and data to the LEDs. Two slip rings were used because they can easily transmit plenty of power between stationary and rotating objects. We originally didn’t plan on transmitting data through the slip rings because we didn’t they would be reliable when spinning at such high RPMs; however, we were pleasantly surprised to find out that we actually COULD transmit data to the LEDs when the display was spinning at 720 RPM.
Mechanical Achievements Custom LED Ring Display Stand Reliable Power and Data Transmission via Slip Rings 30 RPM for LED Ring 720 RPM for Spinning Plate Overall the mechanical portion of our project performed well. It provided a convenient way for us to supply power and transmit data to the LED ring. It easily drove the LED Ring to 30 RPM, and it was able to spin the Spinning Plate at 720 RPM. However, at 720 RPM, the whole display really started to shake, which brings me to the next slide.
Future Mechanical Improvements Drive the LED Ring Using a Stepper Motor Slip Ring with 22 AWG Wires (instead of 28 AWG) Redesign Mechanical Portion for Optimal Motor Placement If a team were to work on this project in the future, I would suggest to create a better design that features better motor placement. Specifically the motor driving the LED Ring. I made the mistake of placing the motor a bit far from the axis of rotation, causing the display to shake at higher RPMs. Driving the LED Ring with a stepper motor would allow for more accurate and reliable measurements of the LED Ring’s RPM and orientation And finally, finding slip rings with 22 gauge wire would also save a lot of soldering and time. 28 gauge wire is extremely hard to work with breadboards and microcontrollers like the Arduino. Overall, though, the mechanical portion of the project performed pretty well; and when it was finished it was finally time to start developing the hardware, which Jiale will now talk about.
Hardware Overview Microcontroller TIP transistor LED ring Hall Effect Sensor The hardware part consists of 4 subsystems, the micro-controller receives signals from hall effect sensors and after processing with the algorithm, then send control signals to Led strip and TIP transistor.
Microcontroller Microcontroller-Atmega 328P Hall Effect Sensor(Horizontal) Hall Effect Sensor(Vertical) LED Data (SPI) LED Clock(SPI) TIP base (Horizontal) First, we use the Atmega 328p chip as our micro-controller, it has 32 Kbyte flash memory and can run at 20 MHz operating frequency, with 6 analog and 14 digital Input and output pins, we use the digital pins to communicate with other peripherals. Highlight pin numbers. PWM pulse width modulation TIP base (Vertical)
This is the schematic of microcontroller PCB This is the schematic of microcontroller PCB . For the right side we have the wires connecting the peripherals to the chip. To avoid approaching the device while spinning and upload the program, we use a bluetooth module to wirelessly send data to the chip. On the top, it is the power supply to the board. At left center, we have a external clock. Lets zoom in to see the detail.
Since the internal clock of the chip is only 8 MHz, we add a 16 MHz crystal oscillator as the external clock to speed up the data transmission. We also tested other higher frequency crystals, but they cannot pair with the bluetooth module which with 16 MHz
RPM and Limitations Higher RPM will achieve higher FPS Higher RPM also has higher requirement for hardware Data transmission Safety issues while spinning Desired FPS Desired Spinning Plate RPM 12 (critical FPS to form POV effect) 360 24(optimal) 720 30(stabler and clearer) 900 Higher FPS, clearer and stabler image. However there are hardware limitations that prevents us from reaching high RPM
Motor Control Circuit TIP120 - NPN Epitaxial Darlington Transistor Using the TIP transistor, we can realize voltage adjustment across the motor from software side without change the actual voltage supply. add a graph of TIP voltage
LED Ring 24-bit color 2-wire SPI protocol with 8 MHz for high speed data transmission 𝐷𝑎𝑡𝑎 𝑇𝑟𝑎𝑛𝑠𝑚𝑖𝑠𝑠𝑖𝑜𝑛 𝑆𝑝𝑒𝑒𝑑=𝑅𝑒𝑓𝑟𝑒𝑠ℎ 𝑅𝑎𝑡𝑒 × 32 𝑏𝑖𝑡𝑠 𝐿𝐸𝐷𝑠 × 81 LEDs We use a 24-bit color LED strip with 2 wire SPI protocol Refresh rate
Hall Effect Sensor Using Hall Effect Sensor to measure the RPM Indication of the starting point Parameter Output North Pole High Null or weak magnetic field South Pole Low Pin 1 Vin, 2 GND, 3 OUT With the hall effect sensor we can also determine the exact position each led at while spinning thus we can fix the position to display the image
Hardware Achievements Upload Program wirelessly Microcontroller coordinates LED display and motor rotation with TIP transistor Microcontroller transmits data at 8 𝑀𝑏𝑖𝑡𝑠 𝑠𝑒𝑐 Hall Effect sensor monitors the motor rotation speed
Hardware Future Improvement Improve data transmission speed for LED Strip Chip with higher frequency LED Strip with multiple data lines Lunan will further introduce the software system
Software Overview Magnet Interrupt LED Strip programming Two Degree of Freedom(2DOF) Algorithm User Input Interface
Magnet Interrupt Use Arduino attachInterrupt() to receive signal from Hall Sensor attachInterrupt(Pin, ISR, Mode); Pin - Pin number on Arduino. Pin 2 or 3 for Arduino Uno ISR - Special functions for interrupts Mode - Defines when the interrupt should be triggered
Magnet Interrupt Magnet.ino - example code void setup(){ attachInterrupt(0, h_magnet_detect, FALLING); } void loop(){} void h_magnet_detect(){ LED_INDEX = 0; h_revolutions++;
LED Strip Programming FastLED An Arduino library for programming addressable LED Strips CRGB color groups Refresh rate for DotStar APA102 are 24 MHZ. We only achieve 8 MHZ due to hardware limitation. Data Transmission cannot be interrupted
LED Strip Programming fastLED.ino - example code void setup(){ FastLED.addLeds<APA102, Data, Clock, RGB>(leds, NUM_LEDS); } void loop(){ for(int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB::Green; FastLED.show();
2DOF Algorithm Rotation Per Minute(RPM) Calculation Refresh Rate 𝑅𝑃𝑀= 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑅𝑜𝑡𝑎𝑡𝑖𝑜𝑛𝑠 𝑇𝑖𝑚𝑒 𝑜𝑓 𝑅𝑜𝑡𝑎𝑡𝑖𝑜𝑛𝑠 × 60 𝑠𝑒𝑐 Refresh Rate 𝑅𝑒𝑓𝑟𝑒𝑠ℎ 𝑅𝑎𝑡𝑒= 1 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑃𝑖𝑥𝑒𝑙𝑠 × 𝑅𝑃𝑀 Refresh Rate is related to the FPS requirement. For optimal display, we need to achieve 24 FPS, which is 720 RPM.
Pseudocode for 2DOF Algorithm Set Up: Set up Magnet Interrupts and LED Strips Loop: Calculate RPM and Refresh Rate for vertical/horizontal every five rotations Check time for update. If yes, disable Interrupts and go to the next step. Other go back to Loop Update LED properly Enable Interrupts and go back to Loop
Hardware limitations in 2DOF Data Transmission cannot be interrupted Interrupt may be blocked during Data Transmission Inaccuracy for LED Positions Microcontroller only sends data at 8MHZ Currently only refreshes LED Strip around 80 times in one rotation at 720 RPM Our goal is to refresh around 600 times in one rotation at 720 RPM
User Input Interface Allow users to customize display patterns
Software Achievements Calculate RPM for both Horizontal and Vertical Direction Display graphic patterns for both 1DOF and 2DOF Display User Input Graphic Pattern
Future Software Improvements Easy user input for UI Allow users to type words or numbers Translate them into graphic pattern
Results
Results
Credits David Switzer Vivian Hou Jackson Lenz Braedon Salz Ankit Jain Professor Kumar Professor Galvin
Questions? Feeback: -Fix block diagram -Bigger text for some of the slides -include a video of results -fix the equation on slide 6 (use equation editor) -SELL IT! Entertainment. Better ways to market things?