Revision as of 15:40, 19 March 2009
A fully customizable display using the concept of Persistence of Vision was created as a final project for ME333 in 2009. User-specified images (and even moving images) were displayed by rotating a column of LEDs at speeds faster than 300rpm. Each individual LED was modeled as a row of pixels. Conversely, the rotational position of the panel of LEDs represented the pixel columns of the display; the time interval and rotational speed determined the width of the pixel columns.
- Gregory McGlynn (Computer Science, Class of 2011) [left]
- Kwang Xiong Sim (Mechanical Engineering, Class of 2010) [center]
- Alexander Park (Material Science, Class of 2009) [right]
Theory of Persistence of Vision
Although arguably much more complex, human vision functions in a manner similar to modern motion pictures; our eyes retain images for a fraction of a second, not unlike a frame in a movie. This is called persistence of vision (POV). When images change fast enough, what we see is a subtle blend of what we see now and a fraction of a second ago.
In order to avoid the complication of wiring a spinning object, all of the major components of the POV display were placed on a platform mounted on the output shaft of a 6W Maxon motor. The components of this rotating platform include a PIC Microcontroller, a panel of 14 bright white LEDs, a Hall switch, an XBee radio, and a battery pack to power the assembly. The strip of LEDs was mounted vertically (or parallel to the axis of rotation) at one end of the platform. To minimize wobbling of the assembly while spinning, the components were positioned such that the center of gravity of the panel passed through the axis of rotation.
Wireless communication between two PICs via XBees was used to enable live updating of the display based on user input: one PIC (the "display" PIC) was used to control the POV display and receive wireless information from a second PIC. This second "controller" PIC was used to receive user input and transmit it to the display PIC.
Modes of Operation
The POV display has two modes of operation, corresponding to two different input methods.
In the first mode of operation, the controller PIC transmits previously stored data to the PIC on the rotor panel. By varying the resistance of a potentiometer on the control panel, the user can choose between eleven "canned" messages.
In the second mode of operation, the controller PIC is connected to a computer via USB. Using a Java program written by Gregory McGlynn, the user can draw pictures or type letters in real time on the computer screen and on the POV display.
To allow for accurate portrayal of the desired image, a Hall switch was utilized to implement position sensing. The Hall switch was mounted near the end of the rotor display platform and a magnet was attached on the top of the base box. The magnet was positioned directly under the path of the hall sensor such that each rotation of the platform triggered an electrical pulse. The display PIC was programmed to reset the image cycle each time a pulse was sensed from the Hall sensor. This allowed reproduction of a stationary image.
Using this implementation of the Hall switch, the display POV was programmed to calculate the rotational velocity of the POV after each rotation by timing the interval between pulses from the Hall switch. This allows for correction of pixel column spacing, such that the column width is consistent even at different speeds. As such, the display may function properly without any information from the motor about its speed.
As seen in the above drawing, the base box is built out of rigid expanded PVC. There are 3 rectangle faces, 2 trapezium faces and a door that is hinged at the base so that it opens outwards. The control panel is mounted on the inner face of the door.
An addition wooden base is mounted to the base to increase rigidity of base-to-wall connections and also to weight down the whole setup and make it more stable. A slot is cut towards the back to stick in the motor.
A aluminum coupler is attached to the motor shaft which comes out of the top of the box through a radial bearing. The radial bearing can reduce the degree of freedom of the spinning shaft so it only spins in the vertical axis. It may also be used to support the weight of the rotating display panel of that the whole weight does not rest on the motor shaft. The end of the coupler is milled to a strip that locks in to a complementary hole in the rotating display panel.
There are switches that we need to put on the control panel. 1) Turns motor on/off 2) Control motor speed 3) Choose stored response 4) Invoke stored response 5) Scroll the message 6) Set scroll speed for message
The first control was a simple toggle switch wired between the two motor leads. The second control is a potentiometer wired between the motor, by turning the potentiometer to increase resistance, we can lower the motor speed.
The third control is implemented by a potentiometer with ten different markings, each corresponding to a stored message. We set the control panel PIC code to recognize ten different intervals of resistance controlled by the potentiometer. After the resistance is set on control 3, pressing button 4 will ask the PIC to grab this resistance value and display the right stored response.
Control 5 and 6 are both implemented by potentiometers. Control 5 allows users to scroll the message manually and control 6 allows the user to set the speed at which the message scrolls around.
Rotating Display Panel
Rotating Display Circuit
The rotating display has 14 LEDs which are controlled by a PIC. The LEDs are bright and require a good deal of current, which cannot be supplied directly from the output ports of the PIC. Therefore the LEDs are controlled through two Darlington arrays (DS2003). These ICs consist of 7 Darlington pair transistors with a common emitter. The outputs of the PIC are connected to the bases of the transistors. Thus when the PIC drives one of the bases high, current can flow through the transistor and the corresponding LED lights up. We did not find it necessary to use any resistors in this design.
The display uses a Hall Effect Sensor to synchronize its display with its rotation. The circuit as shown causes pin B0 on the PIC to go low whenever the hall sensor is near a magnet. A magnet is mounted at a fixed location under the display so that when the PIC detects this falling edge on pin B0 it knows that it is positioned above the magnet. By timing the interval between two of these events the PIC calculates how fast the display is rotating and adjusts its timing accordingly.
The display receives commands via an XBee radio module.
Control Panel Circuit
The control panel receives user input through three potentiometers and a pushbutton. The states of these controls are read by the PIC which uses its XBee radio module to send appropriate commands to the display.
If the USB cable is plugged in, the control panel is also responsible for accepting commands from the PC and relaying these commands to the POV through the XBee.
Mode 1: Canned Response
In the first mode of operation, a user can just plug in the POV display into a wall socket, turn on the device and display an image immediately. This will allow a quick and easy demonstration without a computer. We have stored ten different responses on the PIC ROM sitting on the rotating display panel. Using a potentiometer, the device allow the user to set which canned response is being displayed.
video link to mode 1
Mode 2: Real time image input
In the second mode of operation, a user can interact more closely with the POV display. In this mode, the POV display is connected via a USB port to a computer which needs to have Java installed. The Java program with the code listed above allows a user to draw pictures or type letters which will be tranmitted real time from the control panel PIC to the rotating display panel PIC through the wireless Xbee chips.
In both modes of operation, we have set up knobs that will allow a user to scroll a message manually or set the scroll speed of an image.
video link to mode 2
Possible Future Improvements/Enhancements
We have thought about using RGB LEDS to give the display panel more colorful. Also, we can use different sensors to make the display more interactive. For example putting on distance sensors on the display so that the panel color scheme changes when you wave a hand in front of it.