สารบัญ:

Arduino และ IC ไดรเวอร์ LED TLC5940 PWM: 7 ขั้นตอน
Arduino และ IC ไดรเวอร์ LED TLC5940 PWM: 7 ขั้นตอน

วีดีโอ: Arduino และ IC ไดรเวอร์ LED TLC5940 PWM: 7 ขั้นตอน

วีดีโอ: Arduino และ IC ไดรเวอร์ LED TLC5940 PWM: 7 ขั้นตอน
วีดีโอ: How to Control a Ton of RGB LEDs with Arduino & TLC5940 2024, พฤศจิกายน
Anonim
Arduino และ IC ไดรเวอร์ LED TLC5940 PWM
Arduino และ IC ไดรเวอร์ LED TLC5940 PWM

ในบทความนี้ เราจะมาตรวจสอบ IC ไดรเวอร์ LED 16 แชนเนล Texas Instruments TLC5940 เหตุผลของเราในการทำเช่นนี้คือการแสดงให้เห็นอีกวิธีหนึ่งที่ง่ายกว่าในการขับ LED จำนวนมาก – และเซอร์โวด้วย ก่อนอื่น นี่คือตัวอย่างบางส่วนของ TLC5940 คุณสามารถสั่งซื้อ TLC5940 จาก PMD Way พร้อมบริการจัดส่งฟรีทั่วโลก

TLC5940 มีให้ในเวอร์ชัน DIP และยังติดตั้งบนพื้นผิว เป็นส่วนที่สะดวกมาก ช่วยให้คุณปรับความสว่างของ LED แต่ละตัวได้ 16 ดวงผ่าน PWM (การปรับความกว้างพัลส์พัลส์) และคุณยังสามารถเชื่อมโยง TLC5940 แบบเดซี่เชนมากกว่าหนึ่งตัวเพื่อควบคุมได้มากขึ้น

ระหว่างบทช่วยสอนนี้ เราจะอธิบายวิธีควบคุม TLC5940 IC หนึ่งตัวหรือมากกว่าด้วยไฟ LED และยังดูการควบคุมเซอร์โวด้วย ณ จุดนี้ โปรดดาวน์โหลดสำเนาของ TLC5940 (.pdf) เนื่องจากคุณจะอ้างอิงถึงขั้นตอนนี้ นอกจากนี้ โปรดดาวน์โหลดและติดตั้งไลบรารี TLC5940 Arduino โดย Alex Leone ซึ่งสามารถพบได้ที่นี่ หากคุณไม่แน่ใจว่าจะติดตั้งไลบรารี่อย่างไร คลิกที่นี่

ขั้นตอนที่ 1: สร้างวงจรสาธิต TLC5940

สร้างวงจรสาธิต TLC5940
สร้างวงจรสาธิต TLC5940

วงจรต่อไปนี้เป็นวงจรขั้นต่ำที่จำเป็นในการควบคุม LED สิบหกดวงจาก Arduino หรืออุปกรณ์ที่เข้ากันได้ คุณสามารถใช้มันเพื่อทดลองกับฟังก์ชันต่างๆ และรับแนวคิดเกี่ยวกับสิ่งที่เป็นไปได้ คุณจะต้องการ:

  • Arduino Uno หรือบอร์ดที่เข้ากันได้
  • ไฟ LED แบบปกติ 16 ดวงที่สามารถมีกระแสไฟไปข้างหน้าได้สูงถึง 20 mA
  • ตัวต้านทาน 2 kΩ (ให้หรือรับ 10%)
  • เซรามิก 0.1uF และตัวเก็บประจุด้วยไฟฟ้า 4.7uF

จดการวางแนว LED และจำไว้ว่า TLC5940 เป็นไดรเวอร์ LED แบบขั้วบวกทั่วไป ดังนั้น LED anodes ทั้งหมดจึงเชื่อมต่อเข้าด้วยกันแล้วจึงต่อเข้ากับ 5V

ขั้นตอนที่ 2:

