Функция tone , и ультразвук. 20-40Кгц

Bruno
Offline
Зарегистрирован: 27.04.2015

Уважаемые. Подскажите , возможно ли  функцией tone. получить сигнал от20 до 40Кгц.

(Нашёл вот такую фразу на форуме- "функцией tone не получаеться начинает некоректно работать после 10кГц ....")

И вообще какова предельная частота подобной генерации. Не нашёл никаких указаний на пределы.

НУ или другие варианты .

a5_25arduino
Offline
Зарегистрирован: 29.04.2015

а как вообще работать со звуком?

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

maksim
Offline
Зарегистрирован: 12.02.2012
#define OUT 9          // вывод выходного сигнала

void setup()
{
  Serial.begin(9600);
  pinMode(OUT, OUTPUT);
}

void loop()
{
  if(Serial.available()) 
  {
    long frequency = Serial.parseInt();
    Serial.print(Set_frequency(frequency));
    Serial.println(" Hz");
  }
}


long Set_frequency(long freq)
{
  TCCR1A = 0b01000000; 
  uint16_t ocr;
  if(freq < 134) 
  {
    TCCR1B = 0b00001010; 
    ocr = 1000000UL/freq - 1;
    freq = 1000000UL/(ocr+1);
  }
  else 
  {
    TCCR1B = 0b00001001;
    ocr = 8000000UL/freq - 1;
    freq = 8000000UL/(ocr+1);
  }
  OCR1AH = highByte(ocr);
  OCR1AL = lowByte(ocr);
  TIMSK1 = 0;
  return freq;
}

Подключать только к 9 выводу уноподобных плат (ATmega88/168/328) ,пишите в монитор порта нужную чатоту (в герцах) и получаете ее на 9 выводе.

Bruno
Offline
Зарегистрирован: 27.04.2015

maksim Спасибо ..

Я вообще то, хотел , что бы по нажатию кнопки перебирались частоты 20------30 кгц.

Вот сможет ли ардуино их  выдать.?

maksim
Offline
Зарегистрирован: 12.02.2012

#2 функция Set_frequency(long freq) может генерить сигнал частотой от 16 Гц до 8 МГц.

a5_25arduino
Offline
Зарегистрирован: 29.04.2015

Bruno пишет:

maksim Спасибо ..

Я вообще то, хотел , что бы по нажатию кнопки перебирались частоты 20------30 кгц.

Вот сможет ли ардуино их  выдать.?

плата ардуино вряд ли а вот динамик может но есть подозрение что функцию tone() придется переписывать под свои задачи  тк она может быть расчитана только на слышимый диапазон ...

 Обычный человек способен слышать звуковые колебания в диапазоне частот от 16—20 Гц до 15—20 кГц вот на эти пределы расчитано

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Bruno, нижняя граница функции tone() ограничена возможностями используемого по-умолчанию 8-битного таймера, и составляет 31 Герц. Верхняя граница функции tone() ограничена используемой в функции 2х байтовой переменной , поэтому максимальная генерируемая частота не может быть выше 65535 Герц.

Bruno
Offline
Зарегистрирован: 27.04.2015

dimax   Спасибо.. Это то что было нужно..   Т.е 65кГц  - отлично

maksim  Попробовал запустил скетч.. подумаю как его использовать.  Спасибо.

 

renoshnik
Offline
Зарегистрирован: 11.04.2013

а что конкретно ты хочешь сделать ?

запустить УЗ ванну ?

satelit
Offline
Зарегистрирован: 12.12.2015

Я УЗ рюмку сделал из энергосберегающей лампы(30кгц) и пьезик на дне-----результат- рюмка блястит и деталь нет

 

fsdb
Offline
Зарегистрирован: 24.10.2015

Правильно ли я понял, что пример от maksim во втором посте позволяет генерировать большую частоту чем функция tone,

Мне нужно генерировать до 300Кгц на драйвер шагового дивгателя с микрошагом 255