پروژه راه اندازی سنسور دمای LM35

 پروژه راه اندازی سنسور دمای LM35 

در این مقاله جهت راه اندازی سنسور دمای LM35 توسط میکروکنترلر AVR از برد آموزشی AVR WIZZARD مدل KC-Vela (برای مشاهده مشخصات اینجا کلیک کنید) و شیلد آموزشی سنسورها مدل  KC-Norma (برای مشاهده مشخصات اینجا کلیک کنید) استفاده شده است.

این شیلد آموزشی چندین سنسور مختلف را پشتیبانی می کند که در اینجا به معرفی مختصر این شیلد و در ادامه به پروژه راه اندازی سنسور دمای LM35 و کدهای مربوط به آن می پردازیم.

برای مشاهده ویدئو آموزشی این پروژه در آپارات اینجا کلیک کنید.

برد آموزشی AVR WIZZARDمدل KC-Vela

برد آموزشی AVR WIZZARD مناسب برای فراگیری تمامی پریفرالهای میکروکنترلر AVR سری Atmega16-32 طراحی شده است. در این برد اموزشی هر ان چه را که برای آموزش این میکروکنترلر به ان نیاز دارید مانند  SPI   , I2C , UART, PWM , ADC و کار با ال سی دی کاراکتری را خواهید اموخت. از دیگر امکانات این برد می توان به وجود ۳ عدد پوش باتن (کلید) پول اپ ، ۲ عدد LED ، یک عدد بازر ،تغذیه سوئیچینگ LM2576 و سوکت مربوط به LCD کاراکتری اشاره کرد.

شکل۱ : برد شیلد سنسورهای مختلف SENSOR SHIELD مدل KC-Norma

برد شیلد سنسورهای مختلف SENSOR SHIELD مدل  KC-Norma

برد شیلد سنسورهای مختلف SENSOR SHIELD متناسب برد اموزشی AVR WIZZARD مناسب برای فراگیری  پریفرال های TIMER  , ADC  , UART و کار با پورت های IO انواع میکروکنترلرهای مختلف می باشد. این برد توسعه دارای سنسور های دمای LM35 و  SMT172  سنسور رطوبت HS1101  و دو عدد رله برای کنترل وسایل الکتریکی مختلف می باشد . همچنین قابلیت اتصال ماژول های  PT100 و  DHT11/22 و سنسور رطوبت خاک  69-YL در این برد وجود دارد.

از ویژگی مهم این برد قابلیت اتصال ماژول وای فای  ESP8266 _ 01 بوده تا با استفاده از ان به صورت بی سیم با برد توسعه ارتباط بر قرار کرده و با استفاده از گوشی و یا تبلت خود رله ها را کنترل و اطلاعات دریافتی از سنسور ها را مانیتور کنیم.همچنین از ویژگی های دیگر ان قابلیت اتصال به اردوینو و دیگر برد های میکروکنترلی می باشد.

شکل۲: برد شیلد سنسورهای مختلف SENSOR SHIELD مدل KC-Norma

سنسور دما LM35

یکی از معروفترین Sensor  تشخیص دما موجود در بازار Lm35 می‏باشد. این سنسور تغییرات دمای مورد نظر را به ولتاژ آنالوگ تبدیل می‏کند. ولتاژ تغذیه این سنسور ۵ ولت می‏باشد، همچنین بدنه آن قابلیت تحمل دما تا ۲۰۰ درجه سانتیگراد را دارد. (برای مشاهده سایر مشخصات سنسور دمای LM35 اینجا کلیک کنید)

در اینجا پس از راه اندازی سنسور دمای LM35 ،خروجی این سنسور با برچسب LM35 بر روی برد نمایش داده شده است (مطابق شکل شماره ۴). در تصویر ۳ محل قرار گیری سنسور LM35 روی برد SENSOR SHIELD را مشاهده می کنید:

شکل ۳: محل قرار گیری سنسور LM35
شکل ۴ : مشاهده تغییرات دما سنسور lm35 روی نمایشگر AVR WIZZARD

کدهای مربوط به پروژه را از اینجا دانلود کنید

ویدئو آموزشی مربوط به این پروژه به زودی در سایت بارگذاری می شود

کدهای پروژه :

/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 05/05/2019
Author :
Company :
Comments:
Chip type : ATmega16A
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*******************************************************/
#include <mega16a.h>
#include <delay.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Declare your global variables here
//unsigned char temp[30];
char i = 0;
char lm35[10];
float lm35_value = 0.00;
float lm35_av = 0;
// Voltage Reference: AVCC pin
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
// select the corresponding channel 0~7
// ANDing with ’۷′ will always keep the value
// of ‘ch’ between 0 and 7
adc_input &= 0b00000111; // AND operation with 7
ADMUX = (ADMUX & 0xF8)|adc_input; // clears the bottom 3 bits before ORing
// start single convertion
// write ’۱′ to ADSC
ADCSRA |= (1<<ADSC);
// wait for conversion to complete
// ADSC becomes ’۰′ again
// till then, run loop continuously
while(ADCSRA & (1<<ADSC));
return (ADCW);
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) |
(۰<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) |
(۰<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) |
(۰<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) |
(۰<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) |
(۰<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) |
(۰<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) |
(۰<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) |
(۰<<PORTD1) | (0<<PORTD0);
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) |
(۱<<ADPS0);
SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS – PORTB Bit 0
// RD – PORTB Bit 1
// EN – PORTB Bit 2
// D4 – PORTA Bit 4
// D5 – PORTA Bit 5
// D6 – PORTA Bit 6
// D7 – PORTA Bit 7
// Characters/line: 16
lcd_init(16);
// Global enable interrupts
#asm(“sei”)
lcd_clear();
lcd_putsf(” HI Welcom”);
delay_ms(2000);
while (1)
{
for (i = 0 ; i<100;i++) //we want to sampelling 100 times
{
lm35_value = read_adc(1);
lm35_av += lm35_value;
delay_ms(20);
}
lm35_av =lm35_av/100; //average of 100 sample
lm35_value=lm35_value / 2.083; //now we change to cantigerad
ftoa(lm35_value,0,lm35);
lcd_gotoxy( 0 ,1);
lcd_putsf(“LM35:”);
lcd_gotoxy(9 ,1);
lcd_puts(lm35);
lcd_gotoxy(12,1);
lcd_putsf(“C”);
delay_ms(5000);

}
}

اشتراک گذاری:

یک دیدگاه بگذارید

آدرس ایمیل شما منتشر نمیشود.

6 + 5 =

0

بالا