ARDUINO Цветомузыка на Arduino. Обсуждение проекта

novvel

★★★✩✩✩✩
29 Сен 2018
568
191
@Евгений Л, в даташите все описано же....зачем полемику лишнюю разводить?


Все что касается АЦП находится в районе 213 страницы.
ЧТо касаемо точности, то при внутреннем опорнике точность около 1мВ я как понимаю, единственное что там мешает это шумы от питальника и ЦП, но там еще есть режим понижения шума, хз можно его использовать или нет в нашем случае, скорее всего нет, там проц в сон уходит.

Ну и еще что то нарыл в инете: "Последний параметр, влияющий на точность измерения это внутреннее сопротивление источника сигнала. Разработчики микроконтроллеров ATmega определили, что для сохранения максимальной точности внутреннее сопротивление источника сигнала на аналоговом входе не должно превышать 10 кОм.
В частности, это требование должно быть учтено при использовании на аналоговых входах платы Ардуино резисторных делителей. Эквивалентное сопротивление делителя должно быть не более 10 кОм."

Только не знаю, зачем нам вообще точность в ЦМУ)) у нас проблема то в основном не в точности измерений напряжений и частот, а в кривоватой схеме и коде.
 
Изменено:
  • Лойс +1
Реакции: Slenk и kostyamat

Diman

★★✩✩✩✩✩
20 Апр 2019
313
72
Да потому, что он компрессор. Вы же хотите цвето-световую реакцию во всем диапазоне громкости, нет?
Как раз тут проблем нет. Настраиваете нужное время восстановления. Или вы начитались комментов выше?
 
Изменено:

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
@Diman, я не начитался. Я один из нескольких соавторов прошивки для лампы FireLamp_jeeUI (тема есть тут в закрепленных). В которой именно цветомузыка на лампе, и именно с предложенным мною модулем.

У модуля настраиваються как гейн так и ару, в комбинации между собой, эти настройки дадут вам искомое. Управлять можно двумя пинами прямо с ардуино. Спросити меня потом как три состояния вывести на один пин (земля, подтяжка к питанию, обрыв). Но потом, когда уже определитесь. Иначе потеряется.
 
  • Лойс +1
Реакции: technotrasher

Diman

★★✩✩✩✩✩
20 Апр 2019
313
72
@kostyamat, Программное АРУ основано как я понимаю, на алгоритме вычислений. Аналоговое АРУ считаю более необходимым так как в данном случае важно чтобы уровень сигналов не выходил за рамки выбранного диапазона АЦП. А если ещё учесть что МК находится в жестких условиях (нестабильность питания и т.д.) то важно выбирать максимальные значения Uпорог. и Uсигнал. Иначе будет больше ошибок при считывании сигнала. Тут как раз необходим аналоговый АРУ, а настроенное время восстановления позволит в достаточной мере сохранить изменение соотношения амплитуд сигналов.
 

Евгений Л

★✩✩✩✩✩✩
21 Июл 2020
34
11
@Евгений Л, в даташите все описано же....зачем полемику лишнюю разводить?


Все что касается АЦП находится в районе 213 страницы.
ЧТо касаемо точности, то при внутреннем опорнике точность около 1мВ я как понимаю, единственное что там мешает это шумы от питальника и ЦП, но там еще есть режим понижения шума, хз можно его использовать или нет в нашем случае, скорее всего нет, там проц в сон уходит.

Ну и еще что то нарыл в инете: "Последний параметр, влияющий на точность измерения это внутреннее сопротивление источника сигнала. Разработчики микроконтроллеров ATmega определили, что для сохранения максимальной точности внутреннее сопротивление источника сигнала на аналоговом входе не должно превышать 10 кОм.
В частности, это требование должно быть учтено при использовании на аналоговых входах платы Ардуино резисторных делителей. Эквивалентное сопротивление делителя должно быть не более 10 кОм."

Только не знаю, зачем нам вообще точность в ЦМУ)) у нас проблема то в основном не в точности измерений напряжений и частот, а в кривоватой схеме и коде.
За даташит спасибо - многое понятно стало. Действительно меряем до опорного только идея в нем заложена совсем другая - так как всего 1024 значений то для повышения точности измерений этим "опорным" напряжением выставляем нужную измеряемую нам величину.
 

Slenk

★★★★★★✩
21 Янв 2020
382
588
34
Краснодар

@Евгений Л,
Я правильно понимаю, что исходя из того, что Вы изначально неправильно распознали логику работы МК, то все Ваши высказывания относительно данной темы можно считать ложными?
 
  • Лойс +1
Реакции: novvel и Diman

Евгений Л

★✩✩✩✩✩✩
21 Июл 2020
34
11
Да действительно от "0" до "опорного" - смысл совсем другой вложен, Но тогда совсем не понятно, что же мы меряем? Т.е. получается кроме частоты 50 гц амплитудного измерения больше ни для каких частот больше нигде нет?


