Another propeller using 89c2051

July 6th, 2010 by admin No comments »

This project is made by APOORV CHINCHOLKAR, third year engineering student from

Vidyaprathishthan’s College of Engineering,Baramati.We are thankful for providing us your contribution’s.

This project is a special kind of circular LED display. With the help some mechanical assembly, LED count, hardware requirement, and hence overall cost is cut to very affordable price. Also, maintenance and repairing of the display is so easy, that anyone having a little electronics knowledge, can take care of this. All the synchronizing can be implemented through software.

First of its kind, made using the 20-pin 8051 series microcontroller, this project use the principle of Space Multiplexing. This propeller display is mechanically scanned and displays the characters in digital format. Made from scrap it can be used anywhere and everywhere and the most amazing fact about this display is it’s crystal clear display. This display consists of just 8 bright LEDs which are rotated to show the display.

For building this project, requirement is just a small 20 pin microcontroller, a position encoder, and LEDs. This display can show the messages, which will require a whopping 525 LEDs. So hardware and cost minimization is achieved.

Circuit Diagram

cricuit

propeller

This project was started with a simple principle which is frequently encountered in our everyday life, which is Persistence of Vision. This phenomenon makes one feel fast moving/changing objects to appear continuous. A television is a common example, in which image is re-scanned every 25 times, thereby appear continuous.

Further, a glowing object if rotated in a circle at fast speed, it shows a continuous circle. By modifying this basic idea, 8 LEDs can be rotated in a circle, showing 8 concentric circles. But if these LEDs are switched at precise intervals, a steady display pattern can be shown.

Existing Systems:

Existing systems do employ POV principle, but for displaying each pixel, individual LED is used. This results in a huge number of LEDs even for small sized displays. By using a propeller type display, LED count can be kept to a bare minimum. Even 8 LEDs can perform a task of over 525 LEDs.

Applications:

Applications can find their way into cost effective solutions for large public displays, information systems. It can directly replace Railway station information displays, bus stands and many more places.

  1. 1. Interrupter Module

Interrupter module is our sensor module, consisting of the IR interrupt sensor MOC7811, from Motorola Inc. This sensor was selected from a variety of other alternatives, because of its small size, precise interrupt sensing, and sturdy casing.

One great advantage of using this module is, interfacing it with the microcontroller is just a matter of two resistors and a general purpose transistor. Following is the complete circuit diagram of our interrupter module.

interrupter

2.Microcontroller AT89C2051

This project is based around the microcontroller AT89C2051, which is a derivative of 8051 family, from Atmel Inc. This is a 20 pin IC packaged in DIP package. This small sized IC is used, mainly because of its reduced weight. This improves the performance of the display, because reduced weight gives advantage of increased RPM.

3.LED MODULE

LED module consisting of 8 bright LED is fixed in another side of the arm of our project. These LEDs are connected with each of the port pin of microcontroller, with a series current limiting resistor of 470 ohm.

4.DC Motor

Repeated scanning of the display is must for continuous vision. This task is achieved using circular rotation of the whole circuit assembly. So, we used a DC motor as the prime mover.

5.DC Power Supply

For microcontroller, as well as the DC motor, a regulated DC power supply is required. We have to provide +5V to the microcontroller, while +12V to the motor.

Photo graphs

Analog line tracking robot

May 11th, 2010 by admin No comments »

line tracer

ANALOG Line tracer

Components Used:

  • · IC LM358.
  • · N2907/2n2222 Transistors.
  • · 10k Resistors.
  • · 10k Presets.
  • · Photo Diode with LED Sensor
  • · DC Gear Head Motor.
  • · 9v power supply/battery.

Made By:AtuL Patel

Guided: Mr. Anupam Dubey

components

LM358- Low Power Dual Operational Amplifiers

BASIC CONCEPT:

This line follower is based on the concept of light detection by a photo diode. When the photodiode is introduced with black surface, the light produced by LED is absorbed by the surface and there is no conduction in photo diode, which sets the comparator output to a positive voltage. Due to this positive voltage the transistor gets triggered by this voltage and N2907 transistor comes in on state being a NPN transistor and hence the motor turns ON.

The same mechanism rotates the another motor by the working of another photo diode.Now for the turn or to maintain its path, as soon as any photodiode gets influenced by the light reflected by the white surface the respective motor stops and the another motor automatically turns the line follower to its right path. And again the both motor starts there functioning and the line follower travels in a straight path.

