Tiny13 с ацп для регулировки яркости

АЦП на TINY13 и 16 светодиодов

В один прекрасный осенний вечер застало скукотище, да к тому же дома. Лежало передо мной на столе 16 светодиодов и маленькая ATtiny13, да к тому же без дела. Тут я вспомнил, как лет так 5 назад собирал в колледже стендик для демонстрации вольтамперных характеристик, в котором пришла идея использовать дешифратор 4х16 К555ИД3, хотя позже пришлось делать на КР1533ИД3

Программа для микроконтроллера, а так же ее отладка проводилась в среде Flowcode v.4.3.6.61. Сама программа достаточно проста и выглядит следующим образом:

Вначале мы считываем данные с АЦП0, первый вывод микроконтроллера, и полученные данные привязываем к переменной ADC0, далее эту переменную делим на 10 (можно и не делить, можно делить на большее число – от этого зависит конечная переменная. А от нее зависит поведение светодиодов) и результат привязываем к переменной PORT которая в конечном счете выдает сигналы на выходы микроконтроллера PB0-PB3. Переменные ADC0 и PORT имеют формат byte, поэтому максимальное их значение не может превышать 255. А так как значение переменной PORT выдается только на 4 вывода, то максимальное значение может быть равно 15. В этом и вся суть. Подав на АЦП контроллера сигнал с линейного выхода, как в моем случае, получается достаточно необычная «игра» светодиодов, которая зависит от уровня напряжения на входе и скорости преобразования, а также времени задержки, в данном случае она равна 10 мс.

Во время отладки на рисунке видно, что значение переменной ADC0 равно 107, а переменной PORT 10, значение которой так же демонстрируют зажженные светодиоды, подключенные к выводам PB1, PB3, т.к. число 10102=10. Если данную комбинацию подать на входы ранее рассмотренного дешифратора, причем PB0 соединить со входом 1, PB1 со входом 2, PB2 со входом 4, и PB 3 со входом 8, ноль появится на выходе с номером 10 (1 вывод микросхемы).

Параметры АЦП настроены, как показано, на рисунке ниже:

Среднее значение переменной ADC0 получаем в течение 100 циклов программы, скорость преобразования равна FOSC/128, в качестве опорного используется уровень напряжения на выводе VDD.

После отладки пора собрать схему:

Питание подается на разъем J1, сигнал от аудиоустройства на J2, причем обращаю внимание на то, что крайне не рекомендуется подавать сигнал на АЦП микроконтроллера если его уровень больше чем Vdd, которое так же имеет свои пределы, не более 5,5 вольт. Конденсатор С1 необходим для устранения постоянной составляющей входного сигнала, с помощью переменного резистора можно менять эффект работы светодиодов.

Если на АЦП микроконтроллера планируется подавать только постоянное напряжение, то цепочку R1-C1 можно исключить

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

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

Читайте также:  Регулировка сход развала матиз

Микроконтроллер запрограммирован с помощью программатора ТРИТОН. Fuse биты выставлены на работу от внутреннего тактового генератора. Галочка обозначает, что fuse бит запрограммирован.

Для проверки устройство было собрано за 10 минут на макетной плате SYB-120.

Источники:

Ниже вы можете скачать исходник, прошивку и файл печатной платы в формате DipTrace

Источник

Сообщества › Электронные Поделки › Блог › Работа с АЦП на микроконтроллерах AVR. Измеряем напряжение. Пример на Attiny13

Здравствуй, любитель микроконтроллеров!

Давненько я хотел попробовать работать с АЦП на микроконтроллерах AVR. Для меня была интересна возможность реагировать на поднятие напряжения, после того как завелся двигатель автомобиля. Думаю, такая возможность может быть многим полезна. Но чтобы следить за напряжением нужен некий индикатор. И здесь я наткнулся на интересный способ подключения светодиодов у Степан Палыча, да и в книжках по микроконтроллерам этот способ тоже встречается. Придумал эту схему инженер Чарли Аллен в 1995 году и называют ее методом Чарли. Решил попробовать сделать также, печатка получилась довольно похожей.

Для отладки прошивки набросал схему в протеусе. Сверху светодиод, который мы будем зажигать при поднятии напряжения. Чуть ниже индикатор поднятия напряжения из 6 светодиодов. Ниже для АЦП собран делитель напряжения на резисторах R4 и R5. Чтобы эмитировать изменение напряжения в бортовой сети автомобиля, добавил еще резистор R6, и переменный резистор RV1 — на готовой плате их, конечно же, не будет.

Кроме этого, на схеме не хватает параметрического стабилизатора на резисторе и стабилитроне, который будет питать микроконтроллер. И нет одного конденсатора. Это все есть на макете платы. Здесь хотелось бы отметить, что конденсатор 100n правильнее было бы поставить параллельно резистору R5, а не так как он стоит сейчас. Ну и резисторы на светодиоды индикатора я поставил по 200 Ом (какие уж были), все равно достаточно ярко.

Алгоритм работы будет следующим. При подаче питания первое измерение напряжения с АЦП запоминается и далее следующие замеры сравниваются с ним. Пока напряжение не поднялось горит первый светодиод индикатора. Как только напряжение поднялось на 0.25В, то загорается второй светодиод. Поднялось на 0.5В — загорается третий и т.д. Т.е. шакала деления индикатора — 0.25В. Для нашей задачи этого достаточно. При поднятии напряжения минимум на 0.5В, мы реагируем на это и включаем верхний светодиод. Да не просто включаем, а подаем ему ШИМ сигнал с эффектом дыхания (Хотел проверить, не будет ли ШИМ давать помехи на АЦП). Если напряжение снижается, то ШИМ сигнал на светодиод отключается. Кстати говоря, исходный код подробно комментировал, если что-то не ясно здесь, станет ясно при чтении комментариев к исходному коду.

Чтобы не было совсем скучно, добавил анимацию индикатора поднятия напряжения каждые 10 секунд. Бегущий огонек в сторону повышения и обратно.

Видео работы в автомобиле

А мне нужен индикатор-вольтметр, как сделать?

Да легко и просто, немного подправив прошивку. А если еще освободить ногу контроллера, на которую мы подаем ШИМ сигнал, и использовать ее в индикаторе, то мы получим целых 12 светодиодов вместо 6! При реализации вольтметра стоит посмотреть: достаточно ли точно держит напряжение стабилизации стабилитрон при изменении температуры или же стоит заменить параметрический стабилизатор на что-то другое.

Исходный код, прошивку, модель в протеусе, макет платы можете скачать здесь.

Читайте также:  Регулировка карбюратора ханкай 6 видео

Источник

Простой ШИМ на ATTiny13.Регулируем всё

ШИМ или PWM — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте.

Собрав несколько из них, ни одна меня не устроила, у них был слишком крутой спад\подъем сопротивления при вращении ручки переменного резистора — от 2 кОм сразу подскакивало к 7 кОм, и следовательно, при этом, к примеру, подключенный для теста на исток полевого транзистора, компьютерный вентилятор со скорости 20 процентов сразу поднимал обороты до 90-100 процентов. В общем, чтобы пользоваться схемой, пришлось бы вращать потенциометр с прецизионной точностью и\или с замером сопротивления при вращении.

Сначала я отнесся к ней скептически, но зря, потому что схема минимальна по обвязке, по сравнению с дискретными схемами найденными ранее. Микросхема маленькая и дешевая, изготавливается в корпусах SOIC,DIP, QFN, MLF, ножек всего 8, как и у таймера NE\LM555.

ШИМ на ней получается точным и легко регулируется.

Смотрите также статьи по теме:

Наглядная схема (принципиальную схему смотрите по ссылке выше на сайте-источнике).

Описание чипа Atmel (Microchip) ATTiny13A

ATTiny13A — это 8 битный AVR микроконтроллер с программируемой Flash памятью внутрисистемно, размером 1 КБ.

Распиновка (pinout) микроконтроллера ATTiny13A

Tiny13A — это более новый и улучшенный микроконтроллер от Atmel.

Ранее выпускались два варианта Тини13 — с обычным (ATTiny13, работает от 2.7 вольт) и пониженным (ATTiny13V, работает от 1.8 вольт) питанием.

При этом первый вариант работает на частоте до 20 Мгц, второй — до 10Мгц.

С выходом Тини13А убрали разделение мк по питанию, Тини13А работает и от 1.8 вольт (в этом режиме, при пониженном низковольтном питании его невозможно заставить работать на высокой частоте).

Примечание по сборке схемы

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

Светодиоды лучше брать с тусклым свечением, разные яркие цвета могут раздражать, особенно ярко светится синий светодиод. Яркость можно снизить применив в цепи питания светодиодов резисторы, например, до 2 кОм.

Можно обойтись и без светодиодов (следовательно и еще без трёх резисторов), они просто нужны для индикации и отображения режима работы.

Также можно обойтись и без линейного стабилизатора напряжения LM7805 (КРЕН5), если схема питается напряжением в 5 вольт, и регулируемая нагрузка работает от такого же напряжения, а не от 12 вольт.

