led диммер 0-10в

alexey_and
Offline
Зарегистрирован: 03.03.2013

делаю диммер на основе подачи 0-10в через делитель напряжения (до 5в) на аналоговый вход ардуино

все работает, но есть одна проблема: нестабильная отдача сигнала, из-за этого наблюдается небольшое мерцание света, особенно на маленькой яркости

на скрине видно, как выходной сигнал немного прыгает

может сделать какое-нибудь усреднение?  

https://www.dropbox.com/s/nwj2irfgq3w21n6/Screen%20Shot%202015-03-25%20a...

код:

#define analog_in_1 A0
#define analog_in_2 A1
#define analog_in_3 A2
#define analog_in_4 A3

#define analog_out_1 2
#define analog_out_2 3
#define analog_out_3 4
#define analog_out_4 5

int level_in1 = 0;
int level_in2 = 0;
int level_in3 = 0;
int level_in4 = 0;

int level_out1 = 0;
int level_out2 = 0;
int level_out3 = 0;
int level_out4 = 0;

void setup() {

  pinMode(analog_in_1, INPUT);
  pinMode(analog_in_2, INPUT);
  pinMode(analog_in_3, INPUT);
  pinMode(analog_in_4, INPUT);

  pinMode(analog_out_1, OUTPUT);
  pinMode(analog_out_2, OUTPUT);
  pinMode(analog_out_3, OUTPUT);
  pinMode(analog_out_4, OUTPUT);

//  analogWrite(analog_out_1, 0);
//  analogWrite(analog_out_2, 0);
//  analogWrite(analog_out_3, 0);
//  analogWrite(analog_out_4, 0);

Serial.begin(9600);

}

void loop() {

  analog_work();

}

void analog_work() {

  level_in1 = analogRead(analog_in_1);
  level_in2 = analogRead(analog_in_2);
  level_in3 = analogRead(analog_in_3);
  level_in4 = analogRead(analog_in_4);

  level_out1 = map(level_in1, 0, 1023, 0, 255);
  level_out2 = map(level_in2, 0, 1023, 0, 255);
  level_out3 = map(level_in3, 0, 1023, 0, 255);
  level_out4 = map(level_in4, 0, 1023, 0, 255);

  analogWrite(analog_out_1, level_out1);
  analogWrite(analog_out_2, level_out2);
  analogWrite(analog_out_3, level_out3);
  analogWrite(analog_out_4, level_out4);

Serial.println(level_out3);

}

 

vvadim
Offline
Зарегистрирован: 23.05.2012
#define analog_out_1 2
#define analog_out_2 3
#define analog_out_3 4
#define analog_out_4 5
 analogWrite(analog_out_1, level_out1);
 analogWrite(analog_out_2, level_out2);
 analogWrite(analog_out_3, level_out3);
 analogWrite(analog_out_4, level_out4);

вопрос - на каких пинах шим?

 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

level_out3 = map(level_in3, 0, 1023, 0, 255);

можно ведь просто поделить на 4

alexey_and
Offline
Зарегистрирован: 03.03.2013

vvadim

на 2, 3, 4, 5

jeka_tm

пробовал - совсем жестко мерцает

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

странно))) ты так делал?

level_out3 = level_out3/4;

alexey_and
Offline
Зарегистрирован: 03.03.2013

да

причем если прописать фиксированную величину, например analogWrite(analog_out_1, 20); - не мерцает ничего. т.е. дело не в схемотехнике, проводах и тп, а именно в программе

а map видимо дает более сглаженный результат чем деление - с ним мерцание намного меньше

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

map выполняется медленнее просто. может дело в этом. delay(1) добавь

alexey_and
Offline
Зарегистрирован: 03.03.2013

попробую, но в итоговом варианте не хотелось бы, там еще куча других функций

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

alexey_and, а что вы подключаете к входам?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

alexey_and
Offline
Зарегистрирован: 03.03.2013

dimax

диммер (источник напряжения 0-10в)

jeka_tm

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

схема такая: (0-10в) - (делитель напряжения) - (аналоговый вход) - (pwm выход) - (mosfet) - (led лента)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так диммер самодельный на мосфете управляемый шимом или диммер магазиннный на который нужно подать сигнал аналоговый 0-10В?

alexey_and
Offline
Зарегистрирован: 03.03.2013

самодельный на мосфете

на него подается сигнал 0-10 с магазинного

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

))) понятно. экономим значит. когда мерцает? когда изменяешь яркость или всегда?

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

alexey_and, всё равно не ясно..  сначала какой-то магазиный диммер, он выдаёт регулируемое напряжение до 10 вольт, затем что-то самодельное, затем через делитель на вход.. Зачем это всё? ШИМом удобнее управлять цифровым устройством ввода,  например енкодером. Ещё элегантно крутить яркость через обычную ps/2 мышь :)

alexey_and
Offline
Зарегистрирован: 03.03.2013

jeka_tm

честно? не экономим, а от безысходности. нет, есть специализированные диммеры для лент, но 25 тыщ за 1 шт :)

диммеры такого плана http://www.neoncolor.ru/light-control/dimmery-vhod-0-10v-vyh-12-24v-gr-497/dimmer-sr-2006-12-36v-96-288w-1-10v-1ch-article-014168.html

требуют большую нагрузку. конкретно в этой задаче у меня 4 куска ленты меньше метра каждая. такие диммеры столь малую нагрузку не диммируют, их надо грузить ближе к 100%

 

мерцает:

1) на любой яркости всегда, немного как-бы подрагивает. особенно заметно на малой яркости (до 5-10%), выше - почти не заметно. с делением подрагивает сильно и на любой яркости

2) когда яркость изменяешь от 0% до примерно 20%, дальше идет плавно. от 20% до 0% тоже мерцает. но это скорее не мерцание, ступенчатое изменение яркости - как будто тормозит. диммер изменяет напряжение плавно по принципу: было 0, поставили 20 - плавно меняет напряжение от 0в до 2в в течение 2 секунд и тд

alexey_and
Offline
Зарегистрирован: 03.03.2013

dimax

это интерфейс 0-10в, к нему нельзя подключать токовые устройства :) поэтому без силового диммера не обойтись

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

повысь частоту шим и сделай апроксимацию аркости хоть на глаз, чтобы выправить характеристику

alexey_and
Offline
Зарегистрирован: 03.03.2013

кстати, еще странность

когда-то давно подключал к этой конструкции 10 метров ленты на 24в, на 1 канал - мощность была нехилая

и никакого мерцания вроде не было, было только торможение при наборе яркости

сейчас на одном канале примерно 60см ленты на 12в 

alexey_and
Offline
Зарегистрирован: 03.03.2013

jeka_tm пишет:

повысь частоту шим и сделай апроксимацию аркости хоть на глаз, чтобы выправить характеристику

наоборот, после решения этих проблем хотел спросить как частоту понизить

не рекомендуется частота более 400-600Гц - типа излучение и все такое, а у меня эта лента прям надо головой :)

все брендовые диммеры работают не больше 400-600Гц

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

после истока полевика поставь диод, а параллельно ленте конденсатор 4700мкф

alexey_and
Offline
Зарегистрирован: 03.03.2013

с какими параметрами диод?

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

alexey_and, а по мне так любой шим вреден, как он действует на мозг -не известно. Правильная регулировка яркости для дома и семьи - либо регулировкой тока, либо (если есть возможность) отключением части светодиодов.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ампера на 3 прозапас. лучше шотки. например такой 

хотя нарисовал и понял нафига диод)))

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Библиотека FastPWM должна устранить видимое мерцание.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

jeka_tm пишет:

после истока полевика

А на картинке нарисовано после стока (drain).

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Jeka_M пишет:

jeka_tm пишет:

после истока полевика

А на картинке нарисовано после стока (drain).

все время путаю. додумались почти одинаково назвать

std
Offline
Зарегистрирован: 05.01.2012

alexey_and, попробуйте так:

const byte loga[64]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,18,22,25,28,29,30,33,36,39,42,46,49,53,56,60,64,68,72,77,81,86,90,95,100,105,110,116,121,127,132,138,144,150,156,163,169,176,182,189,196,203,210,218,225,233,240,248,255};

byte level[4]   = {0,0,0,0};
const byte pin_in[4]  = {A0,A1,A2,A3};
const byte pin_out[4] = {3,5,6,9};

void setup() {
  byte i;
  for(i=0;i<4;i++){
    pinMode(pin_in[i],INPUT);
    pinMode(pin_out[i],OUTPUT);
  }
//  Serial.begin(9600);
}

void loop(){
  byte i;
  for(i=0;i<4;i++){
    level[i]=(byte)analogRead(pin_in[i])>>4;
    analogWrite(pin_out[i], loga[level[i]]);
  }
//  Serial.println(level[3]);
}

Хотя, формально - одно и то же. Кстати, 3, 5, 6, 9 указано не от балды (если речь об Uno). Иначе - совтварная PWM (костыль), либо BAM (быстрее, но больше переключений транзистора).

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

jeka_tm пишет:

все время путаю. додумались почти одинаково назвать

Ага, исток - сток часто путают. Поэтому предпочитаю называть gate, source, drain. Так точно не перепутаешь :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

это что экспонента?

std
Offline
Зарегистрирован: 05.01.2012

jeka_tm, для линейности на светиках. На самом деле не относится к сходящей с ума ленте, где-то в другом месте косяк. Кстати, полезно сериал монитором посмотреть, что там делает map() или деление после чтения из АЦП? И померить что после делителей, желательно не вольтметром а осциллографом. Вдруг оно на самом деле скачет туда-сюда, а analogWrite() просто выводит то что ей скажут?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

экспонента для яркости чтобы скомпенсировать "логарифм" измерения яркости глазом))) вот написал

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

32 градации яркости с логарифмической зависимостью :)

void loop() { analogWrite (10,pow ( (analogRead(A0)>>5),1.614));   }
 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну какая же логарифмическая. это же степенная фукнция. форма как у экспоненты

а вообще прикольное решение. проще чем массив

alexey_and
Offline
Зарегистрирован: 03.03.2013

std пишет:

alexey_and, попробуйте так:

Хотя, формально - одно и то же. Кстати, 3, 5, 6, 9 указано не от балды (если речь об Uno). Иначе - совтварная PWM (костыль), либо BAM (быстрее, но больше переключений транзистора).

совсем плохо ((( еще хуже чем деление

дуина - мега

alexey_and
Offline
Зарегистрирован: 03.03.2013

std пишет:

jeka_tm, для линейности на светиках. На самом деле не относится к сходящей с ума ленте, где-то в другом месте косяк. Кстати, полезно сериал монитором посмотреть, что там делает map() или деление после чтения из АЦП? И померить что после делителей, желательно не вольтметром а осциллографом. Вдруг оно на самом деле скачет туда-сюда, а analogWrite() просто выводит то что ей скажут?

вот что показывает чтение при уровне 33%

https://www.dropbox.com/s/qdvdk6zl7mtqt3e/Screen%20Shot%202015-03-26%20a...

что показывает map есть в первом сообщении - тоже есть нестабильность

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

 

alexey_and
Offline
Зарегистрирован: 03.03.2013

Tomasina пишет:
Библиотека FastPWM должна устранить видимое мерцание.

не хочется над головой мегагерцовую антенну иметь

наоборот, хочу понизить до 400 гц

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

поставь конденсатор по входу. твой контроллер шумит, ацп шумит. а виновата map

select2
Offline
Зарегистрирован: 31.10.2012

alexey_and пишет:

Tomasina пишет:
Библиотека FastPWM должна устранить видимое мерцание.

не хочется над головой мегагерцовую антенну иметь

наоборот, хочу понизить до 400 гц

Алексей, ваше решение неверное в принципе. Поясню почему.

1. Во первых вы ошибаетесь с частотой. Чтобы получить фон в виде излучения, частота должна быть в районе десятков мегагерц. Ведь WiFi и GSM, которыe работают в частоте 1-2,5 МГц вас почему то не пугают? Все современные ШИМ регуляторы работают в диапазоне от десятков до сотен Мгц. И сделано это вот почему:

2. Регулировать яркость бытового освещения при помощи ШИМ - крайне опасно для глаз. Чтобы исключить досужные домыслы, скажу сразу - это оговаривается в СНИП на освещение. Номер не помню, но найдете легко. Для помещений, с установленной компьютерной техникой, максимальный уровень пульсаций ограничен 5%. Для ряда помещений - еще меньше - 1%. Уровень пульсаций существенно влияет на комфорт и, при продолжительном пребывании, - на зрение. Делая коэффициент заполнения даже 95% - вы получаете запредельный уровень пульсаций! Будь у вас осциллограф, вы бы увидели эту печальную картину прямо на светодиодах.

Как обычно делают и для чего выпускают ШИМ-диммеры?

Обычный ШИМ-диммер можно использовать с инерционной нагрузкой - например лампой накаливания или галогеновой. За счет того, что спиарль светится некоторое время после отключения, пульсации нивелируются. Даже КЛЛ уже даст неприемлимый уровень пульсаций - у нее свой высокочастотный драйвер.

А делают обычно так: регулируемый источник питания имеет интерфейс управления ШИМ (или аналоговый 0-10в), а на основании этого управления он уже осуществляет токовую регулировку, не повышая уровень пульсаций. Для питания светодиодов, например: http://mmp-irbis.ru/content/e-sources/files/A220T070C056M07.pdf Посмотрите как реализован принцип управления. Я делаю именно так. Т.е. ШИМом управляю подобным источником тока. При этом во всем диапазоне регулирования уровень пульсаций остается на допустимом уровне.

Но у вас не сетодиоды, а лента с резисторами. Вам для регулирования яркости достаточно варьировать напряжение, причем в небольших пределах. Проще всего - на базе вашего линейного аналогового диммера сделать регулируемый источник питания (хоть параметрический стабилизатор) и регулировать им напряжение, например в пределах 8-12в. Я не знаю параметров вашей ленты, но мне кажется что этого будет достаточно. Для человека, который на полевике делает ШИМ, это решение не должно составить проблем. К сожалению, Ардуино для этого решения не нужно. Это главный минус предложенного мной решения.

std
Offline
Зарегистрирован: 05.01.2012

select2 пишет:
Регулировать яркость бытового освещения при помощи ШИМ - крайне опасно для глаз

Чем? До 85 Гц - да соглашусь, та же ситуация что и с электронно-лучевым монитором - не успевает отрисовать больше 56 кадров/сек, что приводит к мерцанию, особенно меметичен ЭЛ-телевизор на фоне современного монитора, и при взгляде боковым зрением.

НО: вы сейчас сидите за столом и читаете этот текст с монитора, скорее всего бытовой серии на какой-нибудь матрице LG типа LP156WH, которая работает вообще на 60 Гц, а мерцание не палится за счёт инерции жидких кристаллов. Четыре, семь, девять часов за ним сидим, и ничё - голова не бобо. А вот перед ЭЛТ уже через 40 минут начинало потихоньку давать. Уже на частотах свыше 170 Гц никаких подобных эффектов не будет, только до 85 Гц или совпадающие с мозговыми ритмами, а это уже инфразвуковые частоты. Та же TLC5940 - модулирует светики на 1 кГц, и для освещения заходит просто отменно. Этого вполне достаточно.

2 МГц - конечно круто звучит, но братишки, это ж сколько энергии у вас будут полевики рассеивать?

select2
Offline
Зарегистрирован: 31.10.2012

Повторюсь - сваливаться в дискуссию о вреде не буду. Есть СНИП.

И потом - вы путаете частоту работы импульсного источника питания и частоту протокола его управлением.

1КГц - это допустимая частота мерцания ДЛЯ ПОДСВЕТКИ, например рекламных вывесок, но недопустимая для ОСВЕЩЕНИЯ. А управлять можно хоть на частоте 20Гц.

Современные ИМС ИИП вполне себе работают на частотах до 2МГц - для уменьшения габаритов дросселей.

alexey_and
Offline
Зарегистрирован: 03.03.2013

тогда вопрос, но не ради развидия дискусии :) почему везде в офисах стоят так называемые лампы дневного света, мерцание которых я вижу практически невооруженным взглядом? а если в этом офисе еще dlp проектор работает - вообще беда

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

на основном у меня блоки питания со встроенным диммированием 0-10в, диммирует током. но там своя проблема - чтоб получить полный диапазон диммирования, надо грузить блок под 100%. у меня загружен на 70%, и диапазон диммирования получается 30-100%

насчет частоты pwm 400-600гц - европейцы делают именно такое диммеры, акцентируя на этом особое внимание

например: http://zennio.com/products/lighting/lumento-x3

PWM is the type of modulation that Lumento uses to dim. PWM allows to modify the intensity of light by varying the pulse duration of the power signal. The parameter PWM frequency defines the frequency of this signal and the recommended value depends on the type of application. If we are using the LEDs for decorative lighting, we can set any value as long as all the frequencies are high enough so that the human eye won’t notice the blinking. For desk lighting, we recommend the highest frequency (600 Hz) as it can prevent eyestrain; nevertheless, the default value (488 Hz) is appropriate for most applications.

jeka_tm

попробую

stakan1986
Offline
Зарегистрирован: 17.02.2015

ну или можно программно значения 5-10 измерений усреднять и только потом выдавать на ШИМ выход. В ваших замерах уровень сигнала скачет от 332 до 338 при делении на 4 получаем от 82 до 85 на выходе. Учитывая что при малых значениях ШИМа глаз очень хорошо видит скачки даже на 1, то и наблюдается мерцание.

Собственно, если задать стандартный пример ардуины - Fade - если не ошибаюсь, то Вы должны наблюдать равномерное увеличение-уменьшение яркости ленты. Отсюда простой вывод: выходной тракт на мосфете работает верно, а проблема кроется как раз таки в "мерцании" управляющего напряжения 0-10В. Его то и надо сглаживать, либо через кондер, либо программно.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

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

о-ла-ла... Ка раз очень неравномерное изменение яркости - сначала резное нарастание (диапазон от 5 до 20), а потом еле заметное увеличение (диапазон 21-254). Дело тут не в ШИМ, а в характеристиках светодиода и его мощности.

select2
Offline
Зарегистрирован: 31.10.2012

Да нельзя его так ШИМом регулировать - дело не только в характеристике LEDa (хтя это тоже сильно влияет), но и в характеристике блока питания - как быстро он запускается? Как реагирует на нагрузку? Есть ли у него большая емкость на выходе или нет (зависит от того импульсный или параметрический источник). Можно получить вообще непредсказуемый результат.

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

p.s. Отвечал на предыдущий пост и потерлось сообщение. Второй раз писать формулы и сслыки терпения не хватит. Прошу прощения у автора, который задавал мне вопросы.

alexey_and
Offline
Зарегистрирован: 03.03.2013

stakan1986

до магазина еще не доехал кондеры купить, хотел бы пока попробовать программно, может и достаточно будет

 

stakan1986
Offline
Зарегистрирован: 17.02.2015

Имел ввиду, что будет равномерное увеличение значений ШИМа, без мерцаний наблюдаемых топикстартером. Равномерного увеличения свечения конечно не будет.

А вообще конечно лучше использовать токовый драйвер светодиодный. Частоты, и в самом деле, десятки-сотни кГц. Хотя ленту к нему уже приделать будет проблематично((. 

to select2,  в качестве ночника - мне кажется не так уж и страшно будет использовать такое регулировку. Зато простота изготовления явно перевешивает

alexey_and
Offline
Зарегистрирован: 03.03.2013

ну, равномерность диммирования меня вроде устраивает - во всем диапазоне изменение яркости заметно, даже лучше чем на токовом драйвере. торможение изменения яркости от 0 до 20% можно убрать, если поставить минимальную яркость в самом диммере процентов 15-20, хотя в идеале хотелось бы и этот момент победить

кстати есть диммер с драйвером DMX для лент, там вообще нет никакого торможения и мерцания на любой яркости. там используется тот же pwm с транзисторами. хотелось бы добиться такой же гладкой работы на ардуине

https://www.dropbox.com/s/mrrdn6fhv4zvpnq/IMG_0926.JPG?dl=0

stakan1986
Offline
Зарегистрирован: 17.02.2015

Скачки яркости на низких значениях ШИМа связаны малой битностью - т.е. 8бит - 256 градаций, при малых значениях изменение на 1/256 весьма заметно глазу. Как вариант использовать ШИМ на полные 16 бит -итого получаем 65535 градаций, но даже так - самые начальные стадии заметны глазу.
А каким образом решено ШИМ управление в DMX драйвере неизвестно - видимо стоит некий контроллер - но какую битность ШИМа он выдает и с какой частотой, идет ли изменение по линейной зависимости или по какой нибудь экспоненте остается только догадываться.

Все же нормальный токовый драйвер лучше. Тут Вы, смотрю, немного путаете понятия - на вход драйвера вы подаете управляющий ШИМ сигнал с ардуины на частоте 488Гц(если стандартно брать), а вот сам драйвер подает питание на светодиод на частотах в десятки и сотни кГц, что в сочетании с индуктивностью дает на осциллографе практически ровную линию тока, совсем не похожую на прямоугольно скачущий с 0 до 1 ШИМ сигнал. (о чем писал select2 в посте 38). Вы же свои ленты "кормите" самым обычным рваным ШИМом

alexey_and
Offline
Зарегистрирован: 03.03.2013

а есть какая-нибудь специализированная микросхема, на которую можно подать 0-10в (либо через какой-либо преобразователь) и получить на выходе качественный шим 16 бит?

в dmx стоит какая-то мелкая микросхема, с которой идут дороги на транзисторы, могу посмотреть ее маркировку

с токовым опять же заморочки - нужно подбирать мощность драйвера соответственно с мощностью ленты. если грузить его меньше положенного, диапазон диммирования резко сокращается пропорционально избытку мощности. например, если присоединить к 200W драйверу ленту на 100W, диммироваться она будет от 50 до 100%

конкретно в данном случае я хочу управлять маленькими лентами ватт по 7-10, токового драйвера с диммированием 0-10 на такую мощность я не нашел, минимум начинается от 70W

можно конечно забить и запитать эти ленты от dmx, но это последний вариант. таких лент у меня предполагается несколько и есть проблемы с прокладкой дополнительной проводки под декодеры dmx во все места. и опять же, в дешевых китайских декодерах 100500 гц, а на европейские тратиться пока неохота 

alexey_and
Offline
Зарегистрирован: 03.03.2013

нашел такую штуку https://www.adafruit.com/products/1411

можно даже частоту задавать

стоит попробовать?