Physics
Project file
P.O.V DISPLAY
name: Pratinav Seth
class : xii section:S4
name of exam: aissce 2020
board roll no:_________
ALL INDIA SENIOR SECONDARY CERTIFICATE
EXAMINATION 2020
Content PAGE NO
TOPIC
Acknowledgement 1
Certificate of Teachers 2
Preface 3-4
Project details (P.o.v. Display) 5-11
Materials used 5
Circuit diagram 6-7
Arduino Code 8-11
Working principle 12
Uses 13
Bibliography 14
Acknowledgement
I wish to express my sincere gratitude and thanks to my
teacher Dr. Maitreyee Banerjee for providing facilities
and Encouragement in formulating and completion of
the project successfully.
Furthermost,I gratefully Acknowledge the contribution
of our lab assistant sir , Sudip Sir. Without whose
guidance, advice and constant supervision making this
project would not be possible.
Pg-1
Certificate of
Teacher
This is to certify that the project titled -“P.O.V.
DISPLAY” has been successfully completed by
PRATINAV SETH of CLASS XII ,S4 of BHAVAN’S
GANGABUX KANORIA VIDYAMANDIR, SALT LAKE in
partial fulfilment of curriculum of CBSE in Academic
Year of 2019-20.
Teacher’s Signature External Examiner’s
Signature
Pg-2
Persistence
Of Vision
DISPLAY
CLOCK
Pg-3
Preface
POV Display Clock is an illusion of a clock produced using
the principle of POV Display.
Persistence of Vision refers to the optical illusion that occurs
when visual perception of an object does not cease for some
time after the rays of light proceeding from it have ceased to
enter the eye, It can also be referred to as “flicker fusion”, the
effect that vision seems to persist when a stream of light is
repeatedly interrupted for very brief instances and can’t really
enter the eyes continuously.
The main phenomenon which makes the optical illusion
possible is the formation of “afterimage” which is an image
that our brain produces due to the continuation of the
photochemical activity in our retina even after the actual
subject is not in our vision. It lasts only for a fifteenth of a
second which is actually enough to turn flickering images into
a consistent image.
Images are still, but when it comes to creating animations or
making an image feel to be moving, POV comes to play. Our
brain can handle only 12 images per second, retaining each
for about a fifteenth of a second. If in this period the images
is slightly changed it appears to be continuous to the
previous images and thus giving the effect of movement.
Pg-4
Materials Used
Arduino Nano
100 Ohm Resistors
Led Lights
Hall Sensor
Perf Board
9v Battery
1000rpm Battery
Battery Eliminator
Magnets
Jumper Wire
Common Switch
Pg-5
Circuit Diagram
OVERALL CIRCUIT DIAGRAM
Circuit Design
Our project is restrained to th amount of digital outputs the Arduino
NANO or promini has. In this case we will use pins D2 to D13 of the
Arduino since pins D0 and D1 are the Tx and Rx pins and we can't
solder anyting to those and be able to upload code after that. If we
look in the port map below of the Arduino with the ATMEGA328p
chip, we see the ports for each pin.
portB (digital pin 8 to 13)
portC (analog input pins) portD (digital pins 0 to 7)
We will use a total of 11 LEDs. I've used 8 green LEDs for the
hour/minutes lines. Two red LEDs for the hours points and a blue
LED for the border circle. For each LED we need a 100ohm resistor.
We will also use a A3144 hall sensor switch with a 10K ohm resistor
pullup. You could use both Arduino NANO or the Arduino proMini
with 4V adn 16MHz speed. Finally we need perf board, wires,
Battery Eliminator, a sliding switch and the Base stand.
Pg-6
SCHEMATIC DIAGRAM OF ARDUINO
As we can see we have our hall sensor connected to a pullup to 5V
from the arduino. The signal pin from the sensor (pin 3 of A314) is
connected to digital pin D13 of the Arduino. On this pin we will
generate pin change interruptions. Next we have 11 LEDs
connected to pins D2 to D12 each with a 100 ohm resistor to limit
the current. To supply the entire circuit I've used a Battery
Eliminator and a sliding switch to power everything up..We have
solder everything on a perf board
Pg-7
Arduino Code:-
//Variables for real time count
unsigned long Real_time_millis = 0;
unsigned long Previous_real_time_millis = 0;
float SEC;
float MIN= 45;
float HOUR = 2;
float dots_marker = 0; //Variable used for the 4 red dots
//POV clock cariables
unsigned long currentMillis, elapsed_loop_counter, previousMillis;
unsigned long counter_1, current_count;
//Interruption varaibles to count rotation speed
//We create 4 variables to store the previous value of the input signal (if LOW or HIGH)
byte last_IN_state; //Here we store the previous state on digital pin 13
float one_rot_time=0; //Here we store the full rotation time
float time_per_deg=0; //Here we store the time it takes to make one degree
rotation
void setup() {
PCICR |= (1 << PCIE0); //enable PCMSK0 scan
PCMSK0 |= (1 << PCINT5); //Enable pin state interruption on pin D13
//Output pins register configuration
/* D2 = Blue LED
* D3 = Red 1 LED
* D4 = Red 2 LED
* D5 = Green 1 LED
* D6 = Green 2 LED
* D7 = Green 3 LED
* D8 = Green 4 LED
* D9 = Green 5 LED
* D10 = Green 6 LED
* D11 = Green 7 LED
* D12 = Green 8 LED
DDRD |= B11111100; //2 to 7 as output
DDRB |= B00011111; //8 to 12 as output
DDRB &= B11011111; //13 input
Pg-8
PORTD &= B00000011; //2 to 7 LOW
PORTB &= B11100000; //8 to 12 LOW
}
void loop() {
//Here we calculate seconds, minutes and hours
Real_time_millis = millis();
if(Real_time_millis - Previous_real_time_millis >= 1000){
Previous_real_time_millis += 1000;
SEC=SEC+1;
if(SEC > 59)
{
SEC=0;
MIN=MIN+1;
}
if(MIN > 59)
{
MIN = 0;
HOUR = HOUR+1;
}
}//End of real time count
//Here is our loop counter. elapsed_loop_counter will reset each loop and count the
loop time
//When we reach the amount of time desired we turn ond or off the LEDs
currentMillis = micros();
elapsed_loop_counter = currentMillis - previousMillis;
//Print the 4 red dots
if(elapsed_loop_counter >= time_per_deg*(dots_marker) && elapsed_loop_counter <
time_per_deg*(dots_marker+3) )
{
PORTD |= B00011000; //3,4 HIGH
}
if(elapsed_loop_counter >= time_per_deg*(dots_marker+3))
Pg-9
{
PORTD &= B11100111; //3, 4 LOW, the two red LEDs
dots_marker = dots_marker + 90;
if(dots_marker >= 360)
{
dots_marker = 0;
}
}
//Print the second line
if(elapsed_loop_counter >= time_per_deg*(SEC*6) && elapsed_loop_counter <
time_per_deg*((SEC*6)+2) )
{
PORTB |= B00011111; //8, 9, 10, 11 and 12 as HIGH
PORTD |= B11100000; //2 (blue), 5, 6 and 7 as HIGH
}
if(elapsed_loop_counter >= time_per_deg*((SEC*6)+2))
{
PORTB &= B11100000;
PORTD &= B00011111;
}
//Print the minute line
if(elapsed_loop_counter >= time_per_deg*(MIN*6) && elapsed_loop_counter <
time_per_deg*((MIN*6)+1) )
{
PORTB |= B00011111; //8, 9, 10, 11 and 12 as HIGH
PORTD |= B11000000; //2 (blue), 5, 6 and 7 as HIGH
}
if(elapsed_loop_counter >= time_per_deg*((MIN*6)+1))
{
PORTB &= B11110000;
PORTD &= B00111111;
}
//Print the hour line
if(elapsed_loop_counter >= time_per_deg*(HOUR*30) && elapsed_loop_counter <
time_per_deg*( (HOUR*30) +1) )
Pg-10
{
PORTB |= B00011111; //8, 9, 10, 11 and 12 as HIGH
PORTD |= B00000000; //2 (blue), 5, 6 and 7 as HIGH
}
if(elapsed_loop_counter >= time_per_deg*( (HOUR*30) +1))
{
PORTB &= B11100000;
PORTD &= B11111111;
}
ISR(PCINT0_vect){
//First we take the current count value in micro seconds using the micros() function
current_count = micros();
///////////////////////////////////////
if(PINB & B00100000){ //We make an AND with the pin state
register, We verify if pin 13 is HIGH???
if(last_IN_state == 0){ //If the last state was 0, then we have a state
change...
last_IN_state = 1; //Store the current state into the last state for
the next loop
counter_1 = current_count; //Set counter_1 to current value.
}
}
else if(last_IN_state == 1){ //If pin 13 is LOW and the last state was
HIGH then we have a state change
last_IN_state = 0; //Store the current state into the last state for
the next loop
one_rot_time = current_count - counter_1; //We make the time difference.
one_rot_time 1 is current_count - counter_1.
time_per_deg = one_rot_time/360.0;
previousMillis = micros();
}
Pg-11
Working Principle
POV Display Clock consists of a fin which is rotated at a high speed
using a motor which is fixed on a support.
The high speed is necessary to produce an illusion.
The fin consists of a number of LED lights placed in a straight line
on one side of the fin which are switched on and off by an Arduino
board.
On the other side of the fin is placed a Hall Effect Sensor which
sends a signal to the Arduino board as soon as it encounters a
magnetic field.
Also there is a magnet placed on a rigid support at a distance
suitable enough to trigger the Hall Effect Sensor as it passes the
magnet.
When the fin is rotated, every time the hall effect sensor crosses the
magnet, it sends a signal to the Arduino board.
The Arduino board measures the time ( in milliseconds ) between
two such signals.
This is the time required by fin to go round once.
This time is used to measure the Angular Velocity of the blade,
which is used to predict the time required by the blade to cross a
particular point in the circle it is rotating in.
When the Arduino finds all these information, it takes into account
the current time and decides at which point of motion should the
LEDs be switched on to produce the illusion of a glowing line which
would depict the hands of a clock.
The LEDs are switched on and off very rapidly to make sure that the
light from the LEDs appear to come from a particular line of LEDs in
the circle.
For all the rotations made by the fin in one second, the Arduino
switches on the LEDs at a particular point, After a second it shifts
the position of switching on the LEDs by an angle of 6° to depict the
second hand moving.
Pg-12
Uses
POV Display Clocks are programmed. This means that we can change
the design of the clock in the way we want to. Unlike traditional wall
clocks, it will be highly customizable and can even present animations
in the background of the clock.
POV Display Clocks can be switched on and off at convenience and
would not be required to correct the timing. Thus providing more
convenience for saving energy.
POV Display Clocks can be programmed using the power of Artificial
intelligence and Machine Learning to be useful for other tasks such as
for security, morning alarms, etc.
These clocks can also be customized to perform personalized tasks for
each person of the family, using facial recognition. For eg. as soon as a
person enters the room, the clock may greet him by his name and
present him latest news about the country both through vision and
sound.
POV Display Clocks are much more fascinating to present when
compared to the traditional home clocks.
POV Display Clocks, when perfected the design, can also act as wrist
watches, to present the same functions as a wall clock, in a compact
and portable manner.
POV Display Clocks are an illusion, This means that they are much less
lighter than a wall clock, and much easy to transport. Also they can be
more easily dismantled due to lack of any highly sensitive / delicate
parts.
POV Display Clocks can be used by big businesses to present
information in their own unique style to their customers.
Very big POV Display Clocks can act as an attraction for tourists,
similar to Big Ben of London.
Pg-13
Bibliography
www.electronoobs.com
www.google.com
www.instructables.com
www.electronicshub.org
www.create.arduino.cc/projecthub
Pg-14