Вниманию читателей предлагается простой измеритель емкости конденсаторов (см. рисунок). В основе работы устройства лежит принцип измерения емкости времязадающего конденсатора Сх в схеме мультивибратора на таймере 1006ВИ1.
Емкость Сх можно вычислить по формуле:
Cx=1,443T/(RA+2RB),
где: Т - период следования импульсов мультивибратора
Для измерения периода Т вывод 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