Mundarija:

Arduino va TLC5940 PWM LED drayveri IC: 7 qadam
Arduino va TLC5940 PWM LED drayveri IC: 7 qadam

Video: Arduino va TLC5940 PWM LED drayveri IC: 7 qadam

Video: Arduino va TLC5940 PWM LED drayveri IC: 7 qadam
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Noyabr
Anonim
Arduino va TLC5940 PWM LED drayveri IC
Arduino va TLC5940 PWM LED drayveri IC

Ushbu maqolada biz Texas Instruments TLC5940 16 kanalli LED drayveri IC ni ko'rib chiqmoqchimiz. Buning sababi shundaki, biz ko'plab LEDlarni, shuningdek servolarni boshqarishning yana bir oson usulini namoyish qilamiz. Birinchidan, bu erda TLC5940 ning bir nechta misollari. Siz TLC5940 -ni PMD Way -dan butun dunyo bo'ylab bepul etkazib berishga buyurtma berishingiz mumkin.

TLC5940 DIP versiyasida, shuningdek sirtga o'rnatiladi. Bu haqiqatan ham PWM (impuls kengligi modulyatsiyasi) orqali o'n oltita alohida LEDning yorqinligini sozlash imkonini beradigan qulay qismdir, bundan tashqari, bir nechta TLC5940 dan ham ko'proq zanjirni boshqarish mumkin.

Ushbu dars davomida biz LEDlar yordamida bir yoki bir nechta TLC5940 IC ni qanday boshqarishni tushuntiramiz, shuningdek, servolarni boshqarishni ko'rib chiqamiz. Shu nuqtada, iltimos, TLC5940 (.pdf) nusxasini yuklab oling, chunki siz bu jarayonda unga havola qilasiz. Bundan tashqari, iltimos, Aleks Leone tomonidan TLC5940 Arduino kutubxonasini yuklab oling va o'rnating. Agar kutubxonani qanday o'rnatishni bilmasangiz, bu erni bosing.

1 -qadam: TLC5940 Namoyish sxemasini yarating

TLC5940 namoyish sxemasini yarating
TLC5940 namoyish sxemasini yarating

Quyidagi sxema Arduino yoki mos keladigan o'n oltita LEDni boshqarish uchun zarur bo'lgan minimaldir. Siz uni turli funktsiyalarni sinab ko'rish va mumkin bo'lgan narsalar haqida tasavvurga ega bo'lish uchun ishlatishingiz mumkin. Sizga kerak bo'ladi:

  • Arduino Uno yoki mos keladigan taxta
  • 16 ta oddiy, kundalik LEDlar, 20 mA gacha oldinga oqimga ega bo'lishi mumkin
  • 2 kΩ qarshilik (10%bering yoki oling)
  • 0,1uF seramika va 4,7uF elektrolitik kondansatör

LED yo'nalishiga e'tibor bering-va TLC5940-oddiy anodli LED drayveri ekanligini unutmang-shuning uchun barcha LED anodlari bir-biriga, so'ngra 5V ga ulanadi.

2 -qadam:

Ushbu sxema uchun sizga tashqi 5V quvvat manbai kerak bo'lmaydi, lekin kelajakda sizga kerak bo'lishi mumkin. Rezistorning maqsadi - LEDlar orqali o'tishi mumkin bo'lgan oqim miqdorini nazorat qilish. Kerakli qarshilik qiymati quyidagi formula bo'yicha hisoblanadi:

R = 39.06 / Imax, bu erda R (Ohmda) - qarshilik qiymati, Imax (Amperda) - bu LEDlar orqali oqmoqchi bo'lgan maksimal oqim miqdori.

Misol uchun, agar sizda 20 mA oldinga oqim bilan LEDlar bo'lsa - rezistorni hisoblash quyidagicha bo'ladi: R = 39.06 / 0.02 = 1803 Ohm. Tizim yig'ilgandan so'ng - Arduino IDE -ni oching va TLC5940 kutubxonasi uchun namunaviy papkada joylashgan BasicUse.pde eskizini yuklang.

Sizga videoda ko'rsatilgandek natija ko'rsatilishi kerak.

3 -qadam: TLC5940 -ni boshqarish

Endi sxema ishlaydi, biz TLC5940ni qanday boshqaramiz? Birinchidan, majburiy funktsiyalar - eskiz boshida kutubxonani o'z ichiga oladi:

