Простейший АЦП на СОМ-порте ПК.

Б.Каинка приводит схему простейшего АЦП на СОМ-порте ПК (рис.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

Назад