ترموستات اردوينو لتخزين البطاطس. ترموستات آخر على Arduino ، ولكن مع OpenTherm


تتمثل المهمة الرئيسية لوحدة التحكم في الثلاجة في الحفاظ على درجة الحرارة المحددة في الغرفة. سيتم ذلك عن طريق جهاز التحكم في درجة الحرارة عن طريق تغيير الطاقة الكهربائية في وحدة بلتيير.

في البرنامج التعليمي السابق ، قمنا بتطوير منظم طاقة. يبدو الاتصال بين منظمات الطاقة ودرجة الحرارة هكذا.

  • تستقبل وحدة التحكم في درجة الحرارة درجة الحرارة المقاسة ، وتقارنها بدرجة الحرارة المحددة وتحسب قيمة الطاقة المحددة لوحدة التحكم في الطاقة.
  • يولد منظم الطاقة PWM يتوافق مع الطاقة المعطاة.

قمنا ببناء منظم الطاقة وفقًا لقانون التنظيم المتكامل. لتحقيق الاستقرار في درجة الحرارة ، سوف نستخدم خوارزمية تحكم أكثر تعقيدًا - وحدة تحكم تفاضل نسبي متكامل (PID).

تحكم PID.

في البرنامج التعليمي السابق ، تحدثت عن. أبرز مزاياها وعيوبها.

المنظم الذي يعمل على هذا المبدأ دقيق للغاية. بقية معايير جودة الرقابة - الأداء والاستقرار - ليست على قدم المساواة.

من أجل تحقيق أداء عالٍ لجميع المعايير ، من الضروري استخدام منظم يجمع بين القوانين التنظيمية المختلفة.

مثل هذا الجهاز هو وحدة تحكم مشتق تكاملي (PID). يولد إشارة خرج هي مجموع ثلاثة مكونات ذات خصائص نقل مختلفة. بفضل هذا ، يوفر جهاز التحكم PID تحكمًا عاليًا في الجودة ويسمح لك بتحسين التحكم وفقًا للمعايير الفردية.

يشارك ما يلي في تشكيل إشارة خرج جهاز التحكم PID:

  • المكون النسبي- تتناسب القيمة مع خطأ عدم التطابق (الفرق بين القيم المحددة والقيم الحقيقية للمعامل المتحكم به).
  • دمج المكونهو جزء لا يتجزأ من خطأ عدم التطابق.
  • مكون التفريقهو مشتق من خطأ عدم التطابق.

الشكل الرياضي لكتابة قانون تحكم PID هو:

o (t) = P + I + D = K p e (t) + K i ∫e (t) dt + K d de (t) / dt

  • o (t) - إشارة الخرج ؛
  • P - المكون النسبي ؛
  • أنا - دمج المكون ؛
  • د - عنصر التمايز.
  • Kp و Ki و Kd - معاملات الروابط المتناسبة والمتكاملة والمتميزة ؛
  • ه (ر) - خطأ عدم تطابق.

في شكل تخطيطي ، يمكن تمثيل وحدة تحكم PID على النحو التالي.

يبدو مخطط كتلة منظم الجهد PID U هكذا.

  • يتم طرح الجهد المقاس Ureal (t) من Uset المحدد.
  • يتم تغذية خطأ عدم التطابق الناتج e (t) إلى الروابط التناسبية والتكاملية والمتميزة.
  • نتيجة لمجموع المكونات ، يتم الحصول على إجراء تحكم o (t) ، والذي يتم تغذيته إلى العنصر المنظم.

مع تنفيذ برنامج وحدة التحكم PID ، يتم حساب إشارة الخرج على فترات منتظمة. أولئك. المنظم منفصل في الوقت المناسب. لذلك ، سأستخدم أيضًا التعبيرات: حالة الإشارة السابقة ، القيمة السابقة ، إلخ. نحن نتحدث عن حالة النظام في النقطة السابقة في أخذ العينات الزمنية.

مكونات تحكم PID.

مرة أخرى. إشارة خرج جهاز التحكم PID هي مجموع ثلاثة مكونات:

  • متناسب؛
  • تكامل
  • التفريق.

المكون النسبي.

الفوسفور (ر) = البوتاسيوم * * ه (ر)

ليس له ذاكرة ، أي لا تعتمد قيمة إشارة الخرج على الحالة السابقة للنظام. ببساطة ، يتم إرسال خطأ عدم التطابق مضروبًا في عامل إلى الإخراج. تعوض إشارة الخرج عن انحراف المعلمة الخاضعة للرقابة. كلما زاد خطأ عدم التطابق ، زادت الإشارة. إذا كان الخطأ 0 ، فإن إشارة الخرج هي أيضًا 0.