Similarly, when N is replaced by 2N2222, the photodiode turns on in white light. Hence comparator produces negative output, which further triggers the transistor. This turns the motor ON. Rest of the mechanism of turning is same as above.

circuit

General Description

The LM358 series consists of two independent, high gain, internally frequency compensated operational amplifiers which were designed specifically to operate from a single power supply over a wide range of voltages. Operation from split power supplies is also possible and the low power supply current drain is independent of the magnitude of the power supply voltage. Application areas include transducer amplifiers, dc gain blocks and all the conventional op amp circuits which now can be more easily implemented in single power supply systems. For example, the LM358 series can be directly operated off of the standard a5V power supply voltage which is used in digital systems and will easily provide the required interface electronics without requiring the additional g15V power supplies.

Unique Characteristics

  • In the linear mode the input common-mode voltage range includes ground and the output voltage can also swing to ground, even though operated from only a single power supply voltage.
  • The unity gain cross frequency is temperature compensated.
  • The input bias current is also temperature compensated.

Advantages

  • Two internally compensated op amps in a single package
  • Eliminates need for dual supplies
  • Allows directly sensing near GND and VOUT also goes to GND
  • Compatible with all forms of logic
  • Power drain suitable for battery operation

Features

  • Internally frequency compensated for unity gain
  • Large dc voltage gain 100 dB
  • Wide bandwidth (unity gain) 1 MHz (temperature compensated)
  • Wide power supply range: Single supply 3V to 32V or dual supplies g1.5V to g16V
  • Very low supply current drain (500 mA) essentially independent of supply voltage
  • Low input offset voltage 2 mV
  • Input common-mode voltage range includes ground
  • Differential input voltage range equal to the power supply voltage
  • Large output voltage swing 0V to Vab 1.5V.

N2907 Transistor:

The 2N2907 also known as the PN2907 is a small PNP BJT Transistor used for general purpose low power amplifying or switching applications. It is designed for low to medium current, low power; medium voltage and can operate at moderately high speed.

It is a 1amp, 50v, 300mW transistor capable of operating up to 100 MHz it is used in variety of analog application and switching application.

Pin Out Diagram of LM358

ICdata

Bottom view

robot

Alignment of DC gear head Motors

robot2

Top View

robot3

One more by

robotl

Keyboard Synthesizer Using 8051

September 1st, 2009 by sulabh No comments »

This is basically a keyboard synthesizer which is made using the 8051 microcontrollers. The keyboard of our P.C is utilized to play the notes .
The notes are played by the small speaker connected to the microcontroller.
ULN2803 is use to drive the speaker.

The U.A.R.T. of the 8051is utilized to send information from the pc to the microcontroller.
The notes of the music are played using the frequencies of different notes of music. Each octave in the synthesizer operates on a different frequency range and the corresponding values of the timer can be calculated using the frequencies of each note that can be easily found on the internet.

As per my calculations the different values to be loaded on timer for different octaves and corresponding notes are as follows. The timer should loaded with a value so that the time to overflow should be half the period of frequency´s note and turn on and of the speaker at each overflow ocurrency.

speaker on off on
|————–| |——–
____| |__________________|
| half-period |

|<>|

The different decimal values to be loaded into the timer for the note generation corresponding to the different octaves are given as follows.

63441,63559,63670,63775,63874,63967,64055,64138,64217,
64291,64360,64426**4th octave
64489,64547,64603,64655,64705,64751,64795,64837,64876,
64913,64948,64981**5th octave
65012,65042,65069,65096,65120,65144,65166,65187,65206,
65225,65242,65259**6th octave
65274,65289,65303,65316,65328,65340,65351,65361,65371,
65380,65389,65397**7th octave
65405,65412,65419,65426,65432,65438,65443,65449,65454,
65458,65463,65467**8th octave

Here is the source code for the above project.

Author:-Rahul Sharma ,Sulabh Sethi,Somdutt Pandey

Schematic:

Circuit

Circuit

Propeller Clock using 8051 microcontroller

August 13th, 2009 by admin 2 comments »

First of its kind, made using the at89s52 microcontroller.

This propeller clock is mechanically scanned and displays the time

in digital format. Made from scrap it can be used anywhere and
everywhere and the most amazing fact about this clock is it’s
crystal clear display.
It just took  three days to complete this clock. This clock consists
of just 8 bright red LEDS which are rotated to show the display.

Have a look at the screenshots ,these were taken during the

development stage of the clock.

Now , take a look at how we proceeded and ended up making this clock
 a success.propeller clock

