пьезоизлучатель HPM14A + attiny2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

Всем привет !!!! Кто нибуть имел дело с этим излучателем ,у меня возникла следующая проблема проблема :roll:

Приладил HPM14A к attiny2313 , + вывод к выводу 1 PortB, - соответственно к минусу , нужно чтобы он пикал при нажатии на кнопки на моем устройстве.

Вопрос:
к нему случаем не нужен усилитель на транзисторе (по DATASEET
ток 1ма ,напр 5вольт ) ????
и вообще как им управлять ,что то ни как не пойму,

пробовал просто подавать импульс на 0,5сек
не писчит ????? , со встроенным генератором электромагнитный излучатель при этом коде работает , а этот не хочет.

Код: Выделить всё

.equ	 OutPort = PORTB 


*********
*********
sbi  OutPort,(1<<OutPin)  ; 
rcall delay                       ;вызов задержки 0,5 сек 
cbi  OutPort,(1<<OutPin)  ; 
*********
Прошу подсказать как надо управлять пьезоизлучателями , может через таймер ???
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

А есть ли у него встроенный генератор?..
Может, надо не один, а серию импульсов подавать, определённой частоты (из даташита)?
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 26
Зарегистрирован: Чт янв 21, 2010 18:55:53

Сообщение dron711 »

HPM14A-просто излучатель. На него надо подавать импульсы с нужной частотой. Со встроенным генератором HPM14AX. Но они уже от 12 вольт питаются.
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

частота HPM14A 4000 ± 500 гц
На него надо подавать импульсы с нужной частотой
я так понял что только через таймер можно заставить писчать , может кто нибуть обьяснить как это сделать ,хоть убей не пойму ?????
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

Почему сразу через таймер? Дело вкуса.
Можно тот же самый rcall delay задействовать...
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

MTF писал(а):...хоть убей не пойму ?????
нужно подать серию импульсов какой-либо частоты звукового диапазона на вывод пьезоизлучателя.
Ставим плюсы: )
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пн сен 08, 2008 11:21:11
Откуда: Пермь

Сообщение Alex72 »

Не надо человека в заблуждение вводить. Это пьезоизлучатель со встроенным генератоом. Uпит=5В. Проверь полярность подключения. А вообще просто подключи к нему питание, убедись что он исправен.
Усилитель к нему не нужен, так как ток потребления <1mA. Подключать можно прямо к пину МК
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Alex72 писал(а):..Это пьезоизлучатель со встроенным генератоом...
не согласен! вообще с чего вы взяли? :o

HPM14A - без встроенного генератора
HPM14AХ - со встроенным генератором
Топикстартер, проверьте маркировку.
Ставим плюсы: )
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

HPM14A - 100% без встроенного генератора

ibiza11
нужно подать серию импульсов какой-либо частоты звукового диапазона на вывод пьезоизлучателя.
В принципе я понял что надо подать серию импульсов !!!
Уважаемые коты , так может кто нибуть обьснить , как подается эта самая серия импульсов для пьезоизлучателя HPM14A, мне надо просто пикнуть на нажатие кнопки !!

у меня таймер T0 работает с делением 256 по переполнению ,тактовая частота 4мгц , (T1 нет возможности использовать) , можно ли использовать T0 для подачи серии импульсов ~ 4000гц ????
допустим в основной программе после нажатия кнопки я установил флаг beep = 1 , а в таймере смотреть если beep = 1 ,то подавать серию импульсов а в конце сбросить beep = 0 , если можно то подскажите как это делается програмно ???
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

А код то в чём пишите?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

Pooher Assembler AVR Studio
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MTF писал(а):Pooher Assembler AVR Studio
Возможно если сделать таймерное прерывание то в твоем случае оно будет давать почти 16килогерц, соотв тебе надо получить частоту в 4 раза меньше, для этого заведи счетчик который будет доступен между прерываниями, я правда не знаю хватит ли тебе длительности но вот самый простой алгоритм(а может и нет, я не проверял :) ).
в прерывании:

Код: Выделить всё

 dec counter
 brne next
 inc counter
 in temp,PORTB
 andi temp, ИНВЕРСНАЯ_МАСКА_ПИНА_ГДЕ_ВИСИТ_ДИНАМИК (для 1 бита к примеру 0xFD  = (0хFF - 0х02)
 out PORTB,temp
next: 
 ldi temp,0x01
 and temp,counter
 brne no_sound
 out PINB,МАСКА_ПИНА_ГДЕ_ВИСИТ_ДИНАМИК (для 1 бита к примеру 0х02)
no_sound:
 делаешь свои дела в прерывании
работает так , когда у тебя гдето нажата кнопка и ты хочешь чтобы динамик пискнул , загружаешь в counter учетверенное количество тактов, соотв динамик пропищит их и замолкнет когда counter станет единицей.
Контактная информация:
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

Neekeetos а, если я буду использовать таймер без деления частоты , вот что пришло в голову

Код: Выделить всё


tmkey:   .byte   1 

T1_OVF: 
;код который работает каждые 0,000064 с 
   cpi   beep,  1
   brne no_sound    
   cpi   counter ,62    ; ~  0,004 с   4000гц
   brne no_sound    
   clr   counter          ; 0 
   sbi  OutPort,(1<<OutPin)   ;1
   cbi  OutPort,(1<<OutPin)   ;0
no_sound:
   inc   counter  
   lds   tmp, tmkey 
   inc   tmp 
   sts   tmkey, tmp 
   tst   tmp 
   brne tm_exit   ;      
;код который работает каждые 0,016384 с  

   *********** 
   *********** 
   *********** 
tm_exit:    
reti
вынесите вердикт ??????
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

MTF писал(а):вынесите вердикт ??????
у Вас же спаяное устройство! вынести вердикт сами не можете? :shock:
Ставим плюсы: )
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MTF писал(а):Neekeetos а, если я буду использовать таймер без деления частоты , вот что пришло в голову

вынесите вердикт ??????
Лехко :)

Код: Выделить всё

T1_OVF: 
;код который работает каждые 0,000064 с   это грубо говоря прерывание с частотой 15625 Гц
   cpi   beep,  1
   brne no_sound     ; тут все ок, я на флагах в своем коде экономил но так прямее

   cpi   counter ,62    ; ~  0,004 с   4000гц
   brne no_sound      ; 
   clr   counter          ; 0 
   sbi  OutPort,(1<<OutPin)   ;1 ; вообще то если пишешь в регистр пин то соотв вывод меняет состояние на обратное, надо оставить одну первую команду 
   cbi  OutPort,(1<<OutPin)   ;0  фтопку
no_sound:
   inc   counter  ; счетчик постоянно меняется, даже если звук выключен, соотв ты можешь включить звук когда счетчик больше чем 62 и звук будет пищать 255-x+62 периода а не 63
....
вобщем все окейно но не совсем работает, для частоты 4к надо сделать так:

Код: Выделить всё

T1_OVF: 
;прерывание с частотой 15625 Гц
   cpi   beep,  1
   brne no_sound  

   сbi  OutPort,(1<<OutPin) ; OutPort это PORTB например, не PIN(X)
  sbrc counter,1 ; выводим единицу в порт только если 1 бит у counter выставлен, это бывает в 4 раза медленней чем прерывание
  sbi  OutPort,(1<<OutPin)   ; раз уж хочется использовать именно регистр PORT

   inc   counter    ; прибавляем счетчик только если звук есть, соотв для запуска звука надо загрузить его длительностью звука
   cpi   counter ,62    ; ~  0,004с  проверено
   brne no_sound      ; 
   clr   counter          ; 0 
no_sound:

Контактная информация:
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

ibiza11
у Вас же спаяное устройство! вынести вердикт сами не можете?
в том то и дело что попробовал и не работает поэтому и попросил посмотреть код в чем может быть дело , так как еще не очень владею ASM?????

Neekeetos
Спасибо за помощь ,попробовал ваш доработанный код , вот что то не пойму , для того чтобы пикало 1 раз , надо ли использовать задержку после beep = 1

Код: Выделить всё

 ; после нажатой клавиши
 ldi  beep , 1 
 rcall delay  ; задержка к примеру около 1сек 
 clr beep 
или я что то не допонял ?????
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MTF писал(а):вот что то не пойму , для того чтобы пикало 1 раз , надо ли использовать задержку после beep = 1

Код: Выделить всё

 ; после нажатой клавиши
 ldi  beep , 1 
 rcall delay  ; задержка к примеру около 1сек 
 clr beep 
или я что то не допонял ?????
Задержку не надо никакую, по задумке оно само в фоне пикнет и все. Но вообще прикольно, походу дела надо код еще изменить, тк он при таком раскладе непрерывно должен пикать пока не выключишь, бип то никто не обнулял, так попробуй:

Код: Выделить всё

T1_OVF:
;прерывание с частотой 15625 Гц
   cpi   beep,  1
   brne no_sound 

   сbi  OutPort,(1<<OutPin) ; OutPort это PORTB например, не PIN(X)
  sbrc counter,1 ; выводим единицу в порт только если 1 бит у counter выставлен, это бывает в 4 раза медленней чем прерывание
  sbi  OutPort,(1<<OutPin)   ; раз уж хочется использовать именно регистр PORT

   inc   counter    ; прибавляем счетчик только если звук есть, соотв для запуска звука надо загрузить его длительностью звука
   cpi   counter ,62    ; ~  0,004с  проверено
   brne no_sound      ;
   clr   counter          ; 0
   clr   beep; отключаем звук тут
no_sound:
Контактная информация:
MTF
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 179
Зарегистрирован: Чт янв 07, 2010 11:25:12
Откуда: Москва

Сообщение MTF »

Neekeetos Все OK писчит , но вот только писчит не очень громко , вообщем огромное спасибо :beer:
вопрос не по теме : я не один раз в форуме задавал вопрос ,может вы ответите , в своем устройстве применил TSOP1736 , принимал код как в datasheet avr410 rc5 , хотел сделать чтобы контроллер просыпался от внешнего прерывания TSOP посадил на INT0 , т е от нажатия на пульте , не упростится ли алгоритм приема кода RC5 через внешнее прерывание INT по сравнению с приемом через обычный вход как в avr410 ?????
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

MTF писал(а):не упростится ли алгоритм приема кода RC5 через внешнее прерывание INT по сравнению с приемом через обычный вход как в avr410 ?????
да вы знаток задавать вопросы) давайте каждый попробует написать алгоритм и проверит, вдруг он упростится!
по делу: Лучше самому один раз разобраться, чем миллион раз задавать один и тот же вопрос на форуме.
Ставим плюсы: )
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

MTF писал(а):Neekeetos Все OK писчит , но вот только писчит не очень громко , вообщем огромное спасибо :beer:
ага, можешь сделать как в любом китайском тетрисе:
Изображение катушка любая, от 100мкгн, тогда будет орать.
MTF писал(а): вопрос не по теме : я не один раз в форуме задавал вопрос ,может вы ответите , в своем устройстве применил TSOP1736 , принимал код как в datasheet avr410 rc5 , хотел сделать чтобы контроллер просыпался от внешнего прерывания TSOP посадил на INT0 , т е от нажатия на пульте , не упростится ли алгоритм приема кода RC5 через внешнее прерывание INT по сравнению с приемом через обычный вход как в avr410 ?????
Не знаю я этого не пробовал делать, попробуй по форуму поищи , кажется ктото делал именно в прерывании, чисто теоретически может и проще будет.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»