المكون النسبي غير قادر على تعويض الخطأ تمامًا. يمكن ملاحظة ذلك من الصيغة. إشارة الخرج هي Kp مرات الخطأ. إذا كان الخطأ التالي يساوي 0 ، فإن إشارة خرج وحدة التحكم تساوي 0. وبعد ذلك لا يوجد شيء للتعويض.

لذلك ، في وحدات التحكم التناسبية ، يوجد دائمًا ما يسمى بالخطأ الثابت. يمكن تقليله عن طريق زيادة معامل Kp ، ولكن هذا يمكن أن يؤدي إلى انخفاض في استقرار النظام وحتى إلى التذبذبات الذاتية.

تشمل عيوب أجهزة التحكم التناسبية ما يلي:

  • وجود خطأ تنظيم ثابت ؛
  • ثبات منخفض مع زيادة في المعامل.

هناك ميزة كبيرة:

  • تنظيم السرعة العالية. استجابة وحدة التحكم التناسبية للخطأ التالي محدودة فقط بوقت أخذ العينات للنظام.

نادرًا ما يتم استخدام الهيئات التنظيمية التي تعمل بموجب القانون النسبي.

تتمثل المهمة الرئيسية للمكون النسبي في وحدة التحكم PID في تحسين الأداء.

دمج المكون.

أنا (t) = K i ∫e (t) dt

يتناسب مع تكامل خطأ عدم التطابق. مع الأخذ في الاعتبار التحفظ الزمني للجهة المنظمة ، يمكن للمرء أن يكتب على النحو التالي:

أنا (ر) = أنا (ر -1) + ك ط * ه (ر)

  • I (t-1) هي قيمة I عند نقطة أخذ العينات السابقة.

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

تشمل عيوب المنظم المتكامل ما يلي:

  • أداء منخفض
  • استقرار متوسط.

كرامة:

  • القدرة على التعويض الكامل عن خطأ عدم التطابق بأي مكسب.

من الناحية العملية ، غالبًا ما يتم استخدام وحدات التحكم المتكاملة (المكون المتكامل فقط) والتكامل النسبي (المكونات المتكاملة والتناسبية).

تتمثل المهمة الرئيسية للمتكامل في وحدة التحكم PID في تعويض الخطأ الثابت ، لضمان دقة تحكم عالية.

مكون التفريق.

D (t) = K d de (t) / dt

يتناسب مع معدل التغيير للخطأ التالي. نوع من مؤشر تسارع خطأ عدم التطابق. يتنبأ المكون المشتق بانحرافات المعلمة الخاضعة للرقابة في المستقبل ويقاوم هذا الانحراف. كقاعدة عامة ، فإنه يعوض عن التأخير في تأثير المنظم على الكائن ويزيد من استقرار النظام.

مع الأخذ في الاعتبار الاختلاف الزمني لوحدة التحكم ، يمكن حساب مكون التفاضل على النحو التالي:

د (ر) = ك د * (ه (ر) - ه (ر -1))

يوضح مدى تغير قيمة خطأ عدم التطابق في وحدة زمنية واحدة لتقدير وحدة التحكم.

لا توجد جهات تنظيمية تتكون من رابط تفاضل واحد.

تتمثل المهمة الرئيسية للمفرق في وحدة التحكم PID في زيادة الاستقرار.

ضبط تحكم PID.

تعتمد جودة تنظيم منظمات PID إلى حد كبير على مدى كفاءة المعاملات. يتم تحديد معاملات تحكم PID في الممارسة العملية في نظام مع كائن حقيقي عن طريق التحديد. هناك تقنيات ضبط مختلفة. سأتحدث فقط عن المبادئ العامة.

يتم الحكم على جودة التنظيم من خلال الاستجابة العابرة للهيئة التنظيمية. أولئك. وفقًا لجدول التغييرات في المعلمة الخاضعة للرقابة بمرور الوقت.

بالنسبة للنقاط التقليدية لتسلسل ضبط وحدة التحكم PID ، أود أن أضيف أنه ، أولاً وقبل كل شيء ، من الضروري تحديد معايير جودة التنظيم المفضلة.