First this was just an idea we saw one day on the internet ,it was

Bob Blick who made it first using the PIC 16C84, but I was not
having the same microcontroller so I decided making the same from
the 8051 microcontrollers.
Firstly select a high speed motor, you can select the one from your
old tape recorders, that would be sufficient enough to drive this
clock.


Schematic

Schematic

Then coming to the circuitry part our clock just consist of the
at89S52 microcontroller ,8 bright red led, a perforated PCB,
8 resistances (220 Ω), a photo diode, an infrared transmitter,
 a motor,a pull up ladder,a 10µf cap, 12 volt battery .

The clock is on a spinning piece of pcb, but it must get power so to
 give the required power a 9 volt battery is applied which works
very fine as u can see the results are super fine.

The circuit can be made either by designing the pcb or it can be
made on a zero pcb as we have done , because doing it on a zero pcb
was very much easy.Firstly a 20 pin socket for the AT89C2051 was
attatched,then connecting the power supplies leds and resistances.

The circuit is very easy as it took me only 2 hours and by evening
the clock was running.

For the leds I used the 220 ohms resisors for proper brightness.

A crystal of 11.0592 Mhz was selected to provide the clock to the
microcontroller.

Connect the motor properly between the pcb so as to maintain the
centre of gravity so that the clock does not wobble and the display
is crystal clear.

So much done, now only thing left is programming the microcontroller.

I used the at89s52 microcontroller which belongs to the 8051
family of microcontrollers.so I used the kiel compiler to write the
program code.

The code is written in c language and the code finally burned to the
controller and the clock is running.

Software

For programming the microcontroller you will require a programmer.

You can use a parallel port programmer or make a serial port
programmer as per your requirements and availability.

Use keil compiler to compile the code.
Code have no logic to set the clock variable it will be updated soon.
we are also looking for scrolling message display.

Now as we see what runs this clock….yes the code.

Firstly we generated the look up table for the digits we want to
display on our clock .

These values will be stored in a double dimensional array and timely
called to generate the display.

The clock works using interrupts and timers.

The external interrupt used tells the microcontroleer that a single
revolution is completed and tells the timer to generate the display
and then stop after displaying. One timer i.e. the timer 1 is used
to generate the clock internally

And the external interrupt call the values of this timer everytime
to display the time.

We also use priority , that is priorities are assigned to the
interrupts and timers.
 Timer1 keeps the count of the time and timer0 performs the task of
displaying maintaining appropriate frames that would be displayed
and create a persistence of vision.

Here is the CODE

#include<at89x52.h>

const unsigned char code flook [][5] =

{

{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0

{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1

{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2

{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3	  k*

{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4

{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5

{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6

{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7

{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8

{ 0x06, 0x49, 0x49, 0x29, 0x1E } // 9

};

const unsigned char code colon[]={0x00,0x18,0x00};

unsigned char a,b,c,d,e,f;

bit tog;

void Int0(void) interrupt 0 using 2

{

EX0=0;   // Avoid another INT1* until we are completely finished...

TH0=0xA4;

TR0=1;    // Start timer 0

}

void timer0(void) interrupt 1  using 3

{

static unsigned char i,k;

k++;

if(k==12)

{

k=0;

if(i<5)	  //hours ten digit

{

P0=~(flook[f][i]);

i++;

}

else if(i==5)//space

{

P0=0xFF;

i++;

}

else if(i<11)//space

{

P0=~(flook[(e%10)][i-6]);

i++;

}

else if(i<14)//colon

{

if(tog==1)

{

P0=~(colon[i-11]);

}

else

{

P0=0xFF;

}
i++;
}

else if(i<19)//min tens

{

P0=~(flook[d][i-14]);

i++;

}

else if(i==19)//space

{

P0=0xFF;

i++;

}

else if(i<25)//min one

{

P0=~(flook[c][i-20]);

i++;

}

else if(i<28)//colon

{

if(tog==1)

{

P0=~(colon[i-25]);

}

else

{

P0=0xFF;

}
i++;
}

else if(i<33)//sec tens

{

P0=~(flook[b][i-28]);

i++;

}

else if(i==33)//space

{

P0=0xFF;

i++;

}

else if(i<39)//sec ones

{

P0=~(flook[a][i-34]);

i++;

}

else

{TR0=0;

P0=0xFF;

EX0=1;

i=0;

}

}

}

void delay()

{

int fi,fj;

for(fi=0;fi<160;fi++)

{

for(fj=0;fj<1250;fj++)	;

}

}

void main()

{

TMOD=0x02;

TH0=0xA4;

EX0   = 1;                      /* External interrupt 0 enable              */

IT0   = 1;                      /* External interrupt 0 Edge sesitive       */

ET0   = 1;                      /* Enable Timer 0 interrupts                */

PT0   = 1;                      /* Timer 0 high priority                    */

PX0   = 1;                      /* External interrupt 0 high priority       */

/*-----------------------------------------------

Configure INT0 (external interrupt 0) to generate

an interrupt on the falling-edge of /INT0 (P3.2).

Enable the EX0 interrupt and then enable the

global interrupt flag.

-----------------------------------------------*/

EX0 = 1;   // Enable EX0 Interrupt

EA = 1;    // Enable Global Interrupt Flag

P0=0xFF;

P3=0xFF;

a=0;	  //sec one's

b=0;	  //sec ten's

c=0;	  //min one's

d=0;	  //min ten's

e=0;	  //hr one's

f=0;	  //hr ten's

tog=0;

while(1)

{

delay();

tog=~tog;

a++;

if(a>9)

{

a=0;

b++;

}

if(b>5)

{

b=0;

c++;

}

if(c>9)

{

c=0;

d++;

}

if(d>5)

{

d=0;

e++;

}

if(e>12)

{

e=0;

}

if(e>9)

{

f=1;

}

else

{

f=0;

}

}

}

Digital Code Lock

July 23rd, 2009 by admin No comments »

schematic

We all know about the electronic code locking security system, here is the same concept of electronic code lock using AT89S52 i.e. 8051 family of micro controller. it has a 4×3 keypad for user input of password which will be numeric and a 20×4 alphanumeric LCD is used for user interface.

There are two kind of passwords one is the user password and the other is master password. when any user try to open the lock he must enter the right password which is of 5 digits. the user will be given 3 chances to enter the correct code otherwise he will be asked for the master password which is 10 digits long.

LCD Commands for 20×4 Alphanumeric LCD are as follows:

Goto first line 0×80

Goto second line 0xC0

Goto Third line 0×94

Goto Fourth Line 0xD4

Code for this project includes Keypad interfacing and logic for password check, as well as LCD routines. Download the complete source code as well as schematic for the project

#include<at89x52.h>
#include “lcd.h”

unsigned char pwd[]={1,2,3,4},usr[4];

void delayms()
{
int i,j;
for(i=0;i<120;i++)
{
for(j=0;j<1200;j++);
}
}

unsigned char getkey()
{ unsigned char i,key=0;
for(i=0;i<4;i++)     //row scanning
{
P1=~(0×80>>i);//0111 1111
if(P1_0==0)  //col check
{key=key+0;
while(P1_0!=1);
return key;
}
else if(P1_1==0)
{key=key+1;
while(P1_1!=1);
return key;
}
else if(P1_2==0)
{key=key+2;
while(P1_2!=1);
return key;
}
key=key+3;
}
return ‘x’;
}
void getpassword()
{
unsigned char i;
lcd_com(0xc2);
for(i=0;i<4;i++)
{ usr[i]=getkey();
while(usr[i]==’x')
{usr[i]=getkey();
}

if(usr[i]==10)
{
lcd_com(0×10);
lcd_data(‘ ‘);
lcd_com(0×10);
i=i-2;
}
else
{
lcd_data(0×30+usr[i]);
}
}
}
char checkpwd()
{
unsigned char i,c=0;
for(i=0;i<4;i++)
{
if(pwd[i]==usr[i])
c++;
}
if(c==4)
return 1;
else
return 0;
}
void main()
{ unsigned char t,tries=3;
P1=0xFF;
lcd_init();
lcd_com(0x0c);
lcd_com(0×01);
lcd_puts(“*DIGITAL LOCK*”);

while((tries)&&(t!=1))
{
getpassword();
t=checkpwd();
if(t==1)
{ lcd_com(0×80);
lcd_puts(“Authorised  “);
}
else
{
lcd_com(0×80);
lcd_puts(“wrong entry   “);
delayms();
lcd_com(0×01);
tries–;
lcd_data(0×30+tries);
lcd_puts(” tries-left”);

}
}
if(t==1)
{
lcd_com(0×01);
lcd_puts(“Thankyou”);
P0=0×00;
}
else
{
lcd_com(0×01);
lcd_puts(“Intruder Detected”);
P0=0xFF;
}
while(1){

}

}