Подготовка к работе

На нашем TutorShield’е установлен пьезоизлучатель. Для его подключения установите перемычку между отмеченными выводами. Эти контакты подписаны как «buz». При их замыкании пьезоизлучатель подключается к выводу микроконтроллера PC5.

 

Подключение пьезоизлучателя

Пьезоизлучатели бывают двух типов — со встроенным генератором и без. Зуммеры со встроенным генератором излучают фиксированный тональный сигнал сразу после подачи на них номинального напряжения. Они не могут воспроизводить произвольный сигнал. Их обычно используют для простого звукового оповещения. Если требуется проиграть мелодию, или в разных ситуациях по-разному «пищать», то используют пьезоизлучатели без встроенного генератора и генерируют сигнал отдельно. На нашем шилде установлен зуммер без встроенного генератора и мы сможем воспроизводить различные мелодии. Если вы не используете наш шилд, то можете просто подключить зуммер между выводом PC5 и землей, и все примеры будут работать и у вас тоже на микроконтроллере Atmega8.

Устройство пьезоизлучателя (пьезодинамика)

Благодаря низкой стоимости и малого потребления энергии, по сравнению с динамиками, пьезокерамические излучатели звука (пьезодинамики) — акустические устройства для воспроизведения звука, использующие пьезоэлектрический эффект. Пьезоизлучатели получили широкое распространение: их используют в различных устройствах — будильниках, телефонах, игрушках и в другой технике.

 

Фото. Устройство пьезоизлучателя (пьезопищалки) и динамика
Фото. Устройство пьезоизлучателя (пьезопищалки) и динамика

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

Принцип действия излучателей основан на эффекте, открытом братьями Кюри в 1880 г. В пьезокристаллах под действием механических сил на сдвиг, изгиб или кручение образуются электрические заряды. Кроме «прямого» эффекта существует и обратный эффект — если подать электричество на кристалл, то он начнет деформироваться. При частых колебаниях кристалла создается звуковая волна с заданной частотой.

Первая программа

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

 

#include <avr/io.h> #define F_CPU 16000000UL //16MHz #include <util/delay.h> int main(void) { DDRC |= 1<<5; PORTC &= ~1<<5; while(1) { for(int i=0; i<1000; i++) { PORTC |= 1<<5; _delay_us(500); PORTC &= ~1<<5; _delay_us(500); } for(int i=0; i<500; i++) { PORTC |= 1<<5; _delay_ms(1); PORTC &= ~1<<5; _delay_ms(1); } } }

Чтобы разобраться с этой программой нужно иметь представление о физике звука. Это механические колебания с относительно низкой частотой, слышимые ухом. Чем выше частота колебаний, тем выше воспроизводимая нота. В начале происходит настройка вывода PC5 на выход, а в основной части программы прокручиваются два цикла. В первом цикле на 500мкс выставляется высокий уровень напряжения на выводе, а затем на 500мкс и цикл этот повторяется тысячу раз. Другими словами период сигнала составляет 1000мкс (или 1мс), а частота 1кГц. Если мы повторяем этот сигнал 1000 раз, то звучать он будет ровно одну секунду. В результате работы этого цикла в течении одной секунды будет воспроизводиться звук с частотой 1кГц. Во втором цикле период сигнала будет 2мс, частота 500Гц, а повторяться он будет 500 раз, то есть в течении одной секунды. В результате работы всей программы вы будете слышать, что частота сигнала меняется раз в секунду.

Частота

Для того, чтобы добиться громкого звука, частота сигнала должна совпадать с резонансной частотой пищалки. Она обычно указывается в документации и для большинства пьезопищалок лежит в пределах 2500..3500 Гц. При желании можно подобрать ее экспериментально. Если в приборе частота звука должна изменяться в зависимости от измеряемых параметров, частота звука почти никогда не попадет в резонансную. В таких случаях надо стараться, чтобы диапазон звуковых частот был как можно ближе к резонансной частоте.

Star Wars — Main Theme

