Выбрать главу

 ОСТОРОЖНО! ЭТОТ ПРИБОР ИСПОЛЬЗУЕТ БЕСТРАНСФОРМАТОРНОЕ ПИТАНИЕ ОТ СЕТИ!

Воздушный компрессор для подачи рабочего тела взят автомобильный, а для прокачки охлаждающей жидкости по замкнутому контуру используется автомобильный омыватель стекол. Электропитание к ним подводится от отдельного 12-вольтового трансформатора с выпрямителем.

Немного о планах на будущее:

Как показала практика, и эта конструкция тоже оказалась экспериментальная. Наконец-то получена стабильная работа в течение 5-10 минут. Но до полного совершенства еще далеко.

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

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

И под завершение еще снимки плазматрона при разрезании проволоки и стальных пластинок. Искры летят почти на метр.

ЭЛЕКТРОНИКА

Аналого-цифровой преобразователь из звуковой карты

О.Барановский

Сегодня каждый пользователь ПЭВМ знаком с термином "мультимедиа". У многих он ассоциируется с качественным звуком, анимацией и т. п. Однако звуковую карту Sound Blaster можно использовать как аналого-цифровой и цифро-аналоговый преобразователь с исключительно широкими возможностями обработки данных. Компьютер с такой картой можно использовать в качестве осциллографа, генератора или анализатора сигналов. Дело в том, что ее "сердцем" является цифровой сигнальный процессор DSP (Digital Signal Processor). Для того чтобы использовать его возможности, необходимо иметь непосредственный доступ к буферам, содержащим звуковые данные и управляющим режимом работы DSP, т. е. использовать интерфейс низкого уровня. В этой статье мы рассмотрим устройство звуковой карты и формат стандартных типов файлов данных, в которых в памяти компьютера хранятся данные, полученные в результате оцифровки сигналов, поступающих на вход звуковой карты. Такие же файлы можно синтезировать программно с целью получения сигналов заданной формы.

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

Данные, имеющие отношение к мультимедиа, хранятся в файлах в так называемом RIFF-формате (Resource Interchange File Format — формат файла для обмена ресурсами) [1]. Файл в формате RIFF содержит вложенные фрагменты (chunk's). Внешний фрагмент состоит из заголовка и области данных (рис. 2). Первое двойное слово заголовка содержит четырехсимвольный код, который идентифицирует данные, хранящиеся во фрагменте.

Второе двойное слово заголовка — размер области данных в байтах (без учета размера самого заголовка). Область данных имеет переменную длину с условием ее выравнивания на границу слова и дополнения в конце нулевым байтом до целого числа слов в случае необходимости.

Формат RIFF не описывает формат данных. Практически файл в формате RIFF может содержать любые данные для мультимедиа, причем формат данных зависит от типа данных.

Область, обозначенная на рис. 2 как "Данные", могут содержать внутри себя другие фрагменты. Для файла, в котором хранятся звуковые данные (wav-файл), эта область содержит идентификатор данных "WAVE", фрагмент формата звуковых данных "fmt" (три символа "fmt" и пробел на конце), а также фрагмент звуковых данных (рис. 2). Файл может дополнительно содержать фрагменты других типов, поэтому не следует думать, что заголовок wav-файла имеет фиксируемый формат. Например в файле может присутствовать фрагмент "LIST" или "INFO", содержащий информацию о правах копирования и другую дополнительную информацию.

Рассмотрим, как происходит запись данных. Вначале требуется открыть устройство ввода, указав ему формат звуковых данных. Затем нужно заказать один или несколько блоков памяти и подготовить их для ввода, вызвав специальную функцию. После этого подготовленные блоки нужно по мере необходимости передавать драйверу устройства ввода, который заполняет их записанными звуковыми данными. Для сохранения записанных данных в wav-файле приложение должно сформировать и записать в файл заголовок wav-файла и звуковые данные из подготовленных заполненных драйвером устройств ввода блоков памяти.

Ниже представлен фрагмент программы, позволяющий записать блок данных в файл, что необходимо при использовании звуковой карты в качестве аналого-цифрового преобразователя:

uses

        SysUtils, MMSystem;

type

       TWaveData = array[0..0) of word;

const

        Discret = 22050;

WaveHdr: TWaveHdr=(

    IpData                        : nil; (address of the waveform buffer)

    dwBufferLength           : 0; (length, in bytes, of the buffer)

    dwBytesRecorded         : 0; (How much data is in the buffer)

    dwUser                        : 0;

    dwFlags                       : 0;

    dwLoops           : 0;

    IpMext                         : nil;

    reserved                      : 0

    );

WaveFormat: TWaveFormatEx=(

    wFormatTag   : WAVE_FORMAT_PCM;

    nChannels       : 1;

    nSamplesPerSec              : Discret;

    nAvgBytesPerSec             : Discret;

    nBllockAlign     : 1;

    wBitsPerSample              : 8;

    csSize                            : 0

    );

var

    WaveDate         : ^TWaveDate;

     HSoundDevice   : HWaveln;

     hfile                              : HMMIO;

     res                   : MMResult;

begin

     with WaveHdr do

                      begin

             dwBufferLehgth: =round(Discret/10);

              dwBytesRecorded: =round(Discret/10);

               GetMem(WaveData, dwBytesRecorded);

               lpData: =PChar(WaveData);

                    end;

     res: =wavelnOpen (@HSoundDevice, WAVE_MAPPER, SWaveFormat, 0,0,0);

     res: =waveInPrepareHeader (HSoundDevice, QWaveHdr, SizeOf (WaveHdr));

     res: =waveInUnprepareHeader (HSoundDevice, QWaveHdr,SizeOf(WaveHdr));

     FreeMem (WaveData);

     res: =waveInStart (HSoundDevice);

     hfile:=mmio0pen ("d: \work\data_l. txt",nil,

                 MMIO_CREATE or MMIO_RE AD WRITE);

     mmioWrite(hfile,WaveHdr.IpData, WaveHdr,dwBytesRecorded);

      mmioClose(hfile,0);

      wavelnReset(HSoundDevice);

       wavelnClose(HSoundDevice);