Войти
ПрограммированиеФорумЗвук

Прямоугольный аудиосигнал (формат ppm)

Страницы: 1 2 Следующая »
#0
17:50, 18 мая 2013

Не знаю, куда ещё податься с моим вопросом, мож тут помогут.
В моделировании вертолётов/самолётов широко распространён формат ppm, который также легко передаётся и по аудиокабелю. Суть - чередование высокого/низкого уровня сигнала. Если удастся формировать ppm сигнал на компутере, то я смогу управлять р/у автомобилями, самолётами, вертолётами и лодками с компутера - втыкаю аудиокабель на выход звуковой карты, второй конец в пульт и модель выполняет заложенную в компутере программу, а с пульта её можно корректировать.

Как для меня внезапно оказалось, звуковая карта не хочет выдавать прямоугольные сигналы. Я использовал библиотеку OpenAL, самописную программу запускал на ноутбуке, звук записывал на стационарном компутере по аудиокабелю. Вот что получается:
Формат MONO8
Изображение
Как видно, полная ерунда, с трудом можно понять, где начинается пакет данных.

Формат MONO16
Изображение
Немного лучше, но всё равно не годится.

А надо вот так (сигнал с железа, с передатчика spektrum dx8)
Изображение

Я что-то делаю с OpenAL не так (смущает, что она не обновлялась с 2009 года) или эта библиотека просто не годится для данной задачи и есть что-то лучше?

Исходники на lazarus, если вдруг кому интересно http://forum.rcdesign.ru/attachment.php?attachmentid=795628&d=1368873913


#1
18:17, 18 мая 2013

Прямоугольник, да еще стабильно смещенный на произвольное значение относительно ноля, ты никак не получишь в виду того, что у карточек на входах/выходах стоят развязывающие конденсаторы, оказывающие действие, аналогичное ФВЧ.
В лучшем случае, что может получиться из меандра, это такое:
square | Прямоугольный аудиосигнал (формат ppm)

Была в своё время какая-то звукаха с открытым выходом от Turtle Beach. Той можно генерить произвольный сигнал.

#2
18:46, 18 мая 2013

Ясно, спасибо за быстрый квалифицированный ответ. Значит придётся покупать какой-нить usb2ppm брелок...

#3
20:21, 18 мая 2013

на скринах похоже что к прямоугольнику подмешан шум, высокочастотный и низкочастотный(на втором скрине)
Попробуй выяснить источник шума.
Проверь на сгенерированной волне какого нибудь Аудижн.
Требуемый сигнал больше похож не на прямоугольник, а на последовательность отрицательных импульсов прямоугольной формы.

#4
21:04, 18 мая 2013

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

#5
0:34, 19 мая 2013

radiantor
> на скринах похоже что к прямоугольнику подмешан шум, высокочастотный и низкочастотный(на втором скрине)
Ничего там не подмешано. Относительно ноля сигнал плавает, потому что скважность меандра не равна двум, и меняется на протяжении записи. Соответсвенно ноль будет проходить по линии равенства "площадей" под сигналом сверху и снизу. Обрати внимание, что выше ноля сигнал низкий и длинный, а ниже ноля пики высокие, но короткие.
А всплески на фронтах - результат среза спектра сигнала из-за низкой частоты дискретизации.

#6
13:18, 19 мая 2013

RPGman верю, и такое возможно. Наверное нужно определить где это происходит. Может гдето тупо стоит галочка - remove DC ofset.

Чисто теоретически предпологаю что можно проверить наличие конденсаторов на выходе. Сгенерировать здвиг (незнаю как правильно назвать) относительно ноля, длной секунд 5. Если на выходе получиться пик плавно переходящий в ноль, это действие конденсаторов.

Кстати как для генерации требуемого сигнала может сгодиться LPT порт. Управление им вроде не сложно.

#7
14:54, 19 мая 2013

ArtHome
А в каких единицах на скринах шкала времени? В секундах? Тогда получается период между импульсами порядка 2-3 мс, вполне можно промодулировать частотой 20 кГц и собрать простейший детектор, тогда проблем с плавающим нулём не станет.

#8
21:08, 19 мая 2013

Ну LPT-порт уже редкость...)

Шкала в секундах, но что-то я сомневаюсь, что приёмник проглотит, если я ему вместо постоянного высокого постоянного сигнала подсуну модуляцию максимально высокой частоты. За идею спасибо, надо будет попробовать.

#9
21:27, 19 мая 2013

ArtHome
> что-то я сомневаюсь, что приёмник проглотит
Я же написал:
> собрать простейший детектор
То есть 3-4 радиодетали (диод, конденсатор, 1-2 резистора). На выходе детектора уже будет то, что требуется.

#10
21:54, 19 мая 2013

ArtHome
Пока еще можно встретить LPT PCI карты. Сам недавно покупал для COM порта, и в наличии были c LPT.

А ты уверен что сигнал с твоих картинок твоя схема не проглотит? Там же по сути нужна последовательность единица-ноль. Все что ниже ноля должно приняться за ноль, пики выходящие за определнный предел - за еденицу. Мне кажется если генерить прямоугольник максимальной амплитуды, где тишина будет +32768, а пики -32768 контроллер должен схавать. типа так ---ППШППШ--- :)))))))))
Можно еще попробовать подать небольшое смещение отдельно уже перед схемой.

#11
11:27, 20 мая 2013

Проще взять какую-нибудь авр'ку и закодить. Усб для них программный есть.

#12
19:13, 20 мая 2013

ArtHome
почему бы для отдельных команд не применить сигналы разной частоты (синусоиды), по идее частоты довольно легко фильтровать LC фильтром, настроенным на нужную частоту. в 20кГц спектре я думаю можно найти несколько каналов, которые не пересекутся и не дадут эхо (или как оно называется) на других каналах.

#13
12:27, 21 мая 2013

Прямоугольный сигнал проще наверное генерить самому.

#14
12:30, 21 мая 2013

ArtHome

Плюс у тебя похоже сильная помеха идет на 50 Герц.
Ты только один проводок в звуковую карты втыкал?

Страницы: 1 2 Следующая »
ПрограммированиеФорумЗвук

Тема в архиве.