При f=5МГц длительность импульсов соответственно должны быть равны: для DD17.2 0,05мкс; для DD17.1 0,1мкс. Номиналы и погрешности RC-цепей:
Из расчета видно, что при максимально допустимой погрешности временных задержек 50% максимально допустимая погрешность всех элементов RC-цепей составляет 64%, можно применить детали с отклонением 20%.
6. Опторазвязка
В качестве опторазвязки информационного сигнала использована быстродействующая цифровая оптопара 6N137N, допускающая скорость 10Мбод. Для сигнала выбора канала - не очень быстрая, но зато дешевая оптопара TLР621.
7. Аналоговая часть
В качестве предварительного усилителя использован сдвоенный ОУ DA1 К140УД20 в неинвертирующем включении. Защитные диоды VD1-VD2, VD3-VD5 защищают входы ОУ от воздействия чрезмерно высоких напряжений. С него сигналы 2х каналов подаются на коммутатор DD2 К561КТ3, управляемый сигналом "номер канала" через оптопару DA2. Сигнал "номер канала" формируется из разряда адреса А0, т.о. программное обеспечение выбирает канал, производя чтение по одному из соседних адресов (31E и 31F). Причем считываемая выборка - с того канала, который был выбран предыдущей операцией чтения.
Схема электрическая принципиальная модуля АЦП
3 Разработка конструкции печатной платы
Трассировочный чертеж верхней стороны
Трассировочный чертеж нижней стороны
4 Разработка программного обеспечения
Чтобы с модулем АЦП можно было работать в DOS как с логическим устройством, требуется драйвер. Устанавливаемые драйверы устройств могут быть написаны только на языке ассемблера. Они могут обслуживать два типа устройств: символьные и блочные - в зависимости от того, как устройство обрабатывает данные. Блочные устройства обмениваются блоками данных, поэтому они занимаются накоплением данных. Символьные устройства обмениваются данными побайтно, поэтому они лучше подходят для управляющих
устройств, таких как данный модуль АЦП. Программа драйвера устройства содержит три части:
1) заголовок драйвера, который именует устройство и содержит информацию об остальных частях драйвера,
2) стратегия драйвера, которая хранит информацию об области данных, создаваемой MS DOS, которая называется заголовком запроса,
3) обработчик прерывания устройства, который и содержит код, управляющий устройством (здесь не имеется в виду аппаратное прерывание от устройства).
;режимы:
;1) чтение 1 байта - чтение выборки с ожиданием флага готовности;
;2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания;
;3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности
; между чтениями;
;4) запись 1 байта (0/1) - выбор канала.
.286
;заголовок драйвера
CSEG SEGMENT PUBLIC 'CODE' ;устанавливаем кодовый сегмент
ORG 0 ;эта строка необязательна
ASSUME CS:CSEG,DS:CSEG,ES:CSEG
ADC_DRV PROC FAR ;драйвер это далекая процедура
DD 0FFFFFFFFH ;адрес следующего драйвера
DW 8000H ;байт атрибутов
DW DEV_STRATEGY ;адрес процедуры стратегии
DW DEV_INTERRUPT ;адрес процедуры прерывания
DB 'ADC ' ;имя устройства (дополненное пробелами)
CHANNEL DW 0 ;номер канала
;стратегия драйвера
DEV_STRATEGY:
MOV CS:KEEP_ES,ES
MOV CS:KEEP_BX,BX
RET
KEEP_ES DW ?
KEEP_BX DW ?
;обработчик прерывания устройства
DEV_INTERRUPT:
PUSH ES ;сохраняем регистры
PUSH DS
PUSHA
MOV AX,CS:KEEP_ES ;ES:BX указывают на заголовок запроса
MOV ES,AX ;
MOV BX,CS:KEEP_BX ;
MOV AL,ES:[BX]+2 ;получаем код команды из заголовка
SHL AL,1 ;умножаем на 2 (т.к. таблица словная)
SUB AH,AH ;обнуляем AH
LEA DI,FUNCTIONS ;DI указывает на смещение до таблицы
ADD DI,AX ;добавляем смещение в таблице
JMP WORD PTR [DI] ;переходим на адрес из таблицы
FUNCTIONS LABEL WORD ;это таблица функций
DW INITIALIZE
DW CHECK_MEDIA
DW MAKE_BPB
DW IOCTL_IN
DW INPUT_DATA
DW NONDESTRUCT_IN
DW INPUT_STATUS
DW CLEAR_INPUT
DW OUTPUT_DATA
DW OUTPUT_VERIFY
DW OUTPUT_STATUS
DW CLEAR_OUTPUT
DW IOCTL_OUT
;---выход из драйвера, если функция не поддерживается
CHECK_MEDIA:
MAKE_BPB:
IOCTL_IN:
NONDESTRUCT_IN:
INPUT_STATUS:
CLEAR_INPUT:
OUTPUT_VERIFY:
OUTPUT_STATUS:
CLEAR_OUTPUT:
IOCTL_OUT:
OR ES:WORD PTR [BX]+3,8103H ;модифицируем статус
JMP QUIT
;---процедуры для поддерживаемых кодов
INITIALIZE:
LEA AX,E_O_P ;смещение конца программы в AX
MOV ES:WORD PTR [BX]+14,AX ;помещаем его в заголовок
MOV ES:WORD PTR [BX]+16,CS
JMP QUIT
INPUT_DATA:
MOV CX,ES:[BX]+18 ;получаем число символов
LES DI,ES:[BX]+14 ;получаем адрес буфера данных
PUSH ES
MOV DX,CS:CHANNEL ;выбор канала
CMP CX,1 ;читать 1 байт?
JA INPUT_WORD ;нет - дальше..
INPUT_BYTE:
IN AX,DX
TEST AH,7FH
JZ INPUT_BYTE
MOV ES:[DI],AL
JMP QUIT_INPUT
INPUT_WORD:
CMP CX,2
JA INPUT_BLOCK
IN AX,DX
MOV ES:[DI],AX
JMP QUIT_INPUT
INPUT_BLOCK:
IN AX,DX
TEST AH,7FH
JZ INPUT_BLOCK
MOV ES:[DI],AL
INC DI
LOOP INPUT_BLOCK
QUIT_INPUT:
POP ES
JMP QUIT
OUTPUT_DATA:
PUSH ES
LES DI,ES:[BX]+14 ;получаем адрес буфера данных
MOV AX,ES:[DI]
MOV CS:CHANNEL,AX
POP ES
;---выходим, модифицируя байт статуса в заголовке запроса
QUIT: OR ES:WORD PTR [BX]+3,100H ;устанавливаем бит 8
POPA ;восстанавливаем регистры
POP DS
POP ES
RET
E_O_P: ;метка конца программы
ADC_DRV ENDP
CSEG ENDS
END ADC_DRV
Был сконструирован блок АЦП со следующими параметрами:
Интерфейс с ЭВМ 286 шина ISA
Разрядность 8 бит
Кол-во каналов 2
Частота выборок 125 кГц.
Защита от перенапряжения по входу при максимально допустимом входном токе 500 мА.
Гальваническая опторазвязка с напряжением пробоя изоляции 2500В
Минимальное входное напряжение 2 мВ.
Коэффициент усиления, изменяемый набором перемычек (максимальный 50000).
Драйвер под DOS.
Масса не более 500г.
Список использованной литературы
1. Ю. В. Новиков, О. А. Калашников, С. Э. Гуляев. Разработка устройств сопряжения для персонального компьютера типа IBM PC. - М.: ЭКОМ, 1998.
2. О. Н. Лебедев, А. И. Мирошниченко, В. А. Телец. Справочник. Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП. - М.: Радио и связь, 1994.
3. Г. Р. Аванесян, В. П. Лёвшин. Интегральные микросхемы ТТЛ, ТТЛШ. Справочник. - М.: Машиностроение, 1993.
4. Справочная книга радиолюбителя-конструктора. / Н. И. Чистяков. - М.: Радио и связь, 1993.
5. Роберт Журден. Справочник программиста на персональном компьютере фирмы IBM. - М.: Радио и связь, 1989.