في الدرس السابق ، عند تصميم منظم طاقة ، كنا مهتمين بالدرجة الأولى بالدقة والاستقرار. وحتى أننا خفضنا الأداء بشكل مصطنع. تعمل بعض المنظمين في ظروف تداخل كبير ويعتبر الاستقرار أكثر أهمية بالنسبة لهم ، بينما يتطلب البعض الآخر أداءً عاليًا حتى على حساب الدقة. قد تختلف معايير التحسين. بشكل عام ، يتم ضبط وحدات التحكم PID لضمان أن تكون جميع معايير أداء التحكم عالية.

يتم ضبط مكونات جهاز التحكم PID بشكل منفصل.

  • يتم تعطيل عامل التكامل والمفاضلة ويتم تحديد الكسب النسبي. إذا كان المنظم يتكامل نسبيًا (لا يوجد رابط تمييز) ، فسيتم تحقيق الغياب التام للتذبذبات في الخاصية العابرة. عندما يتم ضبط المنظم على سرعة عالية ، قد تظل التذبذبات. سيحاول رابط التمايز تعويضهم.
  • ارتباط التمايز متصل. يميل معاملها إلى إزالة التقلبات في معامل التنظيم. إذا فشلت ، يتم تقليل العامل النسبي.
  • بسبب ارتباط الدمج ، تتم إزالة خطأ عدم التطابق المتبقي.

يعد ضبط وحدة التحكم PID تكراريًا. أولئك. يمكن تكرار نقاط اختيار المعاملات عدة مرات حتى يتم تحقيق نتيجة مقبولة.

نظرًا لأدائها العالي وتعدد استخداماتها ، تُستخدم وحدات التحكم PID على نطاق واسع في أنظمة الأتمتة الصناعية.

في الدرس التالي ، سنطور جهاز التحكم في درجة الحرارة PID.

يسمح لك الرسم التخطيطي لمنظم الحرارة رباعي القنوات محلي الصنع مع عرض درجة الحرارة ، والمبني على أساس Arduino UNO ، LM325 وشاشة 1602A ، بالتحكم في أربعة أحمال منفصلة.

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

تم وصف تشغيل مقياس حرارة رباعي القنوات وبرنامجه بتفصيل كبير في المقالة السابقة (L.1) ، لذلك سنتحدث هنا فقط عن التغييرات لتنفيذ تشغيل ترموستات رباعي القنوات.

رسم تخطيطى

يظهر الرسم التخطيطي في الشكل 1.

أرز. 1. رسم تخطيطي لمنظم حرارة على Arduino UNO ، LM325 مع شاشة 1602A.

على عكس الدائرة الأولى (L.1) ، هناك أربعة مفاتيح ترانزستور محملة على لفات الترحيل K1-K4 ، والتي تتحكم في أربعة أجهزة تسخين مختلفة (H1-H4). تأتي أوامر التحكم لهذه المفاتيح من أربعة منافذ رقمية D9-D12 من لوحة ARDUINO UNO.

برنامج

يظهر البرنامج في الجدول 1.

الجدول 1.

الاختلاف الأول هو أن المنافذ معدة للتحكم في السخانات. هذه منافذ D9-D12 ، تم تعريفها هنا:

pinMode (12 ، الإخراج) ؛

pinMode (11 ، الإخراج) ؛

pinMode (10 ، الإخراج) ؛

pinMode (9 ، الإخراج) ؛

يمكنك تحديد منافذ رقمية مجانية أخرى ، بعد توصيل المؤشر لا يزال هناك D8 و D13. لكن المؤلف اختار هذه: D9 ، D10 ، D11 ، D12. الاختلاف الثاني هو أن المقارنة إذا تم استخدام الوظيفة للتحكم في السخانات. ضمن الصفوف:

إذا (temp< -15)digitalWrite(12, HIGH);

إذا كانت (درجة الحرارة> -15) كتابة رقمية (12 ، منخفضة) ؛

إذا (tempi< 1)digitalWrite(11, HIGH);

if (tempi> 1) digitalWrite (11، LOW) ؛

إذا (temp2< 20)digitalWrite(10, HIGH);

if (temp2> 20) digitalWrite (10، LOW) ؛

إذا (temp3< 10)digitalWrite(9, HIGH);

if (temp3> 10) digitalWrite (9، LOW)؛

تشير هذه الخطوط إلى درجة الحرارة ، ما هو المستوى المنطقي الذي يجب أن يكون على المنفذ المقابل. على سبيل المثال ، عندما تكون درجة حرارة المستشعر الأول (T1) أقل من -15 درجة مئوية ، سيكون منفذ D12 وحدة منطقية. عندما تكون درجة حرارة المستشعر الثاني (T2) أقل من 1 درجة مئوية ، سيكون منفذ D11 وحدة منطقية.

عندما تكون درجة حرارة المستشعر الثالث (ТЗ) أقل من 20 درجة مئوية ، ستكون هناك وحدة منطقية في منفذ D10. عندما تكون درجة حرارة المستشعر الرابع (T4) أقل من 10 درجات مئوية ، سيكون منفذ D9 وحدة منطقية. بالطبع ، يمكن ضبط درجات الحرارة والاختلاف تمامًا - أي ما هو مطلوب للتطبيق المحدد لهذا الجهاز.

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

عادة ، في منظم الحرارة "النموذجي" توجد حلقة تباطؤ ، أي دائرة تخلق الفرق بين درجة حرارة تشغيل السخان ودرجة حرارة إيقاف تشغيله. يعد ذلك ضروريًا حتى لا يتم تشغيل / إيقاف تشغيل السخان كثيرًا. هذا مهم بشكل خاص إذا تم التحكم في السخان بواسطة مرحل كهرومغناطيسي.

لأن جهات اتصال الترحيل ليست مصممة لمثل هذا الوضع التشغيلي ، ويمكن أن تفشل بسرعة من الاحتراق بسبب الانحناء. لكن التباطؤ يتسبب في حدوث خطأ في تشغيل منظم الحرارة. هنا تقرر عدم التباطؤ ، ولكن من أجل عدم تبديل جهات اتصال الترحيل كثيرًا ، ما عليك سوى إبطاء تشغيل الجهاز. للقيام بذلك ، في السطر:

زاد وقت العرض إلى ثلاث ثوان. نتيجة لذلك ، تتكرر القياسات لمدة ثلاث ثوانٍ ، وعلى أي حال ، لا يمكن تبديل التتابع أكثر من مرة واحدة كل ثلاث ثوانٍ.

تفاصيل

يمكن استخدام المرحلات الكهرومغناطيسية K1-K4 مع أي لفات واتصالات بجهد 12 فولت قوية بما يكفي للتحكم في سخانات معينة.

يمكن إجراء مراحل الإخراج وفقًا لمخططات أخرى ، على سبيل المثال ، على البصريات الغامضة. في هذه الحالة ، يتم توصيل المنافذ المقابلة للوحة ARDUINO UNO عبر مقاومات تحد من التيار ، أو مصابيح LED لمحاكيات البصريات أو ما يسمى "مرحلات الحالة الصلبة".

كارافكين ف.ر.ك -08-17.

الأدب: 1. Karavkin V. - ميزان حرارة رباعي القنوات على ARDUINO UNO ، RK-06-17.

لنبدأ ببناء شيء بسيط على Arduino. الخامس الفصل الثاني عشرلقد اخترعنا بالفعل منظمات الحرارة بمكونات تمثيلية بحتة. الآن دعنا نرى كيف يمكنك إشراك التكنولوجيا الرقمية في هذا العمل المفيد.

لقد ذكرنا بالفعل (انظر. الفصل 18) أن وحدات تحكم AVR تتضمن ADC متعدد القنوات 10 بت. على لوحات Arduino ، يتم تمييز دبابيسها بشكل خاص كمدخلات تمثيلية (بالحرف أبأرقام من صفر إلى خمسة). لاحظ أنه يمكن استخدامها كأرقام رقمية عادية بأرقام من 14 إلى 18 ، وسوف نستخدمها بهذه السعة. سنستخدم أحد هذه المدخلات لقياس درجة الحرارة ، وسنتحكم في توصيل الحمل من أحد المخرجات الرقمية.

المجموع الذي نحتاجه:

□ لوحة Arduino Uno (أي لوحة أخرى ستفعل ذلك أيضًا) ؛

لدي الثرمستور كمستشعر درجة الحرارة. على سبيل المثال ، القائمة

□ "Amperke" B57164-K 103-J بمقاومة اسمية تبلغ 10 كيلو أوم عند 25 درجة مئوية - خصائصها معطاة في الفصل 13كتوضيح لخصائص الثرمستورات ؛

مقاومة متغيرة 10 كيلو أوم ، مقاوم ثابت 620 أوم ؛

□ مرحل تنفيذي - كهرومغناطيسي (بالضرورة مع مفتاح ترانزستور مضخم ، انظر أدناه) أو الحالة الصلبة.

