Thứ Bảy, 9 tháng 8, 2014

Mạch điều khiển tốc độ động cơ qua sóng RF.

Sơ đồ nguyên lý

Mạch phát 2 nút nhấn

Mạch thu









Chương trình điều khiển

Phần phát 

#include <REGX51.H>

void bekle()
{
unsigned int i;
for (i=0;i<7600;i++)
{
;
}
}


void Hizi_Arttir() interrupt 0
{
while(!TI);
SBUF=0xF1; // Hizi arttir butonuna basilinca aliciya F1H gonder
bekle();
}

void Hizi_Azalt() interrupt 2
{
while(!TI);
SBUF=0xF2; // Hizi azalt butonuna basilinca aliciya F2H gonder
bekle();
}

void main()
{
SCON=0x40; // 8 bit uart modu
TMOD=0x20; // Z/S 1 icin 8 bit otomatik yukleme modu
TH1=0xE8; // yaklasik 1200 bit/s (11.059 Mhz kristal icin)
TR1=1; // Z/S'i calistir
TI=1;
EX0=1; // INT0'in yetkilendirilmesi
EX1=1; // INT1'in yetkilendirilmesi
IT0=1; // INT0 dusen kenarda tetiklensin
IT1=1; // INT1 dusen kenarda tetiklensin
EA=1; // Butun kesmelerin yetkilendirilmesi
P3=0xFF; //Butonlar giris icin ayarlandi
while(1)
{
;
}


}


Phần thu 

#include <REGX51.H>

#define MOTOR P2
bit HiziArttir, HiziAzalt;

void Tusa_Basildi() interrupt 4
{
while(RI)
{
if (SBUF==0xF1)
HiziArttir=0;
if (SBUF==0xF2)
HiziAzalt=0;
RI=0;
}
}
void main()
{
unsigned int periyot=1000; // PWM darbesinin 20'de 1'i
unsigned int hiz;
int i; // darbe suresini ayarlamak icin
TMOD=0x21; // T0 16-bit (Mod 1) zamanlayici + T1 icin 8 bit otomatik yukleme modu 
TL0=-periyot%256; // pals'in dusuk degeri
TH0=-periyot/256; // pals'in yuksek degeri
SCON=0x40; // 8 bit uart modu
TH1=0xE8; // yaklasik 1200 bps (11.059 Mhz kristal icin)
TR1=1; // Z/S'i calistir
REN=1;
ES=1; // Seri haberlesme kesmesinin yetkilendirilmesi
EA=1; // Butun kesmelerin yetkilendirilmesi
P2=0;

while(1)
{
TR0=1; // T0'in saymaya baslamasi
while(TF0) // Z/S'nin tasma bayragini kontrol et
{
TR0=0; // Timer'i durdur
   TF0=0; // Tasma bayragini temizle
   i++;
   if(i<hiz) // PWM darbe icerisindeki '1' olma suresi
   MOTOR=1;
    else // PWM darbe icerisindeki '0' olma suresi
       MOTOR=0;
if (i==20) i=0; // PWM darbenin peryodu (1 msn x 20 = 20 msn)
// Timer her çalistirmada sayacagi degere yeniden kuruluyor 
TL0=-periyot%256;
TH0=-periyot/256;
}
// 20 msn'lik periyot icerisinde 1 olma süresi belirleniyor
if (!HiziArttir) // HiziArttir butonuna basildi mi?
   {
     HiziArttir=1; // HiziArttir butonu birakildi mi?
 if (hiz<20) // hiz degiskenin sinirlandirilmasi
     hiz=hiz+1;
    }
   if (!HiziAzalt) // HiziAzalt butonuna basildi mi?
{
HiziAzalt=1;    // HiziAzalt butonu birakildi mi?
if (hiz>0) // hiz degiskenin sinirlandirilmasi
hiz=hiz-1;
}
}
}







Không có nhận xét nào:

Đăng nhận xét