@Евгений Л,
Я правильно понимаю, что исходя из того, что Вы изначально неправильно распознали логику работы МК, то все Ваши высказывания относительно данной темы можно считать ложными?
Нет не все а только касающиеся измерения амплитуды встроенным АЦП это п.3. Но даже в этом случае я бы поднял опорное до мах . все остальное имеет место. Но вместе с этим возник вопрос - только что задал перед этим ответом.
В такой системе мерять высокие частоты безсмысленно
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
В такой системе мерять высокие частоты безсмысленно
Почему? Для разложения через ряды Фурье вам как раз нужно N семплов амплитудных значений полученных с частотой * 2 от верхней границы. Если вы это сделаете, то все будет хорошо.
 
  • Лойс +1
Реакции: novvel

Евгений Л

★✩✩✩✩✩✩
21 Июл 2020
34
11
Почему? Для разложения через ряды Фурье вам как раз нужно N семплов амплитудных значений полученных с частотой * 2 от верхней границы. Если вы это сделаете, то все будет хорошо.
В теории именно так а тут почитал даташит и впал в ступор: дело в том что начинается измерение не после превышения опорного напряжения сигналом ( некая синхронизация с сигналом) до мах и где можно сделать одно - два измерение и понимать что это и есть амплитуда, а необходимо сделать массу измерений взять мах вычесть минимум и получить амплитуду. Что имеет место для низкой частоты т.к время оцифровки измерения 65 мкС., что при 100 измерениях будет 6,5 мС Таким образом для частоты 50 Гц ( 20 мС) мы за 100 измерений можем получить информацию об амплитуде пропорциональной сигналу (33 (мах)измерение 2 линия - 100 (min) 3 линия или 100 (мах) измерение 3 линия второй группы - 1 (min) измерение 1 линия второй группы. А вот что делать на 10 000 Гц (100 мкС) если измерение длится 65 мкС , Куда оно попадет, сколько измерений делать если в период сигнала влазит только 1 измерение, где брать мах где min. см рис красные лин точка записи 1 и точка записи другая. Зеленые лин точка записи 1 и точка записи другая никакой информации об амплитуде нет. Условно считаем что это высокая частота, что бы рисунок не перерисовывать
 

Вложения

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@Евгений Л, я же ранее уже рассказывал... Вам надобно решить задачу Коши для данного случая, либо поверить на слово, что для того чтобы выполнить разложение через ряды Фурье и получить Fmax = 20кГц вам нужен массив семплов полученных с частотой 40кГц. Попытайтесь это осмыслить. Как следствие вам нужно проводить измерения раз в 1/40000 секунды. Какая при этом получится минимальная частота я также говорил - это зависит от кол-ва семплов в массиве для разложения. Вы именно берете амплитудное значение на каждом измерении.

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

* В гугл не отсылаю, но это более чем типовая задача, в ней нет абсолютно ничего выдающегося. Более того, если взять ту же библиотеку, которую я ранее предлагал, то можно вообще поглядеть демо-пример, где в массив семплов записывается синусоида и она же потом раскладывается.
C++:
  /* Build raw data */
  double cycles = (((samples-1) * signalFrequency) / samplingFrequency); //Number of signal cycles that the sampling will read
  for (uint16_t i = 0; i < samples; i++)
  {
    vReal[i] = int8_t((amplitude * (sin((i * (TWO_PI * cycles)) / samples))) / 2.0);/* Build data with positive and negative values*/
    //vReal[i] = uint8_t((amplitude * (sin((i * (twoPi * cycles)) / samples) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
    vImag[i] = 0.0; //Imaginary part must be zeroed in case of looping to avoid wrong calculations and overflows
  }
Изучите пример, может вам будет так проще понять.
 
  • Лойс +1
Реакции: novvel

novvel

★★★✩✩✩✩
29 Сен 2018
568
191
@Евгений Л, там в прошивке есть нюанс с повышением частоты дискретизации АЦП, оно даже закоментировано где то там, если ты именно о малой частоте опроса порта.
 

poty

★★★★★★✩
19 Фев 2020
2,999
896
Я Вас как супер знатока пожплуй спровацирую - покажите линиию ( нарисуйте ) что называется уровнем входного сигнала?
Легко.
Амплитудный уровень сигнала будет равен наивысшему значению, которое попало в окно.
RMS (среднеквадратический) уровень сигнала будет определяться интегралом от отображённой функции.
Уровень сигнала, учитываемый в скетче будет определяться результатом двух преобразований: фильтрации на верхней частоте дискретизации (в реальности - примерно в 1,1-1,2 раза ниже) и определения амплитуды в окне, определяемой буфером.
Для учёта амплитуды потери от частот выше 10кГц (точнее - примерно выше 8кГц) неважны - информации там содержится крайне мало, слух у нас уже сильно понижен на этих частотах и на общую картину это не влияет никак.
Единственное, с чем я не согласен, что громкость = амплитуде. Не знаю также, что там в коде сделано - не смотрел, но также вопрос логарифмической характеристики субъективной громкости должен быть также где-то учтён.
 

technotrasher

★★★★✩✩✩
14 Ноя 2019
501
224
Легко.
Амплитудный уровень сигнала будет равен наивысшему значению, которое попало в окно.
RMS (среднеквадратический) уровень сигнала будет определяться интегралом от отображённой функции.
Уровень сигнала, учитываемый в скетче будет определяться результатом двух преобразований: фильтрации на верхней частоте дискретизации (в реальности - примерно в 1,1-1,2 раза ниже) и определения амплитуды в окне, определяемой буфером.
Для учёта амплитуды потери от частот выше 10кГц (точнее - примерно выше 8кГц) неважны - информации там содержится крайне мало, слух у нас уже сильно понижен на этих частотах и на общую картину это не влияет никак.
Единственное, с чем я не согласен, что громкость = амплитуде. Не знаю также, что там в коде сделано - не смотрел, но также вопрос логарифмической характеристики субъективной громкости должен быть также где-то учтён.
в коде именно "размах" сигнала - громкость.
 

Slenk

★★★★★★✩
21 Янв 2020
382
588
34
Краснодар
Не знаю также, что там в коде сделано - не смотрел, но также вопрос логарифмической характеристики субъективной громкости должен быть также где-то учтён.
Я только вчера до этого дочитался и планирую начать интегрировать эту "коррекцию восприятия" по звуку и яркости.
 
  • Лойс +1
Реакции: wadimsuv

poty

★★★★★★✩
19 Фев 2020
2,999
896
@technotrasher, линейно? Обычно, для соответствия субъективному восприятию, громкость изменяется по логарифмической шкале (чтобы было понятнее - в децибелах, обычно, рассчитываемых по уровню, т.е., 20log10k).
"размах" - это амплитуда и есть? Поясню в чём проблема. Берём, для простоты, прямоугольный сигнал. Понятно, что, например, если скважность = 2, то RMS будет = амплитуде (при симметричном сигнале), а вот если скважность взять, допустим, 4, то появится постоянная составляющая (убьётся на ближайшем конденсаторе) и RMS станет = 0,5 амплитуды.
 

Hvorost

✩✩✩✩✩✩✩
5 Фев 2021
4
0
Господа, прошу совета. Очень хочется собрать себе светомузыку, но к сожалению руки растут из жепы. Все элементы уже приобрел, осталось самое сложное - собрать. Может есть где-нибудь пошаговая инструкция что к чему припаивать?
 

Норильский

★✩✩✩✩✩✩
12 Янв 2021
35
11
37
Господа, прошу совета. Очень хочется собрать себе светомузыку, но к сожалению руки растут из жепы. Все элементы уже приобрел, осталось самое сложное - собрать. Может есть где-нибудь пошаговая инструкция что к чему припаивать?
Смотря какие элементы Вы купили...
 

Вложения

Crazy

★✩✩✩✩✩✩
23 Мар 2020
66
17
Господа, прошу совета. Очень хочется собрать себе светомузыку, но к сожалению руки растут из жепы. Все элементы уже приобрел, осталось самое сложное - собрать. Может есть где-нибудь пошаговая инструкция что к чему припаивать?
Это здорово,. что много появляется бесстрашных пользователей :) Не важно откуда растут руки, если отнестись вдумчиво к вопросу. Есть схема, на которой указано. что к чему соединить. Нужен навык пайки, видеть ситуацию в целом, где и как будут расположены модули, желательно в корпусе. Прочитать внимательно все соответствующие материалы на форуме. Сейчас ответы можно найти в интернете. И пробовать, пробовать, пробовать. Проблемы конечно возникнут, но все они решаемые. На форуме люди никогда не отказывают в консультативной помощи. Дерзай! Ну и советы - прежде. чем что-либо сделать - подумай, а нужно ли оно тебе; боишься - не делай, делаешь - не бойся. Просто спокойно разберись, что и как. Поверь, я вообще очень далек от этих всех дебрей и программирования, тем не менее собрать чего-то проблем нет, вопросы да появляются. Вот, делал без микрофона.
 

Вложения

  • 59.2 KB Просмотры: 38
  • 46.9 KB Просмотры: 38
  • Лойс +1
Реакции: Норильский

Hvorost

✩✩✩✩✩✩✩
5 Фев 2021
4
0
Вроде бы собрал схему, но после включения лента не загорается, хотя на ардуинке индикация идёт. Собирал по схеме с пультом и выходом на гнездо 3.5. В чем может быть проблема?