الجمعة، 14 فبراير، 2014

التعديل النبضي في الأردوينو ديو Arduino DUE

التعديل النبضي في الأردوينو ديو Arduino DUE

Arduino DUE PWM






التعديل النبضي PWM من أهم التقنيات التي تستخدم في التطبيقات العملية المختلفة للتحكم بالفولتية المطبقة على الأحمال "كالمحركات الكهربائية او البواعث الضوئية LED " و تحدث سابقاً في موضوعين منفصلين في المدونة عن هذه التقنية نظراً لاهميتها .

في النسخ التقليدية من الأردوينو التي تستعمل معالجات AVR MCU تتفاوت قدرات و عدد المنافذ Ports التي تدعم التعديل النبضي , فالأردوينو أونو يدعم 6 منافذ , و الأردوينوليوناردو 7 منافذ و الميجا 15 منفذ , و بترددات مختلفة , الأردوينو ديو DUE فيها 12 منفذ يدعم التعديل النبضي PWM


ما يميزها عن الأصدارات التقليدية هي مقدرتنا على استعمال أكثر من منفذ للتعديل النبضي في آن واحد Multiple PWM و بتردد أعلى من باقي بطاقات الأردوينو التي تحتوي معالجات AVR

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

في بداية هذه السلسلة تحدثت عن ان الفولتية التي تعمل عندها الأردوينو ديو هي 3.3فولت و ليس 5 فولت , أي انها تعطي فولتية عظمى من منافذها لا تتجاوز ال 3.3 فولت , في نفس الوقت تيار هذه المنافذ قليل جداً و قد لا يتجاوز 3mA في بعض المنافذ "كالمنفذ D2,D13 "  و الرسم التوضيحي التالي يبين هذه القيم  .



لذلك يفضل دائماً توصيل Transistor لأي منفذ Port من منافذ الأردوينو حتى نحافظ على المنفذ من التلف .


في هذه التجربة سنحتاج إلى :

1)بطاقة اردوينو ديو Arduino DUE

2)بواعث ضوئية LED عدد 6
3)مقاومات 470 اوم 

4)ترانزستور 2n2222 أو ما يكافئه"اختياري"
5)اسلاك توصيل jumper

6) BreadBoard .




يمكن توصيل الدارة كما في المخطط ادناه :


في الحالة العادية يكون طول المبدل التماثلي الرقمي ADC يساوي 8 بت"يمكن تعديله باستخدام الأمر

 analogWriteResolution()

البرنامج 
//Arduino DUE CODE FOR Blink 3 LEDs
//Mohannad Rawashdeh
//http://www.genotronex.com/
//This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
//..................................
//if you download advancedFunctions library and Uncommnt this line
//#include "advancedFunctions.h"
#include <Scheduler.h>
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(3,OUTPUT);
pinMode(6,OUTPUT);
pinMode(9,OUTPUT);
//set ADC Resolution at 12bit , 4095 max
analogWriteResolution(12);
//if you download advancedFunctions library and Uncommnt this line
//wdt.disable();
Scheduler.startLoop(loop2);
Scheduler.startLoop(loop3);
}

void loop() {
  // put your main code here, to run repeatedly: 
  analogWriteResolution(12);
  for(int i=0;i<4095;i++){
  analogWrite(3,i);
  delay(5);
}
}
void loop2(){
  for(int i=4095;i>0;i--){
  analogWrite(6,i);
  delay(8);
}
}
void loop3(){
  int value=random(0,4095);
  analogWrite(9,value);
  delay(500);

yield();
}



في حال استخدام الترانزستور "يفضل استخدامه" يكون التوصيل كالآتي :

البرنامج :
//Arduino DUE CODE FOR Blink 1 LEDs using transistor
//Mohannad Rawashdeh
//http://www.genotronex.com/
//This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
//..................................
//if you download advancedFunctions library and Uncommnt this line
//#include "advancedFunctions.h"
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(3,OUTPUT);
//set ADC Resolution at 12bit , 4095 max
analogWriteResolution(12);
//if you download advancedFunctions library and Uncommnt this line
//wdt.disable();
}

void loop() {
  // put your main code here, to run repeatedly: 
  analogWriteResolution(12);
  for(int i=0;i<4095;i++){
  analogWrite(3,i);
  delay(5);
}
}



بالنسبة للتردد الخارج , في الأردوينو ديو اعطى على راسم الأشارة تردد 1كيلو هيرتز "مقارب لما تعطيه الأردوينو ليوناردو " 

و الفيديو أدناه يوضح التطبيق العملي لهذا البرنامج  , تحياتي 



0 التعليقات :

إرسال تعليق

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