สำหรับวงจรนี้โดยเฉพาะ คุณไม่จำเป็นต้องมีแหล่งจ่ายไฟ 5V ภายนอก แต่คุณอาจต้องใช้อีกในอนาคต จุดประสงค์ของตัวต้านทานคือเพื่อควบคุมปริมาณกระแสที่สามารถไหลผ่าน LED ได้ ค่าตัวต้านทานที่ต้องการคำนวณด้วยสูตรต่อไปนี้:

R = 39.06 / Imax โดยที่ R (เป็นโอห์ม) คือค่าตัวต้านทาน และ Imax (เป็นแอมป์) คือจำนวนกระแสสูงสุดที่คุณต้องการไหลผ่าน LED

ตัวอย่างเช่น หากคุณมีไฟ LED ที่มีกระแสไฟไปข้างหน้า 20 mA – การคำนวณตัวต้านทานจะเป็น: R = 39.06 / 0.02 = 1803 Ohms เมื่อคุณประกอบวงจรแล้ว - เปิด Arduino IDE และอัปโหลดภาพร่าง BasicUse.pde ซึ่งอยู่ในโฟลเดอร์ตัวอย่างสำหรับไลบรารี TLC5940

คุณควรนำเสนอด้วยผลลัพธ์ที่คล้ายกับที่แสดงในวิดีโอ

ขั้นตอนที่ 3: การควบคุม TLC5940

เมื่อวงจรทำงานแล้ว เราจะควบคุม TLC5940 ได้อย่างไร? ขั้นแรก ฟังก์ชันบังคับ – รวมไลบรารีที่จุดเริ่มต้นของร่างด้วย:

#รวม "Tlc5940.h"

จากนั้นเริ่มต้นไลบรารีโดยวางสิ่งต่อไปนี้ใน void setup():

Tlc.init(x);

x เป็นพารามิเตอร์ทางเลือก หากคุณต้องการตั้งค่าช่องสัญญาณทั้งหมดให้มีความสว่างที่แน่นอนทันทีที่ร่างเริ่มต้น คุณสามารถแทรกค่าระหว่าง 0 ถึง 4095 สำหรับ x ในฟังก์ชัน Tlc.init()

ตอนนี้เพื่อเปิดหรือปิดช่อง/LED แต่ละช่องจะมีหมายเลขตั้งแต่ 0 ถึง 15 และความสว่างของแต่ละช่องสามารถปรับได้ระหว่าง 0 ถึง 4095 นี่เป็นกระบวนการสองส่วน… ขั้นแรก – ใช้ฟังก์ชันต่อไปนี้อย่างน้อยหนึ่งอย่างเพื่อตั้งค่าช่องที่ต้องการและความสว่างตามลำดับ (PWM) ระดับ):

Tlc.set(ช่อง, ความสว่าง);

ตัวอย่างเช่น หากคุณต้องการเปิดสามช่องแรกที่ความสว่างเต็มที่ ให้ใช้:

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

ส่วนที่สองคือการใช้สิ่งต่อไปนี้เพื่ออัปเดต TLC5940 ด้วยคำแนะนำที่จำเป็นจากส่วนที่หนึ่ง:

Tlc.update();

หากคุณต้องการปิดช่องทั้งหมดพร้อมกัน ให้ใช้:

Tlc.clear();

ขั้นตอนที่ 4:

คุณไม่จำเป็นต้องเรียก TLC.update() หลังจากล้างฟังก์ชัน ต่อไปนี้คือภาพร่างตัวอย่างสั้นๆ ที่ตั้งค่าความสว่าง/PWM ของช่องสัญญาณทั้งหมดเป็นระดับต่างๆ

#include "Tlc5940.h" เป็นโมฆะการตั้งค่า () { Tlc.init (0); // เริ่มต้น TLC5940 และปิดช่องทั้งหมด }

วงเป็นโมฆะ ()

{ สำหรับ (int i = 0; i <16; i++) { Tlc.set(i, 1023); } Tlc.update(); ล่าช้า (1000); สำหรับ (int i = 0; i <16; i++) { Tlc.set(i, 2046); } Tlc.update(); ล่าช้า (1000); สำหรับ (int i = 0; i <16; i++) { Tlc.set(i, 3069); } Tlc.update(); ล่าช้า (1000); สำหรับ (int i = 0; i <16; i++) { Tlc.set(i, 4095); } Tlc.update(); ล่าช้า (1000); }

ความสามารถในการควบคุมความสว่างแต่ละช่องสำหรับแต่ละช่อง/LED ยังมีประโยชน์ในการควบคุม RGB LEDs จากนั้นคุณสามารถเลือกสีที่ต้องการได้อย่างง่ายดายผ่านระดับความสว่างที่แตกต่างกันสำหรับแต่ละองค์ประกอบ การสาธิตจะแสดงในวิดีโอ

ขั้นตอนที่ 5: ใช้ TLC5940s สองตัวขึ้นไป

คุณสามารถเชื่อมโยง TLC5940 หลายตัวเข้าด้วยกันเพื่อควบคุม LED ได้มากขึ้น ขั้นแรก - ต่อสาย TLC5940 ตัวถัดไปกับ Arduino ตามที่แสดงในวงจรสาธิต - ยกเว้นเชื่อมต่อพิน SOUT (17) ของ TLC5940 ตัวแรกกับพิน SIN (26) ของ TLC5940 ตัวที่สอง - ขณะที่ข้อมูลเดินทางจาก Arduino ผ่าน TLC5940 ตัวแรกถึงตัวที่สองเป็นต้น จากนั้นทำซ้ำขั้นตอนถ้าคุณมีที่สาม ฯลฯ อย่าลืม resisotr ที่กำหนดกระแส!

ถัดไป เปิดไฟล์ tlc_config.h ที่อยู่ในโฟลเดอร์ไลบรารี TLC5940 เปลี่ยนค่า NUM_TLCS เป็นจำนวน TLC5940 ที่คุณเชื่อมต่อเข้าด้วยกัน จากนั้นบันทึกไฟล์และลบไฟล์ Tlc5940.o ที่อยู่ในโฟลเดอร์เดียวกันด้วย ในที่สุดรีสตาร์ท IDE จากนั้นคุณสามารถดูช่องสัญญาณของ TLC5940 ที่สองและเพิ่มเติมตามลำดับจากช่องแรก นั่นคือ อันแรกคือ 0~15 อันที่สองคือ 16~29 เป็นต้น

ขั้นตอนที่ 6: การควบคุมเซอร์โวด้วย TLC5940

เนื่องจาก TLC5940 สร้างเอาต์พุต PWM (การปรับความกว้างพัลส์) จึงเหมาะอย่างยิ่งสำหรับการขับเซอร์โวเช่นกัน เช่นเดียวกับไฟ LED คุณสามารถควบคุมได้มากถึงสิบหกในคราวเดียว เหมาะสำหรับสร้างหุ่นยนต์คล้ายแมงมุม นาฬิกาแปลกๆ หรือส่งเสียง

เมื่อเลือกเซอร์โวของคุณ ตรวจสอบให้แน่ใจว่าไม่ได้ดึงมากกว่า 120 mA เมื่อใช้งาน (กระแสไฟสูงสุดต่อช่องสัญญาณ) และระวังส่วน "การจัดการกระแสและความร้อน" ที่ส่วนท้ายของบทช่วยสอนนี้ และใช้พลังงานภายนอกกับเซอร์โว ไม่ต้องพึ่งสาย 5V ของ Arduino

ในการเชื่อมต่อเซอร์โวนั้นง่าย - สาย GND เชื่อมต่อกับ GND, 5V (หรือสายจ่ายแรงดันไฟ) เชื่อมต่อกับ 5v ของคุณ (หรือแหล่งจ่ายอื่นที่เหมาะสม) และพินควบคุมเซอร์โวเชื่อมต่อกับหนึ่งในเอาต์พุตของ TLC5940 ในที่สุด – และนี่เป็นสิ่งสำคัญ – เชื่อมต่อตัวต้านทาน 2.2kΩ ระหว่างพินเอาต์พุต TLC5940 ที่ใช้กับ 5V การควบคุมเซอร์โวไม่ต่างจาก LED มากนัก คุณต้องใช้สองบรรทัดแรกที่เริ่มร่าง:

#รวม "Tlc5940.h"#รวม "tlc_servos.h"

จากนั้นสิ่งต่อไปนี้ในการตั้งค่าเป็นโมฆะ ():

tlc_initServos();

ถัดไป ใช้ฟังก์ชันต่อไปนี้เพื่อเลือกเซอร์โว (ช่องสัญญาณ) ที่จะใช้งานและมุมที่ต้องการ (มุม):

tlc_setServo (ช่อง, มุม);

เช่นเดียวกับไฟ LED คุณสามารถรวมสิ่งเหล่านี้เข้าด้วยกันแล้วรันคำสั่งด้วย:

Tlc.update();

มาดูการกระทำทั้งหมดกัน ตัวอย่างต่อไปนี้จะวาดสี่เซอร์โวใน 90 องศา:

#รวม "Tlc5940.h"#รวม "tlc_servos.h"

การตั้งค่าเป็นโมฆะ ()

{ tlc_initServos(); // หมายเหตุ: สิ่งนี้จะทำให้ความถี่ PWM ลดลงเหลือ 50Hz }

วงเป็นโมฆะ ()

{ สำหรับ (มุม int = 0; มุม = 0; มุม--) { tlc_setServo (0, มุม); tlc_setServo (1, มุม); tlc_setServo (2, มุม); tlc_setServo(3, มุม); Tlc.update(); ล่าช้า(5); } }

วิดีโอแสดงภาพร่างนี้ในการดำเนินการกับเซอร์โวสี่ตัว

หากเซอร์โวของคุณไม่หมุนไปที่มุมที่ถูกต้อง – ตัวอย่างเช่น คุณขอ 180 องศาและหมุนไปที่ 90 หรือประมาณนั้นเท่านั้น จำเป็นต้องมีการทำงานเพิ่มเติมเล็กน้อย

คุณต้องเปิดไฟล์ tlc_servos.h ที่อยู่ในโฟลเดอร์ไลบรารี TLC5940 Arduino และทดลองกับค่าสำหรับ SERVO_MIN_WIDTH และ SERVO_MAX_WIDTH ตัวอย่างเช่น เปลี่ยน SERVO_MIN_WIDTH จาก 200 เป็น 203 และ SERVO_MAX_WIDTH จาก 400 เป็น 560

ขั้นตอนที่ 7: การจัดการกระแสและความร้อน

ดังที่ได้กล่าวไว้ก่อนหน้านี้ TLC5940 สามารถรองรับกระแสไฟสูงสุด 120 mA ต่อช่องสัญญาณ หลังการทดลอง คุณอาจสังเกตเห็นว่า TLC5940 เริ่มอุ่นขึ้น และก็ไม่เป็นไร

โปรดทราบว่ามีข้อ จำกัด สูงสุดสำหรับปริมาณพลังงานที่สามารถกระจายได้ก่อนที่จะทำลายชิ้นส่วน หากคุณเพียงแค่ใช้ไฟ LED หลากหลายประเภทในสวนปกติหรือเซอร์โวขนาดเล็ก พลังงานจะไม่เป็นปัญหา อย่างไรก็ตาม หากคุณวางแผนที่จะใช้ TLC5940 ให้เกิดประโยชน์สูงสุด โปรดตรวจสอบหมายเหตุที่ผู้เขียนห้องสมุดให้มา

บทสรุป

อีกครั้งที่คุณกำลังควบคุมส่วนที่มีประโยชน์อย่างเหลือเชื่อด้วย Arduino ของคุณ ด้วยจินตนาการบางอย่าง คุณสามารถสร้างการแสดงภาพได้ทุกประเภท หรือสนุกกับเซอร์โวหลายตัว

โพสต์นี้มาถึงคุณโดย pmdway.com ซึ่งนำเสนอผลิตภัณฑ์ TLC5940 พร้อมกับทุกอย่างสำหรับผู้ผลิตและผู้ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์ พร้อมบริการจัดส่งฟรีทั่วโลก

แนะนำ: