Министерство образования РФСибирский государственныйиндустриальный университет.Кафедра автоматизированного электропривода и промышленной электроники.Курсовая работа по курсу: «Практическая схемотехника»Разработка блока АЦП.Выполнил: студент группы АПЭ – 992 Дужий А. В.Проверил: Кошев Е. В.Новокузнецк 2002Содержание Введение 31 Постановка задачи 32 Разработка принципиальной схемы 32.1 Выбор АЦП. 32.2 Выбор алгоритма взаимодействия с ЭВМ. 32.3 Техническая реализация 4Схема электрическая принципиальная модуля АЦП 73 Разработка конструкции печатной платы 8Трассировочный чертеж верхней стороны 8^ Трассировочный чертеж нижней стороны 94 Разработка программного обеспечения 10Вывод 11Список использованной литературы 13 Введение В стоимость промышленного контроллера заложена: 1) стоимость железа (~1%) 2) сертификация (~5%) 3) комиссионные посреднику (10%) 4) зарплата разработчикам, административному аппарату и т.д. (~50%) 5) "накладные расходы" - (все остальное) Таким образом возможно самостоятельное изготовление аналога контроллера за чуть более 1% стоимости промышленно выпускаемого оригинала. Если учесть то, что в оригинале используется Intel x86-совместимый процессор, то становится ясной возможность использовать в качестве ядра контроллера устаревшие ЭВМ IBM РC 286. Важными частями контроллера являются АЦП, необходимые для ввода аналоговых сигналов. В данной работе описывается процесс разработки конструкции блока АЦП для ЭВМ 286.^ 1 Постановка задачи Разработать принципиальную схему модуля АЦП в соответствии с требуемыми техническими характеристиками:Интерфейс с ЭВМ 286 шина ISAРазрядность 8..12 битКол-во каналов 2Частота выборок не менее 10000Наличие защиты от перенапряжения по входу и гальванической опторазвязкиКоэффициент усиления, изменяемый набором перемычекРазработать конструкцию печатной платы модуля АЦП.Разработать программное обеспечение - драйвер модуля АЦП под DOS.^ 2 Разработка принципиальной схемы 2.1 Выбор АЦП. Поскольку планируется практическая реализация устройства в условиях ограниченных финансовых возможностей, требуется выбрать наиболее дешевый АЦП из имеющихся в продаже, отвечающий требуемым техническим характеристикам. Выбран КР572ПВ3.^ 2.2 Выбор алгоритма взаимодействия с ЭВМ. Шина ISA предусматривает следующие режимы обмена с подключенными к ней внешними устройствами:обмен с устройством ввода/выводаобмен с памятьюпрямой доступ к памятиВышеперечисленные режимы могут быть синхронными, когда устройство успевает провести обмен за цикл шины, и асинхронными, когда устройство не успевает и выдает сигнал I/O CH RDY для приостановки обмена. 8- и 16-разрядный обмен производится в зависимости от сигнала -I/O CS 16, выдаваемого устройством.Легче всего реализуем обмен с устройством ввода/вывода, а другие режимы не имеют перед ним существенных преимуществ в данной ситуации. Синхронный обмен в данном случае невозможен, т.к. время преобразования АЦП (7,5 мкс) больше допустимого времени задержки цикла шины сигналом I/O CH RDY (2,5 мкс). Деваться тут некуда - пусть будет асинхронный.Асинхронные режимы взаимодействия устройства с программным обеспечением:опрос флага готовностипрерыванияПрерывания хорошо годятся в случае одиночных выборок, но если чтение будет производиться блоками, обработчик прерываний будет вызываться постоянно, что может существенно замедлить работу системы в целом. Поскольку предпочтительно чтение блоками, выбран опрос флага готовности. Поскольку 8 бит уже заняты данными, выбран 16-разрядный режим обмена, чтобы читать данные и флаг готовности одной операцией чтения.Итак, алгоритм взаимодействия с ЭВМ:Свой адрес обнаружен на ША (проверяется на спаде BALE).Выдать -I/O CS 16 = 0.Если обнаружен -IOR, выдать данные с АЦП на 0-7 биты и флаг готовности на 15-й бит ШД и снять данные по окончанию -IOR.Снять -I/O CS 16 по отсутствию своего адреса на ША на спаде BALE.Алгоритм работы программного обеспечения: Выбрать канал чтением одной выборки. Ее нужно будет отбросить. Считать выборку и проверить старший бит. Если там 1, значит преобразование закончено и данные в младшем байте действительны. В противном случае вернуться к п.2. Данный алгоритм реализован в драйвере блока АЦП. Драйвер с т.з. прикладных программ - устройство, из которого можно считывать данные побайтно тем же способом, что из файлов. Режимы работы драйвера: 1) чтение 1 байта - чтение выборки с ожиданием флага готовности; 2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания; 3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности между чтениями; 4) запись 1 байта (0/1) - выбор канала.^ 2.3 Техническая реализация 1. Селектор адреса В процессе обмена с блоком АЦП используются разряды шины адреса SA0..SA9. В адресном пространстве ввода/вывода специально предусмотрен диапазон 300..31F для прототипных плат, поэтому адрес для блока АЦП выбран из этого диапазона. Селектор адреса выполнен на логических элементах. Чтобы выполнить его всего на 2х ИС (DD6 - многовходовый элемент И-НЕ К555ЛА12 и DD8 - инверторы К555ЛН1) выбраны адреса 1100011110 (31E) и 1100011111 (31F). DD8 инвертирует те разряды адреса, которые должны быть = "0". На выходе DD12 (сигнал "-адрес выбран") появляется "0" когда на шине адреса присутствует 1 из адресов блока и отсутствует сигнал AEN. Младший бит адреса служит для выбора канала. Сигналы -адерс_выбран и НОМЕР_КАНАЛА защелкиваются триггерами DD15 по спаду сигнала BALE.2. АЦП АЦП К572ПВ3 специально предназначен для работы в составе микропроцессорных систем, поэтому его сопряжение с шиной ISA не составляет труда. В режиме ROM при чтении данных с АЦП на -CS всегда подается низкий уровень, а преобразование запускается подачей на -RD импульса лог. "0". АЦП и аналоговая часть гальванически развязаны от ЭВМ оптопарами. АЦП работает непрерывно, по окончании предыдущего преобразования запускается следующее, т.к. передача сигнала на запуск через оптопару - потеря времени и усложнение схемы. Во время преобразования на выходе -BUSY присутствует логический "0". По фронту -BUSY одновибратор DD9.1 вырабатывает сигнал -RD - импульс лог."0" длительностью 1 = tRAD*4 = 360нс (время, через которое на выходе АЦП появятся данные, умноженное на 4 для надежности), по спаду которого АЦП выдает данные, а по фронту - регистр DD14, являющийся частью кодера, защелкивает данные с АЦП и в последствии выдает их на схему опторазвязки в последовательном коде, а АЦП сбрасывается и начинает новый цикл преобразования. Время от фронта -BUSY до фронта -RD, задаваемое RC-цепью R10C2, должно быть не менее времени выборки данных tRAD = 180нс, для надежности = 4tRAD = 360нс. Тогда, при R10 = 2к, С2 = /(0.45R10) = 400пф. Данные присутствуют на выходе АЦП минимум tRНD = 40нс после фронта -RD, так что регистр с его tздр = 18нс успеет их защелкнуть. Таким образом, данные текущей выборки передаются через опторазвязку во время следующего преобразования. 3. Кодер Частотный код - это самосинхронизирующийся код с двумя состояниями, при котором в начале каждого бита происходит перепад, в середине нулевого бита перепада нет, в середине единичного бита перепад есть. Преимущество - относительная простота кодера и декодера. Кодирование можно осуществить, сложив по модулю 2 два тактовых сигнала, сдвинутых на 90, один из которых промодулирован информационным сигналом. Кодер представляет собой 2 делителя частоты на 2 на D-триггерах DD16.1, DD16.2: на второй постоянно подается тактовый сигнал с генератора на DD4.1, DD4.2, C1, R8; а на первый - проинвертированный элементом DD10.4 тактовый сигнал только в моменты, когда входной сигнал - логическая единица. Выходы делителей подключены к элементу DD4.3 "исключающее ИЛИ". Входная информация поступает на вход элемента DD10.4 с выхода сдвигового регистра DD14, для этого на его тактовый вход подается последовательность из 8 импульсов, формируемая по импульсу запуска счетчиком DD6 и логическими элементами DD7.5, DD7.4. Импульс запуска, в свою очередь, формируется по фронту -RD логическими элементами DD7.1 - DD7.3, DD10.2. Частота тактового генератора на DD4.1, DD4.2, C1, R8 f=5МГц, что соответствует скорости передачи данных через оптопару 2,5 Мбод (кодированных - 5Мбод). Это в 4 раза ниже максимально допустимой. Время передачи всего байта при этом 3,2мкс. Если принять R8=1k, то емкость С1:4. Декодер Алгоритм декодирования: если после перепада не позже времени t был второй перепад, то выдать на выход 1, если не было - 0, после чего ожидать следующего перепада, принимаемого за начало следующего бита. Оптимальное значение времени t = 3/4 длительности информационных битов. Отсюда следуют основные функции декодера, позволяющие восстановить исходные данные - определение границ информационных битов и наличия перепада между этими границами. Формирователь коротких импульсов на DD19.1-DD19.3, C5 формирует короткие импульсы в моменты перепадов входного сигнала. Чтобы эти импульсы не оказались слишком короткими для запуска одновибратора DD17.2, использован конденсатор С5, емкость которого подбирается до четкого срабатывания одновибратора DD17.2. Элемент DD13.3 блокирует перезапуск одновибратора DD17.2 следующим перепадом (информационным). Триггер DD18.2 по фронту импульса с инвертирующего выхода одновибратора DD17.2 защелкивает текущее состояние входного сигнала. Одновременно запускается одновибратор DD17.1, по фронту импульса с инвертирующего выхода которого сдвиговый регистр DD21 запоминает очередной принятый бит, равный (выход DD18.2)(текущее состояние входного сигнала). Счетчик DD20 считает принятые биты, и после приема восьмого бита на его выходе появляется лог."1". Этот флаг готовности подается на разряд шины данных SD15 через буферный элемент DD1.1 с 3мя состояниями по сигналу -RD (чтение данных из регистра DD21), фронт которого сбрасывает счетчик DD20, тем самым устанавливая флаг готовности в "0". Таким образом, ЦП, считывая очередную выборку, получает информацию о том, произошло ли преобразование с момента последнего чтения. При 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 как с логическим устройством, требуется драйвер. Устанавливаемые драйверы устройств могут быть написаны только на языке ассемблера. Они могут обслуживать два типа устройств: символьные и блочные - в зависимости от того, как устройство обрабатывает данные. Блочные устройства обмениваются блоками данных, поэтому они занимаются накоплением данных. Символьные устройства обмениваются данными побайтно, поэтому они лучше подходят для управляющихустройств, таких как данный модуль АЦП. Программа драйвера устройства содержит три части:заголовок драйвера, который именует устройство и содержит информацию об остальных частях драйвера, стратегия драйвера, которая хранит информацию об области данных, создаваемой MS DOS, которая называется заголовком запроса, обработчик прерывания устройства, который и содержит код, управляющий устройством (здесь не имеется в виду аппаратное прерывание от устройства).;режимы:;1) чтение 1 байта - чтение выборки с ожиданием флага готовности;;2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания;;3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности; между чтениями;;4) запись 1 байта (0/1) - выбор канала..286;заголовок драйвераCSEG SEGMENT PUBLIC 'CODE' ;устанавливаем кодовый сегмент ORG 0 ;эта строка необязательна ASSUME CS:CSEG,DS:CSEG,ES:CSEGADC_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 RETKEEP_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 QUITINPUT_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_INPUTINPUT_WORD: CMP CX,2 JA INPUT_BLOCK IN AX,DX MOV ES:[DI],AX JMP QUIT_INPUTINPUT_BLOCK: IN AX,DX TEST AH,7FH JZ INPUT_BLOCK MOV ES:[DI],AL INC DI LOOP INPUT_BLOCKQUIT_INPUT: POP ES JMP QUITOUTPUT_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 RETE_O_P: ;метка конца программыADC_DRV ENDPCSEG ENDS END ADC_DRV Вывод Был сконструирован блок АЦП со следующими параметрами:Интерфейс с ЭВМ 286 шина ISAРазрядность 8 битКол-во каналов 2Частота выборок 125 кГц.Защита от перенапряжения по входу при максимально допустимом входном токе 500 мА.Гальваническая опторазвязка с напряжением пробоя изоляции 2500ВМинимальное входное напряжение 2 мВ.Коэффициент усиления, изменяемый набором перемычек (максимальный 50000).Драйвер под DOS.Масса не более 500г.^ Список использованной литературы Ю. В. Новиков, О. А. Калашников, С. Э. Гуляев. Разработка устройств сопряжения для персонального компьютера типа IBM PC. - М.: ЭКОМ, 1998. О. Н. Лебедев, А. И. Мирошниченко, В. А. Телец. Справочник. Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП. - М.: Радио и связь, 1994. Г. Р. Аванесян, В. П. Лёвшин. Интегральные микросхемы ТТЛ, ТТЛШ. Справочник. - М.: Машиностроение, 1993. Справочная книга радиолюбителя-конструктора. / Н. И. Чистяков. - М.: Радио и связь, 1993. Роберт Журден. Справочник программиста на персональном компьютере фирмы IBM. - М.: Радио и связь, 1989.