กลับไปหน้ารวมไฟล์
5-pins-32-leds-2-led-drivers-tlc5940-5fe383.md

5 Pins, 32 LEDs, 2 LED Drivers [TLC5940]

ในโลกของนักประดิษฐ์และวิศวกรระบบสมองกลฝังตัว ปัญหาหนึ่งที่พบบ่อยคือ "PWM pins ไม่พอ" เมื่อพยายามควบคุม LED จำนวนมาก หรือ Servo motors หลายตัวพร้อมกัน วันนี้ เราจะมาทำความรู้จักกับ TLC5940 ซึ่งเป็นโซลูชันระดับมืออาชีพที่จะยกระดับโปรเจกต์ Arduino ของคุณไปอีกขั้น

บทความนี้ออกแบบมาให้เป็นคู่มือทีละขั้นตอนสำหรับผู้เริ่มต้น หรือที่ผมเรียกว่า arduiNOOBS เพื่อให้เข้าใจการทำงานเชิงลึกและนำไปใช้งานจริงได้อย่างรวดเร็ว

ทำความรู้จักกับ TLC5940: หัวใจสำคัญของการควบคุม LED

TLC5940 ไม่ใช่แค่ IC ขยาย pin ทั่วไป แต่เป็น 16-Channel LED Driver ที่อัดแน่นด้วยความสามารถขั้นสูง:

  • 12-bit PWM (4096 ระดับ): ในขณะที่ PWM pin ทั่วไปของ Arduino ให้ความละเอียดเพียง 8-bit (256 ระดับ) แต่ TLC5940 ให้ความละเอียดถึง 4096 ระดับ ทำให้การเฟด LED มีความราบรื่นยิ่งขึ้นมาก
  • Constant Current Sink: IC นี้ทำหน้าที่เป็น "constant current sink" หมายความว่าคุณไม่จำเป็นต้องต่อ Resistor เข้ากับ LED ทุกตัว แต่ Resistor เพียงตัวเดียวที่ pin IREF จะกำหนดกระแสไฟฟ้ารวมสำหรับทุกช่องสัญญาณ
  • Daisy-Chaining: สิ่งที่ยอดเยี่ยมคือเราสามารถ Daisy-chain IC หลายตัว (แบบอนุกรม) เพื่อขยายจำนวนช่องสัญญาณจาก 16 เป็น 32, 48 หรือมากกว่านั้น โดยใช้ชุดควบคุม pin เพียงชุดเดียวจาก Arduino

แหล่งข้อมูลและลิงก์ที่จำเป็น:

แหล่งข้อมูลเพิ่มเติมสำหรับการศึกษาเชิงลึก:


ติดตามเพื่อดูโปรเจกต์และการอัปเดตเพิ่มเติม:


ทำความเข้าใจ Pin และโครงสร้าง Hardware

ก่อนที่เราจะทำการต่อวงจร เราต้องทำความเข้าใจหน้าที่ทางวิศวกรรมของแต่ละ pin ของ TLC5940 ก่อน:

TLC5940 Pinout Diagram

  • OUT0 - OUT15: Output pins สำหรับเชื่อมต่อกับ Cathode (-) ของ LED
  • VPRG (Voltage Program): ใช้เลือกโหมดระหว่างการเขียนข้อมูลไปยัง EEPROM หรือ Registers ทั่วไป (สำหรับการใช้งานปกติ ให้ต่อกับ GND)
  • GSCLK (Grayscale Clock): สัญญาณ Clock ที่กำหนดจังหวะเวลาของ PWM
  • XLAT (Latch): ใช้สำหรับยืนยันข้อมูลที่เข้ามา (คล้ายกับการกด Enter)
  • SCLK (Serial Clock): สัญญาณ Clock สำหรับการส่งข้อมูลแบบอนุกรม (serial data transmission)
  • SIN (Serial Input): รับข้อมูลจาก Arduino
  • SOUT (Serial Output): ส่งข้อมูลไปยัง IC ตัวถัดไป (ใช้ใน Daisy-chaining)
  • IREF: pin สำคัญสำหรับการตั้งค่ากระแส Output โดยการต่อ Resistor เข้ากับ GND (ค่าทั่วไปประมาณ 2kΩ สำหรับกระแส 20mA)

TLC5940 IC

การเชื่อมต่อกับ Arduino Nano

จาก Diagram การต่อสาย (All Wired Up) ด้านล่าง คุณจะเห็นว่าการจัดการสายเคเบิลให้เป็นระเบียบมีความสำคัญอย่างยิ่ง เนื่องจากมี signal pins หลายตัวที่ต้องทำงานร่วมกัน

All Wired Up.

ตารางการเชื่อมต่อมาตรฐาน (สำหรับ Arduino Nano/Uno):

  1. VCC -> 5V
  2. GND -> GND
  3. SIN -> Digital Pin 11 (MOSI)
  4. SCLK -> Digital Pin 13 (SCK)
  5. XLAT -> Digital Pin 9
  6. BLANK -> Digital Pin 10
  7. GSCLK -> Digital Pin 3 (ใช้ Timer 2 เพื่อสร้างสัญญาณความถี่สูง)

วิเคราะห์ตรรกะของโปรแกรม (Code Logic)

การใช้ Library Tlc5940 ช่วยลดความซับซ้อนของการจัดการ Register ระดับต่ำ ตรรกะการทำงานแบ่งออกเป็น 3 ขั้นตอนหลัก:

  1. Initialization: คำสั่ง Tlc.init() จะตั้งค่า Timer ภายในของ Arduino เพื่อสร้างสัญญาณ GSCLK และ BLANK โดยอัตโนมัติ ซึ่งสำคัญสำหรับการรักษาความสว่างของ LED โดยไม่รบกวนการทำงานของ main loop
  2. Data Preparation: คำสั่ง Tlc.set(channel, value) (โดยที่ value คือ 0-4095) จะยังไม่มีผลทันที แต่จะแก้ไขค่าใน memory array ของ Arduino ก่อน
  3. Data Transmission: เมื่อเรียกใช้ Tlc.update() ข้อมูลทั้งหมดจะถูกส่งแบบ serial ผ่าน pin SIN ไปยัง Shift Register ของ TLC5940 จากนั้น สัญญาณ XLAT จะเกิด pulse เพื่อ "Latch" ข้อมูล ทำให้ข้อมูลปรากฏบน output channels ทั้งหมดพร้อมกัน

ชมวิดีโอสาธิตการทำงาน

เพื่อความเข้าใจที่ชัดเจนยิ่งขึ้น ชมโปรเจกต์จริงที่กำลังทำงานและกระแสของข้อมูล PWM ได้ในวิดีโอนี้:

Video is Up!

บทสรุปสำหรับวิศวกรผู้ใฝ่ฝัน

การใช้ TLC5940 ไม่เพียงช่วยขยาย pins แต่ยังช่วยลดภาระการทำงานของ CPU ในการประมวลผล Software PWM และให้คุณภาพแสงที่เสถียรยิ่งขึ้นด้วยระบบ Constant Current หากคุณต้องการสร้างโปรเจกต์อย่างไฟ LED บันได, ป้ายเลื่อน, หรือ Hexapod robot ที่มี Servo จำนวนมาก TLC5940 คือโซลูชันที่คุ้มค่าแก่การศึกษา

https://youtube.com/@HeathenHacks

ข้อมูล Frontmatter ดั้งเดิม

title: "5 Pins, 32 LEDs, 2 LED Drivers [TLC5940]"
description: "An arduiNOOB friendly tutorial for beginners on daisy-chaining."
author: "Heathen_Hacks-v2"
category: "Lights & LEDs"
tags:
  - "lights"
  - "daisy-chaining"
  - "led drivers"
  - "tlc5940"
views: 18449
likes: 7
price: 2450
difficulty: "Easy"
components:
  - "1x Jumper wires (generic)"
  - "2x TLC5940NT LED Driver"
  - "1x Arduino Nano R3"
  - "2x Resistor 10k ohm"
  - "1x LED (generic)"
  - "1x Solderless Breadboard Full Size"
  - "2x Resistor 221k ohm"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/PaulStoffregen/Tlc5940"
documentationLinks: []
passwordHash: "da1e4f89982568debaf396f0f035ac416ae4eff0644165704b3c575ba101768c"
encryptedPayload: "U2FsdGVkX186Kshlu4LM9mJK5jTADl3iLwwTo+/M2oj+areOcoqf06Jn9CL3rnK3Pr0CuR/VgZ3YecqUXmyp25rrPsqg/Pkhq3NNWa27m+g="
seoDescription: "Learn daisy-chaining for 32 LEDs using 5 Pins and 2 LED Drivers [TLC5940]. Easy tutorial for beginners and arduiNOOB users."
videoLinks:
  - "https://www.youtube.com/embed/AFTYja5BViE"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/5-pins-32-leds-2-led-drivers-tlc5940-5fe383_cover.jpg"
lang: "th"