جدول المحتويات:
- الخطوة 1: التكوين
- الخطوة 2: تكوين المرحلات
- الخطوة 3: وحدة تحكم التخلفية
- الخطوة 4: وحدة تحكم PID
- الخطوة 5: ناقل الرسائل
- الخطوة 6: Libs
فيديو: ترموستات على أساس الأردوينو: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
هذه المرة سنقوم ببناء منظم حرارة يعتمد على Arduino ومستشعر درجة الحرارة ومرحل. يمكنك العثور على جيثب
الخطوة 1: التكوين
يتم تخزين التكوين بالكامل في Config.h. يمكنك تغيير أرقام التعريف الشخصية التي تتحكم في المرحلات أو قراءة درجة الحرارة أو العتبات أو التوقيت.
الخطوة 2: تكوين المرحلات
لنفترض أننا نود أن يكون لدينا 3 مرحلات:
- المعرف: 0 ، رقم التعريف الشخصي: 1 ، نقطة ضبط درجة الحرارة: 20
- المعرف: 1 ، رقم التعريف الشخصي: 10 ، نقطة ضبط درجة الحرارة: 30
- المعرف: 2 ، رقم التعريف الشخصي: 11 ، نقطة ضبط درجة الحرارة: 40
عليك أولاً التأكد من أن رقم التعريف الشخصي الذي تختاره لم يتم أخذه بالفعل. يمكن العثور على جميع المسامير في Config.h ، يتم تحديدها بواسطة متغيرات تبدأ بـ DIG_PIN.
يجب عليك تحرير Config.h وتكوين أرقام التعريف الشخصية والعتبات ومقدار المرحلات. من الواضح أن بعض الخصائص موجودة بالفعل ، لذلك عليك فقط تعديلها.
ثابت ثابت uint8_t DIG_PIN_RELAY_0 = 1 ؛ ثابت ثابت uint8_t DIG_PIN_RELAY_1 = 10 ؛ ثابت uint8_t DIG_PIN_RELAY_2 = 11 ؛
ثابت ثابت uint8_t RELAYS_AMOUNT = 3 ؛
ثابت ثابت int16_t RELAY_TEMP_SET_POINT_0 = 20 ؛
ثابت ثابت int16_t RELAY_TEMP_SET_POINT_1 = 30 ؛ ثابت ثابت int16_t RELAY_TEMP_SET_POINT_2 = 40 ؛
الآن يتعين علينا إعداد المرحلات ووحدة التحكم ، وهذا يحدث في RelayDriver.cpp
initRelayHysteresisController (0، DIG_PIN_RELAY_0، RELAY_TEMP_SET_POINT_0)؛ initRelayHysteresisController (1، DIG_PIN_RELAY_1، RELAY_TEMP_SET_POINT_1) ؛ initRelayHysteresisController (2، DIG_PIN_RELAY_2، RELAY_TEMP_SET_POINT_2) ؛
xxx
الخطوة 3: وحدة تحكم التخلفية
إنه الخيار المختار في المثال أعلاه ، ويحتوي على عدد قليل من التكوينات الإضافية:
ثابت ثابت uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000 ؛ // 5 minutesconst ثابت uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000 ؛
يمنح RELAY_DELAY_AFTER_SWITCH_MS وقت انتظار لتبديل التتابع التالي. تخيل أن هذا التكوين من مثالنا سيبدأ العمل في بيئة 40 درجة. سيؤدي ذلك إلى تمكين المرحلات الثلاثة في نفس الوقت. قد يؤدي هذا في النهاية إلى ارتفاع استهلاك الطاقة - اعتمادًا على ما تتحكم فيه ، يستهلك المحرك الكهربائي على سبيل المثال مزيدًا من الطاقة أثناء بدء التشغيل. في حالتنا ، تحتوي مرحلات التبديل على التدفق التالي: يبدأ التتابع الأول ، وانتظر 5 دقائق ، والثاني يستمر ، وانتظر 5 دقائق ، والثالث يذهب.
يحدد RHC_RELAY_MIN_SWITCH_MS التباطؤ ، وهو الحد الأدنى للتردد لترحيل معين لتغيير حالته. بمجرد تشغيله ، سيظل قيد التشغيل لفترة قصيرة على الأقل هذه الفترة الزمنية ، متجاهلاً التغيرات في درجات الحرارة. هذا مفيد للغاية ، حيث أنك تتحكم في المحركات الكهربائية ، لأن كل مفتاح له تأثير سلبي على وقت الحياة.
الخطوة 4: وحدة تحكم PID
هذا موضوع متقدم. يعد تنفيذ وحدة التحكم هذه مهمة بسيطة ، وإيجاد إعدادات السعة الصحيحة قصة مختلفة.
من أجل استخدام وحدة تحكم PID ، يجب عليك تغيير initRelayHysteresisController (…..) إلى initRelayPiDController (….) وتحتاج إلى العثور على الإعدادات الصحيحة لها. كالعادة ستجدهم في Config.h
لقد قمت بتطبيق محاكي بسيط في Java ، بحيث يمكن تصور النتائج. يمكن العثور عليها في المجلد: pidsimulator. أدناه يمكنك مشاهدة عمليات المحاكاة لوحدتي تحكم PID و P. PID ليست مستقرة تمامًا لأنني لم أقم بتطبيق أي خوارزمية معقدة للعثور على القيم الصحيحة.
يتم ضبط درجة الحرارة المطلوبة في كلا القطعتين على 30 (أزرق). تشير درجة الحرارة الحالية إلى قراءة الخط. يحتوي التتابع على حالتين ON و OFF. عند تمكينه ، تنخفض درجة الحرارة بمقدار 1.5 ، وعند تعطيله ترتفع بمقدار 0.5.
الخطوة 5: ناقل الرسائل
يجب أن تتواصل وحدات البرامج المختلفة مع بعضها البعض ، ونأمل ألا يكون كلا الطريقتين ؛)
على سبيل المثال:
- يجب أن تعرف وحدة الإحصاء متى يتم تشغيل وإيقاف مرحل معين ،
- يؤدي الضغط على زر إلى تغيير محتوى العرض ، كما يتعين عليه تعليق الخدمات التي قد تستهلك العديد من دورات وحدة المعالجة المركزية ، على سبيل المثال قراءة درجة الحرارة من المستشعر ،
- بعد مرور بعض الوقت يجب تجديد قراءة درجة الحرارة ،
- وما إلى ذلك وهلم جرا….
كل وحدة متصلة بـ Message Bus ويمكنها التسجيل في أحداث معينة ، ويمكن أن تنتج أي أحداث (الرسم التخطيطي الأول).
في الرسم البياني الثاني يمكننا أن نرى تدفق الأحداث على زر الضغط.
تحتوي بعض المكونات على بعض المهام التي يجب تنفيذها بشكل دوري. يمكننا استدعاء طرقها المقابلة من الحلقة الرئيسية ، نظرًا لأن لدينا خدمة Message Bus ، فمن الضروري فقط نشر الحدث الصحيح (الرسم التخطيطي الثالث)
الخطوة 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
موصى به:
باب حظيرة الدجاج - على أساس الأردوينو: 5 خطوات (بالصور)
باب حظيرة الدجاج - مقره في Arduino: أولاً وقبل كل شيء ، لغتي الأم هي الهولندية ، لذا أعتذر عن الأخطاء الإملائية المحتملة. إذا لم يكن هناك شيء واضح ، اترك رسالة فقط في التعليقات ، هذا هو أول مشروع لي في اردوينو. نظرًا لأن زوجتي سئمت من فتح باب الحظيرة يدويًا كل يوم aga
مزيل الرطوبة Apple HomeKit Wi-Fi على أساس ESP8266؟: 6 خطوات (بالصور)
Apple HomeKit Wi-Fi Dehumidifier استنادًا إلى ESP8266؟: لسوء الحظ ، لا يوجد سوى واحد أو اثنين من أجهزة إزالة الرطوبة التي تدعم Apple HomeKit ، ولكن هذه الأسعار مرتفعة بالفعل (300 دولار +). لذلك قررت أن أجعل جهاز Apple HomeKit لإزالة الرطوبة قادرًا على Wi-Fi على أساس جهاز رخيص لدي بالفعل؟ أنا
بوابة لورا على أساس MicroPython ESP32: 10 خطوات (بالصور)
بوابة لورا استنادًا إلى MicroPython ESP32: لقد حظيت Lora بشعبية كبيرة في السنوات الأخيرة. عادة ما تكون وحدة الاتصالات اللاسلكية التي تستخدم هذه التقنية رخيصة (باستخدام الطيف الحر) ، وصغيرة الحجم ، وموفرة للطاقة ولها مسافة اتصال طويلة ، وتستخدم بشكل أساسي للتواصل المتبادل
روبوت تتبع اللون على أساس العجلة متعددة الاتجاهات و OpenCV: 6 خطوات
روبوت تتبع الألوان استنادًا إلى العجلة متعددة الاتجاهات و OpenCV: أستخدم هيكل عجلة متعدد الاتجاهات لتنفيذ تتبع الألوان الخاص بي ، وأستخدم برنامجًا للهاتف المحمول يسمى OpenCVBot. شكرا لمطوري البرمجيات هنا ، شكرا لك. يقوم OpenCV Bot في الواقع باكتشاف أو تتبع أي كائن في الوقت الحقيقي من خلال معالجة الصور
تتبع الضوء وتجنب الروبوت على أساس الأردوينو: 5 خطوات
تتبع الضوء وتجنب الروبوت استنادًا إلى Arduino: هذا مشروع بسيط يتبع الضوء أو يتجنبه ، لقد صنعت هذه المحاكاة في Proteus 8.6 pro المكونات المطلوبة: -1) Arduino uno.2) 3 LDR.3) 2 Dc Gear Motors. 4) واحد مؤازر 5) ثلاثة مقاومات 1 كيلو 6) جسر H واحد l290D7) واحد على & أمبير ؛ إيقاف التبديل [و