Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Вдохновленный различными светодиодами, мигающими светодиодами и подобными инструкциями, я хотел создать свою версию светодиода, управляемого микроконтроллером. Идея состоит в том, чтобы сделать последовательность мигания светодиода перепрограммируемой. Это перепрограммирование может быть выполнено с помощью света и тени, например вы можете использовать свой фонарик. Это мое первое руководство, любые комментарии или исправления приветствуются. Обновление 2008-08-12: Теперь в магазине Tinker Store есть комплект. Вот видео его перепрограммирования. Простите за качество.
Шаг 1. Как это работает
Светодиод используется как выход. В качестве входа я использовал LDR, резистор, зависящий от света. Этот LDR меняет свой резистор, когда он получает больше или меньше света. Затем резистор используется как аналоговый вход для АЦП микропроцессора (аналогово-цифровой преобразователь).
Контроллер имеет два режима работы: один для записи последовательности, другой для воспроизведения записанной последовательности. Как только контроллер замечает два изменения яркости в течение половины секунды (темный, яркий, темный или наоборот), он переключается в режим записи. В режиме перезаписи вход LDR измеряется несколько раз в секунду и сохраняется на микросхеме. Если память исчерпана, контроллер снова переключается в режим воспроизведения и начинает воспроизведение записанной последовательности. Поскольку память этого крошечного контроллера очень ограничена, 64 байта (да, байта!), Контроллер может записывать 400 бит. Этого места хватит на 10 секунд при 40 отсчетах в секунду.
Шаг 2: материалы и инструменты
Материалы - 2 резистора 1 кОм - 1 резистор LDR (светозависимый резистор), например M9960 - 1 слаботочный светодиод, 1,7 В, 2 мА - 1 x Atmel ATtiny13v, 1 КБ флэш-ОЗУ, 64 байта ОЗУ, 64 байта EEPROM, 0-4 МГц @ 1,8-5,5 В - 1 x CR2032, 3 В, 220 мАч Инструменты - паяльник - припаять провод - макет - программатор AVR - источник питания 5V - мультиметр Программное обеспечение - Eclipse - плагин CDT - WinAVRCosts в целом должны быть ниже 5 $ без инструментов. Я использовал ATtiny13v, потому что эта версия этого семейства контроллеров может работать при 1,8 В. Это позволяет использовать схему с очень маленькой батареей. Чтобы он работал очень долго, я решил использовать слаботочный светодиод, который достигает полной яркости уже при 2 мА.
Шаг 3: схемы
Некоторые комментарии к схеме. Вход сброса не подключен. Это не лучшая практика. Лучше было бы использовать резистор 10 кОм в качестве подтягивающего. Но у меня он отлично работает без резистора и экономит резистор. Чтобы схема была как можно проще, я использовал внутренний генератор. Это означает, что мы экономим кристалл и два небольших конденсатора. Внутренний генератор позволяет контроллеру работать на частоте 1,2 МГц, что более чем достаточно для наших целей. Если вы решите использовать другой источник питания, кроме 5 В, или использовать другие светодиоды, вам необходимо рассчитать резистор R1. Формула: R = (Питание V - LED V) / 0,002A = 1650 Ом (Питание = 5V, LED V = 1,7V). Используя два слаботочных светодиода вместо одного, формула выглядит так: R = (Питание V - 2 * LED V) / 0,002A = 800 Ом. Обратите внимание, что при выборе другого типа светодиода вам придется скорректировать расчет. Величина резистора R2 зависит от используемого LDR. У меня 1КОм работает. Вы можете использовать потенциометр, чтобы найти лучшее значение. Cicuit должен уметь обнаруживать изменения освещенности при нормальном дневном свете. Для экономии энергии PB3 устанавливается на высокий уровень только в том случае, если выполняется измерение. Обновление: схема вводила в заблуждение. Ниже представлена правильная версия. Спасибо, dave_chatting.
Шаг 4: соберите на прототипной плате
Если вам нравится тестировать свою схему, вам очень пригодится макетная плата. Вы можете собрать все детали, не прибегая к пайке.
Шаг 5: запрограммируйте схему
Контроллер можно программировать на разных языках. Чаще всего используются Assembler, Basic и C. Я использовал C, поскольку он лучше всего соответствует моим потребностям. Я привык к C десять лет назад и смог восстановить некоторые знания (ну, только некоторые…). Для написания вашей программы я рекомендую Eclipse с подключаемым модулем CDT. Загрузите eclipse здесь https://www.eclipse.org/ и плагин здесь https://www.eclipse.org/cdt/. Для компиляции языка C для микроконтроллеров AVR вам понадобится кросс-компилятор. Как бы нам ни повезло, существует порт знаменитого GCC. Он называется WinAVR, и его можно найти здесь https://winavr.sourceforge.net/. Очень хорошее руководство по программированию контроллеров AVR с WinAVR находится здесь https://www.mikrocontroller.net/articles/AVR-GCC- Руководство. Извините, это на немецком языке, но вы можете найти тысячи учебных страниц по этой теме на своем языке, если будете искать их. После компиляции исходного кода вам необходимо передать шестнадцатеричный файл в контроллер. Это можно сделать, подключив компьютер к сети с помощью ISP (в системном программисте) или с помощью специальных программистов. Я использовал специальный программатор, так как он немного упрощает схему за счет экономии некоторых проводов и вилки. Недостатком является то, что вам нужно переключать контроллер между схемой и программатором каждый раз, когда вы хотите обновить свое программное обеспечение. Мой программист пришел с https://www.myavr.de/ и использует USB для подключения к моему ноутбуку. Есть много других, и вы даже можете собрать его самостоятельно. Для самого переноса я использовал программу с именем avrdude, которая является частью дистрибутива WinAVR. Пример командной строки может выглядеть так:
avrdude -F -p t13 -c avr910 -P com4 -U flash: w: flickled.hex: iВ приложении вы можете получить исходный код и скомпилированный шестнадцатеричный файл.
Шаг 6: пайка
Если ваша схема работает на макетной плате, вы можете ее припаять.
Это можно сделать на печатной плате (печатной плате cicuit), на прототипе платы или даже без платы. Я решил обойтись без него, так как схема состоит всего из нескольких компонентов. Если вы не знакомы с пайкой, я рекомендую вам сначала поискать руководство по пайке. Мои навыки пайки немного устарели, но я думаю, вы поняли идею. Надеюсь, вам понравилось. Алекс