Russian Arabic English French German Hungarian Japanese Romanian Turkish Ukrainian

Измеритель емкости конденсаторов

Вниманию читателей предлагается простой измеритель емкости конденсаторов (см. рисунок). В основе работы устройства лежит принцип измерения емкости времязадающего конденсатора Сх в схеме мультивибратора на таймере 1006ВИ1.

Емкость Сх можно вычислить по формуле:

Cx=1,443T/(RA+2RB),

где: Т - период следования импульсов мультивибратора

Схема простого измерителя емкости конденсаторов

Рис.1. Схема простого измерителя емкости конденсаторов

Для измерения периода Т вывод 3 микросхемы таймера соединяют с контактом 15 порта принтера персонального компьютера, а общий провод схемы - с контактом 24 порта принтера При данных значениях резисторов RA и RB устройство обеспечивает приемлемую точность измерения (в пределах 4 - 8 %) емкостей в диапазоне 30 - 1000 пФ Для диапазона 1000 - 6800 пФ значение RB можно уменьшить до 800 кОм, а для емкостей до 15000 пФ - в пределах 100 - 150 кОм. Для малых значений емкостей (порядка 10 - 30 пФ ) погрешность измерения может возрасти до 10 - 15% за счет влияния входной емкости на выводах 2 и 6 микросхемы таймера.

О программе.

За основу взят принцип измерения частоты следования импульсов мультивибратора. В течение 1 с измеряется количество импульсов мультивибратора на контакте 15 порта принтера персонального компьютера. Затем, используя соотношение

Т = 1 / F

где: F - частота следования импульсов, по известной формуле определяют значение Сх в пикофарадах. В качестве задатчика интервала времени используют внутренний таймер персонального компьютера, генерирующий 18,2 импульса за 1 с. При выборе другого номинала резистора RB необходимо изменить значение переменной RB в тексте программы. Программа написана на языке Borland Pascal v 7 0, компилируется как DOS приложение реального режима и может работать в среде MS DOS, Windows 95, Windows 98.

Текст программы приведен ниже:

uses WinDos

var

IntlCold : Pointer;

Counter, Flag     : Word

R                  : TRegisters

Ticks, Capacity   : Longint

RA, RB, К     : Real;

{$F+}

procedure IntlCnew; interrupt;

begin

     if Counter < 19 then

          Inc(Counter)

     else

          Flag:= 1;

end;

<$F-}

procedure ReadPort; assembler;

asm

                    mov              dx,379h

@wait_1

                    in al,          dx

                    test             al, 08h

                    jz               @wait_1

®wait_0

                    in al,          dx

                    test             al, 08h

                    jnz              @wait_0

end;

begin

RA:=4.7;

RB:=3900;

Flag:=0;

Counter:=0;

Тicks:=0;

К:=1.443*1000000000/(RA+2*RB);

GetIntVec ($1C Int1Cold);

SetIntVec ($1C Addr (Int1Cnew));

while Flag <> 1 do

begin

ReadPort;

Inc(Ticks);

end;

SetIntVec ($01C, Int1Cold);

Capacity:=Trunc(K/(Ticks*1.043));

    writeln('Измеренная емкость равна',Capacity,'pF

end

Ю.С.Магда, г Черкассы, РАДИОАМАТОР № 3, 2001

Добавить комментарий


Защитный код
Обновить

Рейтинг@Mail.ru Яндекс.Метрика