#"Tlc5940.h" ni qo'shing

va keyin void setup () ga quyidagilarni qo'yish orqali kutubxonani ishga tushiring:

Tlc.init (x);

x - ixtiyoriy parametr - agar siz eskiz boshlanishi bilan barcha kanallarni ma'lum bir yorqinlikka o'rnatmoqchi bo'lsangiz, Tlc.init () funktsiyasida x uchun 0 dan 4095 gacha bo'lgan qiymatni kiritishingiz mumkin.

Endi kanalni/LEDni yoqish yoki o'chirish. Har bir kanal 0 dan 15 gacha raqamlangan va har bir kanalning yorqinligi 0 dan 4095 gacha sozlanishi mumkin. Bu ikki qismli jarayon … Birinchidan-kerakli kanallarni va tegishli yorqinlikni o'rnatish uchun quyidagi funktsiyalardan birini yoki bir nechtasini ishlating. Daraja):

Tlc.set (kanal, yorqinlik);

Masalan, agar siz birinchi uchta kanalni to'liq yorqinlikda yoqishni xohlasangiz, quyidagilardan foydalaning:

Tlc.set (0, 4095); Tlc.set (1, 4095); Tlc.set (2, 4095);

Ikkinchi qism, TLC5940 -ni birinchi qismdan kerakli ko'rsatmalar bilan yangilash uchun quyidagilarni ishlatishdir:

Tlc.update ();

Agar siz bir vaqtning o'zida barcha kanallarni o'chirmoqchi bo'lsangiz, quyidagilarni ishlating:

Tlc.clear ();

4 -qadam:

Toza funktsiyadan keyin TLC.update () ga qo'ng'iroq qilishingiz shart emas. Quyida barcha kanallarning yorqinligi/PWM qiymatlarini turli darajalarga o'rnatadigan tezkor misol chizma keltirilgan:

#include "Tlc5940.h" void setup () {Tlc.init (0); // TLC5940 -ni ishga tushiring va barcha kanallarni o'chiring}

bo'sh halqa ()

{for (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); kechikish (1000); uchun (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); kechikish (1000); uchun (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); kechikish (1000); uchun (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); kechikish (1000); }

Har bir kanal/LED uchun individual yorqinlikni boshqarish qobiliyati RGB LEDlarini boshqarishda ham foydali bo'lishi mumkin - keyin siz har bir element uchun turli xil yorqinlik darajalari orqali kerakli ranglarni osongina tanlashingiz mumkin. Videoda namoyish ko'rsatiladi.

5 -qadam: Ikki yoki undan ortiq TLC5940 -dan foydalanish

Ko'proq LEDlarni boshqarish uchun siz bir nechta TLC5940-larni birlashtira olasiz. Birinchisi - keyingi TLC5940 ni Arduino -ga namoyish sxemasida ko'rsatilganidek ulang - birinchi TLC5940 -ning SOUT pinini (17) ikkinchi TLC5940 -ning SIN -piniga (26) ulashdan tashqari - ma'lumotlar Arduino -dan o'tayotganda. birinchi TLC5940 ikkinchisiga va boshqalar. Agar sizda uchinchisi bo'lsa, jarayonni takrorlang va hokazo. Hozirgi oqimni belgilaydigan resizotrni unutmang!

Keyin, TLC5940 kutubxona papkasida joylashgan tlc_config.h faylini oching. NUM_TLCS qiymatini siz ulangan TLC5940 raqamiga o'zgartiring, keyin faylni saqlang va shu papkada joylashgan Tlc5940.o faylini o'chiring. Nihoyat, IDE -ni qayta ishga tushiring. Keyin birinchisidan ketma -ket ikkinchi va keyingi TLC5940 kanallariga murojaat qilishingiz mumkin. Ya'ni, birinchisi 0 ~ 15, ikkinchisi 16 ~ 29 va boshqalar.

6 -qadam: TLC5940 yordamida servolarni boshqarish

TLC5940 PWM (puls kengligi modulyatsiyasi) chiqishini ishlab chiqargani uchun, servolarni haydash uchun ham juda yaxshi. Xuddi LEDlar kabi - siz bir vaqtning o'zida o'n oltitasini boshqarishingiz mumkin. O'rgimchakka o'xshash robotlar, g'alati soatlar yaratish yoki shovqin qilish uchun ideal.

Servo tanlashda, uning ish paytida 120 mA dan oshmasligiga ishonch hosil qiling (har bir kanal uchun maksimal oqim), shuningdek, ushbu darslik oxirida "Oqim va issiqlikni boshqarish" bo'limiga e'tibor bering. Va tashqi quvvatni servo bilan ishlating, Arduino -ning 5V liniyasiga tayanmang.

Servo ulash oddiy - GND liniyasi GND ga ulanadi, 5V (yoki besleme zo'riqishida) sizning 5v ga (yoki boshqa mos keladigan manbaga) va servo boshqaruv pimi TLC5940 chiqishlaridan biriga ulanadi. Nihoyat - va bu juda muhim - ishlatiladigan TLC5940 chiqish pin (lar) i va 5V oralig'iga 2,2 kΩ rezistorni ulang. Servo boshqaruvi LEDdan farq qilmaydi. Eskiz boshida sizga birinchi ikkita satr kerak:

#"Tlc5940.h" ni qo'shing#"tlc_servos.h" ni qo'shing

keyin quyidagilar bekor qilinadi ():

tlc_initServos ();

Keyin qaysi servo (kanal) ishlashini va kerakli burchakni (burchak) tanlash uchun quyidagi funktsiyadan foydalaning:

tlc_setServo (kanal, burchak);

LEDlar singari, siz ulardan bir nechtasini birlashtira olasiz va keyin buyruqni bajarishingiz mumkin:

Tlc.update ();

Shunday qilib, keling, bularning barchasini amalda ko'rib chiqaylik. Quyidagi eskiz 90 daraja bo'ylab to'rtta servolarni siljitadi:

#"Tlc5940.h" ni qo'shing#"tlc_servos.h" ni qo'shing

bo'sh o'rnatish ()

{tlc_initServos (); // Eslatma: bu PWM chastotasini 50 Gts ga tushiradi. }

bo'sh halqa ()

{for (int burchagi = 0; burchak = 0; burchak--) {tlc_setServo (0, burchak); tlc_setServo (1, burchak); tlc_setServo (2, burchak); tlc_setServo (3, burchak); Tlc.update (); kechikish (5); }}

Videoda bu eskiz to'rt servo bilan harakatda ko'rsatilgan.

Agar siz servolar to'g'ri burchakka burilmagan bo'lsangiz - masalan, siz 180 gradusni talab qilasiz va ular faqat 90 ga aylanadi yoki u erda, biroz qo'shimcha ish talab qilinadi.

Siz TLC5940 Arduino kutubxona papkasida joylashgan tlc_servos.h faylini ochishingiz va SERVO_MIN_WIDTH va SERVO_MAX_WIDTH qiymatlari bilan tajriba o'tkazishingiz kerak. Masalan, SERVO_MIN_WIDTHni 200 dan 203 gacha va SERVO_MAX_WIDTHni 400 dan 560 gacha o'zgartiring.

7 -qadam: oqim va issiqlikni boshqarish

Yuqorida aytib o'tganimizdek, TLC5940 har bir kanal uchun maksimal 120 mA quvvatga ega. Bir oz tajriba o'tkazgandan so'ng, siz TLC5940 isib ketayotganini sezishingiz mumkin - bu yaxshi.

E'tibor bering, qismni yo'q qilishdan oldin tarqatilishi mumkin bo'lgan quvvatning maksimal chegarasi. Agar siz oddiy bog 'LED-laridan yoki kichikroq servolardan foydalanayotgan bo'lsangiz, quvvat muammosi bo'lmaydi. Ammo, agar siz TLC5940 -dan maksimal darajada foydalanmoqchi bo'lsangiz - kutubxona mualliflari tomonidan berilgan eslatmalarni ko'rib chiqing.

Xulosa

Yana bir bor siz Arduino -ning juda foydali qismini boshqarishga ketyapsiz. Endi qandaydir tasavvur bilan siz har xil vizual displeylarni yaratishingiz yoki ko'plab servolardan zavqlanishingiz mumkin.

Bu xabar sizga pmdway.com tomonidan olib kelinadi - u TLC5940 mahsulotlarini, ishlab chiqaruvchilar va elektronika ixlosmandlari uchun hamma narsani, butun dunyo bo'ylab bepul etkazib berishni taklif qiladi.

Tavsiya: