Как стать автором
Обновить
2093.36

Не совсем бегущая строка своими руками. Симуляторы электронных схем до добра не доведут

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров11K
image

Как вы относитесь к симуляторам электронных схем? Кто-то на них плюется, а мне нравится! Особенно нравится, когда организму лень отлипать от дивана, а мозг требует схемотехники. Arduino IDE + ISIS Proteus на мой взгляд — отличная альтернатива компьютерным игрушкам.

Часто причиной возникновения в железе моих проектов «выходного дня» является именно результат удачного моделирования в симуляторе. Так случилось и в этот раз, я досимулировался до того, что получилось вполне жизнеспособное устройство, которое было решено воплотить в реальном мире.

Я уже ни раз писал, что электроника — мое хобби, я занимаюсь этим от скуки. Кто-то увлекается рыбалкой и ходит на реку с удочкой. А я вместо снастей и приманок покупаю радиодетали и заказываю печатные платы. Если для вас пайка сродни медитации, а дым канифоли слаще кальяна, то этот пост для вас. Паять в этот раз мне пришлось ну очень много.

Моделирование бегущей строки в Proteus


С вами же бывает так, что просто захотелось шоколадных конфет? Вы не задаетесь вопросом: «почему?» — а просто идете на кухню, завариваете чай, достаете конфеты и с удовольствием удовлетворяете эту потребность. Вот так однажды мне захотелось запрограммировать бегущую строку. Но таковой у меня под рукой в тот момент не оказалось. На помощь пришел ISIS Proteus.

«У самурая нет цели, только путь» — успокаивал себя я, и продолжал соединять виртуальные компоненты виртуальными проводами. Не могу сказать, что процесс сборки виртуальной модели был увлекательным. У Proteus весьма своеобразный интерфейс, но с этим можно смириться и привыкнуть. Уж простите, но токоограничивающие резисторы для светодиодов на виртуальной модели я решил не ставить. И не подумайте ничего плохого, мне же нужна была всего-навсего модель для визуализации. Поэтому вместо силовых ключей для переключения строк на виртуальной модели размещены инверторы.

image

В основе схемы заложен микроконтроллер ATmega328, угадайте почему? Для хранения текста, который будет отображать строка, имеется микросхема памяти с интерфейсом I2C 24С128. Управление бегущей строкой для записи текста будет производиться через USART микроконтроллера из терминала. В железе можно поставить любой преобразователь типа FT232. Впоследствии можно будет слепить какую-нибудь программулину для компа, которая сможет отправлять в строку текст автоматически.

Развертка светодиодной матрицы выбрана построчной, чтобы снизить мерцания и получить высокую яркость. Размер матрицы я сделал 7 х 96 точек. Высота в 7 светодиодов отлично подходит для отображения текста. Если в матрицу закладывать 8-ую строчку, то она практически все время была бы выключена, или буквы смотрелись бы не очень пропорционально. К тому же, этот ход позволил в дальнейшем сэкономить 96 светодиодов.

Для управления светодиодами в строке использованы сдвиговые регистры 74НС595. Они обладают выходной защелкой. Это позволяет не отключать светодиоды в строке в то время, когда микроконтроллер записывает ее содержимое, что положительно влияет на яркость. Также эти регистры имеют хороший выходной драйвер, и, самое важное, они очень доступные. Есть один недостаток: для управления светодиодами необходимо добавить в схему 96 токоограничивающих резисторов.

Как подружить Arduino и Proteus


Сложного в этом деле ничего нет, но один раз посмотреть, как это делается, не помешает. Я использую Arduino IDE 2.0 и ISIS Proteus 8.6 SP2. Да, Proteus у меня староват, версия 8.6 вышла в 2017 году. Последняя версия на сегодня изменений в нужную для меня сторону имеет не так много.

Традиционным способом создаем новый скетч для платы Arduino UNO. Эта плата выполнена на основе микроконтроллера ATmega328, который я решил использовать в своем проекте. Далее сохраняем скетч в удобном месте на своем компьютере. Пишем необходимый код. Но компиляцию кода выполняем с помощью команды "Sketch / Export Compiled Binary" или сочетание клавиш "Alt + Ctrl + S". В результате в папке со скетчем появится необходимый файл для прошивки микроконтроллера. Его можно будет прошить в реальную железку, или использовать для моделирования в Proteus, что мы и сделаем.

image

Пожалуй, извлечение прошивки из Arduino IDE самая большая загвоздка. Дальше все совершенно просто. Нужно указать путь к файлу с прошивкой к виртуальной модели микроконтроллера в Proteus, и настроить его аналогично тому, как установлены fuse-биты у микроконтроллера в плате Arduino Uno.

image

Из обязательных настроек устанавливаем тактирование от внешнего кварцевого резонатора, и тактовую частоту 16МГц. В качестве файла прошивки можно подключать файлы с расширением "HEX" или "ELF". "HEX" — это фактически образ программной памяти. "ELF" — это файл, предоставляющий возможность отладки, но как-то этому в Arduino IDE уделили недостаточно внимания.

Программировать микроконтроллер в Arduino IDE, не используя при этом плату Arduino, вполне возможно. Нужно это или нет, это уже другой вопрос, в этой статье подымать его очень не хотелось бы. На официальном сайте есть описание платы Arduino UNO, в нем приводится поясняющая картинка, по которой можно определить связь между выводами платы Arduino UNO и портами микроконтроллера ATmega328.

image

Сборка бегущей строки в железе


Светодиоды для строки решил брать обычные красные выводные с 5-ти миллиметровой колбой. Они как правило самые дешевые, ну и самые «живучие». Колбы светодиодов выбрал тонированные, в черном пластике они выглядят достаточно темными, это создает более высокую контрастность изображения по сравнению с прозрачными колбами.

image

Угол рассеивания светодиодов 60 градусов, чтобы иметь максимальный угол обзора бегущей строки и не подсвечивать соседние светодиоды в матрице. Светодиоды с углом 45 или 15 градусов брать не советую. Яркость 150mcd вполне достаточно для помещений или установки на улице на теневой стороне. На солнышке, конечно, их будет видно слабовато, но мне это и не нужно.

Так как светодиоды работают в импульсном режиме, подаю на них ток около 60мА. Вполне можно подавать и больший ток, но мне такая яркость уже не нужна. Светодиодами Arlight пользуюсь больше двадцати лет. В свое время использовал их тысячами штук. Работают в таком режиме свободно.

Если сами решитесь собирать большие светодиодные матрицы, покупайте светодиоды только пачками с подходящим количеством. И смотрите, чтобы бин-код на пачках был одинаковый. Иначе светодиоды в матрице будут сильно отличаться по цвету и яркости, выглядеть будет так себе.

В качестве основного материала для изготовления светодиодной матрицы я решил использовать алюминиевую композитную панель для изготовления наружной рекламы. Материал достаточно прочный, легкий и простой в обработке. Использовать обычный пластик крайне не рекомендую. Из-за большой кучности отверстий материал скорее всего вспучит, и он пойдет волнами.

image

Для первого образца я решил все делать вручную, вооружился шуруповертом и просверлил чуть больше полутысячи отверстий. Если кто-то тоже отважится на подобное, рекомендую купить мебельное сверло подходящего диаметра. Эти сверла имеют более острый угол захода, лучше центруют и сверлят круглое отверстие. Обычным сверлом добиться хорошей посадки светодиода вряд ли получится. Светодиоды заталкивал при помощи обычной отвертки.

image

Светодиоды соединял в матрицу объемным монтажом. Выводы гнул, ориентируясь на утолщения на них. Сперва нужно согнуть и пропаять горизонтальные связи, а потом уже вертикальные, иначе потом подобраться паяльником к нижнему слою проводников будет затруднительно. После пайки конструкция получается достаточно жесткой, чтобы исключить замыкания между вертикальными и горизонтальными выводами. Обрезки выводов светодиодов удобно собирать магнитом, производители специально предусмотрели такую возможность.

image

На самом деле это только выглядит страшно. Задача вполне посильная. Важно не пытаться как-то упростить этот процесс, а делать все методично и поступательно. На все ушло пара вечеров.

image

Печатную плату по старинке изготовил утюжком. И на ней конечно же появились токоограничивающие резисторы. Люблю SMD компоненты только за то, что под них не нужно сверлить отверстия. Но вот провода для подключения матрицы надо было брать потоньше, и отмерять их длину точнее, жгут получился не очень опрятным.

image

Текстовая табличка


Только после окончания сборки бегущей строки, я серьезно оценил ее размеры и задумался о целесообразности такого изделия в домашнем хозяйстве. И тут в голову пришла очередная шальная мысль сделать облегченную версию! Сказано — сделано.

image

В матрице выделил фиксированные знакоместа и ограничил их количество. Получилось некое подобие всеми любимого ЖКИ на основе контроллера HD44780. Вполне нормальный вариант, чтобы повесить такое табло над дверью и выводить на нем надписи «занято» и «свободно»… Ну а для чего еще дома может понадобиться бегущая строка?!


Написал несколько эффектов для обновления текста. Тут доступен полный полет фантазии, я придумал такие, как показано на видео. Proteus с динамической индикацией справляется вполне сносно, но контрастность индикаторов слабовата. Надо было брать модель синих светодиодов, их лучше видно.

На печатной плате добавил опторазвязки для подключения кнопок, с помощью которых можно сменять текстовые сообщения из заранее записанных.

В этот раз уже не хотелось заниматься всей этой механической обработкой. В ближайшей конторе по изготовлению наружной рекламы заказал фрезеровку панели под светодиоды. Также заказал печатную плату. И раз уж печатную плату все равно нужно было ждать, решил заказать сдвиговые регистры со встроенными источниками тока STP16CP05, чтобы не паять еще кучу резисторов. Еще разжился МГТФ, чтобы аккуратно все подпаять.

image
image


Заключение


Такие симуляторы как Proteus или Multisim хорошо подходят для изучения электроники или занятий хобби. Но, к сожалению, их библиотеки компонентов сильно устарели. Особенно это заметно для Multisim, его не обновляли достаточно давно. Ощущение, что NI просто забили на это. Особенно плохо в Multisim с микроконтроллерами.

Proteus вроде бы периодически обновляется, но не совсем туда, куда хотелось бы. Добавляются дополнительные инструменты для трассировки и разработке кода. Но библиотеки все еще отстают от реальности. Разработчики выпустили специальную версию для моделирования Arduino, это не с проста…

Разработать или отладить что-то в духе «импортозамещения» с помощью симуляторов, наверное, можно. Но для разработки действительно современного железа это точно бесполезные инструменты.

Теги:
Хабы:
Всего голосов 49: ↑48 и ↓1+47
Комментарии41

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud