راه اندازی سنسور دما SMT160

آموزش راه اندازی سنسور دما SMT160 یا بطور دقیق SMT 160-30  که یک سنسور دمای دقیق و دیجیتال و از اولین سنسورهای دمای دیجیتال می باشد.این سنسور مانند سنسور LM35  و DS18B20 سه پایه دارد ولی خروجی این سنسور متفاوت است. خروجی سنسور SMT160 بصورت پالس با دیوتی سایکل متغیر و یا وابسته به دما می باشد. با تغییر دمای محیط دیوتی سایکل خروجی سنسور تغییر می کند و خروجی سنسور در حقیقت بصورت PWM  می باشد. فرکانس خروجی سنسور هم بین 1 تا 4 کیلوهرتز متغیر می باشد.

خب پس برای راه اندازی سنسور کافیه پایه VCC به 5 ولت ، پایه GND به GND و پایه خروجی برای اندازه گیری دیوتی سایکل به میکروکنترلر وصل شود. برای تست سنسور می توانید خروجی سنسور را به اسیلوسکوپ متصل کنید. و بعد از اندازه گیری دیوتی سایکل   دما را از روی فرمول زیر بدست می آید.

D.C. = 0.320+0.00470*t
D.C. = duty cycle
t = Temperature in °C

برای مثال در صفر درجه  سانتی گراد دیوتی سایکل خروجی 0.320 یا %32  میباشد.

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

مشخصات دقیق سنسور SMT160 بصورت زیر می باشد:

مطلب پیشنهادی:  ارتباط متلب با میکروکنترلر ( MATLAB+AVR )

Absolute accuracy ± 0.7 °C
Linear output within 0.2 °C
Resolution better then 0.005 °C
Duty Cycle output
Calibrated on chip
TTL, CMOS compatible
Temperature range 175 °C (-45 to +130 °C)
Directly connectable to data input of microprocessor
Easy multiplexing of multiple sensors

خروجی سنسور SMT160 بصورت شکل زیر می باشد:

SMT160 output

پکیج های مختلف سنسور دما SMT160  :

سنسور دما SMT160

پایه های سنسور دما SMT160  :

پایه های سنسور دما SMT160

برای حذف نویز تغذیه سنسور دما SMT160 در دیتاشیت مدار زیر توصیه شده است :

حذف نویز تغذیه سنسور SMT160

و یا اگر محیط پر نویز نیست و برای تست مدار را بستید از شماتیک زیر نیز برای تغذیه می توانید استفاده کنید:

اتصال سنسور دما SMT160 به AVR

نحوه اندازه گیری دیوتی سایکل یا D.C در میکروکنترلر

برای اندازه گیری پایه خروجی سنسور دما را به پایه وقفه خارجی میکروکنترلر وصل می کنیم و در لبه بالا رونده تایمر را روشن در لبه پایین رونده مقدار تایمر را خوانده و به عنوان زمان یا نیم سیکل مثبت  ثبت می کنیم (در برنامه h_time) و بعد تایمر را دوباره در همین لبه (پایین رونده) روشن و تا لبه بالا رونده زمان را اندازه گیری می کنیم که این  نیم سیکل منفی(در برنامه نویسی l_time) می شود.

dutycycle=h_time/(h_time+l_time)

این کار به زبان برنامه نویسی بصورت زیر خواهد شد شماتیک برنامه نوشته شده در زیر آورده شده است

مطلب پیشنهادی:  کنترل لوازم خانگی با بلوتوث - بلوتوث کنترلر 2 و 4 کانال

میکروکنترلر ATMEGA32A

فرکانس کاری میکروکنترلر :   8MHZ

پایه اتصال خروجی سنسور INT1

پایه های ال سی دی PORTC طبق شماتیک زیر از منوی کانفیگ کدویژن تنظیم شود.

فرکانس کاری میکروکنترلر نیز از قسمت کانفیگ پروژه کدویژن روی 8 مگاهرتز تنظیم شود.

#include <mega32a.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
unsigned char t_over_count=0;
 unsigned long int h_time,l_time;  
 bit ex_int0=0;    
  unsigned  char _buf[30];   

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
t_over_count++;

}




interrupt [EXT_INT1] void ext_int1_isr(void)
{
 TCCR0=0x00;
 if(ex_int0==0){       
 l_time=t_over_count*256+TCNT0;
 MCUCR=0x08;//falling
 ex_int0=1;  
 }
 else{ 
 h_time=t_over_count*256+TCNT0; 
 MCUCR=0x0C; // RISING 
 ex_int0=0;
  }        
 TCNT0=0x00;
 t_over_count=0;
 TCCR0=0x02;
}

void main(void){

   
float temprature,dutycycle; 
 


// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TIMSK=0x01;


//rising
GICR|=0x80;
MCUCR=0x0C;
MCUCSR=0x00;
GIFR=0x80;


lcd_init(16);
lcd_clear();
lcd_putsf("Melec.ir STM160");
#asm("sei")

 while(1){ 
    #asm("cli");
	dutycycle=(float)h_time/(float)(h_time+l_time);
	#asm("sei");
	temprature= dutycycle;
	temprature-=0.31924;
	temprature/=0.00472;
    
 sprintf(_buf,"T=%2.2f%cC DC=%2.0f%% ",temprature,223,dutycycle*100);
 lcd_clear();
 lcd_puts(_buf);  
 delay_us(10);
 lcd_gotoxy(0,1); 
 lcd_putsf("Melec.ir SMT160");      
 delay_ms(1000);


 }

}

شماتیک برنامه نوشته شده :

پروژه راه اندازی سنسور SMT160 به AVR

 

دانلود دیتاشیت SMT160

سوالات خودتان را قسمت دیدگاه های همین نوشته و یا انجمن سایت مطرح کنید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

6 دیدگاه

  1. سلام . سنسورهای دیجیتال مناسبتر اند یا آنالوگ ؟ لطفا توضیح دهید و به ایمیل بفرستید .
    با تشکر

  2. سلام ی دستگاه دماسنج دیجیتال دارم باسنسور smt160-30 میخوام بدونم چه سنسوری رو میتونم جایگزین کنم بجای این سنسور که دستگاهم کار کنه

    • میلاد جهاندیده

      سلام، در مورد سنسور جایگزینش واقعیتش اطلاع ندارم. من خودم هم یدونه داشتم و دارم اگر کلا نمیتونید پیدا کنید دست دومش را من فک کنم یدونه دارم براتون بفرستم کارتون راه بیافته. البته بگردید بازم پیدا میشه و همچنین براتون بگین با قیمت مناسب از چین وارد میکنن در تعداد کم. در آخر هم اگر هم مجبورید از این برد و از این نوع سنسور استفاده کنید و راه حل دیگری ندارید میتوانید یک سنسور معمولی را خروجیش را تبدیل به PWM کنید، که فک کنم کمی کار داره…

  3. با سلام وخسته نباشید واقعا اجرتان با امام حسین فقط میتونم این بگم تنها سایتی میباشید که مطلب را به این ر احتی در اختیار مان قرار میدید