الخميس، 11 أبريل، 2013

المتحكم الأصغري ATTINY 85

  المتحكم الأصغري ATTINY85 


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

المتحكم الأصغري  
ATTINY85 من شركة اتميل Atmel له فقط 8 أرجل , بذاكرة فلاش 8Kbyte و وحدة معالجة مركزية 8 bit   , و الجدول أدناه يبين المواصفات القياسية لهذا المتحكم :



و يمكن التعرف على المواصفات الكاملة له من خلال زيارة موقع الشركة على هذا الرابط ATMEL



ما سنهتم به اليوم هو توصيل هذا المتحكم و برمجته ضمن بيئة أردوينو البرمجية Arduino IDE .

في البداية توزيع أرجل لهذا المتحكم :



 و بالنسبة للمسميات في لغة أردوينو , توزيع الأرجل يعطى في هذا المخطط :


  • المعدات التي سنحتاجها لهذه التجربة :

ستحتاج لتنفيذ هذه التجربة إلى :
1) بطاقة اردوينو " uno, deumilinova  " 

2) المتحكم ATTINY 85 
3)مكثف 10uF .
4) Breadboard .
5)اسلاك توصيل Solderless jumper .



لنبدأ :

سنقوم في هذه التجربة بتحويل بطاقة الأردوينو Uno إلى مبرمجة   تقوم من خلالها بتحميل البرنامج إلى 
ATTINY 85  .

البروتوكول المستخدم لهذا الغرض هو SPI .

في تجربة اليوم يجب أن تستخدم نسخة برمجية الأردوينو 1.0.1 او 1.0.3  لكي تنفذ التجربة بشكل صحيح .

في البداية يجب عليك تحميل هذا الملف الذي يحتوي على تعريف المتحكمين ATTINY 45/85 من هنا  

قم بفك ضغط هذا الملف و قم بنسخ المجلد الموجود بداخله الذي اسمه attiny و قم بوضعه ضمن مسار الSketchbook الخاص بالأردوينو  في مجلد قم بانشاءه و تسميته ب hardware " ستجده في جهازك في العنوان







 My document >>Arduino >>hardware>>attiny

بعد ذلك قم بفتح برمجية الأردوينو و اذهب إلى خيار 
tools >> Board 

 و سترى وجود الملفات التي اضفتها مؤخراً في القائمة 

بعد ذلك نقوم بتحويل بطاقة الأردوينو إلى مبرمجة ArduinoAs ISP , و تحميل برنامج arduino ISP .



هذا البرنامج يحول الأردوينو إلى مبرمجة , يستخدم ايضاً في حالة تنزيل برنامج الإقلاع Bootloader لمتحكم آخر .


إذا كنت تستخدم أردوينو UNO قم فقط بتعديل التأخير الزمني في الجملة heartbeat من 40 إلى 20 "في الإصدارات الحديثة تم وضعها 20 بشكل تلقائي " .




عدّل اعدادات البرنامج التالية
Board : Arduino Uno"or what you work with"
programmer: arduino as ISP .


بعدها قم بتحميل البرنامج على بطاقة الأردوينو , و انتقل لمرحلة توصيل بطاقة الأردوينو .

لا تنسى توصيل مكثف 10uF  بين مدخل الRESET و الGND




بعد أن تقوم بتوصيل القطع كما في المخطط , افتح برنامج Blink.ino و قم بتغيير رقم المدخل من 13 إلى 0 كما هو مكتوب في المثال ادناه .
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin D0 on Attiny 85 
//Modified by Mohannad Rawashdeh

//http://genotronex.blogspot.com/
//...................................
int led = 0;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

غيّر اعدادات البرنامج لتصبح
Board : ATTINY 85(Internal 8MHz).
programmer: arduino as ISP .

ثم قم بتحميل البرنامج , ستظهر النتائج لك كما في الفيديو .

لا تهتم للرسالة التي ستظهر اسفل الشاشة .

و هذا برنامج fade ايضاً قمت بتعديله ليناسب الattiny .
/*
 Fade
 
 This example shows how to fade an LED on pin 9
 using the analogWrite() function.
 
 This example code is in the public domain.
 
// Pin D0 on Attiny 85 
//Modified by Mohannad Rawashdeh
//http://genotronex.blogspot.com/
//...................................
*/
int led = 0;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  { 
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
} 

// the loop routine runs over and over again forever:
void loop()  { 
  // set the brightness of pin 9:
  analogWrite(led, brightness);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade: 
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}

هذا الفيديو يظهر نتائج تطبيق البرنامجين :



مميزات و محددات الATTINY85 :


من أهم المميزات التي يمكن لنا اكتشافها في هذا المتحكم :

1)عدد مداخل و مخارج كبير بالنسبة لعدد الأرجل "لها 6 I/O و هذا رقم كبير " .

2) وجود 4 مرابط Pins تعمل كمقاطعات خارجية .
3)وجود الرابط التسلسلي I2C و SPI .
)استهلاك منخفض للطاقة .


على الرغم من الميزات التي ذكرناها عن هذه القطعة إلا أن هناك عدة محددات لهذا المتحكم هي :


1)محدودية  ذاكرة الفلاش التخزينية  ذات مساحة 8kbyte  .
2)تعطيل بعض الأوامر و عدم عملها في هذا المتحكم .
3)  تتم برمجته بواسطة الSPI فلا وجود للسيريال فيه Serial Rx,Tx. 

هنالك عدة اوامر لا يستطيع هذا المتحكم ترجمتها و يعطي Error عند كتابة البرنامج بهذه الاوامر .
الأوامر التي يدعمها هذا المتحكم  ضمن بيئة اردوينو البرمجية :


SoftwareSerial (has been updated in Arduino 1.0)


باقي الأوامر قد لا تعمل أو تتوافق مع هذا المتحكم .

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

الى اللقاء 

5 التعليقات :

  1. ما شاء الله اخي مهند موضوع متكامل ومفيد جزاك الله خيرا

    ردحذف
  2. شكراً لك سلطان على المرور الرائع .

    ردحذف
  3. اين تباع فى مصر وكم سعرها ؟

    ردحذف
  4. في مصر لا أعلم أين لكن في الأردن لدي محل ألكترونيات تباع فيه هذه القطعة .

    للتواصل معي أذا اردت هذه القطعة Genotronex@gmail.com

    ردحذف
  5. note:you must burn the bootloader first befor upload first app for clear error
    :)

    ردحذف

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