Звуковая карта как осциллограф

Обновлено: 04.07.2024

Вот решил поразбираться в вопросе использования линейного входа звуковой платы компьютера в качестве осциллографа. Иногда хотелось бы иметь что-то небольшое и стационарное, что бы смотреть сигнал в "полевых" условиях. Таскать с собой стационарный осциллограф особого желания нет, а покупать внешний USB тоже не хочется, в связи с наличием стационарного В общем напишу, что получилось, может кому-то окажется полезным. Типичный импеданс линейного входа звуковых карт - 10-47K, для безопасной работы амплитуда входного сигнала не должна превышать 2V. Собрал простой пробник (см. рисунок). R2(R3)-R4-R5-R6-R7 образуют делитель 1/10 (1/100). VD1-VD2 ограничивают амплитуду на выходе до 2V. R4 служит для развязки по земле с источником сигнала. Настройка заключается в подаче синусоидального сигнала на вход пробника и подстройке резистором R6 уровня сигнала в 1/10 от входящего (или 1/100 в положении X100). Если нужно согласование по линии, то можно параллельно входу переключателем SA1 подключить резистор 50Ом (например в моем стационарном генераторе сигналов только так можно нормально смотреть меандр без выбросов на фронтах). Теперь по поводу ПО - оказалось есть море программ для этих целей, с кучей дополнительных функций. Скачал пару десятков самых распространненных В общем по моему AudioTester впереди планеты всей Чего там только нет - и строит АЧХ одновременно с функцией осцилографа, настраиваемые триггеры, мощный мат. аппарат для дополнительной обработки сигнала, измеряет THD, есть хороший встоенный генератор сигналов итд итд. Про эту программу можно отдельно статью писать. А вообще при использовании нормального внешнего АЦП от нее можно гораздо больше пользы получить. В общем настроил базовый sample rate в 48Khz (именно так, а не на 44Khz наиболее качественно отображается сигнал). По личным наблюдениям, форму сигнала более-менее нормально можно наблюдать до 3Khz, выше уже довольно сильные искажения. Сам сигнал, при базовом sample rate 48Khz видно где-то до 22Khz. Проверял на встроенном кодеке от analog devices и на sb audigy. Причем качество входа, как ни странно, оказалось лучше на встроенном кодеке. Вывод - полезность этого устройства весьма относительная, хотя в отдельных случаях это может пригодиться.
Миниатюры

Сколько я читал по этому вопросу, общий вывод: привирают нехило, особенно на высоких частотах и особенно если не синус.

Хочется RCL-измеритель из звуковухи попробовать сделать. Только занят другими делами.

А большая точность как правило и не нужна. Для настройки импульсных МД, с десятком килогерц, или среднекачественного УНЧ, компа и звуковухи хватит. kondensator, Если это можно сделать на стационарном компе, то это можно сделать и на GPS навигаторе, как думаете?

Добавлено (27.04.2013, 13:13)
---------------------------------------------
А может быть можно сделать с планшета?


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

1. Вид осциллографа – USB приставка к ноутбуку, ибо на большом экране смотреть удобно, можно сохранять для последующего анализа ну и т.д. и т.п.
2. Тип сигнала – Переменный, Постоянный, Положительная полярность. Работа с отрицательными напряжениями не нужна.
3. Кол-во каналов – 4, больше смысла не вижу, но с возможностью расширения до 8.
4. Максимальное входное напряжение — вольт 50, выше смысла нет.
5. Чувствительность — 1 милливольт, больше тоже не надо :-)
6. Частота — до 20Кгц, для миллисекундных сигналов за глаза хватит, а других там нет :-)
7. Удобная программная оболочка.

Начну с самого важного – Оболочки для автомобильного осциллографа. Да да, именно с оболочки. Ибо железо не сложно любое сделать, а вот удобная оболочка это реальный дефицит. Оболочки которые просто тупо показывают сигнал в реальном времени для автомобильного осциллографа крайне не удобны, ибо часто нужно анализировать сигнал продолжительное время и иметь возможность «отмотать» назад. По сему нужна оболочка типа Самописец-Осциллограф. И что б каналов было не менее 4х…

Вот она какая, на мой взгляд, самая лучшая. Это не реклама, это факт :-) ИМХО конечно.


Ну вот, с софтом определился, теперь надо определится с интерфейсом, не буду грузить вас своими муками выбора, я остановился на СОМ порте. С ним работать просто, пропускной способности для поставленных задач с избытком, в выбранном софте есть драйвер вывода информации с СОМ пора.