Для стабильности напряжения можно добавить керамические конденсаторы (на наглядной схеме выделены квадратом салатового цвета) — 0,33 микроФарад (334) на вход 7805, и 0,1 микрофарад (104) на выходе 7805.

Используемая нагружаемая мощность будет ограничена полевым (MOSFET) транзистором.

Прошивка

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

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

Пришлось его скачать и открыть исходник в нем. Исправив ошибку с ожиданием в 30 секунд — решил проверить и залить прошивку. Но прошивка не захотела литься, подумав что это ошибка компилятора BascomAVR, было решено написать свой код для ATTiny13 на Си в Atmel Studio 7, конечно с сохранением оригинальной схемотехники, чтобы было можно только лишь залить прошивку и ничего не переделывать на печатке.

Читайте также:  Регулировка клапанов умз 421800 уаз

Написал тестовый код в Atmel Studio, скомпилировал прошивку, заливаю в attiny13 – опять ошибка:

mismatch 0x000000

Ошибка оказалась не в средах разработки, а в программе для прошивки мк, конкретно в моем случае в eXtreme Burner AVR, для того, чтобы исправить данную ошибку необходимо открыть файл

C:\Program Files\eXtreme Burner – AVR\Data\chips.xml

Найти ATTiny13 и между тегами 64 Вместо 64 написать 32 – после этого ATTiny13 начал шиться без проблем.

Спустя несколько дней программа была написана.

Индикация включения — при включении очень быстро и с реверсом перельются все три светодиода.

Переключение режимов осуществляется нажатием на кнопку, действует циклически.

Пояснения по работе устройства с новой прошивкой

Режимы работы:
— Все светодиоды выключены, Значение ШИМ — 0 (0%)
1 — Моргает светодиод 1, ШИМ — 32 (12%)
2 — Моргает светодиод 2, ШИМ — 64 (25%)
3 — Моргает светодиод 3, ШИМ — 96 (37.6%)
4 — Все светодиоды переливаются, ШИМ — 128 (50%)
5 — Горит светодиод 1, ШИМ — 160 (62.7%)
6 — Горит светодиод 2, ШИМ — 192 (75.2%)
7 — Горит светодиод 3, ШИМ — 224 (87.8%)
8 — Все светодиоды моргают, ШИМ — 255 (100%)

ШИМ — 0 (0%) — питание на «регулируемом устройстве» отсутствует, например, паяльник не греется.

ШИМ — 255 (100%) — полная мощность работы «регулируемого устройства».

Для включения автосохранения значения ШИМ необходимо удержать кнопку в течении 3-х секунд, для отключения — осуществить тоже самое.

При этом при включении автосохранения на 1,5 секунды загорится светодиод 1.
При отключении — на 1,5 секунды загорится светодиод 3.Удерживать кнопку можно в любом режиме, но лучше это делать в режиме 0- так будет нагляднее.

Не стоит забывать, что при включенном автосохранении каждый раз, при нажатии на кнопку записываются данные в EEPROM, ресурс записи EEPROM в Atmel AVR — 100 000.

Программирование ATTiny13 микроконтроллера

Необходимо поставить фьюз на работу от внутреннего тактового генератора на 9,6 Мгц

Т.к. я пользуюсь eXtreme Burner AVR то во вкладке Fuse\Bits записываю такие байты вместо выставления галок(в других программах-прошивальщиках галки):

Младший байт(Low Byte\Fuse) – 7A

Старший байт (High Byte\Fuse) – EB

Слева вверху, где написано Байты конфигурации вводим – 7A в окошечко LOW

и EB в окошечко HIGH – получаем указание на то, где следует поставить галки.

Собранное в корпус устройство ШИМ с вынесенной кнопкой:

(Принципиальная схема и печатная плата имеется на приведенном выше сайте.)

Плата ШИМ, упакованная в корпус от другого устройства и подключенный к ней паяльник.

Файлы прошивки в формате HEX:

Оригинальная, скомпилированная из приведенных ниже исходников:

Прошивка с более высокой частотой (Не тестировалась на реальной схеме!):

Прошивка по просьбе одного из пользователей нашего сайта, частота ШИМ — около 2,3 килоГерц:

В данной прошивке всего три режима

1 — ШИМ 80%, светится светодиод 1

2 — ШИМ 90%, светится светодиод 1,2

3 — ШИМ 100%(Постоянное питание), светится светодиод 1, 2 и 3

Исходник с подробными комментариями также прилагается, можно изменить под свои нужды:

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Настройки и регулировки