تدريب : استخدام المحول ADC لقياس درجة الحرارة بالحساس LM35 مع المترجم CCS C :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تدريب : استخدام المحول ADC لقياس درجة الحرارة بالحساس LM35 مع المترجم CCS C :

مُساهمة من طرف Admin في السبت أبريل 25, 2015 10:49 pm

تدريب : استخدام المحول 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
  }
}
 





Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

مفاهيم استخدام الميكروكونترولر PIC والحساس LM35 لقياس درجة الحرارة :

مُساهمة من طرف Admin في السبت أبريل 25, 2015 11:36 pm

مفاهيم استخدام الميكروكونترولر 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

Admin
Admin

عدد المساهمات : 985
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى