Сколько отдельных огней может контролировать Arduino?
19
Я хочу использовать обычную плату Arduino для управления светодиодами - каково максимальное количество ламп, которыми я могу управлять отдельно от платы?
Вам необходимо указать, хотите ли вы управлять одним или несколькими светодиодами. Кроме того, я бы добавил «избегая последовательного управления и дополнительных микросхем». Ответ имеет тенденцию к бесконечности, если частота обновления или аппаратные части не являются ограничениями.
PPV
Ответы:
26
Я считаю, что использование Чарли-сплетения N линий контролирует N * (N-1) светодиодов. Есть хорошая статья в Википедии.
Мой друг, Джимми П. Роджерс, установил 126 светодиодов на щит Arduino. Он использует Чарли-плекс для управления светодиодами. Некоторая информация о его форуме находится по адресу -
jimmieprodgers.com/2009/12/my-development-process/ (archive.org copy)
На последнем собрании группы пользователей Boston Arduino Джимми П. Роджерс нарисовал диаграмму Чарли-сплетения в виде матрицы с помеченными сетями. Схемы, нарисованные таким образом, казалось, хорошо помогли донести концепцию. Я создал пару похожих схем - см. Http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html.
узнал что-то новое сегодня; у тебя есть мой голос :-)
JonathanD
4
Имейте в виду, что при использовании этого метода одновременно можно включать только светодиоды N-1.
AngryEE
2
jimmieprodgers.comСсылка в этом ответе загружается с вирусами.
Вивек Махарадж
1
@vivekmaharajh: Я заменил ссылку ссылкой на копию archive.org оригинальной страницы.
Дэйв Твид
13
Вы можете использовать регистры сдвига ( http://en.wikipedia.org/wiki/Shift_register ), чтобы получить столько параллельных выходов из одного последовательного потока, сколько вы хотите.
Вы должны быть обеспокоены своими ограничениями власти. Я на самом деле никогда не использовал Arduino сам, но я предполагаю, что он имеет текущий предел, как PIC. Кроме того, регистры сдвига сами будут иметь ограничение по току. Если вы столкнетесь с этим, вам нужно будет использовать что-то вроде MOSFET, чтобы позволить вам управлять светодиодами, не потребляя много энергии непосредственно от вашего микроконтроллера.
Любой данный вывод микроконтроллера AVR допускает подачу до 40 мА, а общий источник питания или питание от микросхемы (т. Е. На землю и контакты Vcc) должны быть ниже 200 мА.
Charlieplexing - отличное решение для ситуаций, когда вам нужно много светодиодов, но можно обойтись только с одним светодиодом, горящим за раз. Стандартная плата Arduino (например, Duemilanove) предоставляет 17 «свободных» выводов ввода / вывода, не считая TX, RX, Reset или вывод 13. Таким образом, вы можете подключить 17 * 16 = 272 светодиода. Это может хорошо работать, особенно если вы светите одним светодиодом или быстро сканируете между несколькими. Но если вы попытаетесь осветить всю матрицу с помощью шаблона, вы обнаружите, что каждый из них включен (немного меньше) в 1/272 времени, поэтому, если ток вашего привода составлял 30 мА в любой данный момент, каждый светодиод средний ток будет около 0,1 мА - довольно тусклый.
Если вам не нужно так много светодиодов, но вместо этого нужно больше яркости, лучше использовать традиционное мультиплексирование. В этом случае вы используете некоторые из ваших строк как строки, а некоторые как столбцы в матрице. Если вы используете ток светодиода 10 мА, вы можете определить матрицу из 4 столбцов и 13 рядов, где все 4 светодиода в одном ряду могут быть включены одновременно, и вы будете сканировать ряды. Тогда каждый ряд находится на 1/13 времени при токе 10 мА, поэтому средний ток светодиода может достигать 0,76 мА, НО вы получаете только 4 * 13 = 104 светодиода. (Определенно ярче для каждого светодиода, чем для чарлиплексирования.)
Ограничение в последнем примере составляет 40 мА на вывод на AVR - так как каждый ряд приводных штырьков источника 4x10 = 40 мА. Если вы разрешите добавление внешних транзисторов (которые могут быть дешевыми и небольшими) к выходам строки, то вы можете избежать этого конкретного предела и стать ярче. Например, вы можете создать массив 8х9, с 8 строками и 9 столбцами, всего 72 светодиода. Один из 8 рядов включен одновременно, выбранный через транзистор. Одновременно могут быть включены до всех 9 светодиодов в данном ряду, управляемые при 20 мА, поэтому 180 мА поступает от транзистора, и вы находитесь ниже пределов тока AVR. Средний ток на светодиод теперь составляет 20 мА / 8 = 2,5 мА - обычно достаточно яркий.
Там очень хороший, подробный учебник здесь , который включает в себя раздел с помощью Arduino , чтобы запустить 8x8x8 светодиодный куб. (Не пропустите фильм на YouTube, который у них есть)
Похоже, что-то, что я видел на выставке НЛО в Миннеаполисе около 1979 года или около того, но я помню, как где-то около 4096 миниатюрных лампочек. Кто-нибудь еще помнит, что видел что-то подобное?
суперкат
4
Существует множество расширителей ввода / вывода, которые используют шины SPI или I2C. С помощью одного модуля MSSP вы можете управлять практически бесконечным количеством цифровых выходов, таких как светодиоды.
См. Таблицы микрочипов или примечания по применению для следующих частей:
SPI - MCP23S08
I2C - MCP23008
При 17 выводах ввода / вывода, семнадцати NPN-транзисторах (эмиттерных повторителях для повышения тока) не должно быть особых проблем с отображением 272 светодиодов в произвольных комбинациях при коэффициенте заполнения 1/17 со средним током или 0,7 мА (200 мА / 272), ограниченным способность чипа сбрасывать 200 мА за раз. Добавление диода, чтобы получить падение на 0,7 В, позволит добавить еще 17 светодиодов (сокращая рабочий цикл до 1/18), хотя яркость не совсем будет соответствовать другим.
Можете ли вы уточнить, какую схему вы предлагаете здесь? Последователь эмиттера является топологией BJT.
Кевин Вермеер
@reemrevnivek: см. выше. Я мысленно подбрасывал несколько вариантов, и они запутались вместе. Если кто-то добавляет транзисторы для усиления привода на верхней стороне, а не привода на нижней стороне, они должны быть BJT. Если бы кто-то использовал транзисторы для обоих, мосфиты могли бы быть лучше.
суперкат
0
В то время как Windell Oskay приводит веский аргумент, что 104 светодиода - это максимум без добавления дополнительных транзисторов,
Том Айго
опубликовал фотографии матрицы из 128 светодиодов, напрямую управляемой одним Arduino Mega - без дополнительных транзисторов, дискретных или встроенных.
Том Айго «обманывает», кратко превышая «абсолютный максимальный ток на вывод», указанный в техническом описании?
Нет, он обманывает с помощью Arduino Mega. :) Мега имеет гораздо больше выводов ввода / вывода, чем обычный Arduino.
Кристофер Биггс
@unixbigot - грустно, я надеялся увидеть крутой взлом, включающий повторное использование булавки сброса для управления светодиодами или использование диодов.
Кевин Вермеер,
1
Ваша ссылка мертва, и вам, вероятно, следует дать ссылку на ответ Уинделла Оская . Это может показаться неважным, когда вы публикуете сообщение, но по мере появления новых ответов ваше сообщение становится отдаленным от другого.
Кевин Вермеера
@KevinVermeer: ссылка исправлена указанием на копию archive.org оригинальной страницы.
Ответы:
Я считаю, что использование Чарли-сплетения N линий контролирует N * (N-1) светодиодов. Есть хорошая статья в Википедии.
Мой друг, Джимми П. Роджерс, установил 126 светодиодов на щит Arduino. Он использует Чарли-плекс для управления светодиодами. Некоторая информация о его форуме находится по адресу - jimmieprodgers.com/2009/12/my-development-process/ (archive.org copy)
На последнем собрании группы пользователей Boston Arduino Джимми П. Роджерс нарисовал диаграмму Чарли-сплетения в виде матрицы с помеченными сетями. Схемы, нарисованные таким образом, казалось, хорошо помогли донести концепцию. Я создал пару похожих схем - см. Http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html.
источник
jimmieprodgers.com
Ссылка в этом ответе загружается с вирусами.Вы можете использовать регистры сдвига ( http://en.wikipedia.org/wiki/Shift_register ), чтобы получить столько параллельных выходов из одного последовательного потока, сколько вы хотите.
Вы должны быть обеспокоены своими ограничениями власти. Я на самом деле никогда не использовал Arduino сам, но я предполагаю, что он имеет текущий предел, как PIC. Кроме того, регистры сдвига сами будут иметь ограничение по току. Если вы столкнетесь с этим, вам нужно будет использовать что-то вроде MOSFET, чтобы позволить вам управлять светодиодами, не потребляя много энергии непосредственно от вашего микроконтроллера.
источник
Любой данный вывод микроконтроллера AVR допускает подачу до 40 мА, а общий источник питания или питание от микросхемы (т. Е. На землю и контакты Vcc) должны быть ниже 200 мА.
Charlieplexing - отличное решение для ситуаций, когда вам нужно много светодиодов, но можно обойтись только с одним светодиодом, горящим за раз. Стандартная плата Arduino (например, Duemilanove) предоставляет 17 «свободных» выводов ввода / вывода, не считая TX, RX, Reset или вывод 13. Таким образом, вы можете подключить 17 * 16 = 272 светодиода. Это может хорошо работать, особенно если вы светите одним светодиодом или быстро сканируете между несколькими. Но если вы попытаетесь осветить всю матрицу с помощью шаблона, вы обнаружите, что каждый из них включен (немного меньше) в 1/272 времени, поэтому, если ток вашего привода составлял 30 мА в любой данный момент, каждый светодиод средний ток будет около 0,1 мА - довольно тусклый.
Если вам не нужно так много светодиодов, но вместо этого нужно больше яркости, лучше использовать традиционное мультиплексирование. В этом случае вы используете некоторые из ваших строк как строки, а некоторые как столбцы в матрице. Если вы используете ток светодиода 10 мА, вы можете определить матрицу из 4 столбцов и 13 рядов, где все 4 светодиода в одном ряду могут быть включены одновременно, и вы будете сканировать ряды. Тогда каждый ряд находится на 1/13 времени при токе 10 мА, поэтому средний ток светодиода может достигать 0,76 мА, НО вы получаете только 4 * 13 = 104 светодиода. (Определенно ярче для каждого светодиода, чем для чарлиплексирования.)
Ограничение в последнем примере составляет 40 мА на вывод на AVR - так как каждый ряд приводных штырьков источника 4x10 = 40 мА. Если вы разрешите добавление внешних транзисторов (которые могут быть дешевыми и небольшими) к выходам строки, то вы можете избежать этого конкретного предела и стать ярче. Например, вы можете создать массив 8х9, с 8 строками и 9 столбцами, всего 72 светодиода. Один из 8 рядов включен одновременно, выбранный через транзистор. Одновременно могут быть включены до всех 9 светодиодов в данном ряду, управляемые при 20 мА, поэтому 180 мА поступает от транзистора, и вы находитесь ниже пределов тока AVR. Средний ток на светодиод теперь составляет 20 мА / 8 = 2,5 мА - обычно достаточно яркий.
источник
Там очень хороший, подробный учебник здесь , который включает в себя раздел с помощью Arduino , чтобы запустить 8x8x8 светодиодный куб. (Не пропустите фильм на YouTube, который у них есть)
источник
Существует множество расширителей ввода / вывода, которые используют шины SPI или I2C. С помощью одного модуля MSSP вы можете управлять практически бесконечным количеством цифровых выходов, таких как светодиоды.
См. Таблицы микрочипов или примечания по применению для следующих частей:
SPI - MCP23S08
I2C - MCP23008
источник
При 17 выводах ввода / вывода, семнадцати NPN-транзисторах (эмиттерных повторителях для повышения тока) не должно быть особых проблем с отображением 272 светодиодов в произвольных комбинациях при коэффициенте заполнения 1/17 со средним током или 0,7 мА (200 мА / 272), ограниченным способность чипа сбрасывать 200 мА за раз. Добавление диода, чтобы получить падение на 0,7 В, позволит добавить еще 17 светодиодов (сокращая рабочий цикл до 1/18), хотя яркость не совсем будет соответствовать другим.
источник
В то время как Windell Oskay приводит веский аргумент, что 104 светодиода - это максимум без добавления дополнительных транзисторов, Том Айго опубликовал фотографии матрицы из 128 светодиодов, напрямую управляемой одним Arduino Mega - без дополнительных транзисторов, дискретных или встроенных.
Том Айго «обманывает», кратко превышая «абсолютный максимальный ток на вывод», указанный в техническом описании?
источник