هناك وحدات في السوق تعتمد على مرحلات كهرومغناطيسية بجهد 5 فولت ، تم تكييفها خصيصًا للتحكم من مخرجات Arduino. تتطلب المرحلات الكهرومغناطيسية نفسها تيار تحكم كبير إلى حد ما (والأكثر من ذلك ، أنه كلما زادت قوة المرحل - فقط معظم مرحلات الريشة منخفضة الطاقة يمكن أن تعمل مباشرة من المنطق) ، وبالتالي ، في جميع وحدات الترحيل هذه ، هناك بالضرورة تبديل تضخيم الترانزستور. على سبيل المثال ، تبيع Amperka مثل هذه الوحدة بناءً على مرحل HLS8L - DC5V - S - C. إذا كان التتابع الكهرومغناطيسي لا يناسبك ، وتسعى جاهدًا للحصول على أقصى بساطة للدائرة ، فيمكنك البحث عن مرحلات الحالة الصلبة - على سبيل المثال ، Crydom CX240D5R أو ما شابه ذلك بجهد استجابة 3-15 فولت. لديها تيار تحكم يبلغ حوالي 15 مللي أمبير عند 5 فولت لكل إدخال ، وهو أمر مقبول بالنسبة لـ AVR ، لأنه يمكن توصيل مدخلات التحكم الخاصة بهم بالدبوس الرقمي في Arduino مباشرة. صحيح ، بجهد 220 فولت ، لا يمكن لـ CX240D5R تبديل حمل بقوة تزيد عن كيلووات ، لكننا لا نحتاج إلى المزيد في هذه المهمة.

تظهر دائرة ترموستات Arduino Uno في الشكل. 21.2.

أرز. 21.2. دائرة الترموستات تعمل اردوينو اونو

في الرسم التخطيطي ، يتم توصيل ملف المرحل K1 (مع جهات الاتصال المفتوحة عادةً) بشكل تقليدي مباشرةً بالإخراج الرقمي لـ Arduino - من المفهوم أن هذا هو مرحل الحالة الصلبة المذكور سابقًا بالخصائص المطلوبة ، أو ببساطة إدخال التحكم في لوحة وحدة التتابع النهائية. لمراقبة حالة الدائرة ، يتم تنشيط LED بالتزامن مع السخان. برنامج الثرموستات وفقًا لمخطط مماثل بسيط للغاية:

تتوافق قيم المقاوم مع الثرمستور B57164 - K المحدد بمقاومة اسمية تبلغ 10 kΩ عند 25 درجة مئوية (103 - J). وفقًا للبرنامج ، سيعمل المرحل بالقرب من القيمة عند إخراج ADC ، والتي تساوي 500. هذا تقريبًا منتصف نطاق 10 بت (المقياس بأكمله هو 1024 تدرجًا) ، أي ، سيتم إنشاء هذه القيمة عندما تكون المقاومات العلوية والسفلية مساوية تقريبًا لمدخل AO (سيكون الجهد عند هذا الإدخال حوالي 2.5 فولت).

يرجى ملاحظة أن كلا الوظيفتين لولا تنتهي مع المعتاد آخر... لمنع الارتداد ، تم إدخال التباطؤ في البرنامج: يتم تشغيل التتابع عندما يتم تجاوز قيمة الرمز 510 ، ويتم إيقاف تشغيله عندما تنخفض إلى القيمة 490. في غضون ذلك ، سيحتفظ بحالته السابقة. عشرون وحدة رمز (ما هو موجود في الفصل الثاني عشرلقد اتصلنا منطقة شديدة الخطورة) تقابل ما يقرب من 10 مللي فولت ، أي أن التباطؤ عند درجة حرارة في حدود 30-40 درجة سيكون أقل بقليل من عُشر درجة (تحقق بنفسك باستخدام الجدول 13.1 من الفصل 13).

ضبط درجة حرارة الاستجابة باستخدام المقاوم R2 بهذه المعلمات ممكن في النطاق من حوالي 22 إلى 96 درجة مئوية. بالطبع ، من الناحية العملية ، فإن نطاق التعديل الواسع هذا غير مطلوب ، لذلك يُنصح بتقليل قيمة R2. يتم تحديد قيمة R1 بحيث تضيف R1 والقيمة الاسمية لـ R2 إلى مقاومة الثرمستور بالقيمة الأقل لنطاق درجة الحرارة المطلوب (وفقًا للجدول 13.1). للحصول على ملاءمة أكثر دقة ، يمكنك معايرة قيم العتبة وتغييرها في البرنامج عن طريق قياس درجة حرارة الحالة المستقرة باستخدام مقياس حرارة تقليدي.

