Elektronik / Mikrodenetleyici Projeleri/

AT89S52 RF ile DC Motor Hız Kontrolü Keil İsis

Hazırlayan: Şahin KAYA

Kablosuz bir kumanda devresi ile belirli bir alan içerisindeki DC Motorun hızını kontrol etmek. İşe, amacıma ulaşabilmek için kullanmam gereken malzemeleri belirlemekle başladım. Bu malzemeler AT89S52 mikrodenetleyici, UDEA firması tarafından üretilmiş ve fiyatı da uygun olan 433MHz UHF bandında iletişim sağlayan RF alıcı ve verici modüller, (ATX-34 ARX-34) DC motor sürecek L293B 4 kanallı push-pull sürücü entegresi, devreleri beslemek için gerekli sabit gerilimi sağlayacak olan LM7805 ve çevre elemanlarıydı (kondansatörler). Daha sonra bu adımları simülasyon, pcb çizimleri (çizimler Protel DXP2004’de yapıldı) ve Keil’da programının yazılması işlemleri izledi.

Sistemin çalışması: Kumanda devresi ile motor kontrol devresi RF modüller üzerinden 8051 seri portları ile tek yönlü olarak haberleşmektedir. Kumanda devresindeki hızı arttır veya hızı azalt butonlarından herhangi birine basıldığında ilgili butona ait kesme programı çalıştırılır ve motor kontrol devresine ilgili butona göre hızı arttır veya hızı azalt komutları gönderilir. Bu komutları alan kontrol devresi de bunları değerlendirerek motorun hızını arttıracağına veya azaltacağına karar verir. Motorun hızı PWM (Darbe genişlik modülasyonu) yöntemi ile ayarlanacak şekilde 8051 programı yazıldı. PWM yönteminde motora gerilim darbeler şeklinde gönderilir. Bu darbelerin 1 de kalma süresi periyot içinde ne kadar uzun olursa motor o kadar hızlı döner. PWM ile motor hız kontrolü genel olarak bu şekilde yapılır.

DC motoru sürmenin birçok yolu vardır. DC motora uygulayacağımız akımın yönüne göre motorun yönü, voltajın büyüklüğüne göre de hızı değişecektir. DC motor kontrolü için üretilmiş çok verimli yongalar vardır. Ve ben de projemde bunlardan biri olan L293B isimli olanını kullandım. L293B entegresiyle motorun yönünü ve hızını belirlemek için üç uç kullanılır. Bunlar Enable, Input1 ve Input2 dir. Motoru durdurmak için Enable lojik sıfır yapılır. Böylece girişler Hi-Z konumuna geçer. Motoru diğer yönde hareket ettirmek için ise Enable lojik 1 yapılmalı ve Input1 ve Input2 farklı lojik değerlerde çekilmelidir. Yani biri lojik 1 ise diğeri lojik 0 yapılmalıdır.

Motor RX.c içeriği

#include 

#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(i0)		// hiz degiskenin sinirlandirilmasi
							 hiz=hiz-1;
					}
			}
	}

Motor TX.c içeriği

#include 

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)
			{
				;
			}


	}

RF and DC Motor Speed Control AT89S52

Within a certain area with a wireless remote control circuit to control the speed of the DC motor. Employment, to be able to reach my goal I need to use to identify the material began. This material Microcontroller AT89S52, UDEA by company manufactured and prices to suit the 433MHz UHF band to the RF communication receiver and transmitter modules, (ARX-34 ATX DC-34 engine will run L293B 4-channel push-pull driver of the integrated circuit to supply constant voltage required and environmental elements that will ensure their LM7805 (the condenser). Then these steps simulation, pcb drawings (drawings done DXP2004'de Protel), and the process was followed by me Keil'da program.

Projenin Keil Isis ve Protel dosyaları AT89S52 RF ile DC Motor Hız Kontrolü Keil İsis

Dosya indirme LINK listesi (TXT formatında) link-1245.zip şifre-pass: 320volt.com

  1. ali 2008/12/04
  2. ugur28 2008/12/31
  3. KARAprenss 2009/03/29
  4. ahmet 2009/04/20
  5. özcan 2009/10/12
  6. Asım 2010/01/27
  7. Şahin KAYA 2010/06/17

Yorum

Soru: