الاثنين، 26 فبراير 2018

السيطرة على عمل محرك باستخدام متحسس الحرارة + اردوينو

جعل مروحة  تدور تلقائيا عند درجة حرارة الغرفة تصل إلى درجة معينة.

المواد المطلوبة

اردوينو اونو 1

شاشة LCD 2*16
متحسس الحرارة والرطوبة DHT22
محرك تيار مستمر
بطارية 9 فولت
مقاومة متغيرة 10K
لوحة الربط

في هذه المقالة، وأنت تسير لمعرفة المزيد عن اردوينو التحكم في درجة الحرارة مروحة باستخدام استشعار DHT22 والتتابع. سوف نستخدم جهاز استشعار DHT22 للحصول على قيمة درجة الحرارة وسوف نقوم بطباعة هذه القيمة درجة الحرارة على شاشات الكريستال السائل. ثم سوف نقوم بفحص ما إذا كانت قيمة درجة الحرارة أكبر من 35 أم لا، إذا كانت درجة الحرارة ستكون أكبر من 35، ثم سيتم تفعيل التتابع وسوف تبدأ مروحة بالتدوير.


أولا وقبل كل شيء تربط  الشاشة الكرستالية مع اردوينو على النحو التالي:
اربط VSS مع الارضي
اربط VDD مع +5V
اربط V0 مع المقاومة المتغيرة ( الرجل الوسطي) الارجل الاخرى للمقاومة المتغيرة (على الجوانب) تربط احداها مع 5V والاخرى مع الارضي
اربط RS مع المنفذ 2 في الاردوينو
اربط R/W مع ارضي
اربط E مع المنفذ 3 في الاردوينو
اربط من D4 الى D7 مع المنافذ 4, 5, 6, 7
اربط المنفذ 15 مع 5V من خلال مقاومة 220ohm
اربط المنفذ 16 مع الارضي

يربط المرحل ( ريلاي) على النحو التالي

VCC مع 5V
IN مع المنفذ 9 في الاردوينو
GND مع الارضي
الطرف الاخر من المرحل يربط مع الموجب في البطارية والنقطة المشتركة للمرحل يربط مع النقطة NC الى السالب
كما ويربط المتحسس كما يلي
المنفذ 1 من المتحسس يربط مع VCC في الاردوينو
المنفذ 2 من المتحسس يربط مع المنفذ 8 في الاردوينو
المنفذ 4 يربط مع الارضي في الاردوينو



الكود
#include "DHT.h" #include "LiquidCrystal.h" LiquidCrystal lcd(7, 8, 9, 10, 11 ,12); #define DHTPIN 6 #define DHTTYPE DHT22 DHT sensor(DHTPIN, DHTTYPE); int relay_pin = 9; void setup() { lcd.begin(16,2); sensor.begin(); pinMode(relay_pin, OUTPUT); digitalWrite(relay_pin, HIGH); } void loop() { lcd.clear(); float t = sensor.readTemperature(); //reading the temperature from the sensor // Checking if the sensor is sending values or not if (isnan(t)) { lcd.print("Failed"); delay(1000); return; } lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); if (t > 35){ digitalWrite(relay_pin, LOW); lcd.setCursor(0,1); lcd.print("Fan is ON "); delay(10); } else{ digitalWrite(relay_pin, HIGH); lcd.setCursor(0,1); lcd.print("Fan is OFF "); } delay(2000); }

ليست هناك تعليقات:

إرسال تعليق