كيفية توصيل اردوينو ومستشعر درجة الحرارة LM335

يوضح مشروع Arduino كيفية إنشاء مقياس حرارة رقمي باستخدام مستشعر درجة الحرارة التناظرية LM335 حيث تتم طباعة قيم درجة الحرارة على شاشة LCD 1602 (بالدرجات المئوية والكلفن). 


مستشعر LM335:

LM335 عبارة عن جهاز ثلاثي السنون (مثل الترانزستور) يحول درجة الحرارة إلى جهد تناظري. يتطلب هذا المستشعر وحدة ADC (محول تناظري إلى رقمي) لتحويل الجهد التناظري إلى بيانات رقمية. 

ربط اردوينو بدائرة مستشعر LM335: 

يتم توصيل دبوس الإخراج لمستشعر LM335 بدبوس Arduino التناظري 5 (A5). يتم توصيل المقاوم بين خرج مستشعر LM335 و 5 فولت ، واخترت قيمة 2.2 كيلو أوم لأنه كما هو مكتوب في ورقة البيانات للحصول على الدقة المثلى ، يجب أن يكون التيار المتدفق عبر مستشعر LM335 1 مللي أمبير. على سبيل المثال ، إذا كانت درجة الحرارة = 27 درجة مئوية ، فسيكون الناتج 3.00 فولت ويفترض أن جهد الإمداد هو بالضبط 5.00 فولت ، مما يعني أن التيار يتدفق عبر المستشعر (5 - 3) / 2.2 = 0.90 مللي أمبير وهو أمر جيد بما فيه الكفاية. كما أن القيمة 2.2k هي قيمة قياسية ومستخدمة بشكل جيد.


كود المشروع:
يحتوي متحكم Arduino uno board (ATmega328P) على وحدة ADC 10 بت ، وهذا يعني أن القيمة الرقمية للجهد التناظري للإدخال تتراوح بين 0 (0 فولت) و 1023 (4.096 فولت). بضرب القيمة الرقمية في 4 نحصل على درجة الحرارة بعشر كلفن ، أو ببساطة الجهد بالميلي فولت (4 = 1000 * 4.096 / 1024). درجة الحرارة بعشر درجة مئوية = أعشار كلفن - 2732 (لأن: ° C = K - 273.16).
للحصول على القيمة الفعلية لكل كمية علينا تقسيمها على 10. يعرض السطر أدناه مثالاً لدرجة الحرارة بالكلفن:

#include <LiquidCrystal.h>   // include Arduino LCD library

// LCD module connections (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup(void) {

lcd.begin(16, 2); // set up the LCD's number of columns and rows
lcd.setCursor(0, 0); // move cursor to column 0, row 0 [position (0, 0)]
lcd.print("Temp =");

analogReference(EXTERNAL); // set positive reference voltage to external

}

// variables
char c_buffer[8], k_buffer[8];

// main loop
void loop() {

delay(1000); // wait a second
// get temperature in tenths Kelvin
int k_temp = analogRead(A5) * 4; // 4 = 4096/1024
// calculate temperature in tenths °C
int c_temp = k_temp - 2732;

if (c_temp >= 1000) // if temperature >= 100.0 °C
sprintf(c_buffer, "%03u.%1u%cC", c_temp / 10, c_temp % 10, 223);
else {
if (c_temp < 0) // if temperature < 0
sprintf(c_buffer, "-%02u.%1u%cC", abs(c_temp) / 10, abs(c_temp) % 10, 223);
else // otherwise ( 0 <= temperature < 100 °C)
sprintf(c_buffer, " %02u.%1u%cC", (c_temp / 10) % 100, c_temp % 10, 223);
}

sprintf(k_buffer, "%03u.%1u K", k_temp/10, k_temp % 10);

lcd.setCursor(6, 0); // move cursor to position (6, 0)
lcd.print(c_buffer); // print c_buffer (temperature in °C)
lcd.setCursor(6, 1); // move cursor to position (6, 1)
lcd.print(k_buffer); // print f_buffer (temperature in K)

}

 


 

1 تعليقات

  1. In reality, roulette was derived in France within the early 18th century from the older games hoca and portique, and it is first mentioned under its current name in 1716 in Bordeaux. During the years 1836 to 1933, roulette was banned in France. And now it is available in your laptop, phone, and tablet free 온라인카지노 of charge from 24/7 Games!

    ردحذف
أحدث أقدم