При желании можно прописать любую мелодию по аналогии с первой программой. Это потребует много усилий, но задача выполнимая. Такой код будет очень сложно поддерживать и если вы захотите записать другую мелодию, вам придется писать все заново. Чтобы записать все в удобном виде и получить возможность простого изменения мелодии нам придется освоить много новых тонкостей программирования. Для начала просто, не задумываясь над кодом, запишите в микроконтроллер следующую программу:

#include <avr/io.h> #define F_CPU 16000000UL //16MHz #include <util/delay.h> #define F4 349 #define A4S 466 #define F5 698 #define C5 523 #define D5 587 #define D5S 622 #define A5S 932 #define LOOPS_PAUSE 1000 //between loops, ms #define NOTES_PAUSE 1 //between notes, ms #define SEQU_SIZE 19 //notes quantity #define TEMPO 108 //quarter in minute #define WHOLE_NOTE_DUR 240000/TEMPO //ms uint16_t notes[]={F4, F4, F4, A4S, F5, D5S, D5, C5, A5S, F5, D5S, D5, C5, A5S, F5, D5S, D5, D5S, C5 }; //whole note = 255 uint16_t beats[]={21, 21, 21, 128, 128, 21, 21, 21, 128, 64, 21, 21, 21, 128, 64, 21, 21, 21, 128}; uint16_t note_duration[SEQU_SIZE]; uint32_t signal_period[SEQU_SIZE]; uint32_t elapsed_time; uint8_t i; void VarDelay_us(uint32_t takt) { while(takt—) { _delay_us(1); } } int main(void) { DDRC |= 1<<5; PORTC &= ~1<<5; //converting notes to signal period, us for (i = 0; i < SEQU_SIZE; i++) { signal_period
= 1000000 / notes; } //converting beats to notes duration, ms for (i = 0; i < SEQU_SIZE; i++) { note_duration = (WHOLE_NOTE_DUR*beats)/255; } while(1) { for (i = 0; i < SEQU_SIZE; i++) { elapsed_time = 0; while (elapsed_time < 1000*((uint32_t)note_duration)) { PORTC |= 1<<5; VarDelay_us(signal_period/2); PORTC &= ~(1<<5); VarDelay_us(signal_period/2); elapsed_time += signal_period; } _delay_ms(NOTES_PAUSE); } _delay_ms(LOOPS_PAUSE); } }
Если все сделано правильно, будет воспроизводиться мелодия из фильма «Звездные войны». Теперь давайте разбираться с программой. После подключения библиотек сразу идет объявление частот используемых в мелодии нот. Это удобно с человеческой точки зрения, тем более что найти соответствие между нотой и частотой очень легко. Мы занесли только те ноты, которые используются в мелодии. Затем задаются некоторые константы, о которых мы поговорим позже, после чего объявляются переменные. Сразу хочется обратить внимание на способ объявления переменных. В таком виде очень удобно задавать целочисленные переменные с явно заданной длинной.

  • uint8_t
    (unsigned integer) — беззнаковая (всегда положительная) целочисленная переменная длиной 8 бит. Может принимать значения от 0 до 255 (0b11111111)
  • int8_t
    (signed integer) — знаковая переменная от минус 127 до 127
  • uint16_t
    — от 0 до 65535
  • int16_t
    — от минус 32767 до 32767
  • и т.д.

Это очень удобный формат описания в котором сразу видно, какой диапазон значений моет принимать переменная. Подробно о нем можно почитать здесь.

В программе объявляются два массива. Массив с нотами notes[]

содержит простое перечисление нот. Этим нотам сопоставляется длительность звучания в массиве
beats[]
. Длительность в музыке определяется делителем ноты по отношению к целой ноте. За целую ноту принимается значение
255
. Половинки, четверти, восьмые получаются путем деления этого числа. Обратите внимание, что длительность первой же ноты не получается путем деления 255 на степень двойки. Тут придется переключиться на теорию музыки. Ноты исходной мелодии можно посмотреть здесь. Эти ноты объединены в триоли. При таком объединении три ноты по одной восьмой звучат также, как одна четвертая. Поэтому их относительная длительность 21. Также пользователю необходимо явно указать количество нот в последовательности директивой:
#define SEQU_SIZE 19
В основной программе в первую очередь происходит пересчет массивов частот и длительность в периоды сигналов и длительность нот. С периодами сигналов (массив signal_period[]

 

) все просто. Чтобы получить длительность периода в микросекундах достаточно разделить 1000000 на частоту сигнала. Для расчета абсолютной длительности звучания нот необходимо, чтобы был указан темп музыкального произведения. Делается это директивой
#define TEMPO 108
Темп в музыке, это количество четвертей за минуту. В строке

#define WHOLE_NOTE_DUR 240000/TEMPO

рассчитывается длительность целой ноты в миллисекундах. Теперь достаточно по формуле пересчитать относительные значения из массива beats[]

в абсолютные массива
note_duration[]
. В основном цикле, переменная
elapsed_time
инкрементируется после каждого периода воспроизводимого сигнала на длительность этого периода до тех пор, пока не превысит длительность звучания ноты. Стоит обратить внимание на эту запись:
while (elapsed_time < 1000*((uint32_t)note_duration))
Переменная elapsed_time

32ух-битная, а элементы массива
notes_duration[]
16ти-битная. Если 16ти битное число умножить на 1000, то гарантированного наступит переполнение и переменная
elapsed_time
будет сравниваться с мусором. Модификатор
(uint32_t)
преобразует элемент массива
notes_duration в 32ух-битное число и переполнение не наступает. В цикле воспроизведения звука вы можете увидеть еще одну особенность. В нем не получится использовать функцию _delay_us()
, так как ее аргументом не может быть переменная. Для создания таких задержек используется функция
VarDelay_us()
. В ней цикл с задержкой в 1мкс прокручивается заданное количество раз.
void VarDelay_us(uint32_t takt) { while(takt—) { _delay_us(1); } }
При воспроизведении мелодии используется еще две задержки. Если ноты будут воспроизводиться без пауз, то они будут сливаться в одну. Для этого между ними вставлена задержка 1мс, заданная директивой:

#define NOTES_PAUSE 1

После каждого полного цикла проигрывания мелодии программа делает паузу в 1с и начинает воспроизведение заново. В итоге мы получили код, в котором легко изменить темп, поправить длительности или полностью переписать мелодию. Для этого достаточно будет только преобразовывать только часть программы с директивами и объявлением переменных.

При проверке электрических цепей осветительной сети (220 В, 50 Гц) вместо вольтметра переменного тока или универсального тестера, точно указывающих напряжение, в подавляющем большинстве случаев можно использовать простейший пробник – так называемую контрольную лампочку на номинальное напряжение 220 В.

 


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

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

Между тем удобный выход из такой ситуации – это звуковой пробник. Он представляет собой простейший электромеханический зуммер, звучащий с низкой частотой 50 Гц, однако более рационально использовать электронное устройство. Чтобы не создавать себе проблем с батарейками и их выключателем, питать звуковой пробник целесообразно от проверяемой цепи. Однако создать компактный и экономичный пробник, способный работать от сетевого напряжения, – задача довольно сложная.

Она значительно упрощается, если в пробнике применить пьезокерамический излучатель ЗП-1 (рис.1), тем более что сейчас он (или ему подобные) повсеместно используются в сигнализаторах телефонных аппаратов и др. На излучателе НА1, резисторах R3, R4 и транзисторе VT1 собран автоколебательный генератор звуковой частоты. Он работает на собственной частоте (чуть больше 2000 Гц) механического резонанса излучателя ЗП-1, на которую он настраивается автоматически. Именно поэтому излучатель генерирует очень громкий звук.