إذا كنت تستخدم مستشعرات أخرى في هذه الدائرة ، فلا تنسَ علامة معامل درجة الحرارة. الصمام الثنائي العادي أو الترانزستور في وصلة الصمام الثنائي (كما في الدوائر من الفصل 13) لها أيضًا ميل سلبي للخاصية ، لذلك بالنسبة لهم فقط يجب تغيير القيم العددية لعتبة المشغل في البرنامج. لكن مجسات أشباه الموصلات من النوع TMP35 (انظر. الفصل 13) أو موازين الحرارة المقاومة المعدنية فقط (كما في تصميم الفصل السابع عشر) لها معامل درجة حرارة موجب ، لذلك يجب عكس ظروف الزناد. علاوة على ذلك ، لا تقوم فقط بتغيير "أكثر" إلى "أقل" والعكس صحيح ، ولكن أيضًا قم بتغيير نسبة عتبات التباطؤ - في حالة جديدة ، سيتعين تشغيل السخان إذا كانت القيمة أقل من الحد الأدنى ، و إيقاف إذا كان أكثر من أكبر.

سيشاركك تجربة إنشاء وحدة تحكم ذكية في سرعة المروحة ، بمشاركة مستشعر درجة الحرارة ، وشاشة LCD ، وبالطبع Arduino.

قبل عدة أشهر قرأت عددًا من المقالات حول Arduino وأصبحت مهتمًا جدًا بهذا الجهاز ، وسرعان ما قررت شراء واحدة. وتجدر الإشارة إلى أنني بعيد كل البعد عن الإلكترونيات الدقيقة ، لذا فقد فاز المجلس أولاً وقبل كل شيء بسهولة استخدامه النسبية. بعد أن انغمس في استخدام مصابيح LED و "أهلًا بالعالم" ، أردت أن أفعل شيئًا عمليًا ، وفي نفس الوقت للتعرف بمزيد من التفاصيل على إمكانيات Arduino. مع الأخذ في الاعتبار صيف عام 2010 الحار بشكل غير طبيعي ، نشأت فكرة تجميع وحدة تحكم في سرعة البرودة اعتمادًا على درجة الحرارة مع عرض جميع الخصائص ذات الصلة على شاشة LCD. آمل أن يكون هذا المخطط أو أشكاله مفيدًا لشخص ما ، لذلك قررت أن أنشر رسوماتي التخطيطية.

بالنسبة لهذا المخطط ، نحتاج إلى:

  • المجلس نفسه اردوينوأو ما يعادلها؛
  • لوح الخبزلتجميع مكونات الدائرة ؛
  • شاشة WH1601A-NGG-CT مزودة بأداة تهذيب 20 كيلو أومأو مشابه؛
  • المقاومات - 220 أوم, 10 كيلو أوم, 4.7 كيلو أوم;
  • الترانزستور ثنائي القطب SS8050Dأو مشابه؛
  • جهاز استشعار درجة الحرارة الرقمية DS18B20 ؛
  • الصمام الثنائي 1N4148أو ما يعادلها؛
  • المعجبثلاثة أسلاك محورية (12V) ، على سبيل المثال - الكمبيوتر ؛
  • موصل المقبس تغذية 2.1 / 5.5 ملم.

مبرد الكمبيوتر لديه ثلاثة أسلاك، اثنان منها - الأحمر (+ 12V) والأسود (GND) يستخدمان لإمداد الطاقة ، والثالث (الأصفر) متصل بمقياس سرعة الدوران المبني على عنصر Hall. لسوء الحظ ، من الواضح أن 5V من اللوحة ليست كافية بالنسبة لنا ، لكن المخرجات الرقمية الستة لـ Arduino يمكن أن تعمل في وضع PWM (يتم تمييزها على اللوحة نفسها بمربعات بيضاء ، أو أحرف PWM) ، حتى نتمكن من تنظيم الإشارة من اللوحة إلى المرحل ، والتي ستكون مسؤولة عن تغيير الجهد المزود للمروحة.

سوف نتلقى معلومات حول سرعة الدوران في الدقيقة من السلك الثالث من مقياس سرعة الدوران ، باستخدام طريقة معدلة بناءً على التنفيذ المقاطعات، والتي في معظم Arduinos يمكن أن تصل إلى المسامير الرقمية 2 (المقاطعة 0) و 3 (المقاطعة 1). بالمناسبة ، يحتوي Arduino Mega على 4 دبابيس إضافية مع إمكانية استقبال المقاطعات.

