ابتكارات يومية

تعتيم LED وأكثر من ذلك: PWM على Raspberry Pi

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




ما هو PWM؟

كما هو الحال في المصطلحات، يبدو “تعديل عرض النبضة” خياليًا للغاية. ولكن كل ما نتحدث عنه هنا حقًا هو إيقاف تشغيل إشارة كهربائية وتشغيلها مرة أخرى بسرعة كبيرة. لماذا قد نرغب في القيام بذلك؟ ببساطة لأنه طريقة سهلة للغاية لمحاكاة إشارة تناظرية متغيرة، دون اللجوء إلى Raspberry Pi HATs أو الإضافات أو الدوائر الإضافية. بالنسبة لتطبيقات معينة، مثل تسخين الموقد أو تشغيل محرك أو تعتيم مصباح LED، لا يمكن تمييز إشارة PWM حرفيًا عن الجهد التناظري “الحقيقي”.

دورات العمل

لذا، لدينا سلسلة من النبضات يتم إدخالها في الحمل (الشيء الذي نقوده). هذا وحده ليس مفيدًا تمامًا – حتى نبدأ في تغيير (أو تعديل) عرض تلك النبضات. يمكن أن تستغرق مرحلة “التشغيل” لفترة تشغيل وإيقاف معينة أي مكان من 0 إلى 100% من الدورة الإجمالية. نطلق على هذه النسبة المئوية دورة العمل.


على سبيل المثال، لنفترض أن لدينا إشارة PWM بقوة 3 فولت ودورة عمل 50%. سيكون متوسط ​​كمية الطاقة التي تمر عبر الصمام الثنائي الباعث للضوء معادلاً لإشارة تعمل دائمًا بقوة 1.5 فولت. قم بزيادة دورة العمل، وسيصبح الصمام الثنائي الباعث للضوء أكثر سطوعًا؛ قم بتقليلها، وسيصبح الصمام الثنائي الباعث للضوء خافتًا. يمكننا توليد الصوت باستخدام نفس الطريقة – وهذا هو السبب في أن خرج الصوت على Raspberry Pi قد يتوقف عن العمل إذا كنت تستخدم PWM لأشياء أخرى.

رسم توضيحي متحرك لموجة PWM

أقرأ ايضا  كيفية إعداد Raspberry Pi الخاص بك كخادم ويب

PWM على Raspberry Pi

يمكنك استخدام PWM البرمجي على كل دبوس GPIO في Raspberry Pi. لكن PWM المادي متاح فقط على GPIO12، GPIO13، GPIO18، و GPIO19.


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

وبالتالي، غالبًا ما تكون فكرة تفويض المهمة إلى دوائر متخصصة فكرة أفضل. في حالة Raspberry Pi، توجد هذه الدوائر داخل النظام على الشريحة التي تحتوي على وحدة المعالجة المركزية. غالبًا ما يكون PWM للأجهزة أكثر دقة وراحة، وبالتالي فهو الخيار المفضل في معظم الحالات. إذا كنت تريد فكرة عما يحدث تحت الغطاء في شريحة Broadcom BCM2711 الخاصة بـ Raspberry Pi 4، فيمكنك إلقاء نظرة على توثيق BCM2711. الفصل الثامن يغطي أشياء PWM!


تعتيم الصمام الثنائي الباعث للضوء (LED)

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

حساب قيمة المقاومة

لا يهم أي طرف من الصمام الثنائي الباعث للضوء تقوم بتوصيل المقاوم به. ما يهم هو قيمة المقاوم. يمكن لجهاز Raspberry Pi 4 توفير حوالي 16 مللي أمبير لكل دبوس. لذا، يمكننا استخدام قانون أوم لحساب قيمة المقاوم المطلوب.

ينص القانون المذكور على أن المقاومة يجب أن تساوي الجهد على التيار. نحن نعلم الجهد الخارج من دبوس GPIO الخاص بـ Pi (3.3 فولت)، ونعلم ما يجب أن يكون عليه التيار (16 مللي أمبير، أو 0.016 أمبير). إذا قسمنا الأول على الأخير، نحصل على 206.25. الآن، نظرًا لأنك ستواجه صعوبة في العثور على مقاومات بهذه القيمة، فلننتقل إلى 220 أوم بدلاً من ذلك.

أقرأ ايضا  أيهما الأفضل لمشروعك؟


قم بتوصيل أنود الصمام الثنائي الباعث للضوء (الساق الطويلة) بـ منفذ الإدخال والإخراج العام 18 (وهو الدبوس المادي 12 على Raspberry Pi). قم بتوصيل الكاثود (الساق القصيرة) بأي من دبابيس التأريض في Raspberry Pi. لا تنسَ المقاوم، في مكان ما على طول المسار. أنت الآن جاهز للانطلاق!

مخطط فريتزينج لدائرة LED الخاصة بجهاز Raspberry Pi

تنفيذ PWM على Raspberry Pi

لتشغيل PWM للأجهزة على Raspberry Pi، سنستخدم مكتبة rpi-hardware-pwm من Cameron Davidson-Pilonمقتبس من الكود بواسطة جيريمي ايمبسونوقد تم استخدام هذا في المفاعل الحيوي (مفاعل حيوي يعتمد على باي) – ولكنه بسيط بما فيه الكفاية لأغراضنا.

أولاً، دعنا نقوم بتحرير ملف config.txt الملف الموجود في /التمهيد الدليل. نحتاج فقط إلى إضافة سطر واحد: dtoverlay=pwm-2chanإذا أردنا استخدام دبابيس GPIO بخلاف 18 و19، فيمكننا إضافة بعض الوسائط الإضافية هنا. في الوقت الحالي، دعنا نبقي الأمور بسيطة.


أعد تشغيل جهاز Pi الخاص بك وقم بتشغيل:

lsmod | grep pwm 

يسرد هذا الأمر جميع الوحدات النمطية المحملة على الجزء المركزي من نظام التشغيل، والذي يسمى النواة. هنا، نقوم بتصفية هذه الوحدات النمطية للعثور على الأشياء الخاصة بـ PWM فقط، باستخدام جرب (هذا هو أمر “طباعة التعبير العادي العالمي”).

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

sudo pip3 install rpi-hardware-pwm 

نحن الآن جاهزون للبدء.

امرأة تعمل على حاسوبها الشخصي وفقًا لمعايير ISO

أقرأ ايضا  Immich هو بديل رائع لـ Google Photos يمكنك استضافته على Raspberry Pi

برمجة دائرة LED PWM

حان الوقت لنبدأ في تعلم القليل من البرمجة بلغة بايثون. قم بتشغيل Thonny وانسخ الكود التالي. ثم اضغط على يجري.


from rpi_hardware_pwm import HardwarePWM
import time
pwm = HardwarePWM(pwm_channel=0, hz=60)
pwm.start(0)
for i in range(101):
    pwm.change_duty_cycle(i)
    time.sleep(.1)
pwm.stop()

إذا سارت الأمور على ما يرام، فسوف ترى أن مؤشر LED يصبح أكثر سطوعًا تدريجيًا حتى أنا يصل المتغير المضاد إلى 100. ثم سيتم إيقافه. ماذا يحدث هنا؟ دعنا نتعرف عليه.

نحن نقوم باستيراد الجزء ذي الصلة من مكتبة PWM للأجهزة (جنبًا إلى جنب مع وقت الوحدة النمطية) وإعلان متغير جديد. يمكننا ضبط قناة pwm إلى 0 أو 1، والتي تتوافق على التوالي مع دبابيس GPIO 18 و19 على Pi.

ال هرتز يمكننا ضبط القيمة على أي تردد نريده (على الرغم من أننا في النهاية مقيدون بسرعة ساعة Pi). عند 60 هرتز، لا ينبغي أن نرى أي وميض PWM. ولكن قد تكون فكرة جيدة أن تبدأ بقيمة منخفضة للغاية (مثل 10) ثم ترفعها تدريجيًا. افعل ذلك وستتمكن بالفعل من رؤية النبضات تحدث. لا تأخذ كلامنا فقط!


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

هناك المزيد لنتعلمه مع PWM

تهانينا! لقد كتبت أول برنامج PWM الخاص بك. ولكن، كما هو الحال غالبًا مع Raspberry Pi، هناك الكثير مما يمكنك القيام به بهذه الأشياء، خاصةً إذا قمت بتزويد Raspberry Pi بـ PWM HAT المناسب. لذا، لا تكتفِ بمصباح LED صغير. يمكنك استخدام هذه الطاقة الجديدة للتحكم في المحركات وتشفير الرسائل وتوليد نغمات التوليف. عالم من التعديل في انتظارك!


اكتشاف المزيد من موقع قلم ورقم

اشترك للحصول على أحدث التدوينات في بريدك الإلكتروني.

اترك رد

زر الذهاب إلى الأعلى

اكتشاف المزيد من موقع قلم ورقم

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading

أنت تستخدم إضافة Adblock

لكي تتمكن من قراءة المقال يرجى ازالة مانع الاعلانات لديك واعمل تحديث للصفحة.