Google Translate


جهت Ø¯Ø±ÙŠØ§ÙØª رايگان تازه هاي سايت شماره مويايل خود را به همراه نام Ùˆ نام خانوادگي به شماره 99009123812060 ارسال كنيد.
| · موتور همو پلار در 10 ثانيه | [ 5 نظر - 15974 مشاهده ] |
| · نصب برنامه در Slax | [ 9 نظر - 12253 مشاهده ] |
| · ورود به Ù…ØÙŠØ· Slax | [ 16 نظر - 12719 مشاهده ] |
| · خواندن ÙØ§ÛŒÙ„های MMC Ùˆ SD با ÙØ±Ù…ت FAT16 , FAT32 | [ 33 نظر - 26594 مشاهده ] |
| · رله کنترل ÙØ§Ø² Three Phase Monitor | [ 35 نظر - 30830 مشاهده ] |
تابلوروان: تابلو روان و اندازه گیری دما با SMT160
در این پروژه قصد داریم شما را با Ù†ØÙˆÙ‡ ÛŒ کار کردن با نمایشگرهای ماتریسی Ùˆ همچنین کار کردن با سنسور SMT160 Ú©Ù‡ یک سنسور دما است آشنا کنیم .  معرÙÛŒ سنسور SMT160  این سنسور برای اندازه گیری دما Ø¯Ø±Ù…ØØ¯ÙˆØ¯Ù‡ -45C تا +130Cبه کار Ù…ÛŒ رود . مزیت این سنسور نسبت به سنسورهای آنالوگ دما نظیر LM35 این است Ú©Ù‡ خروجی سنسور SMT160 دیجیتال Ùˆ به صورت مدولاسیون عرض پالس (PWM) است Ùˆ نیازی به مبدل آنالوگ به دیجیتال ندارد Ùˆ همچنین خروجی CMOS آن باعث شده تا بتوان سنسور را با کابلی به طول 20 متر به میکرو وصل کرد .در دیاگرام زمانی زیر نمونه ای از پالس خروجی سنسور SMT160 را مشاهده Ù…ÛŒ کنید . این پالس از دو قسمت (T1 Ø³Ø·Ø Ù…Ø«Ø¨Øª Ùˆ T2 Ø³Ø·Ø ØµÙØ±) تشکیل شده است . در این سنسور زمان Ú©Ù„ یعنی T1+T2 ثابت است ولی نسبت یک بودن T1 به T2 متناسب با دما تغییر Ù…ÛŒ کند Ú©Ù‡ به آن D.C (Duty sycle) Ú¯ÙØªÙ‡ Ù…ÛŒ شود Ùˆ ما باید D.C را اندازه گیری کنیم , سپس از ÙØ±Ù…ول زیر Ø§Ø³ØªÙØ§Ø¯Ù‡ نماییم . در ÙØ±Ù…ول زیر temp بر ØØ³Ø¨ درجه سانتی گراد است
نرم Ø§ÙØ²Ø§Ø± در آوردن کد های ماتریس شاید شما به Ùکر ساختن یک تابلو روان بوده اید اما مشکل اینجاست Ú©Ù‡ در آوردن کد های ماتریس بدون نرم Ø§ÙØ²Ø§Ø± مشکل Ùˆ وقت گیر است Ùˆ ما برای ØÙ„ این مشکل از نرم Ø§ÙØ²Ø§Ø± زیر Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کنیم . ماتریس های Ø§Ø³ØªÙØ§Ø¯Ù‡ شده در این پروژه 16*8 است . پس در قسمت Row’s‌ عدد سطر 9 را قرار Ù…ÛŒ دهیم توجه کنید چون اولین سطر ماتریس این نرم Ø§ÙØ²Ø§Ø± جز کدهای تولیدی نمی باشد لذا باید یک ÙˆØ§ØØ¯ بیشتر از سطر ماتریس Ø§Ø³ØªÙØ§Ø¯Ù‡ تنظیم گردد . همچنین نباید در سطر اول ماتریس این نرم Ø§ÙØ²Ø§Ø± چیزی نوشته شود. در سطر بعدی Col’s=85 است چون ما در این ماتریس Ùقط Ù…ÛŒ توانیم در هر Ù„ØØ¸Ù‡ 16 ستون را به نمایش در آوریم لذا ما برای نمایش کامل متن آن را به سمت Ú†Ù¾ Ø´ÛŒÙØª Ù…ÛŒ دهیم . در قسمت language زبان متن ØØªÙ…ا باید در ØØ§Ù„ت انگلیسی باشد ØØªÛŒ اگر متن شما ÙØ§Ø±Ø³ÛŒ باشد Ùˆ در قسمت number save عدد 1 را انتخاب Ù…ÛŒ کنیم تا ØµÙØ± های اضاÙÛŒ ما بین کدها ایجاد نشود . همچنین در این نرم Ø§ÙØ²Ø§Ø± شما در قسمت وارد کردن متن کلمه مورد نظر خود را تایپ میکنید Ùˆ میتوانید توست گزینه ÛŒ Change font نوع Ùˆ اندازه ÛŒ متن نوشتاری را تعیین کنید Ùˆ گزینه text to grid را کلیک کنید تا متن نوشته شده در ماتریس به نمایش درآید Ùˆ در نهایت برای ایجاد کدهای ماتریس گزینه Save to file را کلیک کنید . برای دانلود کلیک کنید Ø´Ø±Ø Ú©Ø§Ø± پروژه در این پروژه ابتدا متن "میکروکنترولرهایAVR " به صورت Ø´ÛŒÙØª به Ú†Ù¾ نمایش داده Ù…ÛŒ شود Ùˆ سپس کلمه " دما " نمایش داده Ù…ÛŒ شود Ùˆ دمای خوانده شده را نمایش Ù…ÛŒ دهد مانند "25+" برنامه به گونه ای است Ú©Ù‡ Ù…ÛŒ تواند دمای منÙÛŒ یا مثبت را اندازه گیری کند Ùˆ نمایش دهد. ØØ§Ù„ بهتر است برنامه این پروژه را خط به خط بررسی کنیم تا شما با Ù†ØÙˆÙ‡ برنامه نویسی چنین پروژه ای آشنا شوید . اگر Ø§ØØªÙ…الا شما در عمل با مشکل refresh مواجعه شدید Ù…ÛŒ توانید برخی از تاخیر زمانی های این برنامه را تغییر دهید این تغییر زمانی ها را با علامت @ مشخص Ù…ÛŒ کنیم . برنامه این پروژه با زبان C نوشته شده است.  #include <mega16.h> #include <delay.h> #include <math.h> float T1=0.0 , T2=0.0; bit control=0; unsigned char part1=0,part2=0; signed char number=0 ; flash unsigned char number0[]={126,129,129,129,126}; flash unsigned char number1[]={0,130,255,128,0}; flash unsigned char number2[]={198,161,145,137,134}; flash unsigned char number3[]={66,129,137,137,118}; flash unsigned char number4[]={56,36,34,255,32}; flash unsigned char number5[]={79,137,137,137,113}; flash unsigned char number6[]={126,137,137,137,114}; flash unsigned char number7[]={1,255,17,9,7}; flash unsigned char number8[]={118,137,137,137,118}; flash unsigned char number9[]={78,145,145,145,126}; flash unsigned char positive_sign[]={16,56,16,0,0}; flash unsigned char minus_sign[]={16,16,16,0,0}; flash unsigned char text_micro[]= {0,0,0,0,0,0,0,0,0,0,0,128,224,120,46,39, 46,120,224,128,63,127,192,192,127,63,0,254,255,51,51,127, 238,128,0,0,0,120,192,192,220,118,6,0,31,63,48,48, 60,54,58,156,192,112,48,31,159,192,120,50,50,24,48,50, 24,48,55,55,53,29,129,220,116,60,128,192,120,56,48,55, 55,53,29,177,177,56,16,48,56,40,56,0,0,0,0,0,0,0,0,0,0,0,0}; flash unsigned char temp_text[]= {63,96,96,96,32,112,216,112,0,96,192,204,120,0,0,0}; interrupt [EXT_INT0] void ext_int0_isr(void){ TCCR1B=0x00; if (control) { T2=TCNT1; TCNT1=0; MCUCR=0x02; control=0; } else{ T1=TCNT1; TCNT1=0; MCUCR=0x03; control=1; TCCR1B=0x02; } void main () { float DC=0.0; float t=0.0,tp=0.0; signed int loop,refresh,code; PORTA=0x00; DDRA=0xFF; PORTC=0x00; DDRC=0x0F; TCCR1A=0x00; TCCR1B=0x02; TCNT1H=0x00; TCNT1L=0x00; GICR = 0x40; MCUCR=0x02; MCUCSR=0x00; GIFR=0x40; for(code=104;cod>8;code--) { for(refresh=0;refresh<100;refresh++) { for(loop=0,loop<16;loop++) { PORTC=loop; PORTA=~text_micro[abs(code-loop) ] ; delay_us (100); PORTA=0xFF; } } } PORTA=0xFF; asm("sei") for(refresh=0;refresh<250;refresh++) { for(loop=0,loop<16;loop++) { PORTC=~(loop+1); PORTA=~temp_text[loop]; delay_us(500); PORTA=0xFF; } } while(1){ for(loop=0;loop<5;loop++){ DC=T1/(T1+T2); DC+=0.018; t=(DC-0.32)/0.0047; tp=t; part2 = (abs(number) % 10); part1 = (abs(number) / 10); PORTC=~(loop+4); switch (part1) { case 0 : PORTA=~number0[loop];break; case 1 : PORTA=~number1[loop];break; case 2 : PORTA=~number2[loop];break; case 3 : PORTA=~number3[loop];break; case 4 : PORTA=~number4[loop];break; case 5 : PORTA=~number5[loop];break; case 6 : PORTA=~number6[loop];break; case 7 : PORTA=~number7[loop];break; case 8 : PORTA=~number8[loop];break; case 9 : PORTA=~number9[loop];break; default:PORTA=0xFF; } delay_us(1000); PORTA=0xFF; PORTC=~(loop+10); switch (part2) { case 0 : PORTA=~number0[loop];break; case 1 : PORTA=~number1[loop];break; case 2 : PORTA=~number2[loop];break; case 3 : PORTA=~number3[loop];break; case 4 : PORTA=~number4[loop];break; case 5 : PORTA=~number5[loop];break; case 6 : PORTA=~number6[loop];break; case 7 : PORTA=~number7[loop];break; case 8 : PORTA=~number8[loop];break; case 9 : PORTA=~number9[loop];break; default:PORTA=0xFF; } delay_us(1000); PORTA=0xFF; DC=T1/(T1+T2); DC+=0.018; t=(DC-0.32)/0.0047; tp=(tp+t)/2; number=t; if(number >= 0){ PORTC=~(loop); PORTA=~positive_sign[loop]; delay_us(1000); PORTA=0xFF; } else{ PORTC=~(loop); PORTA=~minus_sign[loop]; delay_us(1000); PORTA=0xFF; } } }; }شماتیک Ùˆ PCB Ùˆ برنامه پروژه تابلو روان Ùˆ اندازه گیری دما با SMT160 جهت دانلود کلیک کنید. ØªÙˆØ¶ÛŒØØ§Øª لازم در مورد سخت Ø§ÙØ²Ø§Ø± همان طور Ú©Ù‡ مشاهده Ù…ÛŒ کنید در به وقÙÙ‡ خارجی ØµÙØ± , سنسور SMT160 را متصل کرده ایم Ùˆ با یک مقاومت k 10 (مقاومت بالا Ú©Ø´) ورودی وقÙÙ‡ را pull-up نموده ایم . نقش Ø¨Ø§ÙØ± 74LS245 تقویت جریان پورت Ùˆ همچنین ØÙاظت پورت میکروکنترلر است . نقش دیکدر 4514 این است Ú©Ù‡ ما Ù…ÛŒ خواهیم هر بار یک ستون را انتخاب کنیم ودیتای مربوط به آن سطر را Ø¨ÙØ±Ø³ØªÛŒÙ… . بنابراین باید در هر Ù„ØØ¸Ù‡ یک ستون انتخاب شود Ùˆ این کار را با سرعتی مناسب تکرار کنیم تا بر اساس خطای چشم انسان متن مورد نظر به نمایش در آوریم ØØ³Ù† این دیکدر این است Ú©Ù‡ دارای Latch داخلی است Ùˆ این Ú©Ù…Ú© Ù…ÛŒ کند برای ماتریس های بزرگتر از 16 ستون بتوان از چند دیکدر به خوبی بهره برد . نقش ترانزیستورهای متصل به خروجی دیکدر تقویت جریان برای نوردهی مناسب LED ها Ù…ÛŒ باشد . شاید سوال شما این باشد Ú©Ù‡ جریان اضاÙÛŒ ناشی از مقاومت های 22 اهمی Ú©Ù‡ در مسیر ترانزیستورها قرار دارند ممکن است به LED ها آسیب برساند اما این طور نیست زیرا LED ها مرتبا خاموش Ùˆ روشن Ù…ÛŒ شوند وجریان ماکزیمم به صورت Ù„ØØ¸Ù‡ ای به آنها اعمال Ù…ÛŒ شود . شما باید کانکتورهای 8 پایه (Data Row) Ùˆ 16 پایه (Data column) را به پایه های کانکتور مشابه در ماتریس متصل نمایید .
مرجع :
کتاب میکرو کنترلر AVR
مولÙ:
مهندس جابر الوندی
ناشر:
نص
کلمات کليدي : LED Sign Board SMT160 تابلوروان سنسوردما دما سنسور ارسال شده در مورخه : چهارشنبه، 3 شهريور ماه ، 1389 توسط lachini
مرتبط با موضوع : مثال تابلو 16 در 128 با مبدل آنلاین [پنجشنبه، 11 شهريور ماه ، 1389] انیمیشن در تابلوروان توسط 74HC595 [پنجشنبه، 7 مرداد ماه ، 1389] تابلوروان با میکرو 8051 [سه شنبه، 5 مرداد ماه ، 1389] نرم Ø§ÙØ²Ø§Ø± آنلاین تبدیل متن به کد هگز [چهارشنبه، 17 تير ماه ، 1388] تابلوروان توسط کیبورد Ùˆ LCD [پنجشنبه، 8 اسفند ماه ، 1387] تابلوروان قابل اتصال به پورت سریال [سه شنبه، 17 دي ماه ، 1387]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ] |
امتیاز دهی به مطلب
تعداد آراء: 25 ![]() انتخاب ها
|
