11- канальный АЦП(10
бит)
Как то не так давно пришло
мне на почтовый ящик письмо в котором меня спрашивали по
поводу схемы АЦП. Человека зовут Тимофей Носов (www.miliamper.narod.ru)
и его интересовала схема многоканального АЦП (аналого-цифрового
преобразователя - он же Multichannal ADC) с 8-ью входами
и точностью преобразования около 7 бит. Устройство это было
ему нужно для автомастерской, замерять какие-то там напряжения
с датчиков, да так чтобы показания фиксировались на компьютере
и при привышении показаний какого-либо значения комп выдавал
сигнал на выход LPT порта. Я посоветовал ему книгу для изучения
работы портов, немного мы попереписывались а потом я решил
тоже сделать такую штуку т.к. схем в сети похожих не нашел.
Запланировал сделать все на микросхеме TLC540( 8 бит 11
каналов ) но зайдя в магазин понял что микрухи я такой точно
не найду. Помыкался я вобщем и решил заказать ее по почте.
Заказывал на www.chipinfo.ru но там 540 не было, зато была
TLC1543 которая...оказалась лучше по своим параметрам. Во
первых микросхема делает 10-битное преобразование против
8-битного у 540 , а во вторых не нужно внешнего гнератора
импульсов т.к. у TLC1543 он свой. В остальном же микросхемы
одинаковы, с одинаковой распиновкой и почти одинаковым протоколом
общения с другими устройствами.Качаем документацию на микросхему
ТУТ (pdf-424 кб).Обошлась
мне микруха что-то около 150 рублей. Шла очень долго, когда
заказывал там срок комплектации 4 недели был так что...Но
вобщем пришла моя посылка, в такой вот замечательной фольгированой
коробочке(вот буржуи пакуют - не чета нашим!!!)
рис1
Вобщем это
все лирическое отступлени было а теперь по подробней.За
основу взята схема из книги Пен.Ай "Сопряжение ПК".
Там есть схема АЦП на TLC540.Эта схема предназначена для
работы с микросхемой через LPT порт и выводом данных на
монитор компьютера.
Схема девайса
следущая:
рис2
Вход CS подключен
к 3 ноге LPT порта. Вход I/O Clock подключен ко второй ноге
LPT. Вход выбора адреса подключен к 4 ноге LPT. Выход микросхемы
подключен к 15 ноге порта. На все входы можно последовательно
поставить ограничивающие ток резисторы номиналом в 1 кОм.
Запитывается микросхема напрямую от порта через ножки 5-9
которые соединены вместе и соеденены с 20 ногой микросхемы.Напряжение
на ножке выбора максимального уровня преобразователя(14)
мкросхемы подано через диод на котором падает порядка 0,7
вольт.Можно и без него, а можно ввести ввобще другое напряжение(например
поставить стабилитрон) но оно должно быть не выше напряжения
питания. Ножки с 18 по 25 LPT соеденены вместе и соеденены
с землей схемы.
То что получилось
у меня можно посмотреть ниже.Сверху напаяны ненужные впринципе
детали - это резистор для настройки и проверки АЦП и еще
термодатчик к1019чт1 - температуру мне в комнате измеряет.
Все входы выведены на разьем от siemensа старого образца.Там
как раз 12 ножек - 11 входов+ земля.
рис3
В книге приводится
листинг рабочей программы написаной на паскале и работающей
под DOS. Я переписывал этот исходник
под DOS для работы с TLC1543( собственно говоря,
что переписывал...массив поменял просто да и так по мелочам
).Запускал все это под DOSом инаконец добился что прога
заработала как надо.Встала другая проблема - переписывания
всего под windows.Как известно - прямой досуп к портам в
windows xp (а она как раз у меня и стоит) запрещен.Полез
я в инет искать что делать и нашел кучу всяких драйверов
для работы с LPT. Но описание было по английски и вообще
я не силен в программировании на дельфине - вобщем не разобрался.Зато
я нашел прогу которая открывает прямой доступ к портам по
XP. Архив с этой программой можно скачать
здесь . После того как распакуете архив нужно
запустить userport.exe , выбрать порт и установить драйвер.
Теперь программы будут работать с прямым доступом к порту
компьтера.
Окошко DOS
с результатом преобразования.При измерении напряжения от
0 до 4-х вольт точность составляет 4/1024=0,004 т.е. 4 миливольта.
Хотя теперь
досовская прога и работала под XP я все же решил написать
прогу на дельфи т.к. интерфейс тоже штука важная. Как и
говорил программер я не шибко хороший но все же разобрался
потехоньку. И получилась у меня такая программа.Скачать
программу под
windows(235 кб). Рабочее окно выглядит так:
рис4
Немного об
этом драйвере: есть 2 столбца. В первом столбце отображаются
показания непосредственно преобразователя(0 - вход на земле,
1023 - на входе максимум напряжения, -1 вход игнорируется).Также
рядом с первым столбцом видно номера аналоговых входов.Как
видно их 14!!! - дело в том что в микросхеме на самом деле
14 входов но только 11 выведены на соответствующие ножки,
а оставшиеся 3 штуки для самотестирования.На них должно
быть всегда одно и тоже значение.На12 входе - 511 на 13
- 0 на 14 - 1023.В лог эти значения не записываются.Если
эти значения "плавают" значит у вас нестабильное
питание.Во втором столбце показано уже вычисленное напряжение
на входе в вольтах.Вычисление идет по линейному закону,
но в исходниках можно найти процедуру для нелинейного вычисления.Пока
она не задействована.Рядом со вторым столбцом есть цветовое
описание( квадратик ) данного входа на графике.Если квадрат
сплошной то график будет отображен, если же он закрашен
штрих-пунктиром то график игнорируется.Щелчек правой кнопки
мыши переключает режимы отображения.На графике отображаются
эпюры напряжений на выбранных входах в зависимости от времени.В
правом верхнем углу видем маштаб измерений - максимальное
текущее значение напряжения, также есть автомасштабирование.График
выполнен на компоненте RAG-10 от Marius Ebel, за что ему
отдельное спасибо.
В драйвере
предусмотрена запись в лог файл показаний измерения всех
входов. Включается эта запись когда вы установите соответствующую
галочку.Лог файл автоматически создается в текущей папке
программы и обновляется при новом запуске программы - так
что нужный вам лог нужно своевременно убирать из папке после
завершения работы программы т.к. он будет перезаписан.Интервал
через который будет произведена запись в лог устанавливается
в настройках.Там же устанавливается интервал измерения в
милисекундах.
Запускается
процесс преобразования нажатием на кнопку "Пуск".
Для начала стабильной работы требуется небольшое время.
Для точной
калибровки АЦП нужно измерить напряжение эталонным прибором
на 14 ноге микросхемы и после этого ввести это напряжение
(в миливольтах) в соответствующее поле в настройках, после
чего нажать кнопку "сохранить".
Исходник программы
можно скачать сдесь.
В дальнейшем
планирую сделать версию драйвера с нелинейным процессом
вычисления и с порогом включения сигнала, когда при достижеии
определенного уровня по каким-либо входам LPT будет подавать
логическую единицу на свои выходы.Но это так...в планах.
Если у вас
есть идеи и желание улучшить программу пишите мне на почту
- отвечу на все вопросы.
P.S. кроме
TLC1543 у TEXAS INSTRUMENTS есть целая линейка миросхем
многоканальных ацп, порядка 10 штук отличающихся лишь качеством
преобразования, его скоростью и количеством входов, но все
микросхемы тяжело достать - по крайней мере в провинции.
|