أهلاً بكم مجدداً , حان الوقت الآن للتحدث عن الأوامر التناظرية Analogue read/write و عن التعديل النبضي PWM .
تكمن أهمية المرابط التناظرية أنها تسمح لنا بإمكانية قراءة المتغيرات الخارجية و أشارات الخرج للعديد من الحساسات والنواقل Sensors and Transducer لعمل معالجة لهذه الإشارات و تحويلها لقيم مفهمومة لنا .
تقنية التعديل النبضي PWM تقنية شائعة في مجال الإتصالات و في التحكم بالمحركات و نظم الإنارة و التحكم بالفولتية بشكل عام.
سأحاول توضيح هذا المبدأ بأسلوب سهل و سأقوم بعمل تجربة بسيطة عليه باستخدام البواعث الضوئية و سأدمج معه الترانزستور الذي تحدث عنه في وقت سابق في المدونة.
ما هو الPWM و كيف نستفيد من أمكانياته و طريقة دمجه مع بيئة أردوينو ؟
في موقع أردوينو الرسمي , يعطى التعريف المبسط التالي للتعديل النبضي على أنه :
إعطاء أوامر خرج تناظرية (Write )للمربط, يمكن استخدامها لتشغيل البواعث الضوئية LED بسطوع مختلفة في أو قيادة المحركات بسرعات مختلفة.
عند استدعاء analogWrite ()، يقوم المربط بتوليد موجة مربع ثابت من دورة عمل محدده , تردد إشارة PWM هو حوالي 490 هرتز.
لمزيد من البساطة، PWM، هو أسلوب للحصول على نتائج تشابهية Analogue بطرق رقمية.
هنا موضوع مشابه عن التحكم النبضي , يمكن قراءته و الأستفادة من المعلومات الواردة فيه .
و السؤال الذي يتبادر لإذهاننا ..هل يمكننا استخدام المرابط الرقمية في المتحكم AVR لتوليد PWM ؟؟
الجواب هو نعم ! على الرغم من أن توليد موجات نبضيةPWM يتولد أساساً من المرابط التناظرية "في المتحكمات ATmega328,ATmega168 من A0-A5 في بطاقة الأردوينو أو بشكل أدق من خلال PORT C بشكل عام " إلا أنه يمكن توليدها من عدة مرابط رقمية محددة ألا وهي (3،5،6،9،10،11 ) سترى علامةّ ~ بجانب المرابط التي تدعم هذا الخيار على بطاقة الأردوينو .
قيمة دورة التشغيل Duty cycle بين 0 -255 .
تكفي هذه المعلومات الآن لبدأ البرمجة و تنفيذ الدارة بسيطة لرؤية كيفية عمل هذه التقنية
تكمن أهمية المرابط التناظرية أنها تسمح لنا بإمكانية قراءة المتغيرات الخارجية و أشارات الخرج للعديد من الحساسات والنواقل Sensors and Transducer لعمل معالجة لهذه الإشارات و تحويلها لقيم مفهمومة لنا .
تقنية التعديل النبضي PWM تقنية شائعة في مجال الإتصالات و في التحكم بالمحركات و نظم الإنارة و التحكم بالفولتية بشكل عام.
سأحاول توضيح هذا المبدأ بأسلوب سهل و سأقوم بعمل تجربة بسيطة عليه باستخدام البواعث الضوئية و سأدمج معه الترانزستور الذي تحدث عنه في وقت سابق في المدونة.
ما هو الPWM و كيف نستفيد من أمكانياته و طريقة دمجه مع بيئة أردوينو ؟
في موقع أردوينو الرسمي , يعطى التعريف المبسط التالي للتعديل النبضي على أنه :
إعطاء أوامر خرج تناظرية (Write )للمربط, يمكن استخدامها لتشغيل البواعث الضوئية LED بسطوع مختلفة في أو قيادة المحركات بسرعات مختلفة.
عند استدعاء analogWrite ()، يقوم المربط بتوليد موجة مربع ثابت من دورة عمل محدده , تردد إشارة PWM هو حوالي 490 هرتز.
لمزيد من البساطة، PWM، هو أسلوب للحصول على نتائج تشابهية Analogue بطرق رقمية.
هنا موضوع مشابه عن التحكم النبضي , يمكن قراءته و الأستفادة من المعلومات الواردة فيه .
و السؤال الذي يتبادر لإذهاننا ..هل يمكننا استخدام المرابط الرقمية في المتحكم AVR لتوليد PWM ؟؟
الجواب هو نعم ! على الرغم من أن توليد موجات نبضيةPWM يتولد أساساً من المرابط التناظرية "في المتحكمات ATmega328,ATmega168 من A0-A5 في بطاقة الأردوينو أو بشكل أدق من خلال PORT C بشكل عام " إلا أنه يمكن توليدها من عدة مرابط رقمية محددة ألا وهي (3،5،6،9،10،11 ) سترى علامةّ ~ بجانب المرابط التي تدعم هذا الخيار على بطاقة الأردوينو .
قيمة دورة التشغيل Duty cycle بين 0 -255 .
تكفي هذه المعلومات الآن لبدأ البرمجة و تنفيذ الدارة بسيطة لرؤية كيفية عمل هذه التقنية
ماذا سنحتاج لتنفيذ التجربة؟
1) بطاقة أردوينو.
2) بواعث ضوئية LED على الأقل 3
3)ترانزستور "أختياري"
4)مقاومات (أي قيمة من 100 - 510 أوم تصلح للتجربة)
5) اسلاك توصيل
6) لوحة تعليمية مثقوبة Breadboard
مخطط الدارة موضح كما في الصورة
يمكن ربط مدخل أردوينو مباشرة مع LED واحد مباشرة مع مقاومة و توصيله بالأرضي في حال عدم الرغبة في استعمال الترانزستور
كود البرنامج موجود أدناه :
/* Fading This example shows how to fade an LED using the analogWrite() function. Created 1 Nov 2008 By David A. Mellis modified 30 Aug 2011 By Tom Igoe http://arduino.cc/en/Tutorial/Fading This example code is in the public domain. */ int ledPin = 3; // LED connected to digital pin 3 int ledPin2 = 5;// LED connected to digital pin 5 int ledPin3 = 6;// LED connected to digital pin 6 void setup() { // nothing happens in setup } void loop() { // fade in from min to max in increments of 5 points: for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { // sets the value (range from 0 to 255): analogWrite(ledPin, fadeValue); analogWrite(ledPin2, fadeValue); analogWrite(ledPin3, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } // fade out from max to min in increments of 5 points: for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { // sets the value (range from 0 to 255): analogWrite(ledPin, fadeValue); analogWrite(ledPin2, fadeValue); analogWrite(ledPin3, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } }
analogWrite(ledPin, Value);
التطبيق سهل أليس كذلك ؟
في المستقبل القريب سأدرج تحت هذا البند عدة مشاريع مرتبطة بهذه التقنية لنرى الميزات و التطبيقات التي يمكننا فعلها بواسطته.
تحية طيبة للجميع .
لكن كيف يمكنني التحكم في كهرباء البيت مثلا لمبة متوصله بالريلاي
ردحذفأقرأ هنا .
حذفhttp://www.genotronex.com/2013/07/relay.html
شكراً لك من المانيا اخي !! كانت رائعة !!
ردحذف