Pull to refresh

Comments 28

Собственно делал аналогичное на ардуино с одним диодом. Вопрос: как с малым количеством выводов организовать тоже самое для большого количества диодов? Т.е. я хочу сделать допустить полоску из 100 диодов, по которой последовательно возрастается яркость слева направо.
упс, новый комент создал вместо ответа…
Для управления светодиодными линейками обычно применяют сдвиговые регистры. Регистры каскадируются, так что на любое число диодов нужно всего 2 вывода: CLK и DATA. Если требуется ШИМ-управление, придется с большой частотой обновлять содержимое регистров.
Давайте посчитаем: пусть тактовая частота регистра 10 МГц, за сто тактов обновляется состояние всех диодов. Таким образом, частота тактирования счетчика будет 100 кГц. Для 8-разрядной ШИМ (256 градаций яркости) несущая частота (частота мерцания) будет 100кГц/256=390Гц. Более-менее приемлемо.
Можно понизить разрядность ШИМ, несущая частота возрастет.
Можно разбить 100 диодов на 10 групп по 10, каждую повесить на свой регистр, и управлять группами параллельно. Потребуется уже 11 выводов (1 CLK + 10 DATA), но время обновления снизится тоже в 10 раз.
Да, подразумевается, что у вас хватает вычислительной мощности, чтобы рассчитывать состояние 100 ШИМ-каналов с требуемой частотой. Для ПЛИС это элементарно, а вот насчет AVR у меня сомнения… Допустим, мы используем аппаратный счетчик (один на все каналы). Сравнить текущее значение с порогом, вывести 1 или 0 на порт, загрузить следующий порог — тактов десять на каждый канал получается, даже если писать на чистом асме. При Fclk=20МГц получится гнать данные в сдвиговые регистры на частоте 2МГц максимум.
И это если контроллер не занят больше ничем, кроме обработки ШИМ.
Встречный вопрос — а на сколько мало количество выводов? Для 100 диодов можно сделать матрицу 10х10, потребуется всего 20 выводов, но логика описания ШИМ будет посложнее…
6 аналоговых выходов 8битных там :)
если физически 20 ножек есть то 100 диодов уже можно сделать =)
ммм… то есть физически 6 лап? и на каждую можно байт слать?
ну как бы там 14 выходов, но только 6 поддерживают ШИМ, остальные просто «да/нет».
чтобы сделать ШИМ на любом дискретном выходе потребуется чуть меньше кода чем в программе выше.
Спасибо, интересная статья. Если можно, задам пару дилетантских вопросов.

Краем уха слышал, что в библиотеках есть реализация микропроцессора. К тому же, на одной из Ваших картинок в меню показан пункт: «Embedded processor» Вот на эту тему и вопросы.

Это действительно то, о чём я думаю — реализация микропроцессора? Если да, то каковы характеристики этого процессора — разрядность и система команд. Есть ли возможность модифицировать систему команд процессора, например, добавить несколько команд? Поддерживает ли этот процессор страничную адресацию памяти и если да, то каков размер страницы? Все ли модели ПЛИС обладают достаточным количеством элементов для реализации микропроцессора? Если на основе ПЛИС сделать микропроцессор, то возможно ли и какова последовательность действий для переноса процессора в кремний?
Тут на все вопросы ответы — почти всегда да. Только в самые крошечные ПЛИСки не лезут мелкие процессоры.

Перенос в кремний — берется рабочая в ПЛИС схема на Verilog-е, и синтезируется в кремний, далее допиливается руками. Софт для синтеза страшно дорог.

Другой вариант — есть компании которые один в один ПЛИС в кремний переносят — получается чуть быстрее и чуть дешевле при больших объемах. Тогда ничего разрабатывать не нужно.
На ПЛИС можно реализовать почти любой процессор. Хватило бы логических элементов.
Разнообразию и фантазии процессоростроителей иногда можно только позавидовать. В качестве примера приведу сайт http://opencores.org/projects. Готовые к употреблению процессоры находятся во вкладках «Processor», «SoC» (расшифровывается как System-on-a-Chip).

Рускоговорящие ПЛИСоводы тусуются здесь http://electronix.ru/forum/index.php?showforum=75.

Упоминаемый Embedded processor — это скорей всего MicroBlaze.

Сам плисами не занимаюсь, но читая форумы пришел к выводу, что в конечном итоге каждый разработчик на ПЛИС пишет собственный процессор (или начинает использовать чужой), дабы потом упростить себе процесс программирования ПЛИС для реальных задач.
И очень зря так делают.
ПЛИС стоят гораздо дороже микроконтроллеров (которые они могут эмулировать) и уж тем более DSP. Чтобы это прочувствовать — нужно поработать и с теми, и с другими и понять, что на ПЛИС не добиться эмулятором такого же быстродействия за схожие деньги.

Зато бывают ПЛИС со встроенными DSP или просто контроллерами, которые можно использовать под свои нужды.
Например, на Марсоходе умельцы сварганили на своей плиске свой проц с системой команд AVR (по проще конечно), причем прошивку для него писали в AVR Studio, а потом заливали в плиску. Поищите там, интересный опыт.

marsohod.org вроде бы
есть на opencores.org почти полная реализация AVR с 5 stage pipeline.
За такое объяснение на лабораторной работе в моем универе отправляли на пересдачу.

VHDL — это не я зык программирования. VHDL — это язык описания.

По поводу регулировки яркости.
Яркость светодиода можно регулировать подачей на него разных значений постоянного напряжения

Это не правда. Светодиод — полупроводник. Либо p-n переход открыт, либо закрыт. И не бывает иначе.

Если сказать точнее, то просто у светодиода есть переходный процесс при зажигании, то есть загорается он не мгновенно

Вообще-то светодиод как раз загорается мгновенно т.к. имеет весьма малую инертность.
В статье использована частота ШИМ 10 000 Гц и тут есть вопрос: зачем?.. почему не достаточно сотни герц, которые человеческий глаз уже не различит?
При 150 Гц смотреть на диод уже неприятно для глаза. При 200 лично мне смотреть было просто противно.

Если затея с 10 кГц была в том, чтобы «ловить переходный процесс при зажигании», то прошу дать чуть более подробные объяснения своих действий. А то как-то получается «смотрите, я легко словил переходный процесс на совершенно не известном мне светодиоде».
Гугл говорит, что постоянная времени светодиодов — порядка 50-100 МГц, что гораздо меньше 10 кГц в статье, а значит «словить» переходный процесс на 10 кГц просто не реально.
Переходные процессы тут ни при чем, ШИМ будет работать и с идеальным, мгновенно зажигающимся светодиодом. Дело в инерции человеческого зрения. Глаз воспринимает яркость объекта как интеграл от количества света за некоторый промежуток времени (порядка 10-100 мс). Частоту мерцания выше сотни герц человек не различает, но если 1/4 периода светодиод горит, а 3/4 не горит, это будет восприниматься как свечение с 25% яркостью.
не 10-100 мс, а 0-30 мс. Большие времена глаз будет уже различать. И то до 100 Гц глаз еще замечает колебания светимости (вспоминаем ЭЛТшные мониторы и телевизоры). Хотя это, конечно, зависит от самого источника света. Люминофор светится гораздо дольше светодиода, но…

Это не правда. Светодиод — полупроводник. Либо p-n переход открыт, либо закрыт. И не бывает иначе.

Вы не правы. Попробуйте собрать простейшую схему соединив последовательно светодиод, батарейку и переменный резистор на килоомы.
Согласен. Светимость светодиода можно регулировать не только ШИМом. Но и не столько самим напряжением, сколько током. Собственно ВАХ прямого включения хорошо показывает быстрый рост тока. Те светодиоды, яркость которых регулируется подаваемым напряжением — имеют встроенный в корпус источник тока с фиксированным выходным напряжением и выходным током, зависящим от входного напряжения. Тогда все будет работать так, как пишет автор статьи.
Но он описывает просто светодиод безничего. Если бы даже была такая схема, в которой стоял бы переменный резистор, в каких пределах нужно было бы изменять его сопротивление для заметного изменения яркости светодиода?

Кстати, по поводу быстродействия. Еще в уривере подключали с другом лазерную указку к PICу, моргали ей с частатой около 7 кГц на советских времен фотодиод. Тот подключали к осциллу. Видели весьма четкие фронты.
Те светодиоды, яркость которых регулируется подаваемым напряжением — имеют встроенный в корпус источник тока.
Уже и такие есть? Покажите хотя бы один, пожалуйста.
я имел в виду корпус, как нечто, вклчюающее и светодиод, и источник. Возможно не очень удачно написал. У меня такой дома уже лет 5 висит. От 12V светит так, что ажно слепит. От 5V освещает прихожую ночью, чтоб не убиться обо что-нибудь :)
Но он у меня простейший. Резак последовательно со светодиодом.
я, кстати, удивлен, что он так может работать. Видимо хватает ему тока для свечения…
А что тут удивляться… Все же считается. Возьмите напряжение питания, вычтите из него прямое падение на диоде (практически константа для кристалла, около 4.5В для синих, 2.5В для красных) и разделите на сопротивление резистора.
Полученный ток сравните с номинальным (20мА для обычных 5мм bright LEDs).

Тем же макаром и переменный можно посчитать.

А вообще — есть же драйверы. Там вам и управление PWM/SPI на выбор и ток гарантированный.
Only those users with full accounts are able to leave comments. Log in, please.