Электронные устройства для работы со звуковой картой – ЧАСТЬ 1

March 24, 2012 by admin Комментировать »

Рассмотренные нами примеры программ работают со стандартным линейным выходом звуковой карты. Уровень выходного напряжения звуковой карты может достигать 2 В при выходном сопротивлении от десятков до сотен Ом. Этот уровень  сигнала  рассчитан  на работу с аудиоаппаратурой различных производителей, причем подключение этой аппаратуры осу ществляется стандартным кабелем (рис. 5.12).

Рис. 5.15

Окно конструктора приложения

Поместим на нашу форму две кнопки  (Set Voltage и Stop), однострочный текстовый ре дактор TextBox и список выбора ListBox. Программа работает следующим образом: из списка выбирается требуемый уровень выходного напряжения преобразователя, после чего следует нажать кнопку  Set Voltage, обработчик  которой проигрывает  соответствующий вы бранному напряжению  звуковой  файл. Для проигрывания  файла в этом же обработчике  за пускается отдельный поток. Остановить проигрывание  можно, нажав кнопку Stop, обработ чик нажатия которой завершает поток.

Вот исходный текст приложения:

Imports   Microsoft.DirectX

Imports   Microsoft.DirectX.DirectSound

Imports   System.Threading.Thread

Public Class  Form1

Public device   As Microsoft.DirectX.DirectSound.Device Public  buf  As  Microsoft.DirectX.DirectSound.Buffer Public  threadStart As Threading.ThreadStart

Public thread1 As Threading.Thread

Public file0  As String = "i:\meandr1000.wav" Public file1  As String = "i:\meandr2000.wav" Public file2  As String = "i:\meandr3000.wav" Public file3  As String = "i:\meandr4000.wav" Public file4  As String = "i:\meandr5000.wav" Public file5  As String = "i:\meandr6000.wav" Public file6  As String = "i:\meandr7000.wav" Public file7  As String = "i:\meandr8000.wav" Public file8  As String = "i:\meandr9000.wav" Public file9  As String = "i:\meandr10000.wav"

Private Sub OnPlay_Click(ByVal  sender   As System.Object,  ByVal e  As

System.EventArgs)  Handles  OnPlay.Click

Dim  listIndex As Integer = ListBox1.SelectedIndex

TextBox1.Text  = ListBox1.SelectedItem.ToString

threadStart = New  Threading.ThreadStart(AddressOf  threadProc)

thread1 = New  Threading.Thread(threadStart)

Select Case listIndex

Case  0

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file0,  device) Case  1

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file1,  device)

Case  2

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file2,  device) Case  3

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file3,  device) Case  4

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file4,  device)

Case  5

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file5,  device) Case  6

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file6,  device) Case  7

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file7,  device)

Case  8

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file8,  device) Case  9

buf  = New  Microsoft.DirectX.DirectSound.Buffer(file9,  device) End Select

OnPlay.Enabled  = False

OnStop.Enabled  = True thread1.Start()

End Sub

Private Sub Form1_Load(ByVal  sender   As Object, ByVal e  As

ЭЛЕКТРОННЫЕ  УСТРОЙСТВА ДЛЯ РАБОТЫ СО ЗВУКОВОЙ  КАРТОЙ

System.EventArgs)  Handles  Me.Load

device   = New  Microsoft.DirectX.DirectSound.Device() device.SetCooperativeLevel(Me,  CooperativeLevel.Priority) OnStop.Enabled  = False

End Sub

Private Sub OnStop_Click(ByVal sender   As System.Object,  ByVal e  As

System.EventArgs)  Handles  OnStop.Click  thread1.Abort()

OnPlay.Enabled  = True

OnStop.Enabled  = False

End Sub

Public Sub  threadProc() While  (True)

buf.Play(0, BufferPlayFlags.Default) End While

End Sub

Private Sub Form1_FormClosed(ByVal  sender   As System.Object,  ByVal e

As System.Windows.Forms.FormClosedEventArgs)  Handles  MyBase.FormClosed thread1.Abort()

End Sub

End Class

Напомню, что при разработке приложения необходимо добавить ссылки на пространства имен Microsoft.DirecX и Microsoft.DirectX.DirectSound. Кроме этого, необходимо импортиро вать эти пространства имен с помощью директивы Imports.

Поскольку в этом приложении используется отдельный поток, вторичный буфер buf мо

жет проигрываться в обычном (не в циклическом!) режиме.

Для реализации программной части преобразователя «частота напряжение» можно вос

пользоваться и функцией Beep, работу которой мы проанализировали ранее.

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

Схема преобразователя  «амплитуда напряжение» показана  на рис. 5.16.

На транзисторе Q1 и D1 собран однополупериодный детектор. Выпрямленное напряже ние будет пропорционально  уровню  входного сигнала. Выходной операционный  усилитель DA2 включен  по схеме суммирующего усилителя с инверсией.

На неинвертирующий вход операционного  усилителя подается напряжение  смещения Uп, которое должно быть больше напряжения  питания микросхемы DA1 на 1 2 В. Если выбрать значения резисторов на выходах DA1 одинаковыми  и равными R, то выходное напряжение на выходе операционного  усилителя DA2 будет определяться формулой

Uвых = Uп × (1 + nRF/R) – (U1 + U2 + … + Un) × (RF/R),

где n – количество задействованных выходов микросхемы DA1.

Рис. 5.16

Схема преобразователя  «амплитуда напряжение»

Исходя из этих соображений,  напряжение  питания операционного  усилителя DA2 следует выбирать больше напряжения  питания Uп. Значения резисторов  R и RF можно выбрать в пре делах единиц – десятков ом.

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

На основе этой схемы можно разработать простую схему терморегуляции (рис. 5.17).

Рис. 5.17

Простая схема терморегуляции

В этой схеме в качестве терморегулирующего элемента выбран терморезистор с отрица тельным температурным коэффициентом. При достижении определенной температуры объек та напряжение на выходе делителя RX  – Rt становится меньше напряжения на неинвертирую щем входе компаратора DA1.2, в результате чего выход компаратора переключается в низ

кий уровень, который может управлять какой либо нагрузкой (например, электронагрева

тельным устройством).

Данная схема позволяет  выполнить  настройки  терморегулятора  как в цепи делителя RX – Rt, так и в цепи амплитудного детектора на микросхеме LM3915  путем подачи на вход схемы большей или меньшей амплитуды сигнала  со звуковой  карты.  Все номиналы резисторов в этой, как и в предыдущей схеме, выбираются исходя из настроек вашей системы, и никакой сложности этот процесс не представляет.

Вместо микросхемы LM3915  можно с успехом использовать два учетверенных компара тора, например, LM324, установив на их входах (инвертирующих или неинвертирующих) соот ветствующие напряжения смещения, которые следует подбирать экспериментально. Если нет компаратора,  то можно  использовать  операционные  усилители общего назначения, напри мер, LM358,  LF451 и т. д.

Прецизионную схему терморегулятора можно построить на базе схемы, показанной на рис. 5.13  (если у вас  имеется микросхема  LM131/LM231/LM331).   Она может обеспечить очень точную регулировку  температуры, которая будет зависеть только от точности исполь зуемого термодатчика. Рассмотрим схему прецизионного  терморегулятора (рис. 5.18).

Рис. 5.18

Схема прецизионного  регулятора температуры

Здесь напряжение  на входе компаратора  DA2 прямо пропорционально  частоте сигнала на выходе звуковой  карты, поэтому можно  задавать регулируемую температуру объекта непосредственно из вашего приложения. В этом случае необходимо указать зависимость (по формуле или в виде таблицы) температуры от частоты. Это не очень сложно, учитывая то, что преобразователь  «частота напряжение» на микросхеме LM331  выполняет большую часть работы за вас, поэтому достаточно привязать выходное напряжение  преобразовате ля к напряжению  на делителе RX–Rt, что труда не представляет. Можно еще более улучшить характеристики схемы, установив корректирующий резистор параллельно с терморезисто

Источник:  Магда Ю. С. Компьютер  в домашней лаборатории.  – М.: ДМК Пресс, 2008. – 200 с.: ил.

Оставить комментарий

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