Б.Каинка приводит схему простейшего АЦП на СОМ-порте ПК (рис.1) с диапазоном входных напряжений от-6 до+9 В, временем преобразования 500 мс и точностью, эквивалентной 8 разрядам
Транзистор Т работает как компаратор, сравнивающий напряжение на конденсаторе C с пороговым напряжением на эмиттерном переходе 0,7 В. BASIC-под-программа (листинг 1) анализирует уровень на коллекторе (линия RI) и если он высокий, то на конденсатор через R3 с линии DTR подается высокий уровень и наоборот, но в последнем случае дополнительно увеличивается на единицу значение переменной U. Таким образом, путем программного заряда/разряда конденсатора С на нем поддерживается напряжение, соответствующее порогу отпирания транзистора, а в конце цикла измерения (255 шагов) значение переменной U тем больше, чем больше заряд конденсатора, полученный им от внешнего источника через резистор R4.
LISTING 1 Private Sub Timerl_Timer() RTS 1 DTR 0 U = 0 REALTIME (True) TIMEINIT While (RI() - 0) And (TIMEREAD() < 300) Wend TIMEINIT For i - 1 To 255 If RI() = 1 Then DTR 1 Else DTR 0: U = U + 1 While TIMEREAD() < i Wend Next i REALTIME (False) U = (U - HScroll1.Value) / HScroll2.Value * 10 U = Int(U * 10) / 10 DTR 1 Label1.Caption - Str$(U) + " V" End Sub |
LISTING 2 y2 = 100 - U * 10 If n = 0 Then y1 - y2: Picturel.Cls xl = n n = n + 5 x2 = n Picturel.Line (xl, yl) - (x2, y2) yl = y2 |
LISTING 3 Private Sub Timerl_Timer() RTS 1 DTR 0 U = 0 REALTIME (True) TIMEINIT While (DSR() - 1) And (TIMEREAD() < 300) Wend TIMEINIT For n = 1 To 1000 If DSR() = 0 Then DTR 1 Else DTR 0: U = U + 1 While TIMEREAD() < n Wend Next n REALTIME (False) U = (U - HScroll1.Value) / HScroll2.Value * 10 U = Int(U * 100) / 100 DTR 1 Labell.Caption = Str$ (U) + " V" End Sub |
Автор экспериментально установил, что измеряемое напряжение связано со значением переменной U выражением Уизм = (U -110)/11,2 . Пятая снизу строка подпрограммы как раз и выполняет такую поправку (константы HScroll1.Value и HScroll2.Value по умолчанию полагаются равными соответственно 110 и 11,2, но могутбыть при необходимости скорректированы), а четвертая снизу - округляет полученное значение до десятых долей вольта, т.е. реальной разрешающей способности. Если предпоследнюю строчку в листинге 1 заменить на листинг 2, то вместо цифровой индикации напряжения (рис.2) можно получить временную диаграмму (рис.3).
Рис. 2 | Рис. 3 | Рис. 5 |
В усовершенствованном варианте устройства (рис.4) благодаря применению дифференциального усилителя значительно уменьшена погрешность, обусловленная температурным дрейфом порогового напряжения на эмиттерном переходе, а также расширен до ±10 В диапазон измеряемых напряжений. Разрешающая способность повышена с 0,1 до 0,02 В, поэтому в управляющей подпрограмме (листинг 3) количество шагов в основном цикле увеличено до 1000, а выводится на дисплей уже не 2, а 3 значащих цифры (рис.5). Интересно отметить, что ни в первой, ни во второй схемах емкость конденсатора на результаты измерения не влияет и ее можно безболезненно варьировать в широких пределах - от 20 до 100 мкФ. («Elektor Electronics» №3/2001, с.22 - 25)
Радиохобби №2, 2001