رفتن به مطلب

معرفی سنسور smt160


ارسال های توصیه شده

این سنسور برای اندازه گیری دما درمحدوده -45C تا +130Cبه کار می رود . مزیت این سنسور نسبت به سنسورهای آنالوگ دما نظیر LM35 این است که خروجی سنسور SMT160 دیجیتال و به صورت مدولاسیون عرض پالس (PWM) است و نیازی به مبدل آنالوگ به دیجیتال ندارد و همچنین خروجی CMOS آن باعث شده تا بتوان سنسور را با کابلی به طول 20 متر به میکرو وصل کرد .در دیاگرام زمانی زیر نمونه ای از پالس خروجی سنسور SMT160 را مشاهده می کنید . این پالس از دو قسمت (T1 سطح مثبت و T2 سطح صفر) تشکیل شده است . در این سنسور زمان کل یعنی T1+T2 ثابت است ولی نسبت یک بودن T1 به T2 متناسب با دما تغییر می کند که به آن D.C (Duty sycle) گفته می شود و ما باید D.C را اندازه گیری کنیم , سپس از فرمول زیر استفاده نماییم . در فرمول زیر temp بر حسب درجه سانتی گراد است

ygr3entzoi3gyiskk7f.jpg

سنسوری SMT160 دارای سه نوع بسته بندی است سنسوری که ما در این پروژه استفاده می کنیم از نوع بسته بندی TO – 18 بوده است .

bmalx4ppkptvdg9ltqmw.jpg

ولتاژ کاری SMT160 در محدوده ی 4.75 تا 7 ولت است و حداکثر جریان مصرفی آن 200 میکرو آمپر است . در این برنامه برای خواندن دما باید زمانT1 و T2 موج مربعی خروجی سنسور را اندازه گیری کنیم تا توسط فرمول ذکر شده بتوانیم دما را به دست آوریم . برای اندازه گیری زمان از وقفه خارجی صفر و تایمر یک استفاده می کنیم . موقعیکه لبه پایین رونده پالس سبب وقفه خارجی می شود محتویات تایمر را در متغییرT1 قرار می دهیم و تایمر را Reset و وقفه را حساس به لبه بالا رونده می کنیم و موقعیکه لبه بالا رونده پالس سبب وقفه خارجی می شود محتویات تایمر را در متغییر T2 ذخیره و مجددا وقفه را حساس به لبه پایین رونده می کنیم و تایمر را Reset می کنیم . بدین ترتیب ما هر دو زمان پالس را داریم و می توانیم زمان وظیفه (Duty sycle ) را اندازه بگیریم .

لینک به دیدگاه
  • 4 ماه بعد...

سلام به دوستان عزیز من مشکلی برام پیش اومده اونم اینه که برای اندازه گیری دما با سنسور smt160 تو عمل مقدار واقعی رو نشون نمیده تو پروتؤس دقیقه اما در عمل چیزی نزدیک به 5 درجه اختلاف داره و تو دمای کاملا ثابت (دستگاه جوجه کشی) نوسان 2 الی 3 درجه ای داره.در صورتیکه می بایست دقت 0.1 رو حداقل می داشت (مقاومت 4.7k بین portd.0 و زمین رو هم گذاشتم)برنامه ای هم که تو میکرو ریختم اینه لطفا راهنماییم کنید با تشکر فراوان

=======================================================

'--------------------------------main-------------------------------------------

$regfile = "m32def.dat"

$crystal = 8000000

'-------------------------------lcd---------------------------------------------

Config Lcd = 16 * 2

Config Lcdpin = Pin , Rs = Pinb.0 , E = Pinb.2 , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7

'--------------------------------dim-------------------------------------------

Dim Yazdkit_reset As Word

Dim Yazdkit_set As Word

Dim Temp As Single

Dim Duty As Single

Dim X As Integer

 

'-------------------------------------------------------------------------------

Config Timer1 = Timer , Prescale = 1

Enable Timer1

'--------------------------------main------------------------------------------

Config Pind.4 = Input

'------------------------------------------------------------------------------

Config Single = Scientific , Digits = 2

Cursor Off

Cls

Locate 1 , 5

Lcd "Hello"

Locate 2 , 1

Lcd "WWW.YAZDKIT.COM"

Waitms 50

Cls

 

Smt160:

Do

Gosub Read_data_sm160

Locate 1 , 1

Lcd "T= " ; Temp ; "c ";

Waitms 50

Loop

 

'-------------------------------------------------------------------------------

Read_data_sm160:

Bitwait Pind.4 , Set

Bitwait Pind.4 , Reset

Bitwait Pind.4 , Set

Bitwait Pind.4 , Reset

Bitwait Pind.4 , Set

Bitwait Pind.4 , Reset

Stop Timer1

 

 

Bitwait Pind.4 , Set

Timer1 = 0

Start Timer1

Bitwait Pind.4 , Reset

'Xl = Timer1

Yazdkit_set = Timer1

 

 

Timer1 = 0

Start Timer1

Bitwait Pind.4 , Set

'Xf = Timer1

Yazdkit_reset = Timer1

 

X = Yazdkit_set + Yazdkit_reset

Duty = Yazdkit_set / X

 

Duty = Duty - 0.32

Waitms 1

Temp = Duty / 0.0047

Waitms 1

'Locate 1 , 1

'Temp = Round(temp)

Stop Timer1

Return

 

 

 

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

=======================================================

=======================================================

با این تغییر هم تست کردم نشد.

 

'--------------------------------main-------------------------------------------

$regfile = "m32def.dat"

$crystal = 8000000

'-------------------------------lcd---------------------------------------------

Config Lcd = 16 * 2

Config Lcdpin = Pin , Rs = Pinb.0 , E = Pinb.2 , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7

'--------------------------------dim-------------------------------------------

Dim Yazdkit_reset As Word

Dim Yazdkit_set As Word

Dim Temp As Single

Dim Duty As Single

Dim X As Integer

Config Single = Scientific , Digits = 2

'-------------------------------------------------------------------------------

Config Timer1 = Timer , Prescale = 1

Enable Timer1

'--------------------------------main------------------------------------------

Config Pind.4 = Input

'------------------------------------------------------------------------------

Cursor Off

Cls

Locate 1 , 5

Lcd "Hello"

Locate 2 , 1

Lcd "WWW.YAZDKIT.COM"

Waitms 50

Cls

 

Smt160:

Do

Gosub Read_data_sm160

Locate 1 , 1

Lcd "T= " ; Temp ; "c ";

Waitms 50

Loop

 

'-------------------------------------------------------------------------------

Read_data_sm160:

 

 

Bitwait Pind.4 , Reset

Stop Timer1

Timer1 = 0

 

 

Bitwait Pind.4 , Set

Start Timer1

Bitwait Pind.4 , Reset

Yazdkit_set = Timer1

 

 

 

 

Bitwait Pind.4 , Set

Stop Timer1

Timer1 = 0

 

 

Bitwait Pind.4 , Reset

Start Timer1

Bitwait Pind.4 , Set

Yazdkit_reset = Timer1

Stop Timer1

 

 

X = Yazdkit_set + Yazdkit_reset

Duty = Yazdkit_set / X

 

Duty = Duty - 0.32

 

Temp = Duty / 0.0047

 

'Locate 1 , 1

'Temp = Round(temp)

Stop Timer1

Return

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
  • 3 هفته بعد...

سلام دوستان .من (رامین چمن ارا)از طرف خودم شهادت امام علی (ع)رو تسلیت میگم نمازوروزتون قبول ایشالا

 

خیلی بد و دلسرد کنندست که هیچ کس جز تشکر کار دیگه ای (نظر یا راهنمایی) نمی کنه ولی من وفاداریم و ثابت قدمیم رو دنبال میکنم

 

بلاخره تونستم نوسان دما رو کاملا از بین ببرم اما یه مشکل دارم تو واقعیت هنوز دما 0.9 درجه بیشتر از چیزیه که اندازه گیری میشه لطفا راهنماییم کنید

 

 

$regfile = "m32def.dat"

$crystal = 1000000

'-------------------------------lcd---------------------------------------------

Config Lcd = 16 * 2

Config Lcdpin = Pin , Rs = Pinb.0 , E = Pinb.2 , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7

'--------------------------------dim-------------------------------------------

Dim Yazdkit_reset As Word

Dim Yazdkit_set As Word

Dim Temp As Single

Dim Duty As Single

Dim X As Integer

Dim L As Single

Dim K As Single

Dim J As Single

Dim M As Word

Dim N As Word

Dim O As Word

Dim P As Word

L = 0 : K = 0 : M = 0 : N = 0

Config Single = Scientific , Digits = 1

'-------------------------------------------------------------------------------

Config Timer1 = Timer , Prescale = 1

Enable Timer1

'--------------------------------main------------------------------------------

Config Pind.4 = Input

'------------------------------------------------------------------------------

Cursor Off

Cls

Locate 1 , 5

Lcd "Hello"

Locate 2 , 1

Lcd "WWW.YAZDKIT.COM"

Waitms 50

Cls

 

Smt160:

Do

Gosub Read_data_sm160

 

 

'L = Temp + L

M = Yazdkit_set + M

N = Yazdkit_reset + N

K = K + 1

 

 

If K = 16 Then

K = 0

'J = L / 5

O = M / 16

P = N / 16

 

 

X = O + P

Duty = O / X

 

Duty = Duty - 0.32

 

Temp = Duty / 0.0047

 

 

Locate 1 , 1

Lcd "T= " ; Temp ; "c ";

O = 0 : P = 0

End If

'Locate 1 , 12 : Lcd K

Locate 2 , 1 : Lcd Yazdkit_set

Locate 2 , 7 : Lcd Yazdkit_reset

Waitms 50

Loop

 

'-------------------------------------------------------------------------------

Read_data_sm160:

 

 

Bitwait Pind.4 , Reset

Stop Timer1

Timer1 = 0

 

 

Bitwait Pind.4 , Set

Start Timer1

Bitwait Pind.4 , Reset

Yazdkit_set = Timer1

 

 

 

 

Bitwait Pind.4 , Set

Stop Timer1

Timer1 = 0

 

 

Bitwait Pind.4 , Reset

Start Timer1

Bitwait Pind.4 , Set

Yazdkit_reset = Timer1

Stop Timer1

 

 

'X = Yazdkit_set + Yazdkit_reset

'Duty = Yazdkit_set / X

 

'Duty = Duty - 0.32

 

'Temp = Duty / 0.0047

 

'Locate 1 , 1

'Temp = Round(temp)

Stop Timer1

Return

لینک به دیدگاه

ممنون رامین جان

تو چه شرایطی این ازمایشات رو انجام دادی و این اندازه گیریها رو کردی؟

0.9 درجه اختلاف میتونه به عوامل زیادی مثل سنسور اندازه گیری و نویزهای موجود بستگی داشته باشه . اگه تمام شرایط رو اوکی کرده بودی و بازهم این اختلاف رو مشاهده کردی به ضرایب و تبدیلاتی که تو برنامت گذاشتی توجه کن شاید ضرایب pid که استفاده کردی چندان دقیق نبوده و جواب مورد نظر رو نمیده

لینک به دیدگاه

برای راحتی کارتون می تونید از سنسورهای دما و کنترل کننده های دمای آماده ( برای این کارتون از pid استفاده بکنید چون ممکنه on off برای دقت مد نظرتون پاسخ گو نباشه) این کار رو انجام بدید. هزینه سخت افزاری اون در مقابل هزینه زمانی طراحی مدار میکروکنترلری برای اولین بار خیلی به صرفه تره

بعد از ساخت نمونه اولیه بعدا شروع به ساخت نمونه میکروکنترلری بکنید

 

اول از کار جواب بگیرید و بعد به فکرمسائل دیگه باشید.

لینک به دیدگاه
  • 6 ماه بعد...

سلام من بعد از چندین ماه برگشتم چون تو این سایت کسی به من جواب نداده بودو منم ناامیدشدم دیگه به اینجا سرنزدم.:banel_smiley_4::sad0::4564:

تا امروز که دوباره یادتون افتادم.خواستم بگم بدون تغییر دادن برنامه اولی هم میشد به بالاترین دقت رسید.

مشکل اصلی اینجا بود که حتما واسه دقت های بالا باید از کریستال خارجی استفاده کرد.به همین راحتیو خوشمزگی همه چی حل شد.به هر حال ممنون از نظرهاتون:hapydancsmil:

لینک به دیدگاه
سلام من بعد از چندین ماه برگشتم چون تو این سایت کسی به من جواب نداده بودو منم ناامیدشدم دیگه به اینجا سرنزدم.:banel_smiley_4::sad0::4564:

تا امروز که دوباره یادتون افتادم.خواستم بگم بدون تغییر دادن برنامه اولی هم میشد به بالاترین دقت رسید.

مشکل اصلی اینجا بود که حتما واسه دقت های بالا باید از کریستال خارجی استفاده کرد.به همین راحتیو خوشمزگی همه چی حل شد.به هر حال ممنون از نظرهاتون:hapydancsmil:

 

اینو که نگفته بودی از چه کریستالی استفاده کردی !! برای همین پرسیدم تو چه شرایطی اندازه گیری کردی و به چه روشی؟ معمولا تو برنامه هایی که نیاز به ثبت زمان و استفاده از تایمر میکرو هست باید که از کریستال خارجی استفاده کرد.ضمنا معذرت هم بابت پاسخگویی دیر

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...