تدريب : استخدام المحول ADC لقياس درجة الحرارة بالحساس LM35 مع المترجم CCS C :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
تدريب : استخدام المحول ADC لقياس درجة الحرارة بالحساس LM35 مع المترجم CCS C :
تدريب : استخدام المحول ADC لقياس درجة الحرارة بالحساس LM35 مع المترجم CCS C :
البرنامج :
البرنامج :
- الكود:
/*
PIC16F877A and LM35 Based Temperature Monitor
*/
#include <16F877A.h>
#device adc=10 // Set ADC resolution to 10Bit
#use delay(clock=4000000)
#include "lcd.c"
#define LOAD PIN_B7
#define THRES 30.0 // load switching threshold in Celsius
int16 digital_reading; // ADC resolution is 10Bit, an 8Bit integer is not enough to hold the reading
float temp;
void main()
{
/* 1- ADC Initialization */
setup_adc(ADC_CLOCK_INTERNAL); // initialize ADC with a sampling rate of Crystal/4 MHz
setup_adc_ports(RA0_ANALOG); // set PIN_A0 as analog input channel
set_adc_channel(0); // point ADC to channel 0 for ADC reading
delay_ms(1); // ADC module is slow, needs some time to adjust.
/* 2- Peripherals Configurations */
lcd_init(); // Turn LCD ON, along with other initialization commands
output_low(LOAD); // the load is initially OFF
lcd_gotoxy(1,1); // point LCD cursor to col1 row1
lcd_putc("Temperature is:"); // print on LCD
while(TRUE) // infinite loop
{
digital_reading = read_adc(); // capture current temperature reading
delay_us(100); // 0.1ms delay for ADC stabilization
temp = digital_reading * 0.4883; // convert reading to Celsius
lcd_gotoxy(1,2); // point LCD cursor to col1 row2
printf(lcd_putc,"%2.1f C",temp); // print value on LCD,format % : 2digits.1digit
if(temp>=THRES) output_high(LOAD); // Control Load
else output_low(LOAD);
delay_ms(1000); // 1 second delay between readings
}
}
مفاهيم استخدام الميكروكونترولر PIC والحساس LM35 لقياس درجة الحرارة :
مفاهيم استخدام الميكروكونترولر PIC والحساس LM35 لقياس درجة الحرارة :
المحول من تناظرى إلى رقمى ADC هو وحدة (موديول) داخلى يستخدم لقراءة الجهود التناظرية وتحويلها إلى تمثيل رقمى ، وسوف نستخدم الميكروكونترولر PIC16F877A والذى يمتلك وحدة تحويل ADC بدقة 10 بت . هذا المحول له 8 قنوات هى AN0-AN7 وهو ما يسمح للمحول بالعمل بالانتخاب مع أى من هذه القنوات فى لحظة ما .
أحد البارامترات الهامة للمحول ADC هى جهد المرجع له Vref ، وهو أقصى جهد يمكن أن يقوم المحول ADC بقراءته ، فى حالتنا سوف يكون Vref = 5V وهو جهد مصدر التغذية .
بارامتر هام آخر وهو دقة المحول ADC ، والتى تحدد أدنى قيمة من الجهد التناظرى يمكن أن تقرأ ( حجم خطوة المحول ADC) .
على سبيل المثال ، عند استخدام محول ADC بدقة 10 بت مع جهد مرجع 5V ، فإن مدى الجهود يبدأ من 0V وينتهى عند 5V ويتم تقسيمه إلى خطوات متساوية تبدأ من 000 وتنتهى عند 1023 ، بمعنى إنه إذا كان جهد الدخل 5V ، وهو أقصى قيمة ، فإن المحول ADC سوف يقرأ ه 1023 ، وإذا كان الدخل 2.5V ، فإن القراءة سوف تكون 512 وهكذا .
يمكن ببساطة حساب خطوة المحول ADC باستخدام المعادلة Step = Vref/1024 ، وفى حالتنا تكون الخوة 4.883 mV ، وهو أدنى جهد يمكن أن يقرأه المحول ADC ، ومن ثم فإن :
• دخل مقداره 4.883Mv يجب أن يعطى قراءة 001 .
• دخل مقداره 9.766mV يجب أن يعطى قراءة 002 ، وهكذا .
حساس درجة الحرارة LM35 :
ها الحساس له ثلاثة أطراف Vcc,Output,GND) ، وهو حساس لدرجة الحرارة مرتفع الدقة ، حيث تبلغ دقته 10mV/C وتبدأ من الصفر ( بمعنى أن خرج بالقيمة 0V يمثل درجة حرارة 0C) ، وبالتالى فأن :
10mV ---> 1C
20mV ---> 2C
370mV ---> 37.0C
…………………
تحويل قراءة المحول ADC إلى درجات مئوية :
بمعلومية أن المحول ADC له حجم خطوة بالقيمة 4.883mV ، فإن تحويل القراءة الرقمية التى حصلنا عليها مرة أخرى إلى جهد تتم ببساطة عن طريق ضرب القراءة الرقمية فى حجم الخطوة كما يلى :
Vin (in Volts) = DigitalReading * 0.004883
والآن ، بمعلومية حساسية الحساس وهى 10mV/C ، يتم تحويل هذا الجهد ببساطة إلى درجات مئوية عن طريق قسمة جهد الدخل على 0.01 لنحصل على :
Temperature (C) = Vin/0.01 = DigitalReading * 0.4883
المحول من تناظرى إلى رقمى ADC هو وحدة (موديول) داخلى يستخدم لقراءة الجهود التناظرية وتحويلها إلى تمثيل رقمى ، وسوف نستخدم الميكروكونترولر PIC16F877A والذى يمتلك وحدة تحويل ADC بدقة 10 بت . هذا المحول له 8 قنوات هى AN0-AN7 وهو ما يسمح للمحول بالعمل بالانتخاب مع أى من هذه القنوات فى لحظة ما .
أحد البارامترات الهامة للمحول ADC هى جهد المرجع له Vref ، وهو أقصى جهد يمكن أن يقوم المحول ADC بقراءته ، فى حالتنا سوف يكون Vref = 5V وهو جهد مصدر التغذية .
بارامتر هام آخر وهو دقة المحول ADC ، والتى تحدد أدنى قيمة من الجهد التناظرى يمكن أن تقرأ ( حجم خطوة المحول ADC) .
على سبيل المثال ، عند استخدام محول ADC بدقة 10 بت مع جهد مرجع 5V ، فإن مدى الجهود يبدأ من 0V وينتهى عند 5V ويتم تقسيمه إلى خطوات متساوية تبدأ من 000 وتنتهى عند 1023 ، بمعنى إنه إذا كان جهد الدخل 5V ، وهو أقصى قيمة ، فإن المحول ADC سوف يقرأ ه 1023 ، وإذا كان الدخل 2.5V ، فإن القراءة سوف تكون 512 وهكذا .
يمكن ببساطة حساب خطوة المحول ADC باستخدام المعادلة Step = Vref/1024 ، وفى حالتنا تكون الخوة 4.883 mV ، وهو أدنى جهد يمكن أن يقرأه المحول ADC ، ومن ثم فإن :
• دخل مقداره 4.883Mv يجب أن يعطى قراءة 001 .
• دخل مقداره 9.766mV يجب أن يعطى قراءة 002 ، وهكذا .
حساس درجة الحرارة LM35 :
ها الحساس له ثلاثة أطراف Vcc,Output,GND) ، وهو حساس لدرجة الحرارة مرتفع الدقة ، حيث تبلغ دقته 10mV/C وتبدأ من الصفر ( بمعنى أن خرج بالقيمة 0V يمثل درجة حرارة 0C) ، وبالتالى فأن :
10mV ---> 1C
20mV ---> 2C
370mV ---> 37.0C
…………………
تحويل قراءة المحول ADC إلى درجات مئوية :
بمعلومية أن المحول ADC له حجم خطوة بالقيمة 4.883mV ، فإن تحويل القراءة الرقمية التى حصلنا عليها مرة أخرى إلى جهد تتم ببساطة عن طريق ضرب القراءة الرقمية فى حجم الخطوة كما يلى :
Vin (in Volts) = DigitalReading * 0.004883
والآن ، بمعلومية حساسية الحساس وهى 10mV/C ، يتم تحويل هذا الجهد ببساطة إلى درجات مئوية عن طريق قسمة جهد الدخل على 0.01 لنحصل على :
Temperature (C) = Vin/0.01 = DigitalReading * 0.4883
مواضيع مماثلة
» مشروع متحكم فى درجة حرارة (بيان وتحكم) مع استخدام موديول ADC والحساس LM35 و LCD و RS232 مع المترجم CCS C
» شرح مشروع متحكم فى درجة الحرارة الموجبة يصلح نواة للتحكم فى المشاريع الكبرى مثل المكيفات والأفران والسخانات وغيرها باستخدم الحساس LM35 والميكروكونترولر PIC16F88 مع المترجم CCS C :
» مشروع متحكم رقمى فى درجة الحرارة السالبة والموجبة بالحساس DS18B20 والميكروكونترولر 16F628 والسفن سيجمنت مع المترجم CCS C :
» دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :
» التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :
» شرح مشروع متحكم فى درجة الحرارة الموجبة يصلح نواة للتحكم فى المشاريع الكبرى مثل المكيفات والأفران والسخانات وغيرها باستخدم الحساس LM35 والميكروكونترولر PIC16F88 مع المترجم CCS C :
» مشروع متحكم رقمى فى درجة الحرارة السالبة والموجبة بالحساس DS18B20 والميكروكونترولر 16F628 والسفن سيجمنت مع المترجم CCS C :
» دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :
» التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى