Регулировка громкости зуммера

anarch
Offline
Зарегистрирован: 10.09.2017

Как можно программно регулировать громкость зуммера.

Библиотека toneAC не подходит занят 16 битный таймер.

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

anarch, можно менять duty. При 50% -максимум громкости, на краях минимум. Простейший образец такой регулировки-через analogWrite()

anarch
Offline
Зарегистрирован: 10.09.2017

через analogWrite() звук рваный получаеться.

в голове крутяться два варианта или через ФНЧ ШИМ пропускать или на втором таймере настраивать шим с более высокой частотой.

вот сижу думаю что лучше будет. 

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

anarch пишет:

через analogWrite() звук рваный получаеться.

Это уже проблема не способа, что у вас в качестве зуммера?

anarch
Offline
Зарегистрирован: 10.09.2017

Что-то подобное.

void setup() {
  // put your setup code here, to run once:
  pinMode(9,OUTPUT);
  pinMode(8,OUTPUT);
  tone(8,1000);
}

void loop() {
  // put your main code here, to run repeatedly:
  int i;
  for(i=0;i<256;i++){
    analogWrite(9,i);
    delay(100);
  }
  for(i=255;i>0;i--){
    analogWrite(9,i);
    delay(100);
  }
}

От рваного звука к нормальному.

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

anarch, нужно не что-то подобное а конкретно что у вас. Этих зуммеров десятки видов, часть уже с встроенным генератором. Часть без генератора. Вторая группа делится на электромагнитные и пьезо, которые опять же выпускаются с разными частотыми диапазонами.

И потом я привёл analogWrite как простейший пример, а не как конечное решение. Ухо слишком нелинейно , поэтому на участок от 0 до примерно 20 попугаев analogwrite придётся самое заметное изменение громкости, а от 20 до 128 будет едва заметно.

anarch
Offline
Зарегистрирован: 10.09.2017

Выдранно из первыой попавшейся платы и без маркировки.

TCCR1B |= (1<<CS10);
TCCR1B &= ~((1<<CS12)|(1<<CS11));

С увеличение частоты ШИМ с 500 Гц до 32 кГц звук нормализуеться, но изменения громкости не значительные.

 

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

anarch, выше 10кГц на этих излучателях не услышать, так что на 32кГц не может работать. Если пищит -значит он с  встроенным  геннератором, и должен пищать просто от подключения к питанию.  И соответссно никаких способов рег-ки звука для него не существует.

anarch
Offline
Зарегистрирован: 10.09.2017

Он точно без генератора. 32 кГц частота ШИМ для analogWrite(). Звук подаю из tone() 500-2000 Гц.

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

anarch, analogWrite и tone -это взаимоисключающие вещи.

anarch
Offline
Зарегистрирован: 10.09.2017

ну если использовать только analogWrite() частота будет фиксированная.

а мне нужно использовать разную тональность.

назрел совсем варворчкий способ.

мне нужно иметь 4 состояния выкл. 30% 70% и 100% громкости. 

можно повесить на три ножки сопротивления и ограничивать громкость ими. попробовал работает.

но все этот как то не красиво получаться.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

обычно все эти излучатели конструируются исходя из максимальной резонансной частоты на работу которой они рассчитаны.

ожидать, что излучатель будет отдавать одинаковую громкость на всём звуковом диапазоне частот - глупо.

*кстати, а некоторые заточены на ультразвук... да.