Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Детская площадка "Часть-1" - Звуковой изменятор )))


Детская площадка "Часть-1" - Звуковой изменятор )))

Сообщений 1 страница 30 из 48

1

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

Нужен звуковой узел, тут вполне ясная громкость источника, но нужно её ещё изменить и как-то адаптироваться в разным шумам и прочему.
Для регулировки изменения наверно проще будет использовать датчики холла, на века. (вместо переменных резисторов).

Один рычаг изменяет частоту голоса, другой создаёт эхо.

0

2

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

0

3

НУ не, механическая не то, а 5в. можно и от солнечных элементов или от механики рычагов заряжать.

Как подать голос на АЦП?

Свернутый текст

https://www.rlocman.ru/i/Image/2010/12/16/Arduino%20Spectrum%20Analyzer.jpg

http://home.onego.ru/~lyazg/arduino/example/mic.gif

https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Electret_condenser_microphone_schematic..svg/1200px-Electret_condenser_microphone_schematic..svg.png

http://we.easyelectronics.ru/uploads/images/00/01/72/2011/03/18/2aaa39.jpg

0

4

Ev3658 написал(а):

Как подать голос на АЦП?

Всё зависит от типа микрофона (электретный, динамический, с питанием или без). Можно для эксперимента взять готовую плату для дунь и не париться пока этим вопросом (иначе можно долго ковыряться в коэффициентах усиления, АРУ...).

Ev3658 написал(а):

или от механики рычагов заряжать

Отличная идея, генератор на педалях. Покрутил - поорал. :) Впрочем тогда будет проблема с возрастным использованием...

Отредактировано RDW (2020-07-21 14:36:46)

0

5

Ev3658 написал(а):

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

Какого типа искажения требуются?

Ev3658 написал(а):

Один рычаг изменяет частоту голоса, другой создаёт эхо.

Хватит ли ресурсов ардуины? Нужна производительность для обработки звука и ОЗУ для нескольких буферов.

Отредактировано Пётр (2020-07-21 14:53:38)

0

6

25 лет назад делал подобное на Спектруме:
на вход "микрофон" подавал звук, а с выхода "магнитофон" получал звук с эффектами.
Оные получал изменением частоты опроса входа (голос робота), подмешивал частоту на выход генерируя простейший меандр от 100 до 200 герц (прикольно звучит как из ведра).
Эхо не делал.
Скорость Бейсика Спектрума была явно ниже Ардуинки - как никак, интерпретатор.

0

7

Александр Д. написал(а):

на вход "микрофон" подавал звук, а с выхода "магнитофон" получал звук с эффектами.

Там компаратор. Однобитный звук так себе звучит. :no:  Таким звуком можно пугать непослушных детей... :D
Я думаю что речь идет о гораздо лучшем качестве звука.

Александр Д. написал(а):

Скорость Бейсика Спектрума была явно ниже Ардуинки

В спектруме было больше ОЗУ чем во многих AVR. А для обработки и хранения (для эффекта "эхо") звука нужно много ОЗУ. 2 КБ не хватит.

0

8

Пётр написал(а):

В спектруме было больше ОЗУ чем во многих AVR

Да, но производительность никакущая, впрочем и при 1 битном заполнении быстро кончалась и не хватало. :)

Пётр написал(а):

2 КБ не хватит

Можно за счет качества уменьшать требовательность к памяти (когда игрался, как раз получаются ещё доп. искажения на выходе, которые нужны, а было 3К всего доступно).

Отредактировано RDW (2020-07-22 10:00:21)

0

9

RDW написал(а):

Можно за счет качества уменьшать требовательность к памяти

Предлагаете снизить разрядность до бита как в спектруме и частоту дискретизации до 400 выборок в секунду? :no:  Знаете какой звук получится? :D Дети играться не захотят. :no:
В AVR все упирается в ОЗУ и возможно в производительность (зависит от требуемых эффектов). Нужна или внешняя память или МК с достаточным объемом встроенной. :)

0

10

AVR335: Digital Sound Recorder with AVR® and DataFlash

Features
• Digital Voice Recorder
• 8-bit Sound Recording
• 8 kHz Sampling Rate
• Sound Frequency up to 4000 Hz
• Maximum Recording Time 4 1/4 Minutes
• Very Small Board Size
• Less than 700 Bytes of Code

