السبت، 24 نوفمبر، 2012

التعديل النبضي PWM

أهلاً بكم مجدداً , حان الوقت الآن للتحدث عن الأوامر التناظرية 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 .

تكفي هذه المعلومات الآن لبدأ البرمجة و تنفيذ الدارة بسيطة لرؤية كيفية عمل هذه التقنية

ماذا سنحتاج لتنفيذ التجربة؟

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); 

التطبيق سهل أليس كذلك ؟ 


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

تحية طيبة للجميع .


3 التعليقات :

  1. لكن كيف يمكنني التحكم في كهرباء البيت مثلا لمبة متوصله بالريلاي

    ردحذف
    الردود
    1. أقرأ هنا .

      http://www.genotronex.com/2013/07/relay.html

      حذف
  2. شكراً لك من المانيا اخي !! كانت رائعة !!

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.