- ADC0804 و Raspberry Pi:
- مستشعر درجة الحرارة LM35:
- المكونات المطلوبة:
- شرح الدائرة والعمل:
- شرح البرمجة:
لقد غطينا في الغالب جميع المكونات الأساسية التي تتفاعل مع Raspberry Pi في سلسلة دروس Raspberry Pi. لقد قمنا بتغطية جميع البرامج التعليمية بطريقة بسيطة ومفصلة ، بحيث يمكن لأي شخص ، سواء كان يعمل مع Raspberry Pi أم لا ، التعلم من هذه السلسلة بسهولة. وبعد الاطلاع على جميع البرامج التعليمية ، ستتمكن من إنشاء بعض المشاريع عالية المستوى باستخدام Raspberry Pi.
لذلك نحن هنا نصمم التطبيق الأول بناءً على البرامج التعليمية السابقة. أول تطبيق أساسي هو درجة حرارة غرفة القراءة بواسطة Raspberry Pi. ويمكنك مراقبة القراءات على الكمبيوتر.
كما تمت مناقشته في الدروس السابقة ، لا توجد قنوات ADC متوفرة داخليًا في Raspberry Pi. لذلك إذا أردنا واجهة أي مستشعرات تناظرية ، فنحن بحاجة إلى وحدة تحويل ADC. وفي أحد برامجنا التعليمية لدينا شريحة Interfaced ADC0804 إلى Raspberry Pi لقراءة قيمة تناظرية. لذا قم بالمرور عليها قبل بناء ميزان حرارة الغرفة هذا.
ADC0804 و Raspberry Pi:
ADC0804 عبارة عن شريحة مصممة لتحويل الإشارة التناظرية إلى بيانات رقمية 8 بت. هذه الشريحة هي واحدة من سلاسل ADC الشعبية. إنها وحدة تحويل 8 بت ، لذلك لدينا قيم أو من 0 إلى 255 قيمة. يتغير دقة هذه الشريحة بناءً على الجهد المرجعي الذي نختاره ، وسنتحدث أكثر عنه لاحقًا. أدناه هو Pinout من ADC0804:
الآن شيء مهم آخر هنا هو أن ADC0804 يعمل بجهد 5 فولت وبالتالي فهو يوفر خرجًا في إشارة منطقية 5 فولت. في خرج 8 سنون (يمثل 8 بت) ، يوفر كل دبوس خرج + 5 فولت لتمثيل المنطق '1'. لذا فإن المشكلة تكمن في أن منطق PI هو + 3.3 فولت ، لذلك لا يمكنك إعطاء منطق + 5V إلى + 3.3V GPIO pin الخاص بـ PI. إذا أعطيت + 5V لأي دبوس GPIO من PI ، فإن اللوحة تتلف.
لذلك ، من أجل مستوى منطق التنحي من + 5 فولت ، سنستخدم دائرة مقسم الجهد. لقد ناقشنا دائرة مقسم الجهد التي نظرت إليها مسبقًا لمزيد من التوضيح. ما سنفعله هو أننا نستخدم مقاومين لتقسيم منطق + 5V إلى منطق 2 * 2.5V. إذن بعد القسمة سنعطي + 2.5v منطق لـ PI. لذلك ، كلما تم تقديم المنطق "1" بواسطة ADC0804 ، سنرى + 2.5V في PI GPIO Pin ، بدلاً من + 5V.
مستشعر درجة الحرارة LM35:
الآن لقراءة درجة حرارة الغرفة ، نحتاج إلى جهاز استشعار. هنا سنستخدم مستشعر درجة الحرارة LM35. تقاس درجة الحرارة عادة بـ "مئوية" أو "فهرنهايت". يوفر مستشعر "LM35" خرجًا بدرجة مئوية.
كما هو مبين في الشكل ، LM35 عبارة عن جهاز يشبه الترانزستور ثلاثي المسامير. يتم ترقيم الدبابيس كـ ،
PIN1 = Vcc - الطاقة (متصل بـ + 5 فولت)
PIN2 = إشارة أو خرج (متصل بشريحة ADC)
PIN3 = أرضي (متصل بالأرض)
يوفر هذا المستشعر جهدًا متغيرًا عند الخرج ، بناءً على درجة الحرارة. لكل +1 درجة مئوية ارتفاع في درجة الحرارة سيكون هناك + 10mV أعلى الجهد عند دبوس الإخراج. لذلك إذا كانت درجة الحرارة 0 درجة مئوية ، فسيكون خرج المستشعر 0 فولت ، وإذا كانت درجة الحرارة 10 درجات مئوية ، فسيكون خرج المستشعر + 100 مللي فولت ، وإذا كانت درجة الحرارة 25 درجة مئوية ، فسيكون خرج المستشعر + 250 مللي فولت.
المكونات المطلوبة:
نحن هنا نستخدم Raspberry Pi 2 Model B مع نظام التشغيل Raspbian Jessie OS. تمت مناقشة جميع متطلبات الأجهزة والبرامج الأساسية مسبقًا ، يمكنك البحث عنها في مقدمة Raspberry Pi ، بخلاف ما نحتاج إليه:
- ربط دبابيس
- 1KΩ المقاوم (17 قطعة)
- 10 كيلو وعاء
- 0.1 درجة فهرنهايت مكثف
- مكثف 100 درجة فهرنهايت
- مكثف 1000 درجة فهرنهايت
- ADC0804 إيك
- مستشعر درجة الحرارة LM35
- مجلس الخبز
شرح الدائرة والعمل:
تظهر التوصيلات التي تم إجراؤها لتوصيل Raspberry بـ ADC0804 و LM35 في مخطط الدائرة أدناه.
ناتج LM35 به الكثير من تقلبات الجهد ؛ لذلك يتم استخدام مكثف 100 فائق التوهج لتنعيم الإخراج ، كما هو موضح في الشكل.
يحتوي ADC دائمًا على الكثير من الضوضاء ، ويمكن أن تؤثر هذه الضوضاء بشكل كبير على الأداء ، لذلك نستخدم مكثف 0.1 فائق التوهج لترشيح الضوضاء. بدون هذا سيكون هناك الكثير من التقلبات في الإنتاج.
تعمل الرقاقة على ساعة مذبذب RC (المقاوم-المكثف). كما هو موضح في الرسم البياني للدائرة ، تشكل C2 و R20 ساعة. الشيء المهم الذي يجب تذكره هنا هو أنه يمكن تغيير المكثف C2 إلى قيمة أقل لزيادة معدل تحويل ADC. ولكن مع السرعة العالية سيكون هناك انخفاض في الدقة. لذلك إذا كان التطبيق يتطلب دقة أعلى ، فاختر المكثف بقيمة أعلى وللسرعة الأعلى اختر المكثف بقيمة أقل.
كما ذكرنا سابقًا ، يوفر LM35 + 10mV لكل درجة مئوية. أقصى درجة حرارة يمكن قياسها بواسطة LM35 هي 150 درجة مئوية. لذلك سيكون لدينا 1.5 فولت كحد أقصى عند طرف إخراج LM35. لكن الجهد المرجعي الافتراضي لـ ADC0804 هو + 5 فولت. لذلك إذا استخدمنا هذه القيمة المرجعية ، فستكون دقة الإخراج منخفضة لأننا سنستخدم حدًا أقصى (5 / 1.5) 34 ٪ من نطاق الإخراج الرقمي.
لحسن الحظ ، يحتوي ADC0804 على دبوس Vref قابل للتعديل (PIN9) كما هو موضح في مخطط Pin أعلاه. لذلك سنضبط Vref للرقاقة على + 2V. لضبط Vref + 2V ، نحتاج إلى توفير جهد + 1V (VREF / 2) عند PIN9. نحن هنا نستخدم وعاء 10K لضبط الجهد عند PIN9 إلى + 1V. استخدم الفولتميتر للحصول على الجهد الدقيق.
لقد استخدمنا سابقًا مستشعر درجة الحرارة LM35 لقراءة درجة حرارة الغرفة باستخدام Arduino ومع متحكم AVR. تحقق أيضًا من قياس الرطوبة ودرجة الحرارة باستخدام Arduino
شرح البرمجة:
بمجرد توصيل كل شيء وفقًا لمخطط الدائرة ، يمكننا تشغيل PI لكتابة البرنامج في PYHTON.
سنتحدث عن بعض الأوامر التي سنستخدمها في برنامج PYHTON ،
سنقوم باستيراد ملف GPIO من المكتبة ، وتمكننا الوظيفة أدناه من برمجة دبابيس GPIO في PI. نقوم أيضًا بإعادة تسمية "GPIO" إلى "IO" ، لذلك في البرنامج عندما نريد الإشارة إلى دبابيس GPIO ، سنستخدم كلمة "IO".
استيراد RPi.GPIO كـ IO
في بعض الأحيان ، عندما تقوم دبابيس GPIO ، التي نحاول استخدامها ، ببعض الوظائف الأخرى. في هذه الحالة ، سوف نتلقى تحذيرات أثناء تنفيذ البرنامج. يخبر الأمر أدناه PI بتجاهل التحذيرات ومتابعة البرنامج.
تحذيرات IO.set (خطأ)
يمكننا إحالة دبابيس GPIO الخاصة بـ PI ، إما عن طريق رقم التعريف الشخصي على اللوحة أو عن طريق رقم وظيفتها. مثل "PIN 29" على السبورة هو "GPIO5". لذلك نقول هنا إما أننا سنمثل الدبوس هنا بـ "29" أو "5".
IO.setmode (IO.BCM)
نحن نضع 8 دبابيس كدبابيس إدخال. سنكتشف 8 بت من بيانات ADC بواسطة هذه المسامير.
IO.setup (4، IO.IN) IO.setup (17، IO.IN) IO.setup (27، IO.IN) IO.setup (22، IO.IN) IO.setup (5، IO.IN) IO.setup (6، IO.IN) IO.setup (13، IO.IN) IO.setup (19، IO.IN)
في حالة صحة الشرط في الأقواس ، سيتم تنفيذ التعليمات داخل الحلقة مرة واحدة. لذا إذا ارتفع رقم التعريف الشخصي GPIO pin 19 ، فسيتم تنفيذ العبارات الموجودة داخل حلقة IF مرة واحدة. إذا لم يرتفع دبوس GPIO 19 ، فلن يتم تنفيذ العبارات داخل حلقة IF.
إذا (IO.input (19) == صحيح):
يتم استخدام الأمر أدناه كحلقة إلى الأبد ، باستخدام هذا الأمر ، سيتم تنفيذ التعليمات الموجودة داخل هذه الحلقة بشكل مستمر.
بينما 1:
يوجد شرح إضافي للكود في قسم الكود أدناه.
بعد كتابة البرنامج حان الوقت لتنفيذه. قبل تنفيذ البرنامج ، دعنا نتحدث عما يحدث في الدائرة على شكل ملخص. يكتشف مستشعر LM35 الأول درجة حرارة الغرفة ويوفر جهدًا تناظريًا عند خرجه. يمثل هذا الجهد المتغير درجة الحرارة خطيًا مع + 10mV لكل C. يتم تغذية هذه الإشارة إلى شريحة ADC0804 ، وتحول هذه الشريحة القيمة التناظرية إلى قيمة رقمية مع 255/200 = 1.275 عدد لكل 10 مللي فولت أو 1.275 عدد لدرجة 1 يتم أخذ هذا العدد بواسطة PI GPIO. يقوم البرنامج بتحويل العد إلى قيمة درجة الحرارة ويعرضها على الشاشة. يتم عرض درجة الحرارة النموذجية التي يقرأها PI أدناه ،
ومن ثم نحن جهاز مراقبة درجة الحرارة Raspberry Pi.