Ковокс в качестве... вольтметра (Компьютер в качестве мультиметра)

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
doctorgenius
Junior Member
Сообщения: 147
Зарегистрирован: 03.02.2006,02:55
Откуда: Днепропетровск
Контактная информация:

Ковокс в качестве... вольтметра

Сообщение doctorgenius » 11.01.2008,19:13

Компьютер в качестве мультиметра

Исследуя возможность создания простейшего АЦП наткнулся на такую вот статейку небольшого практикума для школьников: 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) Контрольный вольтметр.
        |     | 
        +-----+--> (На вход)
Резисторы брал R=1,5 K 2R=3K, ОУ TL062. В принципе можно использовать и другой операционник.
Вход ОУ желательно соединить с землей через резистор порядка 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.
(Сообщение отредактировал doctorgenius 11 янв. 2008 21:26)

Гость

Сообщение Гость » 11.01.2008,19:26

doctorgenius
или я чегото непонял , или ты чето не то нарисвоал , но на схеме у тебя простой ковокс , и эти линии данных а ты использовал data0-data6 на старыз компах работать на ввод не будут , и вообще непонятно зачем тут нужен R-2R ? если есть компаратор ... и наоборот ... если использовать продвинутые режимы порта то ненужен компаратор

doctorgenius
Junior Member
Сообщения: 147
Зарегистрирован: 03.02.2006,02:55
Откуда: Днепропетровск
Контактная информация:

Сообщение doctorgenius » 11.01.2008,21:16

Выставляем на порте 378 в самом обычном режиме нули и единицы, перебирая в цикле значения от 0 до FF hex, получаем
на выходе ЦАП импульсы следующего вида:

Код: Выделить всё

     /|    /|    /|    /|
    / |   / |   / |   / |
   /  |  /  |  /  |  /  |
  /   | /   | /   | /   |
/    |/    |/    |/    |
как только напряжения на инверсном и прямом входах компаратора сравняются, то компаратор изменит состояние порта
ввода base+1. Дальше зная, при каком значении произошло "перебрасывание" компаратора, вычисляем какое напряжение
было подано на вход АЦП. U=Значение порта*(256/5). Вот и все.
Таким образом реально на ввод мы задействовали только один бит LPT порта. Так что данная конструкция будет работать без использования ECP/EPP режимов порта.

(Сообщение отредактировал doctorgenius 11 янв. 2008 21:22)

Kacher
Advanced Member
Сообщения: 1191
Зарегистрирован: 07.01.2008,00:37
Откуда: Kijów/Kraków (UA-PL)
Контактная информация:

Сообщение Kacher » 11.01.2008,22:35

С каким ключем запускать програму в компиляторе??? А то если просто запускать то пишет что IDENTIFIER NOT FOUND "PORT"
AMD Bulldozer FX-4100 4.6Ghz/2*2Gb DDR3 Kingston HyperX 1600/ASUS M5A97 PRO X970/AMD Sapphire Radeon HD 4830 512MB 256-bit GDDR3/Corsair SSD 60Gb + WD 1Tb/470W Chieftec/24" Samsung SM2494/Logitech MX Air/RaidMAX ENZO RED

Аватара пользователя
EJSanYo
Advanced Member
Сообщения: 414
Зарегистрирован: 27.12.2007,23:55

Вклад в сообщество

Сообщение EJSanYo » 11.01.2008,23:36

doctorgenius, оригинальная идея! :au: Типа реализация АЦП с и спользованием ЦАП-а вместо интегратора. И прогу аналогичного назначения в чём угодно накатать можно. Хоть в бейсике, хоть в Си. :)
Тока как я понимаю, лучше вместо ковокса было бы какой-нить нормальный ЦАПик повесить, или как оно.
(Сообщение отредактировал EJSanYo 12 янв. 2008 1:42)
Хорошо иметь DOOM-ик в деревне!

doctorgenius
Junior Member
Сообщения: 147
Зарегистрирован: 03.02.2006,02:55
Откуда: Днепропетровск
Контактная информация:

Сообщение doctorgenius » 12.01.2008,00:22

прогу - да, действительно. Просто был под рукой Turbo Pascal 7.1 в нем и делал. Компилировуется так "как есть", работает из под DOS. А микрухи подходящей быстро найти не удалось. Потому в "образовательных целях" собирал из того что под рукой было.
(Сообщение отредактировал doctorgenius 12 янв. 2008 0:23)

KateMargo
Newbie
Сообщения: 1
Зарегистрирован: 12.01.2008,00:39
Откуда: Днепропетровск

Сообщение KateMargo » 12.01.2008,00:44

хм...очень заинтересовала идея doctorgenius. вы молодцы. Знающего человека сразу видно. совет вам на "ноу-хау")))
Жизнь прекрасна, если рядом нет...

Alexey
Advanced Member
Сообщения: 576
Зарегистрирован: 11.12.2002,12:05

Сообщение Alexey » 12.01.2008,01:24

Тогда уж, если не делать АЦП на отдельной микросхеме (что предпочтительнее), то можно оптимизировать алгоритм (вместо перебора 256 значений сделать около 8) и получить подобие осциллографа.

Аватара пользователя
Baza
Advanced Member
Сообщения: 609
Зарегистрирован: 13.05.2005,11:51
Откуда: С-Петербург
Контактная информация:

Вклад в сообщество

Сообщение Baza » 12.01.2008,13:45

В инете пробегали схемы и софт для АЦП с 8-бит параллельным интерфейсом, которые вешались тупо на LPT и получался осцилл и вольтметр.
А кофе на клавиатуру тоже вирус пролил? 2xPIII-S-1133-512k MSI MS-9105, 2048DDR, Rad x1650-512 AGP

Гость

Сообщение Гость » 12.01.2008,14:03

Baza
и я про тоже .... лисапед однако :) &nbsp;....

Аватара пользователя
EJSanYo
Advanced Member
Сообщения: 414
Зарегистрирован: 27.12.2007,23:55

Вклад в сообщество

Сообщение EJSanYo » 12.01.2008,23:29

Я как-то и 16-битный АЦП вешал - работало в EPP-режиме между прочим! На QBasic-е некое подобие осциллографа накатал, дальше всё забросил. Мда, всё-таки я лентяй.. ;)

(Сообщение отредактировал EJSanYo 13 янв. 2008 1:43)
Хорошо иметь DOOM-ик в деревне!

Ответить