Отримання великої кількості (~ 100) цифрових вихідних сигналів від Arduino


19

Я хотів би мати можливість контролювати близько 100 незалежних світлодіодів за допомогою Arduino. Проблема полягає в тому, що в Arduino немає майже достатньої кількості штифтів, які можна налаштувати для цього. Яким був би спосіб вирішити цю проблему? Чи є мікросхема, яка може знімати складніший сигнал від Arduino, який може потім керувати світлодіодами? Або є інше рішення?


які ваші вимоги до частоти оновлення? скільки струму на світлодіод?
vicatcu

частота оновлення близько 1 секунди. обдумуючи 8ma на світлодіод. Харчуватиметься зовнішнім адаптером - не Arduino
Alexis K

Є багато демультиплексорних рішень. Але врахуйте складність свого завдання; Чи буде необхідний алгоритм для генерації даних, що відповідають обмеженням mcu Arduino? Деякі завдання будуть, а інші не підлягатимуть або підлягатимуть лише через створення конструкцій, які можуть бути цілком задовольняючими для створення, але можуть зробити складне обслуговування коду складним.
Кріс Страттон

Відповіді:


22

По-перше, Arduino не може безпосередньо приводити в дію 100 світлодіодів, оскільки комбінований струм, який пристрій повинен джерелом або потоком, значно перевищить як мікроконтролер, так і регулятор напруги на платі Arduino. Хоча звичайний ардуїновий щит із власним джерелом живлення та регулюванням може відповідати законопроекту.

Існує кілька простих підходів, найпростіший підхід докладно описаний нижче:


  • Світлодіодний драйвер постійного струму TLC5940 у каскадній конфігурації:

TLC5940 приводить 16 світлодіодів на ІС, керовані послідовним входом через невеликий варіант інтерфейсу SPI. До 40 пристроїв TLC5940 можна каскадувати, але 7 з них буде достатньо для приведення в дію 100 світлодіодів.

Існує принаймні пара бібліотек Arduino ( 1 , 2 ) для TLC5940.

Запропоновані тактові тарифи для надсилання з Arduino та відповідна швидкість оновлення:

  • 1 МГц GSClk, використовуючи код у цій темі .
  • 330 КГц SCLK (послідовний тактовий сигнал)
  • Тим самим частота оновлення світлодіодних даних 244 Гц

Це ґрунтується на формулах з таблиці:

f (GSCLK) = 4096 * f (оновлення)
f (SCLK) = 193 * f (оновлення) * n
де:
f (GSCLK): мінімальна частота, необхідна для GSCLK
f (SCLK): мінімальна частота, необхідна для SCLK і SIN
f ( оновлення): швидкість оновлення всієї каскадної системи
n: кількість каскадних пристроїв TLC5940

TLC5940 - це мийка постійного струму , тому аноди світлодіодів повинні бути приєднані до напруги на пару вольт більше, ніж світлодіод Vf, або близько 7 вольт, залежно від того, що нижче, і живиться незалежно від силових штифтів Arduino. Це джерело напруги повинно бути здатне живити 100 * (незалежно від того, чи є струм, на якому ви працюєте), але може бути нерегульованим джерелом.

Світлодіодні катоди йдуть до ліній приводу відповідних ІС TLC5940.

Сам TLC5940 споживає до Icc = 60 мА на пристрій під час запису даних, тому живлення 7 з них від Arduino не буде працювати, потрібно буде забезпечити незалежний Vcc від 3 до 5 вольт, в ідеалі таке ж значення, як і Використовується Vcc ардуїно, і земні сліди, звичайно, повинні з'єднуватися назад із землею Ардуїно. Експлуатація деталей TLC при напрузі іншої, ніж Arduino, викликала б потребу в перетворенні рівня послідовного сигналу, отже, найкраще цього уникати.

Кілька відео YouTube демонструють використання Arduino з каскадними ІС TLC5940.


Хоча ці ІМС були розроблені для управління 7-сегментними цифровими світлодіодними дисплеями, вони забезпечують індивідуальне управління світлодіодами, тому їх можна використовувати до 64 світлодіодів на ІС. Дві з них можуть бути каскадними для керування 100 необхідних світлодіодів. Сторінка 13 даних описує конфігурацію каскаду.

Для цієї конструкції світлодіоди повинні бути електрично з'єднані у вигляді груп до 8 світлодіодів, кожен з яких розділяє одну катодну лінію (загальний катод).

MAX7219 / 7221 - це мультиплексування драйверів світлодіодів, отже, максимальна яскравість світлодіодів буде нижчою, ніж для статичного світлодіодного драйвера, як у попередньому розділі.

Ось корисна бібліотека світлодіодних матриць та посібник із використанням MAX7219.

Деякі відповідні відео YouTube ( 1 , 2 ) можуть зацікавити.


Знову ж таки, ці ІМС були розроблені для управління 7-сегментними цифровими світлодіодними дисплеями, вони забезпечують індивідуальне керування світлодіодами, тому можуть використовуватися до 40/64 світлодіодів на ІС. Два / три з них можна підключити на шині Arduino SPI для керування 100 необхідними світлодіодами.

Примітки дизайну залишаються тими ж, що і в попередньому розділі. Також індивідуальна максимальна яскравість світлодіода була б нижчою, ніж для прямолінійного мультиплексного дизайну MAX7219.

Є кілька відео YouTube, які можуть зацікавити.


  • Дискретні компоненти компонентів, регістри зсуву, розширювачі IO, розрізні світлодіодні стрічки з індивідуальними контролерами та багато іншого ...

Це все підходи, які використовуються з різним рівнем простоти та успішності. Вони є більш складними реалізаціями, ніж 3 підходу вище, тому далі не деталізовані. Пошук у Інтернеті дасть корисні посібники для цих підходів, якщо це буде потрібно.

Одним з основних подразників такої конструкції є потреба в резисторах управління струмом на кожному світлодіодному або світлодіодному струні. Пристрої, спеціально розроблені для світлодіодного водіння, зазвичай цього не потребують.

Я не маю особистого досвіду з цим останнім набором варіантів, тому не можу багато чого допомогти.


Виноска: Після відповіді на це запитання я знайшов старіше запитання , в якому були детально відповіді та обговорення декількох підходів у моєму останньому розділі. Ця нитка робить цікавим «подальше читання як домашнє завдання».



1
Недорогі регістри змін, такі як 74HC595?
Томас Е

Крім того, як Max5951 забезпечує "індивідуальне управління світлодіодами" - воно, здається, має 7-сегментне управління (8 контактів на 8 цифр), ні?
Томас Е

Так, теж. Потрібно багато резисторів для захисту світлодіодів, а потім комплекс електропроводки порівняно із спеціально призначеними ІС.
Анніндо Гош

@ThomasE Ні: "MAX6950 приводить до п'яти 7-сегментних цифр або 40 дискретних світлодіодів. MAX6951 працює до восьми 7-сегментних цифр або 64 дискретних світлодіодів." Один просто підключає групи з 8 світлодіодів кожен на один катодний рядок, як описано в розділі моєї відповіді MAX7219.
Анніндо Гош

2
@starblue Overkill v / s простота реалізації самостійної роботи : Якщо разова чи хобі робота, TLC5940 (3,78 долара в одній кількості на DigiKey) не залишиться найпростішим рішенням через бібліотеки Arduino та активну підтримку в громаді Arduino? Якщо немає інших не менш добре підтримуваних частин, таких як ви вказали, що форуми Arduino люблять.
Anindo Ghosh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.