Исследуя возможность создания простейшего АЦП наткнулся на такую вот статейку небольшого практикума для школьников: http://www.sys-tema.ru/index.jsp?pk=Pri ... pravleniya
Вспоминая ковокс и эксперименты с ним, была изготовлена следующая практическая конструкция:
Код: Выделить всё
(Gnd) 18...25
|
/
\ 2R
/
|
2R |
(2) -------\/\/\/-+
|
/
\ R
/
2R |
(3) -------\/\/\/-+
|
/
\ R
/
2R |
(4) -------\/\/\/-+
|
/
\ R
/
2R |
(5) -------\/\/\/-+
|
/
\ R
/
2R |
(6) -------\/\/\/-+
|
/
\ R
/
2R | (+VDc)
(7) -------\/\/\/-+ |
| |
/ |
\ 3K |\|
\ R Вход 0..5V>>-+-/\/\/-----|+\ Выход
2R | 3K | +----- (11)
(8) -------\/\/\/-+--------------------/\/\/-----|-/
|/| DA1 TL062
|
|
|
--+--
---
Пример входной нагрузки: - Gnd
+ Gb1 4,5V -
| |
+---| |- - -| |--+
| | | |
| | | Gnd
| 100K | | |
+-----/\/\/---+--+---+ | |
+ | | |
/|\ | |
/ | \ (V) Контрольный вольтметр.
| |
+-----+--> (На вход)
Вход ОУ желательно соединить с землей через резистор порядка 2 МОм, чтобы снизить нежелательное влияние помех.
Листинг программы на Паскале:
Код: Выделить всё
Program acp;
uses crt,dos;
var i,s,k: byte;
begin
clrscr;
Port[$378]:=0; {устанавливаем уровни лог. 0 на всех линиях 8-ми битного порта вывода}
Port[$37A]:=$64; {устанавливаем уровни лог. 1 на всех линиях 4-х битного порта вывода для питания схемы АЦП, хотя конечно ОУ желательно запитать от "нормальных" 5В }
repeat
k:=port[$379]; {запоминаем состояние 5-и битного порта ввода}
s:=0;
for i:=0 to $FF do
begin
Port[$378]:=i; {в цикле тепреь перебираем значения от 0 до 255}
if Port[$379]<>k then {проверяем состояние 5-и битного порта ввода, вообще-то такой метод несколько некорректен}
s:=port[$378]; {и если изменилось, записываем значение порта 378 hex в переменную S}
end;
writeln(s/(256/5):5:3,' V'); {вывод результатов на экран; делим значение s на 256/5}
until keypressed; {по нажатию клавиши программа завершается}
end.