ساخت دماسنج دقیق
در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, دماسنج دقیق به کمک سنسور دیجیتالی DS1621, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. تا به حال مدارات زیادی برای اندازه گیری دما در الکترونیک 98 انتشار داده ایم و که در آن ها یاد گرفتیم که چگونه انواع سنسورهای دما را توسط میکروکنترلرهای AVR راه اندازی کنیم. همانطور که می دانید سنسورهای دمای زیادی در بازار وجود دارند که هر کدام دارای مشخصه های متفاوتی مانند : محدوده اندازه گیری دما، تلرانس، نوع خروجی و یا نوع پروتکل ارتباطی می باشند. به همین منظور با انتشار پروژه های متفاوت در الکترونیک98 می خواهیم شما را با نحوه راه اندازی انواع سنسورهای دما آشنا کنیم.
نقشه شماتیک پروژه
در این پروژه توسط سنسور دمای DS1621 دمای یک محیط در بازه بین منفی 55 تا مثبت 125 درجه سانتی گراد اندازه گیری می شود و نتیجه آن یا همان مقدار دما توسط میکروکنترلر AT90S2313 و یا میکروکنترلر ATTINY2313 بر روی یک LCD کاراکتری به کاربران نمایش داده می شود.
سنسور دما DS1621
سنسور دمای DS1621 یکی از سنسورهای معروف و پرکاربرد در زمینه اندازه گیری دما می باشد که با قدرت اندازه گیری دما در محدوده منفی 55 تا مثبت 125 درجه سانتی گراد توانسته محبوبیت خاصی در بین حسگرهای اندازه گیری دما پیدا کند. همچنین سنسور دقیق دما DS1621 بر پایه پروتکل ارتباطی I2C عمل می کند.
برنامه میکروکنترلر به زبان بیسیک BASIC در نرم افزار BASCOM-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
$regfile = "attiny2313.dat" $crystal = 8000000 '----------------------------------------------------- Dim Tempmsb As Byte Dim Templsb As Byte Dim Th As Byte Dim Tl As Byte Dim Confg As Byte Dim Count As Byte Dim Slope As Byte '----------------------------------------------------- Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.7 , Rs = Portb.6 Config Lcd = 16 * 2 '----------------------------------------------------- Deflcdchar 0 , 14 , 17 , 17 , 17 , 14 , 32 , 32 , 32 'degree Deflcdchar 1 , 4 , 14 , 31 , 32 , 32 , 32 , 32 , 32 'up Deflcdchar 2 , 32 , 32 , 32 , 32 , 32 , 31 , 14 , 4 'down Deflcdchar 3 , 32 , 32 , 32 , 31 , 31 , 32 , 32 , 32 'equal '----------------------------------------------------- Config Sda = Portd.1 Config Scl = Portd.0 '----------------------------------------------------- Cls Cursor Off '----------------------------------------------------- I2cstart I2cwbyte &H90 I2cwbyte &HA1 I2cwbyte 25 I2cstop '----------------------------------------------------- 'write TL I2cstart I2cwbyte &H90 I2cwbyte &HA2 I2cwbyte 20 I2cstop '----------------------------------------------------- 'read TH I2cstart I2cwbyte &H90 I2cwbyte &HA1 I2cstop I2cstart I2cwbyte &H91 I2crbyte Th , Nack I2cstop '----------------------------------------------------- 'read TL I2cstart I2cwbyte &H90 I2cwbyte &HA2 I2cstop I2cstart I2cwbyte &H91 I2crbyte Tl , Nack I2cstop '----------------------------------------------------- 'read config I2cstart I2cwbyte &H90 I2cwbyte &HAC I2cstop I2cstart I2cwbyte &H91 I2crbyte Confg , Nack I2cstop '----------------------------------------------------- Goto Loop 'read counter Readcnt: I2cstart I2cwbyte &H90 I2cwbyte &HA8 I2cstop I2cstart I2cwbyte &H91 I2crbyte Count , Nack I2cstop Return '----------------------------------------------------- 'read slope Readslp: I2cstart I2cwbyte &H90 I2cwbyte &HA9 I2cstop I2cstart I2cwbyte &H91 I2crbyte Slope , Nack I2cstop Return Loop: '----------------------------------------------------- 'start convert I2cstart I2cwbyte &H90 I2cwbyte &HEE I2cstop '----------------------------------------------------- 'read temperature I2cstart I2cwbyte &H90 I2cwbyte &HAA I2cstop I2cstart I2cwbyte &H91 I2crbyte Tempmsb , Ack I2crbyte Templsb , Nack I2cstop '----------------------------------------------------- 'read config I2cstart I2cwbyte &H90 I2cwbyte &HAC I2cstop I2cstart I2cwbyte &H91 I2crbyte Confg , Nack I2cstop '----------------------------------------------------- Wait 1 If Templsb = 128 Then Templsb = 5 Else Templsb = 0 Locate 1 , 1 Lcd "**** " ; Tempmsb ; "," ; Templsb ; Chr(0) ; "C" ; " ****" Locate 2 , 1 Lcd "L=" ; Tl ; " " ; "H=" ; Th ; " " Locate 1 , 12 If Confg = 8 Then Lcd Chr(3) If Confg = 72 Then Lcd Chr(1) If Confg = 104 Then Lcd Chr(2) Goto Loop |
همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار Proteus 8 Professional طراحی شده، پیوست فایل پروژه جهت دانلود قرار داده شده است، که می تواند شما را در یادگیری هر چه بهتر مدار و نحوه عملکرد آن یاری نماید.
سلام مهندس به نظر شما دقیق ترن سنسوری که نیاز به کالیبره کردن هم نداشته باشه چه سنسوریه ممنون