Брелок-нетеряйка весьма удобная вещь. Стоит только громко свиснуть или хлопнуть в ладоши и потерянная связка с ключами «отзовется». Однажды мне попалась на глаза схема подобного устройства, собранного на транзисторах и дискретной логике. Аналоговая часть состояла из НЧ усилителя, собранного на 2х супер-бэта транзисторах раной структуры – КТ3102 и КТ3107, цифровая – из микросхем инверторов и логики «и-не» серии К564.
Я решил переделать данное устройство с целью уменьшения его габаритов, а так же облегчения его наладки. Аналоговую часть я оставил как есть без изменений, а в качестве цифровой – применил микроконтроллер младшего семейства линейки Microchip - PIC12F629.
В качестве пъезоизлучателя и использовал «пищалку» от сломанного калькулятора. Поскольку его характеристики мне были неизвестны, то я решил проверить их опытным путем. Собрав часть аналоговой схемы, я подключил ее выход к микрофонному разъему звуковой карты компьютера.
Запустил звуковой редактор «Cool edit» в двух окнах. В первом окне я программно сгенерировал несколько частот от 1000 Гц до 10000 Гц, во втором окне настроил запись с микрофонного входа. Включив запись и одновременно запустив во втором окне тестовые частоты на проигрывание через динамики компьютера, я наблюдал отклик пьезоэлемента. И вот, что я получил в итоге:
Как видно из скриншотов: максимум отклика достигается на частоте близкой к 5000 Гц.
Т.е. эта частота является резонансной частотой для данного пъезоизлучателя. Можно предположить, что максимум излучения звуковой частоты этим излучателем будет так же лежать в диапазоне 5000 Гц.
Модифицированная схема брелка-нетеряйки выглядит следующим образом:
Устройство работает так: в режиме ожидания на порту GP0 микроконтроллера присутствует лог. «1», а на порту GP2 – лог. «0». Таким образом аналоговая часть работает в режиме усилителя звуковой частоты. Сигнал от пьезоэлемента подается на базу первого транзистора КТ3102 Б. Смещение на базу подается через резистор 3,3 М. С коллекторной нагрузки первого транзистора сигнал через развязывающую емкость подается на базу второго транзистора обратной структуры. Его база приоткрыта резистором 2 М. С коллекторной нагрузки второго транзистора усиленный сигнал подается через емкость 510 пФ на порт GP1 контроллера. Резистор 20 К совместно с емкостью выполняет роль дифференцирующей цепочки, что снижает реакцию усилителя на посторонние шумы.
При поступлении громкого сигнала свиста либо хлопка в ладоши на выходе усилителя появляется напряжение, которое поступает на порт GP1 контроллера. Контроллер «просыпается», изменяет напряжения на порту GP0 на противоположные, а через порт GP2 начинает генерировать напряжение звуковой частоты – пакеты длительностью 200 mS, заполненные частотой 5000 Гц, с интервалами в 100 mS. Всего 10 пакетов общей длительностью около 3 S. Наличие диода в базовоколлекторном переходе первого транзистора позволяет сигналу проходить через пьезоизлучатель. Диод необходимо подобрать по наименьшему сопротивлению в прямом состоянии, в этом случае сигнал будет звучать громче.
Устройство питается от двух таблеточных батареек общим напряжением 3 В.
О программе: в контроллере задействован внутренний тактовый генератор на 4 МГц. В режиме ожидания контроллер находится в спящем состоянии и потребляет ток примерно 4 мкА, не считая потребления от портов питания усилителя. В общем, суммарный ток потребления в режиме ожидания не превышает 100 мкА. В программе реализовано прерывание по изменению состояния порта GP1. Сразу после пробуждения и сброса флага прерывания от порта, запрещаются дальнейшие прерывания от порта, изменяется уровень логики на GP0 и начинается генерация частотнозаполненных пакетов. Пакеты формируется посредством простых циклов. После окончания формирования звуковых пакетов контроллер устанавливает первоначальное состояние на портах питания усилителя, разрешает прерывания от GP1 и уходит в сон…
Основные моменты программы
Для разрешения прерываний от периферии необходимо настроить регистр INTCON.
Это можно сделать сразу в подпрограмме инициализации:
MOVLW B'10001000' MOVWF INTCON
Здесь установлен быт разрешения глобальных прерываний и прерываний от портов
Непосредственно разрешить прерывания от конкретного порта можно в регистре IOCB.
Нужно, при этом, помнить что IOCB находится в первом банке памяти!
START_ BSF GPIO,0 ; УСТ. В "1" BCF GPIO,2 ; УСТ. В "0" BSF STATUS, RP0 ; банк 1 bsf IOCB,1 ; вкл. прервывание от GP1 BCF STATUS, RP0 ; банк 0 ;******************ОЖИДАНИЕ****************** SLEEP NOP ;********************ОТВЕТ******************* BSF STATUS, RP0 ; банк 1 bcf IOCB,1 ; выкл. прервывание от GP1 BCF STATUS, RP0 ; банк 0 BCF GPIO,0 ; УСТ. В "0"
Программа устанавливает GP0 в «1», GP2 в «0», т.е. включает аналоговую часть устройства в режим микрофона, разрешает прерывания от порта GP1 и уходит в сон.
При пробуждении от прерывания программа запрещает прерывание от GP1 и устанавливает на GP0 «0», т.е. отключает питание усилителя.
Вход в прерывание:
; ВХОД В ПРЕРЫВАНИЕ ОТ ПОРТОВ MOVF GPIO,0 BCF INTCON,0 ; сбросим флаг прерывания от портов RETFIE
Необходимо выполнить чтение порта, чтобы исключить несоответствие и сбросить флаг прерывания.
Генерирование сигнала (отклик брелка):
Происходит чисто программно, без использования прерываний. Задержки формируются посредством вложенных циклов. Цикл реализованный на переменной «TEMP» формирует задержку, равную половине периода частоты 500 Гц (т.е. 1 миллисекунда). После выполнения задержки порт GP2 изменяет свое состояние на противоположное и т.д…
Цикл реализованный на переменных «TEMP1» и «TEMP2» формирует повторение внутреннего цикла на «TEMP» в течении 200 миллисекунд.
;**********СИГНАЛ 5000 Гц (100 mS)*********** MOVLW .9 MOVWF TEMP1 MOVLW .10 MOVWF TEMP2 MOVLW .30 MOVWF TEMP DECFSZ TEMP GOTO $-1 BTFSS GPIO,2 ; ЕСЛИ ПОРТ В "0" GOTO $+2 GOTO $+3 BSF GPIO,2 ; УСТ. В "1" GOTO $+2 BCF GPIO,2 ; УСТ. В "0" DECFSZ TEMP2 GOTO $-.11 DECFSZ TEMP1 GOTO $-.13 ;******************************************
Пауза формируется все теми же вложенными циклами:
;*************ПАУЗА (100 mS)*************** MOVLW .200 MOVWF TEMP1 MOVLW .170 MOVWF TEMP2 DECFSZ TEMP2 GOTO $-1 DECFSZ TEMP1 GOTO $-5 ;******************************************
Объединив оба блока (звук + пауза) в один и задав количество повторений через переменную «TEMP3» равную 10 получаем:
;**********ЦИКЛ ПОВТОРА - 10 РАЗ*********** MOVLW .10 MOVWF TEMP3 ;**********СИГНАЛ 5000 Гц (100 mS)*********** MOVLW .9 MOVWF TEMP1 MOVLW .10 MOVWF TEMP2 MOVLW .30 MOVWF TEMP DECFSZ TEMP GOTO $-1 BTFSS GPIO,2 ; ЕСЛИ ПОРТ В "0" GOTO $+2 GOTO $+3 BSF GPIO,2 ; УСТ. В "1" GOTO $+2 BCF GPIO,2 ; УСТ. В "0" DECFSZ TEMP2 GOTO $-.11 DECFSZ TEMP1 GOTO $-.13 ;****************************************** ;*************ПАУЗА (100 mS)*************** MOVLW .200 MOVWF TEMP1 MOVLW .170 MOVWF TEMP2 DECFSZ TEMP2 GOTO $-1 DECFSZ TEMP1 GOTO $-5 ;****************************************** DECFSZ TEMP3 GOTO $-.27
Таким образом будет сформирован прерывистый звуковой сигнал частотой 500 Гц, длительностью 200 миллисекунд с интервалом следования 100 миллисекунд. Всего 10 пакетов. Общей длительностью: (0,2+0,1)х10 = 3 секунды
При повторении устройства крайне важно подобрать транзисторы по наибольшему коэффициенту усиления: КТ3102 – не менее 500, КТ3107 – не менее 1000. Допускается использовать любые другие маломощные низкочастотные транзисторы с подобными коэффициентами усиления. Наладка устройства сводится к подбору резисторов смещения на базы усилительных каскадов по наибольшему усилению сигнала.
Текст программы в MPLAB и прошивка в HEX файле
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
МК PIC 8-бит | PIC12F629 | 1 | Поиск в магазине Отрон | |||
Биполярный транзистор | КТ3102Б | 1 | Поиск в магазине Отрон | |||
Биполярный транзистор | КТ3107Л | 1 | Поиск в магазине Отрон | |||
Диод | КД512А | 1 | Поиск в магазине Отрон | |||
Пьезоизлучатель | 1 | Поиск в магазине Отрон | ||||
Резистор | 3.3 МОм | 1 | Поиск в магазине Отрон | |||
Резистор | 100 кОм | 1 | Поиск в магазине Отрон | |||
Резистор | 2 МОм | 1 | Поиск в магазине Отрон | |||
Резистор | 47 кОм | 1 | Поиск в магазине Отрон | |||
Резистор | 20 кОм | 1 | Поиск в магазине Отрон | |||
Конденсатор | 1000 пФ | 1 | Поиск в магазине Отрон | |||
Конденсатор | 510 пФ | 1 | Поиск в магазине Отрон | |||
Конденсатор | 22 пФ | 1 | Поиск в магазине Отрон | |||
Элемент питания | SR41 | 2 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Прикрепленные файлы:
- brelok.asm (3 Кб)
- brelok.HEX (1 Кб)
Комментарии (7) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
Дмитрий, 22 Пф по питанию - это что-то из рубрики "что было - то и впаял"! не лепите отсебятину - ставьте керамику 0.1-1 мкф и электролит 1-10 мкф.
Читайте: http://radiokot.ru/forum/viewtopic.php?p=2245929 ОСОБО вчитаться в сообщение mickbell от Добавлено: Ср янв 07, 2015 4:49 pm
И пробежите глазами по http://allrefs.net/c34/147it/p19/
И, как всегда, у вас вывод Сброса висит в воздухе, что нарушает требование производителя И здравый смысл!
так как Дима мне не верит, буду давать скриншоты. Мой лозунг: давайте научим писателя читать!
цитируемый файл: PIC12F629_675.pdf
[Автор]
[Автор]