Теперь железо, а точнее что использовать в роли АЦП. Железо должно быть доступное, стабильное, не дорогое и легко программироваться. Долго не думал, остановился на микроконтроллере АТмега 328р. Программируются эти микроконтроллеры банально на С++, точнее на упрощенном С++.
Очень удобно то что этот микроконтроллер можно купить уже распаянным на плате с минимально нужной обвязкой., Ардуино сее называется :-) То есть не надо самому плату разводить и паять, удобно. Всем параметрам, из моего ТЗ, АТмега 328р отвечает полностью, по сему использовать буду ее.

Для миниатюризации я вот такую взял. Она имеет 8 аналоговых входов, отвечающих всем требованиям ТЗ, имеет на борту эмулятор СОМ порта на СН340, питание берет напрямую с USB порта. В общем то что нужно. Ардуинку можно любую использовать на 328р


Вот схема этой платы. На ней стоит сам микроконтроллер АТмега 328р, банальный эмулятор СОМ порта на СН340, кварц и стабилизатор питания на ЛМке для запитки от внешнего источника, если надо, вот и все, ну пара лампочек и фильтров не в счет :-) То есть все то что нам нужно и ничего лишнего! Не зря говорят — Совершенство в простоте.


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

Вот скриншот того что должен выдавать микроконтроллер в СОМ порт для нашей программы PowerGraph.


Осциллограф у меня будет работать в 4х режимах — 1канал, 2канала, 3канала и 4 канала.
Переключение между каналами будет осуществляться по кругу нажатием на кнопку.
При включении канала будет загораться светодиод индикации работы канала.
Вот написал программку. Сам я не программист, по сему написал как смог, сильно не критикуйте, расстроюсь :-) Программа полностью рабочая и проверена не однократно в деле. Как заливать программу в плату рассказывать не буду, в инете на каждом углу это с картинками рассказано :-)

Вот сама программа.

int regim=1;
int flag=0;
void setup()
digitalWrite(07, HIGH);
Serial.begin(128000);//скорость СОМ порта должна совпатать со скорость в драйвере
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
>
void loop()
if(digitalRead(07)==HIGH&&flag==0)//если кнопка нажата
// и перемення flag равна 0, то …
regim++;
flag=1;
if(regim>4)//ограничим количество режимов
regim=1;//так как мы используем только одну кнопку,
// то переключать режимы будем циклично
>
>
if(digitalRead(07)==LOW&&flag==1)//если кнопка НЕ нажата
//и переменная flag равна — 1, то …
flag=0;//обнуляем переменную "knopka"
>
if(regim==1)//первый режим
digitalWrite(2, HIGH);//включение светодиода
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
// читаем аналоговый вход pin 0:
int port0 = analogRead(A0);
//Преобразовываем аналоговые показания (которые идут от 0 до 1023) в напряжение (0 — 5 В)
float voltageport0 = port0 * (4.745 / 1023.000);//4.745 опорное напряжение, замеряется при калибровке на плате
// выводим значение напряжения в порт
Serial.println(voltageport0,3);// печатаем значение в порт и жмем энтер
//задержка для стабильности
delay(1);
>
if(regim==2)//второй режим
digitalWrite(2, HIGH);//включение светодиодов
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
Serial.print(voltageport0,3);// печатаем значение в порт
Serial.print(" ");// печатаем таб
Serial.println(voltageport1,3);// печатаем значение в порт и жмем энтер
delay(1);
>
if(regim==3)//Третий режим
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
int port2 = analogRead(A2);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
float voltageport2 = port2 * (4.745 / 1023.000);
Serial.print(voltageport0,3);
Serial.print(" ");
Serial.print(voltageport1,3);
Serial.print(" ");
Serial.println(voltageport2,3);
delay(1);
>
if(regim==4)//Четвертый режим
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
int port0 = analogRead(A0);
int port1 = analogRead(A1);
int port2 = analogRead(A2);
int port3 = analogRead(A3);
float voltageport0 = port0 * (4.745 / 1023.000);
float voltageport1 = port1 * (4.745 / 1023.000);
float voltageport2 = port2 * (4.745 / 1023.000);
float voltageport3 = port3 * (4.745 / 1023.000);
Serial.print(voltageport0,3);
Serial.print(" ");
Serial.print(voltageport1,3);
Serial.print(" ");
Serial.print(voltageport2,3);
Serial.print(" ");
Serial.println(voltageport3,3);
delay(1);
>
>

Программа закончена и отлажена.
Приступим к электронной части.

Схему приводил выше. Из нее видно что плата имеет 8 аналоговых входов, 14 цифровых входов/выходов. Вот и будем работать с ними.