الآن أنت بحاجة إلى الموقف جهاز استشعار درجة الحرارة الرقمية، البيانات التي سنستخدمها لتنظيم الجهد المزود للإخراج الرقمي باستخدام PWM ، وبالتالي "لفتح" قناة جهد المروحة. بالنسبة لأجهزة استشعار دالاس ، توجد مكتبة Arduino الخاصة بها - DallasTemperature ، والتي سنقوم بتوصيلها لاحقًا في المخطط. يجب تفريغ المكتبة في دليل arduino-0018 / libraries /.

بقي شيء أخير - توصيل شاشات الكريستال السائل، حيث سنعرض جميع المعلومات الحالية حول درجة الحرارة وسرعة المروحة. نظرًا لأنني استخدمت شاشة WH1601A للتجميع ، فقد تكون هناك مشكلات معروفة في عرض السلسلة. للقضاء عليها ، سنستخدم مكتبة LiquidCrystalRus ، والتي يجب أيضًا فك حزمها في دليل arduino-0018 / libraries /.

// قم بتوصيل المكتبة بجهاز الاستشعار الحراري#يشمل // قم بتوصيل المكتبة لشاشات الكريستال السائل#يشمل #define PowerPin 9 // دبوس للتحكم في طاقة المروحة#define HallSensor 2 // دبوس لمستشعر سرعة المروحة (مقاطعة)#define TempPin 7 // دبوس لمستشعر درجة الحرارة LiquidCrystalRus lcd (12 ، 11 ، 10 ، 6 ، 5 ، 4 ، 3) ؛ // Connect LCD DallasTemperature tempSensor ؛ int NbTopsFan ، Calc ، fadeValue ؛ // المتغيرات الصحيحة للحساباتتعويم المزاج // متغير حقيقي لتخزين درجة الحرارةهيكل typedef ( // أدخل نوعًا جديدًا من المتغيرات للجماهيرفانتايب شار غير موقعة fandiv ؛ ) fanpec ؛ // مجموعة متغيرات من النوع الجديد fanpec fanspace = ((0،1)، (1،2)، (2.8)) ؛ // المتغير المسؤول عن اختيار نوع مستشعر المروحة (1 - مستشعر القاعة أحادي القطب ، 2 - مستشعر القاعة ثنائي القطب)مروحة شار = 2 ؛ // سيتم استدعاء هذه الوظيفة لنا في كل مقاطعةدورة في الدقيقة باطلة () (NbTopsFan ++ ؛) // وظيفة لحساب الجهد المطبق على دبوس رقمي باستخدام PWMدرجة حرارة الفراغ () (fadeValue = min (int (Temper * 7)، 255) ؛ // اضرب درجة الحرارة بعامل // خذ عددًا صحيحًا من المنتج } // لأن الحد الأقصى لقيمة PWM هو 255 ، ثم لم يعد من المنطقي التغذية - نأخذ اثنين على الأقلفارغ اقامة() (tempSensor.begin (TempPin) ؛ // قم بتشغيل مستشعر درجة الحرارة lcd.begin (16 ، 2) ؛ // ضبط خصائص شاشة LCD lcd.setDRAMModel (LCD_DRAM_WH1601) ؛ // ونوع العرض pinMode (HallSensor ، INPUT) ؛ // تكوين دبوس لتلقي المقاطعات attachInterrupt (0، rpm، RISING) ؛ // نربط المقاطعة عند الرقم 0 بوظيفتنا ، وسيتم حسابها في كل مرة تتغير فيها الإشارة) فارغ حلقة() (مزاج = tempSensor.getTemperature () ، // احصل على درجة الحرارةمؤقت ()؛ // احسب الجهد المطبق على PWM analogWrite (PowerPin ، fadeValue) ؛ // إطعامها NbTopsFan = 0 ؛ // صفر المتغير الذي يحتوي على الثوراتتأخير (1000) ؛ // انتظر ثانية واحدة احسب = ((NbTopsFan * 60) /fanspace.fandiv) ؛ // احسب rpm في 60 ثانية مقسومًا على مضاعف المروحة lcd.print (احسب ، ديسمبر) ؛ // عرض القيمة المحسوبة في شكل عشري lcd.print ("rpm -") ؛ lcd.print (المزاج) ؛ // عرض درجة الحرارة lcd.home () ؛ )

عند قراءة الجزء الأول من العنوان ، ربما اعتقد الكثير منكم - ترموستات آخر على Arduino الذي طالت معاناته. و ... هذا صحيح - نعم ، هذا منظم حرارة آخر لمرجل آخر ، ومنزل آخر ، لكنه صحيح جزئيًا فقط - في المقالة لا أريد التركيز على الجهاز نفسه - هناك الكثير منهم (مقالات) . بلا شك ، سأصف منظم الحرارة ، لكني أود أن أتحدث أكثر عن كيفية توصيل وحدة التحكم الدقيقة بنفسي بالغلاية. لذا ، من يهمه الأمر - من فضلك ...

كيف بدأ كل شيء

بادئ ذي بدء ، أود أن أقول إنني لست مبرمجًا على الإطلاق وليس لدي أي علاقة بمتحكم دقيق حقيقي. كان تعارفي الأول مع MK AVR (وفي الواقع مع MK) في المدرسة الثانوية ، عندما أردت أن أعرف كيف يعمل هذا الشيء الغامض. لقد قرأت العديد من المقالات ومنذ ذلك الحين في ذاكرتي لم يكن لدي سوى أجزاء يمكن وصفها بكلمتين فقط - DDR و PORT - وهذا هو المكان الذي انتهت فيه معرفتي. ثم كانت هناك جامعة ، السنة الخامسة - "برمجة ميكروكنترولر" حيث تعرفنا جميعًا على MSC51 في بيئة افتراضية. كانت هناك مقاطعات ومؤقتات وكل شيء آخر. حسنًا ، مع مثل هذا الكم من المعرفة ، جئت إلى المشكلة. دعنا ننتهي من هذه المذكرة الذاتية وننتقل إلى الجزء الأكثر إثارة للاهتمام.

لذا ، في الواقع ، كيف بدأ إنشاء منظم الحرارة - بعد تثبيت التدفئة المستقلة بغلاية غاز ، واجهت ، مثل الكثيرين ، المشاكل المعتادة - كانت درجة الحرارة في المنزل تعتمد بشكل كبير على الطقس بالخارج - الصقيع - إنها كذلك بارد في الشقة ، تحتاج إلى زيادة درجة حرارة المبرد في البطاريات ، فقد أصبحت أكثر دفئًا - على العكس من ذلك. هذه الرقصات مع الدف لم تناسبني كثيرًا ، TK. كان تعديل الغلاية معقدًا لأنه تم تثبيته خلف الباب ، وكان الباب مدعومًا بفرن ميكروويف ، حيث كانت توجد كومة من القمامة. حسنًا ، لقد فهمت الفكرة - إبرة في بيضة ، بيضة في بطة ، إلخ.

تم حل هذه المشكلة بكل بساطة - باستخدام مستشعر OTC (تعويض درجة الحرارة الخارجية) ، المتصل بالغلاية ويسمح لها بضبط درجة حرارة المبرد تلقائيًا اعتمادًا على درجة الحرارة الخارجية. يبدو أن المشكلة قد تم حلها ، ولكن قراءة دليل الخدمة الخاص بالغلاية (Ferolli Domiproject C24D) سرعان ما داست أملي - لم يتم توفير توصيل مستشعر درجة حرارة خارجي في هذا النموذج. كل شىء؟ كل شىء. والآن ، على الأرجح ، سيكون من الممكن الانتهاء ، لكن في الصيف في غلاية أثناء عاصفة رعدية ، لا تزال لوحة التحكم تحترق بطريقة غير مفهومة بالنسبة لي ، وأتحدث إلى رجل الخدمة (تم إصلاح اللوحة لاحقًا) سئل عما إذا كان من الممكن توصيل OTC بالمرجل الخاص بي؟ أجاب أنهم كانوا متصلين باستخدام منظمات الحرارة الخارجية. لقد علقت في ذاكرتي ، لكنني لم أركز عليها حقًا حتى بداية الطقس البارد ، ثم استمرت المشكلة نفسها.

من خلال نفس دليل الخدمة ، ولكن بهدف معرفة كيفية توصيل منظم الحرارة ، لاحظت أن "منظم OpenTherm" متصل بنفس المحطات. ثم أدركت - ها هو! أزعجني بحث Google عن "OpenTherm Arduino" مرة أخرى - لا شيء منطقي بشكل خاص. كان هناك جهاز مراقبة للرسائل ، لكن هذا ليس - ليس لدي ما أستمع إليه - أنا بحاجة إلى منظم حرارة.