Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Практическая реализация многоканального фазового регулятора на Attiny2313

В данной статье приводится пример практической реализации алгоритма многоканального фазового регулятора, представленного в статье [1], продолжением которой она и является.
Назначение устройства - переключатель ёлочных гирлянд на лампах накаливания. Надо заметить, что статья планировалась к выходу ещё перед Новым годом, однако, работы над ней удалось завершить только сейчас. Устройство реализовано по упрощённой схеме без гальванической развязки с бестрансформаторным блоком питания и минимумом органов управления по идее [2]. Однако, схему с общим проводом +5В пришлось заменить на "общий" GND так, чтобы МК и 1-й терминал симисторов (AAG) были на одном проводе. По той же причине используется однополупериодное выпрямление.

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

Недостатки:
- отсутствие гальванической развязки, что, впрочем, на надёжности работы не сказывается. Однако, требует особых мер предосторожности при работе с МК;
- минималистский интерфейс с одной кнопкой, несколько перегруженной функциями;
- ограниченный объём памяти EEPROM данного МК для хранения программ. Но, как правило, выбор останавливается на одной программе, которая в дальнейшем и используется;
- израсходование объёма flash Attiny2313, вследствие чего совершенствование программного кода без урезания функциональных возможностей и/или смены компилятора невозможно;
- низкий КПД бестрансформаторной схемы питания [3], что ограничивает возможности его применения и создаёт ограничения по току.


Заранее нужно оговориться, что приведённая здесь схема устройства заведомо избыточна, т.к. содержит 2 типа снабберов, I и II, из которых реализуется только один. Целью их установки было предотвратить влияние симисторов друг на друга при их параллельной работе (что не удалось, т.к. "помехи" себя никак не проявили, в отличие от схем, где использовались triac driver'ы MOC3052 и КР1182ПМ1Р, [5]). Снабберы можно не ставить вовсе, если при работе нескольких каналов одновременно не возникает самопроизвольных включений-выключений нагрузки. Если LC-фильтр (II) не ставится, вместо L1-4 ставятся перемычки. При установке L1-4 следует учитывать максимальный ток нагрузки, на который они должны быть рассчитаны.
Бестрансформаторный блок питания представлен гасителем напряжения C1R1 и R18+R4 (по 1Вт), рабочий ток которого составляет ~70мА, стабилитроном D2, выпрямительным диодом D1 и сглаживающим конденсатором C4. D2 и D1 подобраны таким образом, чтобы напряжение на выходе составляло 5,2В. В данном случае, D1 - диод Шоттки, из-за меньшего падения напряжения. В общем случае, подойдёт любой выпрямительный диод. Схема обеспечивает ток до 30мА без заметного падения напряжения. При этом, теоретический максимальный ток потребления составляет 4x10мА (управление симисторами) + 7,5А (МК) + ~5мА (LED) = 52,5мА. Однако, благодаря тому, что ток управления симисторами включается на достаточно непродолжительное время, менее миллисекунды за полупериод сетевого напряжения на 1 канал управления, питания в целом достаточно и устройство работает стабильно на разных режимах, в т.ч. благодаря высокой ёмкости сглаживающего конденсатора C4.
Поскольку радиаторы для симисторов не предусмотрены, рассеиваемая мощность симисторов ограничена их корпусами TO220, что примерно соответствует 200Вт нагрузки.
Детектор "нуля" выполнен на резистивном делителе R2+R3, R5, обеспечивающем напряжение ноколо 5В на входе INT0 МК. Детектирование начала полупериода осуществляется по нарастающему фронту, начало второго полупериода отсчитывается по таймеру (10486 тактов счётчика Timer1 для 8МГц тактовой частоты).

Схему можно упростить, если не использовать снабберы. Ток потребления можно снизить, применив симисторы с номинальным током управления 5мА, например, BTA12-600TWRG, которые также не нуждаются в снабберах. При этом, R10-13 можно увеличить до 1кОм, а C1 уменьшить до 680нФ. Предохранитель F1 убрать вообще, оставив общий предохранитель на корпусе (на схеме не показан) или, разведя предохранитель на плате как общий для всей схемы, включая нагрузку. Составной резистор R18+R4 можно заменить одним, учитывая мощность рассеивания. Разъём для программатора тоже можно исключить, если не подразумевается отладка программ в EEPROM.

Готовое устройство:

При реализации был выбран компромиссный вариант: на два канала установлены снабберы типа I, на два других - Г-образные LC-фильтры (II), как в [2].

Индикация режима работы представлена одним двухцветным светодиодом D3, подключенным общим катодом и одним из анодов к МК таким образом, что при выполнении основной программы горит зелёный, свидетельствуя о том, что питание +5В подаётся и МК работает. В режиме "останов" включается жёлтый цвет. Переключением цветов в зависимости от состояния ножки PD5 МК управляет PNP-транзистор Q1, работающий в роли элемента ~НЕ. Выключение светодиода осуществляется переводом PD4 в режим Hi-Z.
Резистор R9 - дополнительный, для выравнивания яркости жёлтого канала LED. R7 и R9 подбираются к выбранному LED.

Переключение режимов работы осуществляется кнопкой Sw2. Различаются 3 типа нажатия:
1. Короткое - первое вызывает останов выполнения программы. При этом, LED мигает жёлтым с частотой 1Гц.
Второе вызывает включение всех каналов с установленными для них ранее скоростями, LED непрерывно горит жёлтым. Наконец, третье вызывает возобновление выполнения программы с того момента, когда оно было остановлено.
2. Длинное, более 2с. По отпускании кнопки, происходит переключение программы на следующую, если их в EEPROM было найдено более одной, или, по достижении последней - переход к первой. Смена программы подтверждается кратковременным, на 1/2с., переходом цвета LED из зелёного в жёлтый.
3. Очень длинное. По достижении нажатия длительностью свыше 4с., LED кратковременно сменит цвет на жёлтый. Это означает, что текущая программа задана по умолчанию. Её номер сохранён в первом байте EEPROM.
Переключение режимов показано в демо-ролике. Если запустить устройство, прошив flash МК, но не прошив EEPROM, также запустится демо-режим.

Структура программы в EEPROM. Алгоритм работы интерпретатора.
Первый байт - номер программы, хранимой в EEPROM. Если там 0 или значение, превышающее количество хранимых программ, включается режим демо (на видео). Второй байт - значение скорости по умолчанию. Должно быть в диапазоне [0-6]. Программа начинается с третьего байта.
В начале работы производится сканирование EEPROM на наличие программ, подсчитывается их количество и определяются адреса начала, после чего запускается выполнение программы по умолчанию, которое происходит циклически.

1. Значения:
- от 0 до 179 - время (задержка) в секундах;
- от 180 до 189 - номер канала, 0-9, соотв. (к-во каналов ограничено в программе. В данном случае, 4-мя;
- 190-196 - скорость, [0-6];
- 200-251 - уровень яркости, 0-51 (0-max., 51-min.);
- 255 - разделитель: 1 значение - между программами, более 1 - окончание блока программ.
2. Структура.
Блок данных выглядит как перечисление номеров каналов, за которым следует задаваемый им уровень яркости и/или скорость. Данное значение (яркости или скорости) будет применено к этим каналам. 
Далее может следовать другая группа, соотв., яркость или скорость для неё будут применены только к ней, но не к предыдущим значениям. Для изменения яркости в составе группы, значения яркости
следует задавать в начале блока. В конце блока задаётся время (интервал)  в сек., что служит для интерпретатора сигналом применить полученные значения.
Примеры программ приведены в прилагаемых файлах .eep. В программах задействованы три канала из 4-х. На видео показана работа программы с сокращёнными временными интервалами.

Меры предосторожности.
В схеме везде присутствует сетевое напряжение. Разъём для подключения программатора можно использовать ТОЛЬКО при отключении устройства от сети, питание МК осуществляется от программатора.

Особенности и недостатки реализации.

Устройство продемонстрировало надёжную работу в течение почти двух недель с тех пор, как было собрано и запущено. Резисторы гасителя напряжения греют воздух внутри корпуса, но это неизбежно, если не снижать его мощности. Несмотря на принятые меры (позиционирование EEAR в конец EEPROM), отмечены отдельные самопроизвольные изменения байт. Оказалось, что fuses были выставлены без Brown-out Detection, что и было исправлено.

Оказался довольно тяжёл доступ к устройству, подключенному к потребителям, для отладки программ в EEPROM даже при наличии ноутбука. Решением здесь может быть применение дополнительной SPI-eeprom, например, AT25040A, на отдельной плате, подключаемой к разъёму программатора, на который нужно будет вывести ещё 1 канал для линии ChipSelect. Эту плату можно будет снимать и программировать с помощью, например, USBASP посредством утилиты AsProgrammer с прошивкой из его поставки [4]. Кроме того, на этой плате можно будет установить перемычку WriteProtect для защиты от случайных изменений. Однако, для этого потребуется ещё некоторое пространство пусть и для небольшой, но функции чтения данных по SPI через сдвиговый регистр интерфейса USI, т.к. SPI в чистом вмде в Attiny2313 нет. Такой проект (чтения/записи данных в AT25040A по SPI over USI) есть и он опробован, но реализовать это в данном проекте можно будет либо с урезанием функциональных возможностей, либо применением более эффективного компилятора, чем gcc.

1. https://cxem.net/mc/mc476.php
2. https://radiokot.ru/articles/40/
3. https://cxem.net/ckfinder/userfiles/comments/61414_Kondensator_netzteil.pdf
4. https://www.goprawn.com/forum/action-cam-control-software/8588-asprogrammer-with-ch341a-support
5. https://cxem.net/house/1-485.php

Fuses: H:9b, L:e4

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 МК AVR 8-бит
ATtiny2313-20PU
1 Поиск в магазине ОтронВ блокнот
C1 Конденсатор1 мкФ1 400В, лучше 630ВПоиск в магазине ОтронВ блокнот
C2,4 Конденсатор100 нФ2 Поиск в магазине ОтронВ блокнот
C3 Конденсатор1200 мкФ1 Поиск в магазине ОтронВ блокнот
C5 Конденсатор100 нФ1 0805Поиск в магазине ОтронВ блокнот
C6-9 Конденсатор10 нФ4 1кВПоиск в магазине ОтронВ блокнот
C10-13 Конденсатор33 нФ4 400ВПоиск в магазине ОтронВ блокнот
D1 ДиодBAT431 1N4148 etc.Поиск в магазине ОтронВ блокнот
D2 СтабилитронBZX55C5v61 Поиск в магазине ОтронВ блокнот
D3 Светодиод2-цветный1 общий катодПоиск в магазине ОтронВ блокнот
D4-7 СимисторBT139-800E4 или др. с Ig не более 10мАПоиск в магазине ОтронВ блокнот
F1 Предохранитель250В 0.2А1 Поиск в магазине ОтронВ блокнот
L1-4 Катушка индуктивности50мкГн4 Поиск в магазине ОтронВ блокнот
Q1 Биполярный транзистор
BC558
1 Поиск в магазине ОтронВ блокнот
R1 Резистор
470 кОм
1 0,5ВтПоиск в магазине ОтронВ блокнот
R2,3 Резистор
510 кОм
2 Поиск в магазине ОтронВ блокнот
R4,18 Резистор1802 1ВтПоиск в магазине ОтронВ блокнот
R5 Резистор
47 кОм
1 Поиск в магазине ОтронВ блокнот
R6 Резистор
10 кОм
1 0805Поиск в магазине ОтронВ блокнот
R7 Резистор6801 1/6-1/8ВтПоиск в магазине ОтронВ блокнот
R8 Резистор
10 кОм
1 1/6-1/8ВтПоиск в магазине ОтронВ блокнот
R9 Резистор
1 кОм
1 1/6-1/8ВтПоиск в магазине ОтронВ блокнот
R10-12 Резистор4703 Поиск в магазине ОтронВ блокнот
R13 Резистор4701 0805Поиск в магазине ОтронВ блокнот
R14-18 Резистор391 0,5ВтПоиск в магазине ОтронВ блокнот
RV1-4 Варистор10D4714 Поиск в магазине ОтронВ блокнот
SW1,2 ПереключательКнопка угловая2 на платуПоиск в магазине ОтронВ блокнот
J2 ГнездоIDC101 Поиск в магазине ОтронВ блокнот
J3,4 клеммник1 на платуПоиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (9) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
optima #
При таком делителе R2,R3,R5, на 6 ноге МК будет порядка 9в, а это перебор, стабилитрон там ну ни как бы не помешал! Так же и оптопары в управление были бы не лишними.
Ответить
0

[Автор]
O18t #
Если оптопары, то это уже вариант с гальванической развязкой будет. Тут и БП надо гальванически изолированный тоже. Есть и такая версия - см. фото платы в комментариях к предыдущей статье.
Что до делителя к 6 ноге - как-то так, да, но если R5 уменьшить хотя бы до 20к, детектирование перехода через 0 резко ухудшается. А в "исходной" версии, на которую я опирался, там вообще 100К.
Ответить
0
optima #
Со стороны БП имеется стабилитрон! Со стороны детектора ноля никакой защиты нет, что чревато убийством МК, также дела обстоят со стороны симисторов, при их пробое на УЭ смерть процессора неизбежна
Ответить
0

[Автор]
O18t #
Совершенно верно. Поэтому я и акцентирую внимание на том, что схема без гальванической развязки.
Ещё можно добавить, что при отказе стабилитрона со стороны БП - также смерть всей схемы.
Ответить
0
andro #
Привет! Сам регулятор, хотя и очень полезный проект, но лично мне он не очень нужен, а вот работа с EEPROM сильно заинтересовала, можете объяснить подробней?
Ответить
0

[Автор]
O18t #
Можно. Но, с т. зрения реализации, там всё просто - взял две функции из даташита, побайтное чтение и побайтная запись. Они даже в коде меньше занимают, чем штатная реализация AVR-gcc.
Или, надо именно работу Attiny с SPI-eeprom? Далал, работает. Могу дать исходники
Ответить
0
andro #
Да нет, с EEPROM всё просто, интересует работа со структурой данными в этой области памяти. Дело в том, что работаю над проектом, где часто нужно записывать 2 байта, и что бы не затирать один и тот же адрес, и тем самым беречь ресурс, хотелось бы использовать всё пространство - записал 2 байта, а следующие 2 записал после них, а затем когда нужно, считать последние записанные. Надеюсь понятен ход моих мыслей?
Ответить
0

[Автор]
O18t #
Да, в целом понятен. Только в моём проекте всё несколько проще - все данные однобайтные. Фикс. адрес - начало 1го блока, затем адреса остальных блоков и их количество, определяемые алгоритмом. Внутри блока происходит просто инкремент адреса, по достижении конца - переход к началу этого блока и т.д.
Со "внешней" памятью ещё проще, там инкремент идёт автоматически.
Для Вашего случая тоже можно придумать схему, не очень сложную, с использованием, напр., статических переменных.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Конструктор для сборки: предусилитель на лампе 6N3 USB осциллограф DSO-2090
вверх