Аналоговые № 0,1, 2, 3 будем использовать как входы осциллографа. Сделаем для них защиту и дополнительный вход через делитель 1х10, так как подавать на микроконтроллер максимум можно всего 5.2 вольта. С делителем можно будет работать с напряжениями до 50 вольт, что полностью перекрывает наши потребности.
Цифровые № 2,3,4,5 будем использовать для светодиодов, они будут индицировать включенные аналоговые входы.
Цифровой №7 будет подключен к кнопке которая будет переключать режимы моего осциллографа.
Еще будет кнопка Бут режима. Плата по умолчанию в бут режиме, но для работы это не удобно, ибо управление идет через RESET. При обращении к СОМ порту идет инициализация СОМ порта и чип эмулятор посылает резет на микроконтроллер. То есть при запуске программы плата ребутится и сбрасывает настройки которые выставили кнопкой, это не удобно. Для того что бы этого безобразия не было, я сее отключаю с помощью кнопки. Она подключает вход микроконтроллера «RESET» к электролитическому конденсатору 10Мкф, конденсатор сглаживает посылку на перезагрузку. Эта же цепь используется при заливке прошивки, по сему на момент программирования надо конденсатор отключать. Назвал эту кнопку Бут кнопкой :-)

Ну вот, как подключать понятно, осталось воплотить в железе.

Начнем с защиты и делителя.
Защиту будет обеспечивать стабилитрон на 5.1в. А делитель будет обычный на резисторах.
Так как сигналы у нас будут низкочастотные, это сильно упрощает жизнь. В расчетах делителя не надо учитывать внутреннее сопротивление приемника, не надо согласовывать вход с делителем, не надо учитывать волновое сопротивление кабеля и разъемов.
Надо просто посмотреть в даташите на микроконтроллер на какое сопротивление выхода оптимизирован его АЦП, и сделать делитель с таким выходным сопротивлением. Так мы добьемся максимальной точности в 0.005 вольта. В даташите написано что он оптимизирован под 10Ком выходного сопротивления нагрузки. Внутреннее сопротивление АЦП 100Мом…


Вот такую схему я посчитал. R1 и R2 собственно сам делитель, R2 еще задает сопротивление выхода делителя, я его взял 10Ком, так как ЦАП оптимизирован именно на такое сопротивление. R3 и VD1 это защита от перенапряжения. На вход АЦП нельзя подавать больше 5.2в. VD1 стабилитрон на 5.1в, можно использовать любой. R3 токоограничивающий резистор, ограничивает ток стабилитрона когда он открывается. Вот такой простой делитель с защитой.


Вот так все просто :-)


Ну раз схему разработали то настала пора воплотить это все в «железе».

Берем какой либо корпус, разъемчики, кнопку, переключатель, резисторы диоды, стабилитроны и начинаем из этого всего создавать автомобильный осциллограф.

Вот такой набор деталей у меня.


Для начала подготовим корпус. Просверлим все отверстия.


Далее, навесным монтажом, смонтируем делители прямо на блоке разъемов.
Вот так, просто – надежно — удобно.


Теперь примерим плату, проведем формовку выводов делителя и на них напаяем плату.
Вот так вот. Выходит очень удобно и компактно.


Смонтируем в корпус светодиоды, кнопку, переключатель и конденсатор. Вот так. Длинна проводов достаточная но не избыточная.


Почти все готово, осталось впаять плату в корпус.


Привинтить блок разъемов в корпус. Взять синюю изоленту, без нее ни как! Сделать ограничитель для УСБ провода.


Теперь можно закрыть корпус, залить прошивку и проверить работу. У меня все ОК.


Вот и все, мой автомобильный осциллограф готов.
Им можно смотреть-диагностировать расходомер(МАФ), генератор, катушки, датчики положения колена и распредвалов. Смотреть правильность установки ГРМ, Смотреть форсунки, по пульсации топлива в рампе можно косвенно смотреть работу насоса и регулятора давления топлива… В общем полезный зверек в хозяйстве. Особенно он полезен когда какое либо устройство отказало не полностью, а ушло от параметров и мозг не видит этого.


Пора приступать к испытанием на авто.
Все отлично и очень удобно. Как и планировал :-)


Тему датчиков в этом посте не затрагиваю, ибо очень она объемная. Но все датчики легко самому изготовить и емкостные и индуктивные и контактные… Может отдельно напишу об них…


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


Проектов по созданию осциллографов из разного рода аудиокарт немало. Выполнить модификацию карты с тем, чтобы превратить ее в полезный для электронщика инструмент, не так сложно, но зачастую встает вопрос цены. И здесь приходит на помощь интересный вариант с ценой вопроса около 1 доллара США.

image

Именно столько стоит внешняя звуковая карта, которая изображена на анонсной фотографии. Купить это чудо техники можно на электронной барахолке (во многих городах такие есть), или же на интернет-аукционе, где всегда есть, из чего выбрать. Маркировка текущего девайса — HX2010-0705, выпущен он в конце 2013 года.

image

