در بیشتر سیستمها این علاقه وجود دارد که کلیه فرمانها و تنظیمات را بتوان توسط یک کنترل کننده از راه دور انجام داد. در این صورت باید از فرستنده و گیرندهای که طبق یک پروتکل اطلاعات را رد و بدل میکند استفاده کرد. ارتباط میتواند به صورت امواج مادون قرمز یا بیسیم و یا رادیویی و یا … باشد. یکی از کانالهای آسان و کم خرج امواج مادون قرمزاست که بیشتر کنترل کنندههای خانگی نیز این نوع ارتباطی را انتخاب میکنند. پروتکلهایی که در این نوع ارتباطی به کار میرود از جمله 5RC و 6RC و یا همچنین مدولاسیون منچستر است. بیشتر کنترل کنندههای تلویزیون پروتکل 5RC را پشتیبانی میکنند. دراین نوع پروتکل 14 بیت در هنگام فشرده شدن هر کلید ارسال میشود. دو بیت اول بیت شروع هستند که همیشه یک هستند. بیت بعدی بیت کنترل یا تاگل است که با زدن هر کلید معکوس میشود. پنج بیت بعدی بیت آدرس هستند. شش بیت بعدی بیتهای فرمان هستند. بیتها در دو فاز کد شده و ارسال میشود. حال میتوان با داشتن فرکانس ارسال و ایجاد یک تاخیر جهت نمونه برداری این اطلاعات را آشکار کرد. به طور مثال اگر از یک میکروکنترلر استفاده میکنید میتوانید با پیکرهبندی یکی از تایمرها تاخیر ایجاد کنید و بیتها را مشخص کنید. آشکار کردن این بیتها چندان کار سختی نیست ولی اگر شما از میکروکنترلرهای سری AVR و همچنین از کامپایلر قدرتمند بسکام استفاده میکنید میتوانید از دستورات ساده آن جهت به دست آوردن اطلاعات بهره ببرید. ضمیمه این فایل اطلاعات مورد نیاز جهت بستن مدار و برنامه موجود است. با دستور زیر به راحتی میتوان فرمان را دریافت Getrc5(address , Command) کرد. مدار زیر قسمت گیرنده میباشد.
در مدار بالا از گیرنده سه پایه مادون قرمز استفاده شده است.
در این سیستم هدف راه اندازی موتوردی سی توسط کنترل تلویزیون است. به این صورت که سیستم ابتدا از شما رمز را در خواست میکند و در صورت صحیح بودن میتوانید چپ گرد یا راست گرد یا ایست و حتی سرعت را کنترل کنید. جهت راه اندازی موتور از آی سی 293L استفاده شده است. مدار زیر نیز بخش راه انداز موتور است.
همانطور که مشاهده میکنید این راهانداز توانایی درایو همزمان سه موتور دی سی را دارد.
جدول زیر حالات موتور را به نسبت ورودی مشخص میکند.
در این سیستم توانایی تغییر رمز نیز وجود دارد. مدار کنترلر سیستم نیز در زیر نمایش داده شده است.
کد :
$regfile = "M32def.dat" $crystal = 1000000 Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portc.0 , Db6 = Portc.1 , Db7 = Portc.2 , Rs = Portd.0 , E = Portd.1 Config Lcd = 16 * 2 Cls Cursor Off Config Rc5 = Pind.4 Config Portd.3 = Output Config Portd.2 = Output Enable Interrupts Dim Address As Byte , Command As Byte , Count As Byte Dim Lock As Bit Dim Fuse As Bit Dim Enter As String * 3 Dim Key As String * 1 Dim Password As String * 3 Dim Speed As Word Declare Sub Play() Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 1 Count = 0 Lock = 0 Home Lcd "Enter password:" Cursor On , Blink Locate 2 , 1 Pwm1a = 1000 '********************************************* Do Getrc5(address , Command) If Address = 0 Then Command = Command And &B01111111 If Lock = 0 Then Select Case Command Case Is < 10 Incr Count If Count =< 3 Then Key = Str(command) Mid(enter , Count) = Key Lowerline Lcd Enter Waitms 400 End If Case 37 Count = 0 Readeeprom Password , 0 Waitms 10 If Enter = Password Then Cursor Off , Noblink Lock = 1 Cls Lcd " OK" Wait 2 Cls Lcd "you can drive DC" Lowerline Lcd "motor with keys." Else Cursor Off , Noblink Cls Lcd " ERROR" Wait 2 Cls Lcd "Enter password:" Cursor On , Blink Locate 2 , 1 End If End Select '*********************************************************************************** Else 'BARNAMEYE ASLI BAD AZ GHOFL.YANI DAR GHEYRE EEN SOORAT AGAR GHOFL BAZ BASHAD.HALA DIGAR GHESMATE GHOFL EJRA NEMISHAVAD Select Case Command Case Is < 10 Incr Count If Count < 4 Then Key = Str(command) Mid(enter , Count) = Key Lowerline Lcd Enter Waitms 400 End If Case 16 Cls Lcd " TURN RIGHT" Set Portd.3 Reset Portd.2 Case 17 Cls Lcd " TURN LEFT" Reset Portd.3 Set Portd.2 Case 32 If Pwm1a =< 1000 Then Pwm1a = Pwm1a + 10 Cls Speed = Pwm1a / 4 Lcd "speed: " ; Speed ; " rpm " Else Cls Lcd " *WOW*" Lowerline Lcd " it's very fast" End If Case 33 Pwm1a = Pwm1a - 10 Cls Speed = Pwm1a / 4 Lcd "speed: " ; Speed ; " rpm " Lcd Pwm1a Case 37 Cls Lcd " STOP" Set Portd.3 Set Portd.2 Case 59 Cls Call Play() Case Else Cls Lcd Command End Select Waitms 250 End If 'EEN END IF BARAYE IF LOCK AST KE DARAYE ELSE NIZ MIBASHAD End If Loop '************************************ Sub Play() Home Lcd "Enter old pass:" Pass: Getrc5(address , Command) If Address = 0 Then Command = Command And &B01111111 Select Case Command Case Is < 10 Incr Count If Count < 4 Then Key = Str(command) Mid(enter , Count) = Key Lowerline Lcd Enter Waitms 400 End If Case 37 Count = 0 If Fuse = 0 Then Readeeprom Password , 0 Waitms 10 If Enter = Password Then Fuse = 1 Cls Lcd "Enter new pass:" Locate 2 , 1 Wait 2 Else Cls Lcd " ERROR" Wait 2 Cls Lcd "Enter old pass:" ' End If Else Password = Enter Writeeeprom Password , 0 Waitms 10 Cls Lcd " GO ON" Wait 2 Goto Payan End If End Select End If Goto Pass Payan: Fuse = 0 End Sub Play()
دانلود فایل ها :
منبع: میکرودیزاینرالکترونیک