Воскресенье, 06.10.2024

В помощь радиолюбителю
Приветствую Вас Гость
Главная | Регистрация | Вход | RSS
Схемы на МК и микросхемах » Микроконтроллеры
Жесть. Новая жизнь консервной банки. ЖЕСТЬ №1 - банка говорун.


автор Макаров Владимир.

ЖЕСТЬ. Новая жизнь консервной банки.

Довольно долго я примеривался к алюминиевым банкам из-под пива, колы и др. напитков. Эта красота с логотипами известных фирм манит потребителей, но после употребления содержимого каждую банку ожидает незавидная участь. Ее в лучшем случае переплавят, в худшем она станет неприглядным мусором на наших улицах или свалках. Вместе с тем, банка может продолжить «службу» в прежнем качестве – как контейнер, но теперь уже как красивый контейнер для радиоэлектронного устройства. Есть желание собрать несколько устройств в пивных банках. В изделиях предполагается использовать алюминиевые и стальные консервные банки, поэтому за проектом закрепилось общее название ЖЕСТЬ.

ЖЕСТЬ № 1 «БАНКА-ГОВОРУН».

Была сформулирована задача: крышка банки должна приподниматься в зависимости от амплитуды звука в помещении. Изначально хотелось сделать шумомер, который бы плавно поднимал плакат в офисе типа «НЕ ШУМИ» в тех случаях, когда рабочий гул достигал запредельных значений. Но со временем идея такого практического применения отошла на второй план, хотя и осталась актуальной. Интереснее было сделать банку, следящую за голосом или фонограммой и повторяющую их амплитуду.

Внешний вид устройства.

Рисунок 1. Внешний вид устройства.

Внешний вид внутренней части устройства.

Рисунок 2. Внешний вид устройства .

Демонстрационное видео работы устройства.

Электрическая часть.

Блок-схема устройства приведена ниже на рисунке 3. Принцип работы устройства рассмотрим по приведенной блок-схеме. Рассмотрение будет выполнено не так, как это обычно принято - от источника сигнала, а, наоборот, от получаемого результата.

Рисунок 3. Блок-схема устройства .

Сервопривод.
Итак, необходимо повернуть сервопривод на определенный угол в зависимости от поступившего сигнала. В данном случае сервопривод аналоговый, т.е. он управляется шириной импульса, поступающего на его вход. Структура управляющего сигнала унифицирована для аналоговых сервоприводов и приведена на рисунке 4.

Рисунок 4. Структура управляющего сигнала.

Сервопривод управляется с помощью импульсов переменной длительности. Параметрами этих импульсов являются минимальная длительность, максимальная длительность и частота повторения.
Таким образом, чтобы повернуть вал сервопривода на угол 0 градусов необходимо подать серию импульсов шириной 1мс. Для поворота вала сервопривода на 180 градусов от нулевого положения  необходимо подать серию импульсов шириной 2мс. Поворот вала сервопривода может быть выполнен на любой угол в диапазоне он 0 до 180 градусов при подаче импульсов шириной в диапазоне от 1мс до 2мс.
В нашем случае сервоприводом должно управлять устройство обеспечивающее выдачу управляющего сигнала с изменяемой шириной импульса. Данный вид сигнала называется Широтно-импульсная модуляция (ШИМ, англ. Pulse-width modulation - PWM).

ШИМ.
На борту микроконтроллера ATTINY13  находится широтно-импульсный модулятор, который  обеспечивает выдачу на сервопривод ШИМ-сигнала с заданными параметрами. Период следования импульсов зависит от настройки делителей частоты микроконтроллера, а ширина импульса зависит от числа, записанного в его регистр сравнения.  Ширина импульса должна варьироваться в диапазоне от 1мс до 2мс. Для управления шириной импульсов необходимо знать текущее  значение амплитуды входного сигнала устройства в цифровой форме, т.е. в виде двоичного числа.  Перевод аналогового значения в цифровое значение осуществляет аналого-цифровой преобразователь (АЦП).

АЦП.
Аналого-цифровой преобразователь также присутствует на борту микроконтроллера ATTINY13. Его задача: измерив значение аналогового-сигнала на определенном выводе микроконтроллера, мгновенно преобразовать его в цифровое значение. Частота, с которой необходимо запускать процесс преобразования, определяется программой микроконтроллера. Сигнал на вход АЦП подается с детектора.

Детектор.
Детектор предназначен для определения огибающей сигнала. Он преобразовывает поступающий от усилителя синусоидальный сигнал в усредненный уровень его амплитуды.

Микрофонный усилитель.Микрофонный усилитель усиливает сигнал, поступающий с микрофона до уровня, который можно обработать детектором и АЦП.

Микрофон.
А это и есть тот электрический источник, который регистрирует звуки и преобразовывает их в электрические колебания. Следует отметить, что в устройстве используется электретный микрофон. Достоинство электретных микрофонов перед всеми прочими состоит в том, что он внутри корпуса уже имеет первый каскад усиления, что позволяет сделать первые каскады усилителей менее чувствительными и менее требовательными к экранировке входных цепей.

Принципиальная электрическая схема устройства показана на рисунке 5.

highslide.js

Рисунок 5. Схема электрическая принципиальная.

Устройство собрано на двух микросхемах – операционном усилителе U1 LM358N и микроконтроллере U2 ATTINY13.
Электретный микрофон BM1 извлечен из «hands free» гарнитуры сотового телефона. Гарнитура, как правило, входит в комплект каждого телефона, но используется владельцами очень редко. Обычно гарнитура содержит микрофон типа  CZN-15E. Но в принципе можно использовать любой подходящий.

Микрофонный усилитель.
Микрофонный усилитель Собран на микросхеме U1 LM358N. Обеспечивает усиление сигнала электретного микрофона BM1. Схема усилителя взята из [1]. Резистором R3 регулируется симметрия сигнала, а резистором R5 коэффициент усиления.

Детектор.
Усиленный сигнал детектируется диодами VD1, VD2, накопительным конденсатором С4. Накопленная огибающая низкочастотного сигнала поступает через потенциометр R7 на вход АЦП микроконтроллера. Потенциометром R7 регулируется уровень сигнала на входе МК.

АЦП.
На рисунке 6 приведена цоколевка микросхемы ATTINY13 с обозначениями сигналов на ее выводах (ножках).

Рисунок 6. Цоколевка микросхемы ATTINY13.

АЦП микроконтроллера преобразовывает аналоговое значение амплитуды сигнала в цифровое значение.
За управление аналого-цифровым преобразованием отвечают регистры ADMUX и ADCSRA. В программе микроконтроллера делаются следующие установки:
Регистр ADMUX.

Бит Наименование Значение
(двоичное)
Коментарий
6 REFS0 1 Выбираем внутренний источник опорного напряжения
(1,1В). С этим опорным напряжением будет
сравниваться входной сигнал и выдавать цифровое
значение уровня в виде числа от 0 до 1023.
Число будет записано в два регистра ADCH и ADCL
(верхний-H и нижний-L)
5 ADLAR 1 Выбираем режим сдвига результата влево (ADC9..2 в
ADCH, а ADC1..0 в старшие биты ADCL)
Как это работает? АЦП помещает отсчет в регистры
ADCH и ADCL. За счет установки бита ADLAR=1
значение отсчета сдвигается влево, заполняя
регистр ADCH.

Мы будем читать цифровое значение уровня сигнала
из регистра ADCH. Т.е. очень тихие звуки,
значения которых записаны в старшие биты ADCL,
придется игнорировать.
1...0 MUX1..0 01 У контроллера имеется четыре входа для аналоговых
сигналов (ADC0, ADC1, ADC2 и ADC03). Установкой
значения 01 Выбираем ADC1 (ножка 7)

Регистр ADCSRA.

Бит Наименование Значение
(двоичное)
Коментарий
7 ADEN 1 Включен АЦП (если 0, то АЦП работать не будет)
6 ADSC 0 Запуск преобразования сброшен. В дальнейшем периоди-
чески устанавливая в цикле этот бит в 1 мы будем запускать
одиночные преобразования в нужные нам моменты.
5 ADATE 0 Автозапуск сброшен.
4 ADIE 0 Прерывания запрещены.
2...0 ADPS2..0 110 Устанавливаем коэффициент деления АЦП 64.
В этом случае на логические схемы АЦП будет подаваться
частота 9600000Гц/64=150000Гц, что входит в
рекомендованный диапазон 50…200кГц. 9600000Гц – это
частота процессора, установленная для микроконтроллера
в данном устройстве для корректной работы библиотеки
задержек (delay.h).

В программе периодически с интервалом 100мс выполняется инструкция по одиночному преобразованию аналогового сигнала на ножке 7 (ADCSRA |= (1<<ADSC);). Читая в этом цикле регистр ADCH, получаем через каждые 100мс цифровое значение сигнала и направляем это значение на ШИМ.
ШИМ.
Цифровое значение амплитуды управляет шириной импульса широтно-импульсного модулятора на выходе, нагрузкой которого является сигнальный вход сервопривода. В зависимости от силы звукового сигнала ось сервопривода поворачивается на соответствующий угол.
В микроконтроллере ATTINY13 имеется два выхода с ШИМ (OC0A и OC0B). В устройстве используется выход OC0A (ножка 5).
Для обеспечения работы ШИМ в микроконтроллере необходимо настроить регистры TCCR0A и TCCR0B управления Таймера/счетчика 0.

Регистр TCCR0A

Бит Наименование Значение
(двоичное)
Коментарий
7...6 COM0A1..0 10 Режим сброса в 0 выхода OC0A при достижении
таймером/счетчиком значения равного значению
регистра совпадения OCR0A.
5...4 COM0B1..0 00 Эти биты устанавливают режим сброса для выхода OC0В.
Его мы не используем.
3...2 R 00 Биты зарезервированы.
1...0 WGM01..0 11 Включаем режим Fast PWM.

Регистр TCCR0B

Бит Наименование Значение
(двоичное)
Коментарий
7 FOC0A 0 В режиме Fast PWM бит не используется.
6 FOC0B 0 В режиме Fast PWM бит не используется.
5...4 R 00 Биты зарезервированы.
3 WGM02 0 Включаем режим Fast PWM. Используется совместно с
битами  WGM01..0 регистра TCCR0A.
2...0 CS02..0 100 Делитель импульсов на входе таймера счетчика.
Устанавливаем значением  CS02..0=0b100 коэффициент
деления  256. Тактовую частоту микроконтроллера
9600000Гц делим на 256. На вход таймера/счетчика
будет поступать частота 37500Гц.
8-разрядный счетчик поделит эту частоту еще на 256 и
на выходе счетчика получим частоту 146Гц или 1/146Гц
= 6,8мс.
Т.е. период следования импульсов на сервопривод будет
равен 6,8мс. Это меньше стандартного периода (20мс),
но сервопривод работать с таким периодом импульсов
будет!

Ширина импульса определяется значением, которое мы поместим в регистр совпадения OCR0A. В момент начала счета таймером/счетчиком 0 на выходе OC0A устанавливается 1. Когда текущее значение таймера/счетчика 0 оказывается равным значению регистра совпадения OCR0A, то на выходе OC0A устанавливается 0 и удерживается до момента достижения счетчиком максимального значения.

Чтобы получить ширину импульса 1мс, что соответствует повороту вала сервопривода на угол 0 градусов, в регистр OCR0A надо записать значение 27. Чтобы получить ширину импульса 2мс, что соответствует повороту вала сервопривода на угол 180 градусов, в регистр OCR0A надо записать значение 75.  Для точного отображения измеренных  уровней сигнала диапазона 0..255 (регистр ADCH АЦП) на диапазон чисел поворота вала сервопривода 27..75 надо сделать линейное сопоставление диапазонов.

Сервопривод.
В устройстве используется аналоговый сервопривод EMAX ES08MA. На рисунке 7, приведен его внешний вид и распиновка разъема. Можно использовать любой аналоговый сервопривод с условием, что он обеспечивает устойчивую работу от напряжения 5 Вольт. Дроссель L1 и конденсатор C6 защищают цепь питания микроконтроллера от электрических помех, создаваемых сервоприводом.

Рисунок 7. Сервопривод, цоколёвка разъёма.

Питание.
Питание устройства осуществляется от USB порта компьютера или от зарядного устройства с USB выходом. Напряжение питания 5 Вольт.

highslide.js

Рисунок 8. Печатная плата.

Плата изготовлена по «лазерно-утюжной технологии».

highslide.js

Рисунок 9. Внешний вид печатной платы и готового устройства.

Электромеханическая часть

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

Рисунок 10. Вскрываем банку.

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

Рисунок 11. Обычная консервная банка.

Аккуратно ножницами по металлу срезаем донышко. Получилась полоска жести – из нее будем делать стакан. Бортик полоски обжимаем пассатижами. Измеряем внутренний диаметр горлышка банки. В него должен будет вставляться жестяной стакан. Диаметр равен 52мм. Длина окружности стакана должна быть 52ммх3,14=163,28мм. Отрезаем часть полоски из жести длиной 170мм (это с запасом!).

Рисунок 12. "Оперирование" банки.

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

Рисунок 13. Подгонка стакана банки.

Сначала место пайки зачищаем острым ножом, затем промазываем паяльной кислотой. Пропаиваем концы полоски. Стакан готов! Обратите внимание на бортики стакана – они не дают ему проваливаться вглубь банки.

Рисунок 14. "Подгонка" стакана.

На крышке банки отмечаем линию, по которой будет вырезано дно стакана. Вырезаем, укладываем дно изнутри на бортик стакана и пропаиваем.

Рисунок 15. Окончательная пропайка стакана.

Всё, сборка стакана закончена. Теперь банка со стаканом выглядит так.

Рисунок 16. Вид банки со стаканом.

Изготавливаем крышку устройства.
Обрезаем горлышко второй банки обычными ножницами.

Рисунок 17. "Оперирование" второй банки.

Измеряем внутренний диаметр горлышка банки. Например, он у нас равен 50мм. Вырезаем из дна жестяной банки круг диаметром 50мм.

Рисунок 18. Изготовление крышки банки.

Делаем шарниры из никелированной скрепки и припаиваем шарниры к стакану.

Рисунок 19. Изготовление шарнира для крышки банки.

Вставляем в шарниры скрепку и загибаем. Припаиваем к скрепке нижнюю деталь крышки.

Рисунок 20. Крепление шарнира.

Просверливаем в верхней и в нижней частях крышки соосные отверстия и соединяем части винтами.

Рисунок 21. Крепление крышки.

Устанавливаем сервопривод.
Для установки сервопривода изготавливаем из жести (все та же жестяная банка) кронштейн по шаблону. Для других типов сервоприводов шаблон придется изготовить другой.

highslide.js

Рисунок 22. Кронштейн сервопривода.

Устанавливаем сервопривод на кронштейн. Размечаем по отверстиям кронштейна и просверливаем в дне стакана два отверстия диаметром 2.5мм.

Рисунок 23. Установка сервопривода.

В дне стакана прорезаем ножом щель шириной 3-4мм. Через эту щель сервопривод через тягу будет перемещать крышку банки. Эту операцию надо делать очень осторожно, чтобы не повредить руки (!!!) и стакан.

Рисунок 24. Прорезание щели для тяги сервопривода.

Устанавливаем сервопривод на кронштейне внутрь стакана. Закрепляем винтами.

Рисунок 25. Закрепление сервопривода.

Берём обычную канцелярскую скрепку, выпрямляем её. Из скрепки делаем тягу.

Рисунок 26. Изготовление тяги.

Изготавливаем из скрепки шарнир для крышки устройства. Припаиваем шарнир к крышке устройства над щелью дна стакана. Продеваем в шарнир тягу и загибаем. Длина тяги измеряется от максимально удаленного отверстия качалки до шарнира (ее можно измерить штангенциркулем изнутри стакана банки). Опускаем другой конец тяги в щель, соединяем качалку с тягой и насаживаем качалку на ротор сервопривода.

Рисунок 27. Изготовление шарнира.

Монтируем на банку индикатор включения и разъем для подключения микрофона по представленной ниже методике.
Для крепления на стенку банки изготавливается колодка, состоящая из двух плат - наружной и внутренней. Стенка банки располагается между платами, которые плотно стягиваются винтами.
На внутреннюю плату напаиваются гайки и устанавливаются индикатор включения (светодиод) и разъем для подключения микрофона.

Рисунок 28. Конструкция индикатора.

Далее необходимо припаять к внутренней плате проводники для подключения индикатора и разъема микрофона к главной плате устройства.

Рисунок 29. Подключение разъёмов.

Затем в банке делается острым ножом прорезь и устанавливается колодка. Прорезь можно сделать ножом для бумаги.

Рисунок 30. Установка колодки.

Аналогично готовится и устанавливается колодка для разъема мини-USB. Корпус гнезда  разъема аккуратно надо припаять к внутренней плате колодки.

Рисунок 31. Установка колодки USB.

Ниже на рисунке изображена распиновка разъёмов мини-USB:

highslide.js

Рисунок 32. Распиновка разъёма мини-USB.

Подготавливаем электретный микрофон. Электретный микрофон так же подключается к устройству через разъем.

Рисунок 33. Электретный микрофон.

К плате привинчиваем жестяные скобы и припаиваем скобы к стакану. Скобы должны находиться внутри стакана! Если их расположить снаружи стакана, то стакан не войдет в горловину банки.

Рисунок 34. Сборка устройства.

Подсоединяем к главной плате внешние блоки: сервопривод, колодку мини-USB, колодку с индикатором и разъемом микрофона. Вставляем стакан в банку и присоединяем глаза.

Рисунок 35. Собранное устройство.

Программная часть.

Для загрузки .hex файла программы необходимо подключить программатор типа AVRISPmkII к шестиштырьковому разъему С5 ISP6PIN, расположенному на плате устройства. При этом надо соблюдать соответствие номеров соединяемых контактов вилки (на плате) и гнезда (на шлейфе программатора). Запрограммировать микроконтроллер можно и вне родительской платы, используя универсальный программатор для микроконтроллеров данного типа.
Установка «фьюзов» микроконтроллера: LOW = 0x7A, HIGH = 0xFF,  EXT = 0xFF.
К статье прилагается .hex файл программы, а так же исходный программный код на СИ.

Архив для статьи


[1] Рюмик С.М. 1001 и одна микроконтроллерная схема. Книга 1. – М.:Додэка-XXI, 2012. -356 c.  



Категория: Микроконтроллеры | Просмотров: 154817 | Добавил: MVS

Понравилась статья - нажми на кнопку!

 Нравится 

Всего кликов: 64

Назад

Поделись с друзьями:





Добавлять комментарии могут только зарегистрированные пользователи.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться или войти на сайт под своим именем.


Всего комментариев: 1
* * 1) Добавил: petya Пётр Судаков (31.01.2013 13:57) [Материал]

Прикольная штуковина. respect