Устройство является гибридным, это звуковая карта + HID input. Что касается последнего, то эта часть предназначена для регулировки громкости и выполнения некоторых других задач, включая работу с медиаклавиатурой.

Дамп USB дескриптора:

VID=0x0D8C PID=0x000C
Product string: C-Media USB Headphone Set
Audio Device Class + HID (composite device)

Судя по всему, чип внутри аналогичен чипу, установленному в недорогих звуковых картах «C-Media», без каких-либо кнопок.


  • аудиовход — моно, и два контакта не должны вводить в заблуждение, они замкнуты друг на друга; DLL здесь общий, может работать как со стерео-картами, так и с моно. Второй канал можно отключить самостоятельно.


  • Частота дискретизации — 44100 и 48000 Гц;
  • 2,23 В на С6; ток короткого замыкания 20 мА, при добавлении резистора на 120к этот показатель можно снизить до 8 мА;
  • Резистор на 120к является наиболее недорогим методом увеличения диапазона измерения до 0-6В;
  • AGC нужно убрать, настройки должны быть следующими:


Конденсатор C6 нужно отпаять, его емкость составляет 80 нФ, и он может серьезно ограничить возможности нашего осциллографа.


Настройки:

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

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

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

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

Вы, наверное, зададитесь логичным вопросом — как же в измерениях можно обойтись без АЦП и ЦАП? Никак нельзя. Но ведь и то и другое присутствует почти в каждом компьютере, правда, называется по другому — звуковая карта. А чем не АЦП/ЦАП, скажите, пожалуйста? Это уже давно поняли те, кто написал для нее массу программ, не имеющих никакого отношения к воспроизведению музыки. Ведь обычная звуковая плата ПК способна воспринимать и преобразовывать сигнал сложной формы в пределах звуковой частоты и амплитудой до 2В в цифровую форму со входа LINE-IN или же с микрофона. Возможно и обратное преобразование, — на выход LINE-OUT (Speakers). Таким образом, вы можете работать с любым сигналом до 20 кГц, а то и выше, в зависимости от звуковой платы. Максимальный предел уровня входного напряжения 0,5-2 В тоже не составляет проблемы, — примитивный делитель напряжения на резисторах собирается и калибруется за 15 минут. Вот на таких-то нехитрых принципах и строятся программное обеспечение: осциллографы, осциллоскопы, спектроанализаторы, частотомеры и, наконец, генераторы импульсов всевозможной формы. Такие программы эмулируют на экране компьютера работу привычных для нас приборов, естественно со своей спецификой и в пределах частотного диапазона вашей звуковой платы.

Как это работает? Для пользователя все выглядит очень просто. Запускаем программу, в большинстве случаев такое ПО не нужно даже инсталлировать. На экране монитора появляется изображение осциллографа: с характерным для этих приборов экраном с координатной сеткой, тут же и панель управления с кнопками, движками и регуляторами, тоже часто копирующими вид и форму таковых с настоящих — аппаратных осциллографов. Кроме того, в программных осциллографах могут присутствовать дополнительные возможности, как, например, возможность сохранения исследуемого спектра в памяти, плавное и автоматическое масштабирование изображения сигнала и т.д. Но, конечно же, есть и свои недостатки.

Как подключиться к звуковой карте? Здесь нет ничего сложного — к гнезду LINE-IN, с помощью соответствующего штекера. Типичная звуковая плата имеет на панельке всего три гнезда: LINE-IN, MIC, LINE-OUT (Speakers), соответственно линейный вход, микрофон, выход для колонок или наушников. Конструкция всех гнезд одинакова, соответственно и штекеры для всех идут одни и те же. Программа осциллограф будет работать и отображать спектр и в том случае если снимается звуковой сигнал с помощью микрофона, подключенного к своему входу. Более того, большинство программных осциллографов, спектроанализаторов и частотомеров нормально функционируют, если в это же время на выход звуковой платы LINE-OUT выводится какой-то другой сигнал с помощью другой программы, пусть даже музыка. Таким образом, на одном и том же компьютере можно задавать сигнал, скажем с помощью программы генератора, и тут же его контролировать осциллографом или анализатором спектра.

При подключении сигнала к звуковой плате следует соблюдать некоторые предосторожности, не допуская превышения амплитуды выше 2 В, что чревато последствиями, такими как выходом устройства из строя. Хотя для корректных измерений уровень сигнала должен быть гораздо ниже от максимально допустимого значения, что так же определяется типом звуковой карты. Например, при использовании популярной недорогой платы на чипе Yamaha 724 нормально воспринимается сигнал с амплитудой не выше 0,5 В, при превышении этого значения пики сигнала на осциллографе ПК выглядят обрезанными (рис.1). Поэтому для согласования подаваемого сигнала со входом звуковой карты потребуется собрать простой делитель напряжения (рис.2).

Читайте также: