Atmel 8051 ve Adım Motor ile Asansör Uygulaması

Projeyi Hazırlayan : Zekeriya PEHLİVAN Yazının kaynak ve Keil kod ve isis ares dosyaları Emeği geçen kişilere Teşekkürler
Bu uygulamada adım(step) motorun kontrolünü,8051 port giriş ve çıkışları sayesinde sağlayarak asansör devresini inceleyeceğiz.
Devremizde adım motor kullandık. Bildiğimiz üzere adım motor belirli adımlarla hareket eden, sargılarına uygun işaretler gönderilerek istenilen konuma getirilen bir motor turudur. Bu devremizde de yaklaşık 3°~3.15° ‘lik adım açısına sahip bir step motor kullanılmıştır. Ve programımızda da tur ve hız değişkenlerine 10 değerine atayarak motorumuzun yaklaşık 315° dönmesini sağladık.
Step motorlar bildiğimiz üzere 4.5.6 uçlu olarak piyasada bulunmaktadırlar. Biz devremizde 6 uçlu step motor kullandık. Bundan dolayı 2 ucu +12 volt beslemesine verdik.
Devremizde step motoru sürmek için genelde kullanılan ULN2003A tüm devresini kullandık. Böylece girişine uygulanan lojik “1”, tüm devrenin çıkışından”0“ olarak alınır ve böylece motor sürülmüş olur.
Devremizde 5 buton bulunmaktadır. Bu butonlar basılması durumunda motorumuz her kat için kaç sefer döneceğini bilindiğinden dolayı, en son basılan değerle, o an basılan değer arası fark alınarak, motorumuzun devrini hesaplarız ve bu sayede motorumuz istenilen noktaya gelir. En son basılan değerle o an basılan değer karşılaştırılarak, motorumuzun aşağıya veya yukarı (sağa veya sola) dönmesine karar verilmiş olunur.
Böylece motorumuza her basılan değerde bir önceki değere göre ne kadar dönmesi gerektiği 8051 mikro denetleyici devresi sayesinde lojik “1”,ULN2003A sayesinde de lojik“0” verilmiş olunur.

Asansör Uygulaması ARES devre şeması
Asansör Uygulaması İSİS devre şeması
Devrenin C Programı
#include <REG51.H>
#include <stdio.h>
int kat,tur,hiz;
tur=10; //her kat için motorun dönme sayisi
hiz=10; //motorun dönüş hizi 0 max 32000 min
bekle(c)
{
int i,j;
if(c==0)
{
for(i=0;i<500;i++)
{
for(j=0;j<hiz;j++)
{
;
}
}
}
return;}
// asansor yukari cikiyor
yukari(b)
{
int i,j;
for (i=1;i<=b;i++)
{
for (j=0;j<=10;j++)
{
P3=1;
bekle(0);
P3=2;
bekle(0);
P3=4;
bekle(0);
P3=8;
bekle(0);
}
P2=kat+i;
}
kat=kat+b;
return;
}
// asansor asagi iniyor
asagi(b)
{
int i,j;
for (i=1;i<=b;i++)
{
for (j=0;j<=tur;j++)
{
P3=8;
bekle(0);
P3=4;
bekle(0);
P3=2;
bekle(0);
P3=1;
bekle(0);
}
P2=kat-i;
}
kat=kat-b;
return;
}
kontrol(a)
{
int fark;
if(a>kat)
{
fark=a-kat;
yukari(fark);
}
if(a<kat)
{
fark=kat-a;
asagi(fark);
}
return;
}
main()
{
int kat1;
kat=0;
P2=kat;
while(1)
{
if(P0==1)
{
kat1=1;
kontrol(1);
}
if(P0==2)
{
kat1=2;
kontrol(2);
}
if(P0==4)
{
kat1=3;
kontrol(3);
}
if(P0==8)
{
kat1=4;
kontrol(4);
}
if(P0==16)
{
kat1=5;
kontrol(5);
}}}
Kullanılan Malzemeler:
1. stepper-motor
2. 5 adet switch
3 .1 adet ULN2003A
4. 1 adet 7447
5. 1 7 Segment display (devrede ortak anot)
6. Atmel 89C51RC2
