Как создать простой генератор ШИМ-сигнала на микроконтроллере ATtiny13. Какие преимущества дает использование ATtiny13 для генерации импульсов. Какие параметры ШИМ-сигнала можно настраивать в этой схеме. Как реализовать управление частотой и скважностью с помощью потенциометров.
Особенности и преимущества генератора импульсов на ATtiny13
Генератор импульсов на базе микроконтроллера ATtiny13 обладает рядом преимуществ:
- Компактность — вся схема содержит всего 4 компонента
- Низкое энергопотребление благодаря использованию ATtiny13
- Гибкость настройки параметров ШИМ-сигнала
- Возможность программирования различных режимов работы
- Низкая стоимость компонентов
Основные параметры ШИМ-сигнала в схеме на ATtiny13
С помощью данной схемы можно генерировать ШИМ-сигнал со следующими настраиваемыми параметрами:
- Частота от 36 Гц до 37.5 кГц
- Скважность от 0.4% до 99.6%
- Разрешение по скважности 8 бит (256 уровней)
Какие факторы влияют на выбор частоты ШИМ для конкретного применения? Частота ШИМ выбирается исходя из требований нагрузки и желаемой плавности регулировки. Для светодиодов обычно достаточно частоты 100-200 Гц, а для управления двигателями может потребоваться частота в несколько кГц.

Настройка частоты ШИМ-сигнала
Частота ШИМ в данной схеме определяется настройками предделителя таймера и рассчитывается по формуле:
F(ШИМ) = F(ЦПУ) / (N * 256)
где: F(ЦПУ) — тактовая частота микроконтроллера (9.6 МГц) N — коэффициент предделителя (1, 8, 64, 256 или 1024)
Как выбрать оптимальное значение предделителя для требуемой частоты ШИМ? Необходимо подобрать такое значение N, чтобы получить частоту, наиболее близкую к желаемой. Например, для частоты около 150 Гц оптимально подойдет N=256.
Управление скважностью ШИМ-сигнала
Скважность ШИМ задается 8-битным значением в регистре сравнения OCR0A:
- 0 соответствует скважности 0% (постоянный низкий уровень)
- 255 соответствует скважности 100% (постоянный высокий уровень)
- Промежуточные значения дают пропорциональную скважность
Какой диапазон скважности оптимален для большинства применений? В большинстве случаев используется диапазон 5-95%, что дает хороший запас по краям и при этом обеспечивает плавную регулировку.
Настройка параметров с помощью потенциометров
В схеме используются два потенциометра для настройки частоты и скважности:

- R1 (2.2 кОм) — настройка скважности
- R2 (10 кОм) — выбор частотного диапазона
Какие преимущества дает использование потенциометров для настройки? Потенциометры позволяют плавно и удобно регулировать параметры ШИМ в реальном времени без перепрограммирования микроконтроллера.
Программирование ATtiny13 для генерации ШИМ
Для программирования ATtiny13 используется среда Arduino IDE с дополнительными настройками для поддержки ATtiny. Основные шаги:
- Настройка АЦП для считывания значений с потенциометров
- Инициализация таймера в режиме Fast PWM
- Настройка выхода OC0A для вывода ШИМ-сигнала
- Реализация основного цикла с обновлением параметров ШИМ
Какие особенности программирования ATtiny13 нужно учитывать? Необходимо правильно настроить фьюзы для работы на внутреннем генераторе 9.6 МГц. Также важно учитывать ограниченный объем памяти 1 КБ.
Применение генератора импульсов на ATtiny13
Данная схема может использоваться в различных проектах, требующих генерации ШИМ-сигнала:
- Управление яркостью светодиодов
- Регулировка скорости вращения двигателей
- Генерация звуковых сигналов
- Управление нагревательными элементами
- Имитация аналоговых сигналов
Какие преимущества дает использование ATtiny13 по сравнению с аналоговыми схемами генерации ШИМ? ATtiny13 обеспечивает более точное управление параметрами, возможность программной настройки режимов работы и дополнительную функциональность при необходимости.

Расширение возможностей базовой схемы
Базовую схему генератора импульсов можно дополнить для расширения функциональности:
- Добавление кнопок для переключения предустановленных режимов
- Использование EEPROM для сохранения настроек
- Реализация плавного изменения параметров во времени
- Добавление интерфейса для управления с компьютера
Какие дополнительные возможности наиболее востребованы в практических применениях? Часто требуется возможность сохранения нескольких предустановленных режимов и плавного перехода между ними.
Генератор на attiny13
Расположение выводов ATtiny Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности. AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством АЛУ , что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.

Содержание:
- Генератор импульсов на Attiny 13a (с настройками) 📹
- Системный интегратор
- Генератор прямоугольных импульсов на Attiny13
- Управляемый генератор прямоугольных колебаний на ATtiny2313
- Запрограммируйте ATTiny13 как звуковой генератор с переменной частотой и шириной импульса
- Генератор импульсов на Attiny2313
- ШИМ на ATTINY13 для авто
- Цифровой генератор опорного напряжения на ATtiny13
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Генератор случайных ответов(шар судьбы) на ATtiny13 и Arduino
youtube.com/embed/T-tFXdjZQX8″ frameborder=»0″ allowfullscreen=»»/>Генератор импульсов на Attiny 13a (с настройками) 📹
Расположение выводов ATtiny Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности. AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством АЛУ , что позволяет получить доступ к двум независимым регистрам при выполнении одной команды.
В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура. В режиме Power-down регистры сохраняют свое значение, но генератор останавливается, блокируя все функции прибора до следующего прерывания или аппаратного сброса. В режиме ADC Noise Reduction останавливается вычислительное ядро и все модули ввода-вывода за исключением АЦП, что позволяет минимизировать шумы при выполнении преобразования.
Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс программой-загрузчиком, выполняемой в AVR ядре, или обычным программатором энергонезависимой памяти.
Найти поставщиков вы можете перейдя по ссылке Каталог фирм микроэлектроники. Поиск по сайту:. По базе:. Мероприятия: Реклама:. Примеры применения микроконтроллеров AVR в устройствах управления 3-фазными бесколлекторными электродвигателями постоянного тока. Реклама на сайте О проекте Карта портала тел.
Системный интегратор
By ;tv , April 24, in МК для начинающих. Задался целью сделать генератор на основе тинки. Частота нужная 36кгц. Написал программку вроде, форум-1 , но не хочет заводиться! На кристалле по умолчанию 1Мгц. В чем не угадал, подскажите?
Меня любопытство раздирало — запустить на Attiny13 стрелочный Калибровки внутреннего генератора никакого отношения к заводским не имеют.
Генератор прямоугольных импульсов на Attiny13
Сегодня я расскажу вам, как с помощью встроенного в микроконтроллер ATtiny13 ШИМ-модуля сделать цифровой 8-битный генератор опорного напряжения 0 — 5В. Идея девайса до гениальности проста. На одном из выходов контроллера с помощью встроенного модуля ШИМ генерируются прямоугольные импульсы, которые затем сглаживаются обычным RC-фильтром. Величина сглаженного напряжения, как вы понимаете, определяется длительностью генерируемых импульсов. А поскольку длительность импульсов определяется 8-битным счётчиком, соответственно, изменяя значение этого счётчика — можно получить различных уровней выходного напряжения. Много это или мало? Давайте прикинем. Для интервала В один шаг получается примерно равным 19,5 мВ. При использовании контроллера в SMD-корпусе очень удобно используемые для программирования ноги вывести на отдельные разъёмы чтобы контроллер каждый раз от платы не отпаивать.
Управляемый генератор прямоугольных колебаний на ATtiny2313
Вернуться в Микроконтроллеры — Задания и примеры. Сейчас этот форум просматривают: Google [Bot] и гости: 0. Сотворим вместе. Задание 2. Примеры для ATtiny
Switch to English регистрация. Телефон или email.
Запрограммируйте ATTiny13 как звуковой генератор с переменной частотой и шириной импульса
Автоматический запуск бензогенератора. Усилитель звука на микросхеме KA Когда-то в [Л. Он мог вырабатывать 31 фиксированную частоту от 0,1 Hz до 4 MHz , имел очень простую схему и управлялся подачей двоичного кода на управляющие входы. Скорее всего, данная схема создавалась не как самостоятельное устройство, а как составная часть, модуль для использования в других разработках например, в качестве задающего генератора в частотомерах, часах, елочных гирляндах и т.
Генератор импульсов на Attiny2313
Кто не знает, DTMF англ. Dual-Tone Multi-Frequency — это двухтональный многочастотный аналоговый сигнал, используемый для набора телефонного номера. Читать Википедию. Решение собрать такое устройство продиктовано желанием попробовать реализовать сложные аналоговые сигналы при помощи микроконтроллера. Никакого практического применения для данного устройства не планировалось, но может кому пригодится такое устройство? Устройство формирует сложный двухкомпонентный сигнал по факту нажатия кнопки на матричной клавиатура 4х4, стандартно используемой для таких целей. Я отлаживал устройство при помощи вот такой мембранной клавиатуры.
передо мной стоит следующая задача. собрать генератор импульсов заданной частоты на attiny Частота кГц. форма сигнала.
ШИМ на ATTINY13 для авто
Иногда в радиолюбительской практике встречается задача автоматической многократной передачи короткого сообщения телеграфной азбукой кодом Морзе. Это может быть необходимо при постройке автономного радиомаяка для контроля прохождения, передатчика для «охоты на лис» или иных целей. Сегодня такая задача легко решается с помощью микроконтроллера, преобразующего заложенный в его память текст сообщения в последовательность точек и тире и с заданным периодом повторяющего её.
Цифровой генератор опорного напряжения на ATtiny13
ВИДЕО ПО ТЕМЕ: Интересное маленькое устройство на Attiny13 и lm358.
Войдите , пожалуйста. Хабр Geektimes Тостер Мой круг Фрилансим. Мегапосты: Криминальный квест HR-истории Путешествия гика. Войти Регистрация.
Форумчане, здравствуйте! Простите за нубский вопрос.
Новые книги Шпионские штучки: Новое и лучшее схем для радиолюбителей: Шпионские штучки и не только 2-е издание Arduino для изобретателей. Обучение электронике на 10 занимательных проектах Конструируем роботов. Руководство для начинающих Компьютер в лаборатории радиолюбителя Радиоконструктор 3 и 4 Шпионские штучки и защита от них. Сборник 19 книг Занимательная электроника и электротехника для начинающих и не только Arduino для начинающих: самый простой пошаговый самоучитель Радиоконструктор 1 Обновления Подавитель сотовой связи большой мощности. Подписка на тему Сообщить другу Версия для печати.
Burn Bootloader как раз прошивает фьюзы необходимые для данного пункта меню.
Карта сайта
Карта сайтаГлавная страница-Персональные страницы-Коновалов Дмитрий Александрович
| ||
Простой генератор ШИМ на базе AVR ATtiny13
Не хватает простого генератора ШИМ для проекта? Простой генератор ШИМ на базе AVR ATtiny13 — это ваше решение. В нем всего 4 части.
Для другого проекта я хотел протестировать светодиодную матрицу, предназначенную для подводной светодиодной лампы. Светодиодная матрица состоит из 10 красных светодиодов CREE XP E2 (75 лм / 1 Вт каждый) и 5 тепло-белых светодиодов Cree XM-L (220 лм / 3 Вт каждый). Светодиодная матрица смонтирована на алюминиевом блоке диаметром 53 мм и высотой 35 мм.
В частности, я хотел измерить влияние режима ШИМ на напряжение светодиода и рассеиваемую мощность/температуру алюминиевого блока. Проект подводного светодиода будет реализован на чипе AVR ATtiny44. Это определяет возможности ШИМ для светодиодного драйвера.
Для предварительного тестирования я разработал простой ШИМ-генератор на базе ATtiny13, работающий на частоте 9,6 МГц с выключенным предохранителем системного тактового генератора. В режиме Fast PWM возможные частоты для сигнала PWM рассчитываются с использованием уравнения 9.0013
F(PWM) = F(CPU) / (N * 256)
с N в качестве предварительного делителя таймера с возможными значениями
Рабочий цикл устанавливается 8-битным счетчиком со значениями 0…254.
В качестве простых устройств ввода частоты и скважности я выбрал два потенциометра на двух входах АЦП. АЦП настроены на использование Vcc в качестве эталона. Заглянув в свою коллекцию потенциометров, я нашел два триммера (от Pollin) с катушкой управления (см. макет-poti.jpg). Величина сопротивления не критична. Я пробовал потенциометр на 1 кОм, а также потенциометр на 100 кОм.
Рабочий потенциометр R1 (см. Eeschema.png) оказался слишком грубым для тонкой настройки разрешения. Поэтому я заменил его шпиндельным горшком, дающим желаемое разрешение.
Регулятор частоты R2 (см. Eeschema. png) должен покрывать 5 настроек для значений предделителя ШИМ-таймера. Нет проблем с разрешением.
Тестирование простого генератора ШИМ на макетной плате показывает очень хорошие результаты вблизи расчетных частот ШИМ:
- 37 500 кГц (расчет) / 38,1 кГц (реальный)
- 4,6875 кГц (расч.) / 4,73 кГц (действ.)
- 586,0 Гц (расч.) / 594 Гц (действ.)
- 146,48 Гц (расч.) / 148 Гц (действ.) реальный)
Пошлина колеблется от 0,4 % до 99,6 % (см. прикрепленные изображения).
Список компонентов:
Ссылочное значение С1 100н J1 Мощность J2 выход ШИМ J3 выход ШИМ Р1 2к2 шпиндель R1 R2 10к У1 АТтини13В-10ПУ
Вложения:
- макет-poti.jpg
- макет-шпиндель.jpg
- LabNation_Screenshot*.png
- Eeschema.png
- Code-pwmGenerator-attiny13.zip
- KiCad-pwmGenerator-attiny13.zip
Project Followers
Follow project
Related Items
Newsletter
Повестка дня
Последние комментарии
В тренде
Имя *
Фамилия *
Псевдоним
Электронная почта *
Пароль *
Подтвердить пароль *
ATTiny micro AVL project
Мне нужен был (хотел) малобюджетный генератор позывных, который мог бы передавать мой позывной (PD9JS) в виде звука через заданные интервалы во время QSO. Искал в интернете, но ничего полезного не нашло.
Сообщив об этом коллеге по работе, на следующий день он бросил Arduino мне на стол и сказал посмотреть на «ATTiny AVR». Так я и сделал. Работая с контроллерами Microchip ARM Cortex, Arduino был глотком свежего воздуха для работы (если вам не нужны точные временные параметры). Заказал несколько ATtiny85 за доллар в Китае, и они прибыли в кратчайшие сроки. Так начался проект азбуки Морзе AVR.
Тем временем требования немного расширились. Я также хотел, чтобы он был автономным и имел возможность служить генератором позывных для ретрансляторов. Имея возможность включить ретранслятор, отправить позывной и вернуться к приему, или, если проводилось QSO, смешать звук позывного азбуки Морзе с текущим звуком QSO. И я хотел, чтобы он питался от перезаряжаемой батареи LION.
Вещи, которые я использовал: 1. Arduino UNO. ATTiny85. Небольшая макетная плата и пара (4) проводов. Я не буду вдаваться в подробности о том, как подключить UNO к ATTiny, чтобы запрограммировать его, так как есть много отличных сайтов, которые шаг за шагом показывают, как это сделать.
Схема генератора азбуки Морзе ATtiny
Слева от схемы. В конструкции я использовал перезаряжаемый кнопочный элемент LION 3v. Поскольку к этим батареям прилагается руководство пользователя, идея заключалась в том, чтобы никогда не позволять схеме полностью разряжать батарею. Для этого я использовал один из портов AD, подключенный к делителю напряжения на батарее. Если напряжение становится низким, ATTiny отключается. Будьте осторожны, чтобы не перезарядить элемент во время работы, так как это не является частью этой конструкции.
Справа на схеме находится переключатель для PTT (вам может понадобиться добавить дополнительный резистор, если вы устанавливаете потребляющий ток). Я использую его на Baufeng UVR3 как есть, и он отлично работает без чрезмерного потребления тока. Аудиовыход для тона азбуки Морзе развязывается через C1, и после этого используется делитель переменного напряжения для определения громкости тона, смешанного со звуком TX «микрофона».
Два светодиода были добавлены для визуальной индикации активности сигналов PTT и азбуки Морзе, но они не являются обязательными для операций, например, для установки в сам микрофон.
Функциональные требования
- Программируемое время интервала передачи. Как часто посылать позывной азбукой Морзе.
- Программируемая частота тона кода Морзе. Частота звукового тона сигналов Морзе.
- Программируемая скорость азбуки Морзе (WPM). Сколько слов в минуту нужно отправить азбукой Морзе.
- Переменное время PPT до и после включения и отпускания клавиши для использования повторителя.
- Отключение при низком напряжении батареи. Для продления срока службы аккумуляторной батареи.
- Перейти в «спящий режим» в «достаточном интервале» между передачами. Сохранение мощности.
- При использовании компонентов SMD он должен помещаться в корпус микрофона (не на печатную плату, как показано!!)
Ваш браузер не поддерживает видео тег.
ATTiny Генератор азбуки Морзе Код Arduino
Объяснение того, как работает программное обеспечение, объясняется ниже..
#include#include #include #include #include #define UNIT_LENGTH 120//мс для скорости Морзе #define VL_LOW 189 // уровень индикатора низкого заряда батареи делитель 12:1 статическая константа int numReadings = 3; static const struct { const char letter, *code; } Карта Морзе[] = { {'А', ".-"}, {'В', "-..."}, { 'С', "-.-." }, {'Д', "-.."}, { 'Е', "." }, { 'Ф', "..-." }, { 'Г', "--." }, {'Н', "...."}, {'Я', ".."}, { 'J', ".---" }, {'К', "-.-"}, {'Л', ".-.."}, {'М', "--"}, { 'Н', "-." }, {'О', "---"}, { 'П', ".--." }, {'В', "--.-"}, { 'Р', ".-." }, {'С', "..."}, {'Т', "-"}, {'У', "..-"}, {'В', "...-"}, {'W', ".--" }, { 'ИКС', "-..-" }, {'Д', "-.--"}, {'Я', "--.."}, { ' ', " " }, //Пробел между словами, семь единиц { '1', ". ----" }, {'2', "..---"}, {'3', "...--"}, {'4', "....-"}, {'5', "....."}, {'6', "-...."}, {'7', "--..."}, {'8', "---.."}, {'9', "----." }, {'0', "-----"}, { '.', "·–·–·–" }, { ',', "--..--" }, { '?', "..--.." }, { '!', "-.-.--" }, { ':', "---..." }, { ';', "-.-.-." }, { '(', "-.--." }, {')', "-.--.-" } }; uint8_t сторожевой_счетчик, mcucr1, mcucr2; целые показания[numReadings]; // показания с аналогового входа внутренний индекс = 0; // индекс текущего показания общее количество = 0; // промежуточный итог среднее значение = 0; ISR(WDT_vect) { сторожевой_счетчик++; // здесь происходит прерывание сторожевого таймера } недействительным enable_watchdog (недействительным) { wdt_reset(); Кли(); mcucr1 = MCUCR | _BV(БОДС) | _BV(БОДСЕ); //выключаем детектор коричневого цвета mcucr2 = mcucr1 & ~_BV(BODSE); MCUCR = mcucr1; MCUCR = mcucr2; MCUSR = 0x00; WDTCR |= _BV(WDCE) | _БВ(WDE); WDTCR = _BV(WDIE) | _BV(WDP2) | _БВ(ВДП1); //1024 мс сэй(); } недействительным disable_watchdog (недействительным) { wdt_reset(); Кли(); MCUSR = 0x00; WDTCR |= _BV(WDCE) | _БВ(WDE); WDTCR = 0x00; сэй(); } недействительная установка () { pinMode(0, ВЫХОД); // светодиод Морзе pinMode(1, ВЫХОД); // аудио морзе pinMode(2, ВЫХОД); // tx включен (высокий уровень активности) pinMode(A3, ВВОД); // аналог для чтения напряжения батареи цифровая запись (0, НИЗКИЙ); // обеспечить выключение при запуске цифровая запись (2, НИЗКИЙ); // обеспечить выключение при запуске ADCSRA &= ~(1<
60) { отключить_сторожевой пес(); // остановить WDT (иначе мы можем нарваться на самих себя) сторожевой_счетчик = 0; // сброс счетчика таймера // проверить напряжение батареи среднее напряжение(); внутреннее напряжение = среднее; если (напряжение < VL_LOW) { спящий_процессор(); //Перейти в спящий режим до сброса питания } Строка morseWord = кодировать("PD9JS"); цифровая запись (2, ВЫСОКИЙ); // передача на задержка (UNIT_LENGTH * 4); // ждем включения tx for (int i = 0; i <= morseWord. length(); i++) { переключатель (Слово Морзе[i]) { case '.': // точ. цифровая запись (0, ВЫСОКИЙ); TinyTone(239, 5, UNIT_LENGTH); цифровая запись (0, НИЗКИЙ); задержка (UNIT_LENGTH); перерыв; case '-': //тире цифровая запись (0, ВЫСОКИЙ); Крошечный тон(239, 5, UNIT_LENGTH *3); цифровая запись (0, НИЗКИЙ); задержка (UNIT_LENGTH); перерыв; case ' ': //пробел задержка (UNIT_LENGTH * 2); } } задержка (UNIT_LENGTH); цифровая запись (2, НИЗКИЙ); // передача выключена включить_сторожевой пес(); } } void TinyTone (беззнаковый делитель символов, беззнаковая октава символов, беззнаковая большая продолжительность) { TCCR1 = 0x90 | (11-октавный); // для часов 8 МГц OCR1C = делитель-1; // устанавливаем распознавание символов задержка(длительность); TCCR1 = 0x90; // остановить счетчик } Строковое кодирование (const char *string) { size_t i, j; Строка morseWord = ""; для (я = 0; строка [я]; ++ я) { for (j = 0; j < sizeofMorseMap / sizeof *MorseMap; ++j) { if (toupper(string[i]) == MorseMap[j].
letter) { morseWord += MorseMap[j].code; перерыв; } } МорзеВорд += " "; //Добавить хвостовое пространство для разделения символов } вернуть слово Морзе; } недействительное среднее напряжение () { итог= итог - показания[индекс]; показания [индекс] = аналоговое чтение (A3); итог= итог + показания[индекс]; индекс = индекс + 1; если (индекс >= numReadings) индекс = 0; среднее значение = общее количество/количество показаний; задержка (1); // задержка между чтениями для стабильности }
Включенные библиотеки:
#include
sleep Инструкция SLEEP позволяет приложению значительно снизить энергопотребление.
#include
wdt Обработка сторожевого таймера.
#include
interrupt Как говорится, глобальная обработка прерываний.
#include
мощность Управление «регистром снижения мощности».
#include
stdint Обработка стандартных целочисленных типов.
Константы и фиксированные значения кода, которые можно редактировать:
UNIT_LENGTH — это скорость, с которой передается азбука Морзе. Он установлен на 120, однако вы можете увеличить его, чтобы замедлить количество слов в минуту, или уменьшить это значение, чтобы ускорить WPM.
VL_LOW — это значение, которое АЦП должен иметь или меньше этого значения, чтобы отключить ARV и перейти в постоянное состояние HALT. Вам это действительно нужно, только если вы хотите использовать перезаряжаемую ячейку LION и не хотите, чтобы она опускалась ниже 2-2,2 вольт, чтобы защитить ячейку от повреждения.
numReadings — сколько раз нужно считать АЦП, чтобы получить среднее значение напряжения батареи.
MorseMap[] массив, который содержит отношение символа к «символу» Морзе. Он используется для поиска и последующего перевода текста в буквы азбуки Морзе.
Переменные:
watchdog_counter, mcucr1, mcucr2 — целые числа без знака, mcucr1 и mcucr2 используются для получения и установки регистров состояния, чтобы отключить обнаружение пониженного напряжения для экономии энергопотребления устройства, поскольку BOD не требуется. . watchdog_counter используется для подсчета количества раз (в секундах), когда сторожевой таймер срабатывал.
показания[numReadings], индекс, общее и среднее используются для определения среднего напряжения батареи для x показаний. (где x в коде = 3 (изменяемый).
Подпрограммы:
ISR(WDT_vect) это место, где останавливается сторожевой таймер, когда он срабатывает. Используется для увеличения счетчика сторожевого_счетчика, который используется в другой подпрограмме для определить, следует ли запускать передачу Морзе или нет.
enable_watchdog гарантирует, что BOD выключен, и устанавливает сторожевой таймер на запуск каждые 1024 мс (только не секунду, но эй, у меня нет RTC на борту)
disable_watchdog , как только наш счетчик времени достигнет точки, когда пора начинать передачу азбуки Морзе, нам нужно остановить прерывания, иначе мы можем столкнуться с самим собой, пока мы все еще заняты отправкой.
setup() запускается один раз при включении ATTIny. Эта процедура используется для настройки функций контактов, установки значений регистров для отключения функций, которые мы не используем, которые потребляют энергию, если они не выключены, и, наконец, для запуска сторожевого таймера.
loop() делает именно то, что называется, работает в цикле. Шаги, которые он выполняет, описаны ниже.
- Переведите процессор в режим низкого энергопотребления (спящий режим). Процедура сторожевого таймера по-прежнему будет работать в этом режиме.
- Проверить, находится ли счетчик таймера на критическом уровне (не пора ли передавать)… если нет, то упасть, перевести процессор в спящий режим и снова проверить таймер.
- Если счетчик таймера критичен
- Отключить сторожевой таймер (иначе мы продолжаем считать впустую.
- Сбросить счетчик таймера на ноль.
- Проверить, исправен ли аккумулятор.
- Если да, то провал.
- Если НЕТ то остановить все и закрыть .
- Получить текстовую строку для преобразования в азбуку Морзе.
- Дать команду TX включить
- Подождите x раз.
- Преобразование каждого символа текстовой строки в символы азбуки Морзе и «синхронизация» их в цикле со «светодиодом Морзе» и, используя указанную звуковую частоту, отправка их на аудиовывод до тех пор, пока не будут отправлены все текстовые символы.
- Подождите x раз.
- Отключить передачу.
- Включить сторожевой таймер.
Что будет дальше:
В настоящее время все выполняется в программной памяти, кроме объявленных переменных, которые помещаются в SRAM, и для этого крошечного AVR она довольно заполнена. В программной памяти 8 КБ по-прежнему много места, поэтому включение констант, таких как огромный текст в массив Морзе, в программу (флеш-память) освободит столь необходимое пространство, чтобы иметь возможность помещать в текст больше, чем простой позывной для передачи. Я пробовал это, могу получить его во флэш-память программы, но не могу ссылаться (считывать) на него из самого приложения. Может быть, вам повезет больше… Если да, дайте мне знать, как это сделать 😉
Тут я что-то совсем проглядел! EEPROM 512 байт доступен в ATTiny85. Действительно глупо с моей стороны!! Это идеально подходит для отделения всех переменных от кода. Массив Морзе , позывной, скорость, частота и т. д. должны быть помещены в качестве переменных в EEPROM, таким образом, программа может быть универсальной, а операциями можно управлять, изменяя значения только в EEPROM.
И последнее, но не менее важное: дизайн печатной платы — это всего лишь эксперимент, чтобы увидеть, как Eagle выполняет автоматическую трассировку для односторонней печатной платы. Я настоятельно рекомендую вам НЕ ИСПОЛЬЗОВАТЬ ЭТО. Я не сделал этого и никогда не сделаю этого. Если вам нужны файлы проекта Eagle ATTiny, вот они. Вам может понадобиться библиотека Atmel, та, которую я использовал для этого проекта, находится здесь.
Ваш браузер не поддерживает видео тег.
Телеметрия ATTiny
Интеллектуальная телеметрия ATTiny85
Компактная интеллектуальная телеметрия с ATTiny85
Продолжая тему небольших микроконтроллеров и приемопередатчиков, еще один проект, который может вас заинтересовать, — это проект Smart Falconry Telemetry . В этом проекте ATTiny85 используется для настройки и управления модулем микроприемопередатчика с целью обеспечения интеллектуального модуля телеметрии, позволяющего отслеживать хищных птиц в полете.
Умная часть: Факт — для передачи радиочастот потребляется больше энергии, чем для их приема.