الخميس، 12 ديسمبر، 2013

الدارة المتكاملة TLC5940

LED Driver TLC5940




تعتبر TLC5940 من أنتاج Texas instrument  دارة متكاملة ذات استعمالات متعددة نظراً لعدد المخارج الكبير و قدرة المربط الواحد على تصريف التيار , كما أنها تتمتع بميزة PWM  ب 12Bit أي من (0-4095) خطوة .




استعمالات هذه القطعة متعددة , فتستخدم لقيادة البواعث الضوئية و أيضاً للمحركات servo و حتى في قيادة المرحّلات الكهربائية Relay .




سنعطي لمحة بسيطة اليوم عن قدرات هذه الدارة المتكاملة الجبّارة ذات ال16 مخرج و سنقتصر على ذكر استخدامها مع الLED البواعث الضوئية .



نظرة عامة على الدارة :



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











سنأخذ أهم المعلومات عن هذه الدارة بالأضافة لشرح عن كل مربط منها  و سنأخذ تعليب DIP  ذو ال28 رجلاً:




تعمل على إطفاء كل المخارج عندما تكون في وضعيةHIGH
و عندما تكون LOW يتم التحكم بالمخارج بواسطة PWM
23
Blank
تحول الدارة لوضعية الdc input  عندما تكون LOW
سمضعها دائماً HIGH و لن نستعمل هذا الوضع
19
DCPRG
تأريض الدارة
22
GND
مرجع الساعة لل PWM
18
GSCLK
مربط تحديد التيار , يربط معاه مقاومة تحدد التيار
20
IREF
ساعة الإزاحة التسلسلي
25
SCLK
مدخل البيانات التسلسلي
26
SIN
مخرج بيانات تسلسلي
17
SOUT
هذا المربط مسؤول عن تحديد وضع العمل للدارة "HIGH,LOW,Vprg "
27
VPRG
خرج الخطأ , يستخدم لمعرفة إذا ما كان هناك باعث ضوئي معطل أو خلل في التوصيل , حيث ينتقل الخرج لLOW عندها .
16
XERR
ماسك البيانات للمسجلات
24
XLAT
المخارج  للدارة و عددها 16 مخرج
تعمل لمصرف للتيار Current sink  .
28,
1-15
OUT (0-15)


سنحتاج بداية ل القطع التالية : 



1) بطاقة أردوينو 
2)بواعث ضوئية LED  عدد 32 
3)مقاومات ( 10كيلو *2  و  3كيلو اوم*2)
4)الدارة المتكاملة TLC5940 عدد 2
5)اسلاك توصيل 
6)لوحة تعليمية Breadboard


التوصيل :

هنا التوصيل لهذه الدارة مع الأردوينو


البرنامج :

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

هذه المكتبة تسهل العمل و تجعل كتابة الكود أسهل .

بعدما تقوم بتحميل الملف الخاص بالمكتبة قم بفك ضغطه ووضعه في العنوان التالي :

<Arduino Folder>/hardware/libraries/ 


سنشرح أهم التعليمات في هذه المكتبة :

حتى نضيف المكتبة يجب علينا أولاً كتابة الكود التالي :

#include "Tlc5940.h" 

هذا الأمر يجعل المكتبة فعّاله .

في جملة التثبيت void setup نقوم بكتابة ...

Tlc.init(); 

هذه ضرورية لتهيئة المتحكم للعمل ...
أمر آخر ...

Tlc.clear(); 

يقوم هذا الأمر بتصفير جميع المخارج " ضمنياً داخل المكتبة يقوم بتحويل مربط الBlank إلى حالة 1 منطقي HIGH .

أما الأمر الذي يجعلنا قادرين على تحديد أي مربط سنظهر عليه الخرج هو :

Tlc.set(PIN, intensity ); 

حيث :

PIN:المربط المراد إظهار الخرج عليه "من 0-15 "

intensity:عبارة عن قيمة شدة الخرج وهي من 0-4095

و تعبر عن PWM وهذا الوضع يسمى Grayscale PWM .

و لن يتم تحميل البيانات على المتحكم و عرضها إلا إذا تم كتابة الأمر :

Tlc.update(); 

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

هناك أمر أخير يجب توضيحه قبل البدء , ما هي قيمة R التي سنضعها بين مصدر الجهد و IREF ؟

من النشرة الفنية نعرف أن القانون العام لتحديد التيار المار في كل مخرج من المخارج ال16 تعطى بالمعادلة :


أنا أريد تحديد قيمة تيار كل مخرج ب13 ملي امبير إذن سأحتاج لمقاومة قيمتها 3 كيلو أوم . و هكذا يمكنك تحديد التيار و المقاومة لهذه الدارة .


  البرنامج :
/*

    -  Put the longer leg (anode) of the LEDs in the +5V and the shorter leg
         (cathode) in OUT(0-15).
    -  +5V from Arduino -> TLC pin 21 and 19     (VCC and DCPRG)
    -  GND from Arduino -> TLC pin 22 and 27     (GND and VPRG)
    -  digital 3        -> TLC pin 18            (GSCLK)
    -  digital 9        -> TLC pin 24            (XLAT)
    -  digital 10       -> TLC pin 23            (BLANK)
    -  digital 11       -> TLC pin 26            (SIN)
    -  digital 13       -> TLC pin 25            (SCLK)
orginal Code : Alex Leone <acleone ~AT~ gmail.com>, 2009-02-03 
modified by : Mohannad Rawashdeh
http://www.genotronex.com

*/
#include "Tlc5940.h"

void setup()
{
  /* Call Tlc.init() to setup the tlc.
     You can optionally pass an initial PWM value (0 - 4095) for all channels.*/
  Tlc.init();
}

void loop()
{
  for (int i = 0; i < 16; i ++) {//Make each led Turn On for 200ms
    Tlc.clear();
    Tlc.set(i , 4000);
    Tlc.update();
    delay(200);
  }
  
  // fade all led channal 
  for (int j = 0 ; j<4095 ;j++) {
  for (int k = 0; k < 16; k ++) {  
    Tlc.set(k , j); 
    Tlc.update();
    //delay(1);
  } 
  delay(1);
  }
  for (int j = 4095 ; j>0 ;j--) {
  for (int k = 0; k < 16; k ++) {  
    Tlc.set(k , j); 
    Tlc.update();
    //delay(1);
  } 
  delay(1);
  }
  delay(200);
  Tlc.clear();  
}



بشكل عام برمجة هذه الدارة المتكاملة معقد نوعاً ما اذا ما اردنا استخدام كل الأقترانات التي تدعمها , لزيادة سرعة الأتصال مع هذه الدارة المتكاملة يستخدم البروتوكول SPI للتخاطب معها , سأتحدث بالتفصيل عنها لاحقاً .



كما يجب الأخذ بعين الأعتبار كمية الطاقة المصروفة , اذا أن الطاقة العظمى التي تستطيع هذه القطعة تبديدها هي 1500ملي واط لل DIP Package و تصل لغاية 2500 ملي واط في ال SOP Package اي تطبيق تريد ربطه مع هذه القطعة يجب ان لا تتعدى قدرته هذا الحد .


التيار الاقصى الذي يستطيع المدخل الواحد تبديده يعتمد على مصدر التغذية لهذه القطعة " يبلغ 60ملي امبير عند 3.3 فولت و 120ملي امبير عند 5 فولت " يفضل ان يستخدم المصدر 3.3 فولت حتى نتجنب مشكلة الحرارة الزائدة Overheating التي قد تسبب احتراق هذه القطعة.

موديول جاهز Breakout من سباركفن الأمريكية 



هذه الدارة هي فقط تستطيع تبديد التيار "current sink " و لا تستطيع ان تكون كمصدر للتيار




1 التعليقات :

  1. يا سيدي أنت رائع رائع أنا جد حزين اكتشافي المتأخر لهدا الموقع الأكثر من رائع ,بارك الله فيك وجزاك عنا كل خير

    ردحذف

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