Найти тему
Старый Регенератор

1561КТ3 в УНЧ приемника. ч. 1. Схема и тестовая программа.

После того, как стало понятно, как работать с ключами 1561КТ3, можно переходить к управлению ими в составе УНЧ приемника с помощью контроллера. Схема коммутатора с управлением от Arduino Pro Mini приведена на рис. 1.

Рис. 1. Схема коммутатора.
Рис. 1. Схема коммутатора.

Конечно, при питании 3 В контроллер уже не работает, поэтому минимальное напряжение питания составляет 4 В.

приемнике "Урал-авто-2" имеется один дополнительный вход для подключения внешнего источника звука. Поскольку есть мысль о подключении к усилителю еще одного источника, то желательно иметь три входа УНЧ, и для их коммутации можно обойтись тремя ключами из четырех, имеющихся в микросхеме КТ3 (на схеме рис. 1 "Вход 1"... "Вход 3"). Еще один ключ будет использован для управления подсветкой шкалы приемника (светодиод "Подсветка шкалы").

Плата Arduino Nano (с извлеченной из колодки микросхемой контроллера!!!) используется только для загрузки программы и на схеме приведена для справки.

Рис. 2. Кнопка включения подсветки приемника "Урал-авто-2" (указана стрелкой)
Рис. 2. Кнопка включения подсветки приемника "Урал-авто-2" (указана стрелкой)

В приемнике имеется отдельная кнопка для включения подсветки (рис. 2), эту кнопку и попробуем использовать для переключения режимов.

Сначала составим небольшую тестовую программку для проверки работы кнопки (здесь можно посмотреть полный текст тестовой программы), а наблюдать за ее работой будем с помощью светодиода подсветки (рис. 3). Ток через светодиод подсветки стабилизирован генератором тока на транзисторе VT1, а его величина устанавливается резистором R7.

Рис. 3. Светодиод подсветки на макетной плате.
Рис. 3. Светодиод подсветки на макетной плате.

На рис. 4 представлена часть программы, где определены рабочие ячейки и используемые константы.

Рис. 4. Рабочие ячейки программы.
Рис. 4. Рабочие ячейки программы.

В качестве входа кнопки будет использован вход INT1 (контакт 3 платы, вход 3 порта D контроллера). Обработка нажатия/отпускания кнопки будет производиться с помощью аппаратного прерывания INT1, а устранение дребезга — с помощью 8-разрядного таймера TIMER2.

Рис. 5. Регистр А контроля внешних прерываний
Рис. 5. Регистр А контроля внешних прерываний

В контроллере имеется два входа внешних прерываний — INT0 и INT1. Для управления ими используются общие регистры: регистр контроля внешних прерываний (EICRA — рис. 5), который определяет условие для вызова прерывания, и регистр маски внешних прерываний (EIMSK — рис. 6), который разрешает/запрещает прерывания. Список условий вызова внешнего прерывания приведен на рис. 7.

Рис. 6. Регистр маски внешних прерываний
Рис. 6. Регистр маски внешних прерываний

В соответствии с рис. 6 выберем режим вызова прерывания по изменению уровня на входе INT1, чтобы отслеживать как нажатие, так и отпускание кнопки.

Рис. 7. Назначение битов регистра EICRA.
Рис. 7. Назначение битов регистра EICRA.

Для таймера 2 регистров управления больше. Первый из них — это контрольный регистр А таймера (TCCR2A — рис. 8), который устанавливает режим его срабатывания.

Рис. 8. Регистр TCCR2A таймера 2.
Рис. 8. Регистр TCCR2A таймера 2.

Зависимость режима работы таймера от состояния битов WGM21 и WGM20 этого регистра приведена на рис. 9.

Рис. 9. Режимы работы таймера 2.
Рис. 9. Режимы работы таймера 2.

Чтобы имет возможность изменять задержку на дребезг, используем режим сравнения по регистру OCR2A (режим CTC). В этот регистр будем загружать значение, с которым будет сравниваться счетчик таймера.

Еще один регистр — контрольный регистр B таймера (TCCR2B — рис. 10), с помощью которого устанавливается предделитель тактовой частоты счетчика таймера.

Рис. 10. Регистр TCCR2B таймера 2.
Рис. 10. Регистр TCCR2B таймера 2.

Для установки коэффициента деления в этом регистре следует установить биты CS20...CS22 в соответствии с рис. 11.

Рис. 11. Зависимость коэффициента деления предделителя от CS20...CS22
Рис. 11. Зависимость коэффициента деления предделителя от CS20...CS22

И, наконец последний регистр таймера, который будет использован (но не последний регистр этого таймера) — регистр маски прерываний таймера (TIMSK2 — рис. 12).

Рис. 12. Регистр TIMSK2 таймера 2.
Рис. 12. Регистр TIMSK2 таймера 2.

Устанавливая/сбрасывая бит OCIE2A этого регистра будем разрешать/запрещать прерывания таймеру.

Подпрограммы прерываний ISR(INT1_vect) и ISR(TIMER2_COMPA_vect) приведены на рис. 13.

Рис. 13. Подпрограммы прерываний по входу INT1 и таймера 2.
Рис. 13. Подпрограммы прерываний по входу INT1 и таймера 2.

Для предотвращения вызова прерывания таймера в те моменты, когда состояние кнопки не изменилось, используем не сброс маски прерываний, а установку регистра предделителя TCCR2B в 0, т. е. попросту останавливаем таймер. В процессе проверки программы было обнаружено, что если таймер продолжает считать, то даже в случае запрета прерывания, иногда (возможно из-за срабатывания "отложенного" прерывания) происходит "лишнее" срабатывание кнопки. В то время как при остановленном таймере, даже если прерывания не запрещены, они не вырабатываются по чисто техническим причинам — из-за отсутствия на входе таймера тактовых импульсов.

Величина задержки записана в переменную KEY_delay (см. рис. 4). Это сделано для того, чтобы можно было изменять величину задержки в пределах от 1 до 255 (напомню, что таймер 2 — восьмиразрядный). Длительность задержки (в мкс), с учетом 4 МГц тактовой частоты контроллера, можно рассчитать по следующей формуле: T = 250 * N, где N — записанное в KEY_delay число.

Рис. 14. Варианты кнопок.
Рис. 14. Варианты кнопок.

В процессе работы выяснилось, что для кнопок с пружинным контактом (кнопка B на рис. 14 или наши кнопки типа MT) достаточно уже 5...10 мс, но вот кнопки нажимного действия (переключатель A на рис. 14), к сожалению, иногда дают ложное срабатывание даже при максимальной задержке в 65 мс. Кнопка приемника "Урал-авто-2" (см. рис. 2) относится примерно к такому типу, хотя пружинка там и присутствует.

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

Настройка всех параметров прерывания производится в разделе setup() программы. Там же произведена установка выхода 4 (линия PD4 порта ввода/вывода D контроллера) в высокое состояние, для включения входа 1 как источника для УНЧ.

Рис. 15. Состояние выхода 4 контроллера после включения питания.
Рис. 15. Состояние выхода 4 контроллера после включения питания.

Как выше указано, эта программа — тестовая, предназначенная для отладки подпрограмм прерываний. Далее займемся практическим применением возможностей контроллера для управления как подсветкой, так и аналоговым коммутатором.