Питается генератор от проверяемой цепи без трансформатора (этой неудобной в изготовлении детали). Излишек напряжения гасится на конденсаторе С1. Пониженное таким образом напряжение через диодный мост VD1 прикладывается к стабилитрону VD2. Фильтрующий конденсатор С2 сглаживает пульсации напряжения. Резистор R1 позволяет быстро разрядить гасящий конденсатор С1 после отключения щупов XI и Х2 от проверяемой цепи. Это препятствует поражению оператора электрическим током, возможные “уколы” которого, хоть и не смертельны, но малоприятны.

Резистор R2 нужен для ограничения всплеска тока, протекающего через мост VD1 и стабилитрон VD2, в момент включения щупов XI и Х2 к проверяемой цепи. Использование моста VD1 позволяет не только подавать на звуковой генератор напряжение в нужной полярности, но и подключать щупы XI и Х2 к точкам электросхемы произвольным образом. Если такой пробник дополнить включенными последовательно резистором сопротивлением 1,5 кОм (мощностью рассеяния не менее 0,25 Вт) и светодиодом (в проводящем направлении), а эту цепочку подключить параллельно конденсатору С2, то индикация получится комбинированной: звуковой и световой.

Здесь можно использовать практически любой светодиод, работающий в области видимых лучей света. Для той же цели можно применить неоновую лампу (например, МН-5, МН-6, ТН-0,2, ТН-0,3, ИНС-1 или лампочку из стартера от люминесцентного светильника) с последовательно включенным токо-ограничительным резистором сопротивлением 150…300 кОм (мощностью 0,5 Вт и более). Эту цепочку подключают непосредственно к щупам XI и Х2.

Несколько слов о применяемых деталях. Взамен моста КЦ405А можно применить диодную сборку той же серии (либо серии КЦ402) с буквенными индексами Б, В, Ж, И или заменить его четырьмя отдельными диодами серий КД105 или КД209, собранными по схеме одно-фазного моста. Транзистор КТ315И можно заменить любым из этой серии или мощным транзистором серий КТ815, КТ817 или КТ819 с любым буквенным индексом.

 

Стабилитрон Д815Д (либо Д815ДП) удается заменить тремя Д815А (либо Д815АП), двумя Д815Б (либо Д815БП) или одним Д815Г (либо Д815ГП). При замене стабилитронов следует соблюдать особую осторожность: щупы XI и Х2 должны быть 8 обязательном порядке отключены от сети, вновь устанавливаемые стабилитроны должны быть заведомо исправны, а проводники, соединяющие мост VD1 и стабилитрон VD2, надежны. В противном случае транзистор VT1 и оксидный конденсатор С2 могут выйти из строя.

Печальным последствием этого могут стать повреждение моста VD1 и взрыв конденсатора С2. Если в вашем распоряжении вместо транзисторов структуры n-p-n имеются только транзисторы проводимости p-n-p, не беда – схема по рис. 1 легко конвертируется. Достаточно лишь изменить (на противоположную) полярность не только моста VD1 и стабилитрона VD2, но и сглаживающего конденсатора С2. Тогда 8 качестве VT1 следует применить транзистор серий КТ361, КТ814, КТ816 или КТ818.

Гасящий конденсатор С1 должен иметь номинальное (рабочее) напряжение не менее 500 В. Здесь с успехом удается применить конденсатор типа БМТ-1, МБГЧ-1, МБГЧ-2 или К73-17. Конденсатор С1 вполне можно заменить двумя последовательно соединенными конденсаторами с номинальным напряжением 250 В и емкостью по 0,47 мкФ каждый. Подобный звуковой пробник (рис.2) удается использовать и при проверке цепей автомобиля. С его помощью легко исследовать исправность почти всех “точек” электрооборудования. Исключение составляют лишь высоковольтная часть системы зажигания, а также работающие звуковые сигналы (клаксоны) и контакты прерывателя, т. е. именно те цепи, где имеются импульсы высокого напряжения.

По сравнению со схемой по рис. 1, схема рис. 2 несколько проще. Мост VD1 нужен лишь для того, чтобы не следить за полярностью подключения щупов XI и Х2. Конденсатор С1 подавляет возможные высоковольтные импульсы, всегда имеющиеся в бортовой сети автомобиля, а С2 сглаживает низкочастотные пульсации сетевого напряжения. В остальном работа этой схемы пробника ничем не отличается от предыдущей, причем точно так же его легко дополнить оптическим индикатором, но непременно светодиодным.


Если в проверяемой цепи имеется значительное сопротивление, громкость звучания пробника, разумеется, будет ниже (тональность звука при этом остается неизменной). При известном навыке по снижению громкости удается ориентировочно судить о величине сопротивления проверяемой цепи. Когда в вашем распоряжении пьезокерамического излучателя ЗП-1 (или аналогичного) с тремя выводами нет, а есть излучатель с двумя выводами (предположим, ЗП-З), то схема пробника несколько усложняется, правда, ненамного.

На рис.3 показан фрагмент такой схемы (остальная часть аналогична рис. 1 или 2). Это также звуковой автогенератор, но вместо одного транзистора в нем применяются два. Если необходимо, громкость звучания излучателя НА1 увеличивают, подбирая сопротивление резистора R2 или R4. Эта схема предложена не мною, а белорусским радиолюбителем А. Жердевым из г. Гомеля (см. “Радиолюбитель” 11/97).

И последнее. Собранный (навесным или печатным монтажом) звуковой пробник получается весьма компактным – он без труда помещается в кармане. Следует лишь учитывать, что излучатель ЗП-1 работает в автогенераторе. Поэтому ни одна из его двух граней не должна соприкасаться со стенками корпуса – крепить его следует с помощью двух жестких выводов. Наконец, чтобы звук излучателя был хорошо слышен, в одной из стенок корпуса нужно сделать несколько небольших отверстий. В роли щупов удобно использовать цанговые карандаши.

Последние сообщения

  • Альтернативные источники энергии: от кремниевых батареек до изотопных аккумуляторов22.06.2020
  • Интересные факты про автомобили16.06.2020
  • АС кабель: достойно, но без изоляции.09.06.2020

Популярные сообщения

  • Усилитель Зуева18.05.2015
  • Расчет радиатора для КРЕНки03.12.2017
  • Устройство для восстановления Fuse байтов в ATtiny231329.10.2016

Индивидуальные задания

  1. В предложенной мелодии попробуйте изменить темп исполнения и сделайте паузу 5 секунд между повторами.
  2. Элементы массива beats[]
    принимают значения только от 0 до 255. Измените разрядность элементов массива и посмотрите в выводе компилятора, как это повлияет на объем памяти, занимаемой программой.
  3. Теперь попробуйте самостоятельно изменить мелодию. Например, вот “Имперский марш” из того же кинофильма: int notes[] = {A4, R, A4, R, A4, R, F4, R, C5, R, A4, R, F4, R, C5, R, A4, R, E5, R, E5, R, E5, R, F5, R, C5, R, G5, R, F5, R, C5, R, A4, R}; int beats[] = {50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 80, 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 40};
    В этой мелодии присутствуют паузы R. Дополните код так, чтобы обработать эту особенность.

Остальные статьи цикла можно найти здесь.

 

Схема повышения напряжения

Существуют различные схемы повышения напряжения. Я перебрал несколько из них и остановился на той, с которой добился лучших результатов:

Эта схема выдает монополярные импульсы, но она достаточно проста и компактна. Самая большая деталь по размеру – это дроссель. Работает схема следующим образом: когда открывается транзистор, через дроссель начинает течь ток. Ток на дросселе не может вырасти скачком, на индуктивностях ток нарастает постепенно. Когда транзистор закрывается, ток уменьшается, а на выводе дросселя скачком увеличивается напряжение. Уровень этого напряжения зависит от номинала дросселя, входного напряжения питания, и других параметров схемы. В этой схеме задействованы следующие элементы:

  • пьезопищалка – диаметром 27 мм;
  • дроссель – RCH855NP-332K 3.3 мГн;
  • транзистор – полевой IRLML2402. Можно использовать и другие транзисторы, выдерживающие напряжение 20 В и ток 100 мА;
  • диод – любой;
  • конденсатор – любой, желательно танталовый или электролитический, включен в параллель с керамическим, общей емкостью от 100 мФ.

Китайский увлажнитель, или жене нечаянная радость

Полярность пьезоизлучателя

На этом занятии продолжим изучение Arduino с помощью простых схем. Соберем электрическую схему с пьезодинамиком и Ардуино на макетной плате. Подключить пьезо пищалку к Arduino можно несколькими способами. На этом занятии продолжим изучение Arduino с помощью простых примеров.

VS регулировка тембра Подскажите, что-то никак не соображу как правильно осуществить регулировку тембра в этой микрухе

Подключение Зуммера.

Подключение к схеме проводиться как у батарейки или диода. На устройстве есть обозначения «+» и «-». Подключаем их к питающему напряжению от 3 до 20 вольт, и радуемся получаемому звуку. У зуммера есть небольшая инерционность, и после отключения питания он ещё некоторое время будет звучать. Поэтому на нём моделировать звук не получиться, а вот как тревожная сигнализация получиться что надо.

Управляют ими обычно при помощи усилителя на биполярных транзисторах с общим эмиттером. Это позволяет от вашего МК(ARDUINO/SMT32/MSP430) делать даже полифоничный звук. Но при этом надо учитывать то, что есть зумеры с встроенным генератором. Они пищат прерывисто, с определённой частотой. Это позволяет используя разные зумеры, которые говорят о разных событиях. Стоят они дороже, но если вы собираете что-то без микроконтроллера, то это отличный финт ушами.

Современный ультразвук: пьезоизлучатель для увлажнителя воздуха

ВИДЕО ПО ТЕМЕ: HPA24AX Пьезоизлучатель с генератором полная разборка
Пищалка на Ардуино, которую часто еще называют зуммером, пьезодинамиком или даже баззером — частый гость в DIY проектах. Этот простой электронный компонент достаточно легко подключается к платам Arduino, поэтому вы можете быстро заставить вашу схему издавать нужные звуки — сигнализировать, пищать или вполне сносно проигрывать мелодию. В данной статье расскажем про отличие активных и пассивных зуммеров, разберем схему подключения пьезоэлемента к плате Ардуино и покажем пример скетча для управления пищалкой. А еще вы найдете пример мелодии, которыми cможете снабдить свой проект.

Здравствуйте, Гость Авторизация Регистрация. Усовершенствование пинпойнтера «Рим-Терра».

 

Ультразвуковые излучатели в схемах на микроконтроллере

Помогите пожалуйста с согласованием пьезоизлучателя и генератора. Сделал мостовой инвертор, который выдает сигнал — двухполярный меандр. Но, почитав интернеты, пришел к выводу, что питать пьезоизлучатель меандром неправильно, а правильно — чистой синусоидой, по той причине, что пьезоизлучатель как-бы состоит из двух ветвей, соединенных параллельно: электрической — конденсатор в моем случае на 4 нФ , и механической — RLC-цепочка. Я сначала хотел переделать генератор, чтобы он выдавал синусоиду при помощи ШИМ, даже спрашивал на этом форуме, как бы это сделать лучше по принципу усилителя класса Д. Я получил много ответов, но так и не понял, как сделать желаемое, наверное еще не хватает знаний, а местные опытные разработчики похоже непроизвольно объясняют на своем высоком уровне знаний, опуская множество очевидных для них, но неочевидных для меня вещей. Ну ладно, решил зайти с другого конца — отфильтровать меандр полосовым фильтром, как рассказывается вот здесь — psb-gals.

Пьезоизлучатель имеет 2 вывода, причём полярность имеет значение. Поэтому чёрный вывод подключаем к земле (GND), а красный.

От admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *