До уваги читачів пропонується простий вимірювач ємності конденсаторів (див. малюнок). В основі роботи пристрою лежить принцип вимірювання ємності конденсатора времязадающего Сх у схемі мультівібратор на таймері 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