Свежие обсуждения
Измерения

LC-метр из звуковой карты

1 17 68

Я программирую в матлабе. Там используется модернизированный С++ для ленивых чайников. Для записи и воспроизведения применяются готовые функции с открытым кодом. Во входных параметрах воспроизведения нет места для установки количества буферов и их размеров - ниже пример
Y = 0.6*sin(2*pi*Fren*t);
WAVPLAY(Y,44100,'async');
Подозреваю, нужно ковыряться в открытом коде, чтобы как-то повлиять на буферы воспроизведения. Внешне это выглядит так, как-будто пропуски появляются именно при воспроизведении.

 

Ну, можно осциллографом сигнал посмотреть чтобы точно понять где именно. У меня больше проблемы возникали при записи. А 'async' что значит?

 

Модернизированный С++ представляет собой чистый интерпретатор. Есть отдельный компилятор, чтобы исполнимый exe-файл получить.
Интерпретатор видит 'async' и не ждет окончания проигрывания, а сразу пробует выполнить следующую команду. А можно заставить ждать окончания, но тогда последующая запись бессмысленна.

 

Ясно, он попищит и сам остановится, и пока пищит нужно запустить запись и остановить её пока писк не кончится.
Не люблю матлаб - он не рыба, не мясо. Если нужно что-то быстро посчитать - Маткад гораздо удобнее поскольку нагляднее, а для серьёзных вещей нормальный язык использую так как всё равно код писать надо.

 

Так, нашел что звуковая карта открывается командой fp = fopen('/dev/audio','wb'); Потом в этот псевдо-файл просто записывают подготовленный заранее сигнал. Но про буферы пока ничего не ясно.
А по умолчанию где-нибудь в панели управления на буферы можно повлиять?

 

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

 

Нет, панель управления виндовс к этому отношения не имеет - это задача программы организовывать буферизацию ввода-вывода аудиосигнала. Там должно быть что-нибудь типа waveOutWrite - это стандартная виндовсовская функция SDK отправки буфера на воспроизведение. Она от языка не зависит и в С++ и в Дельфи одинаково называется. Есть ещё и DirectSound-овские функции, которые я не использую. Скорее всего в Матлабе это скрыто от пользователя.

 

Neekeetos: Народ, а напомните пожалуйста схему подключения
В приложении

 

Я вашей, DVK, программой не пользовался. Если она в цикле долго пищит разными частотами, то про буферы можно забыть, так как это особенность именно вашей программы. Только интересно, сколько Вы времени выделяете на одну частоту?

 

Пририсовал схему ниже оригинальной. алгоритм программы придется немного поменять тк датчик тока и измеряемый элемент поменялись местами. соответственно Напряжение на шунте будет (UR - UL) а напряжение на DUT будет равно UL. Если настроить второе сопротивление как описано на картинке то входные параметры карты( ее входная емкость главным образом) не будет влиять на измерение элементов с большим импедансом ака мелких конденсаторов и больших сопротивлений.