Introduction
This application note describes how to record, store and play back sound using any
AVR microcontroller with A/D converter, the AT45DB161B DataFlash memory and a
few extra components.

нашел эту статью на русском: http://microsin.net/programming/avr/avr … flash.html

Отредактировано Александр Д. (2020-07-22 11:49:01)

+1

11

Ну а если оцифровывать АЦП и сразу кидать в один таймер, а второй с задержкой для эха?

Если я правильно понял, то нужно ещё уменьшая и прибавлять частоту (изменять), в этом вся трудность, из-за 10 битного АЦП.

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

0

12

Ev3658 написал(а):

Ну а если оцифровывать АЦП и сразу кидать в один таймер, а второй с задержкой для эха?

Данные нужно где-то хранить. Ведь какое это эхо если оно повторяет через 0.1 секунду? Нужно минимум секунду. А еще лучше несколько повторений с интервалом в секунду каждое с уменьшающейся громкостью. Вот тогда это будет эхо.

Ev3658 написал(а):

Если я правильно понял, то нужно ещё уменьшая и прибавлять частоту (изменять), в этом вся трудность, из-за 10 битного АЦП.

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

0

13

Ev3658 написал(а):

если оцифровывать АЦП и сразу кидать в один таймер, а второй с задержкой для эха

Как я ранее сказал, что для для большой задержки можно уменьшить количество выборок (частоту) и тем самым увеличивать время задержки. Для голоса достаточно 2К, следовательно запись надо делать в районе 4КГц, а памяти, если делать макс задержку не более 1 сек, то надо памяти в районе 4К или использовать внешнюю. На счёт 10 бит...не знаю...надо пробовать.

Ev3658 написал(а):

Если я правильно понял, то нужно ещё уменьшая и прибавлять частоту (изменять), в этом вся трудность, из-за 10 битного АЦП.

Можно тупо отдавать как есть (10 в 12) или можно попробовать про апскейлить (т.к. АЦП шустрый на 2МГц) и дотянуть до 12-бит.

Ev3658 написал(а):

игрушку, которая сперва записывает, а после воспроизводит

Для диктофона надо и правда много памяти.

0

14

RDW написал(а):

Для голоса достаточно 2К

Будет ли интересна игрушка так сильно искажающая голос?

RDW написал(а):

Можно тупо отдавать как есть (10 в 12) или можно попробовать про апскейлить (т.к. АЦП шустрый на 2МГц)

У AVR (мега328 в ардуине) АЦП медленный. 15 тысяч выборок в секунду.

0

15

Пётр написал(а):

мега328

Можно и ХМегу взять, благо Ev3658 с ней уже тесно работал. ;)

0

16

Если размышлять на тему других МК, можно взять с 192 КБ ОЗУ или вообще с метром. Но это не тема баскома. Зато много оперативки с возможностью подключить внешнюю на несколько десятков метров (можно сотню, но статическая память дорогая) чтобы было где хранить данные для эха и обработки звука.

Отредактировано Пётр (2020-07-27 10:20:03)

0

17

Всё-же решился на Xmega, не знай как разберусь с этим АЦП  :confused:
http://forumupload.ru/uploads/0000/25/b8/1295/t216846.jpg

Может кому пригодится печатка под AtXmega32.LAY6 - https://yadi.sk/d/PNUIPpM7lYVixA

В качестве операционного усилителя использовал этот узел:
http://we.easyelectronics.ru/uploads/images/00/03/03/2011/05/29/abe295.png

Из статьи: http://we.easyelectronics.ru/AVR/zapis-zvuka.html

-Усилитель звука на PAM8403, сделал с DAC и с OC0A.
-ADC4 вход для микрофона, ADC3 и ADC5 отведены под управления (датчик холла).
-На борту стабилизатор 3,3в.

+2

18

я не спец в аналоговой, но параллельно R1 я бы поставил конденсатор для ограничения полосы усиления, начать с 150 pF

и параллельно R3 на 20-100 uF, стабильность питания средней точки (половина напряжения питания ОУ)

и разорвал бы цепь питания между R2 и R5, поставил резистор на 470-1000 Ом и точку между этим резистором и R5 заземлил через конденсатор на 10 uF - стабильность и чистота питания микрофона.

Отредактировано Александр Д. (2020-09-16 23:50:59)

+2

19

Если в микрофон будут орать, усилитель без АРУ сам неплохо будет вносить "спецэффекты" в звук без обработки в МК. :D

Ev3658 написал(а):

Всё-же решился на Xmega

Все что было озвучено в теме остается актуально. В МК 4 КБ ОЗУ. Где планируется хранить звуковые данные для эффектов? :dontknow:

Отредактировано Пётр (2020-09-16 12:56:34)

0

20

Пётр написал(а):

В МК 4 КБ ОЗУ. Где планируется хранить звуковые данные для эффектов?

https://static.chipdip.ru/lib/370/DOC004370558.pdf

0

21

Вывод звука лучше делать через ШИМ (таймер) или через ЦАП (DAC) ?





Александр Д. написал(а):

но параллельно R1 я бы поставил конденсатор

Не успел прочесть комментарий, плата уже распаянная на столе  :glasses:
Может вообще ОУ не нужен будет, начну получать опыт АЦП в серии Xmega.

Отредактировано Ev3658 (2020-09-16 20:32:27)

0

22

Ev3658 написал(а):

Вывод звука лучше делать

Зачем тебе шим, когда есть нормальный DAC.

0

23

откажитесь от PWM! там же есть хороший ЦАП
А то чистить звук будете дольше и геморнее, чем делать всю поделку.
Я как-то занимался этим вопросом. Правда, там была готовая плата на atmega32. Я долго изголялся: PWM, потом внешний ЦАП, в конце концов резисторы в R-2R победили ))) И ничего не надо фильтровать!

+1

24

RDW написал(а):

https://static.chipdip.ru/lib/370/DOC004370558.pdf

Тогда зачем МК если все делать на специализированных микросхемах?
Эта микросхема скорее для подавления писка от "микрофонного эффекта", а не для создания слышимого эха. Создается задержка между входными и выходными данными, а нужно то что поступило в микрофон подать на динамик и при этом хранить несколько секунд звука добавляя в выходной сигнал несколько эхо с регулируемой задержкой и уменьшающейся громкостью.

Отредактировано Пётр (2020-09-16 23:32:15)

0

25

Выложу первый код для проверки АЦП и ЦАП

Код:

$regfile = "xm32a4udef.dat"
$crystal = 32000000
$hwstack = 80
$swstack = 80
$framesize = 80

Config Osc = Enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

Config Portb.2 = Output                                     'Âûõîä çâóêà
Config Porta.4 = Input                                      'Âõîä çâóêà

Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Intvcc , Bandgap = Enabled , _
Event_mode = None , Prescaler = 16 , Sweep = Ch0 , _
Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = &B0_0100_000 , _



Config Dacb = Enabled , Io0 = Enabled , Channel = Single , Reference = Int1v , Interval = 1 , Refresh = 512


Dim Zv(1200) As Word
Dim W As Word
Dim Tm As Byte
Dim P As Byte
Do

  Incr Tm
  W = Getadc(adca , 0 )
   Zv(tm) = W
  If Zv(tm) < 100 Or Tm = 20 Then
   For P = 1 To Tm
      Dacb0 = Zv(p)

   Next P
   Tm = 0
  End If




Loop

Удвоение частоты довольно сложно с пару киллобайт оперативы  :shine:

0

26

Пётр написал(а):

Тогда зачем МК

Я показал, что на 44Кбитах делается задержка, прямая зависимость от частоты. По этому 4КБ - это и не мало. :)

0

27

RDW написал(а):

По этому 4КБ - это и не мало.

Тогда поделитесь с нами как можно в 4 КБ поместить звуковой поток с частотой дискретизации 44100 Гц продолжительностью несколько секунд для затухающего эхо.
Посчитайте сколько для этого нужно ОЗУ при 8-ми битной оцифровке.
Кроме того нужна память под эффект изменения частоты звука.

0

28

Пётр написал(а):

Кроме того нужна память под эффект изменения частоты звука.

Я ещё пока сам в расчёты не лез, платку для практики быстрей создать, чем в Протеусе нарисовать или навесным напаять.

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

Изменить частоту голоса - вот блин проблема  :confused:

0

29

частоту как раз-таки проще всего: Считал на частоте 8000 Герц, а выдал быстрее или медленнее
Если верно помню, эхом мы считаем задержку больше 100 мс

0

30

Александр Д. написал(а):

Считал на частоте 8000 Герц, а выдал быстрее или медленнее

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

Ev3658 написал(а):

может и прокатит.

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

0


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Детская площадка "Часть-1" - Звуковой изменятор )))