Цифровая часть устройства
Основой устройства является микроконтроллер DD1 AtMega128 фирмы Atmel. Данный контроллер имеет все необходимые встроенные средства, но у него недостаточно оперативной памяти для накопления данных в течении заданного интервала – 240 секунд. Поэтому дополнительно установлена микросхема оперативной памяти DD3 62256 объемом 32КБайта и параллельный регистр DD2 74AC573, необходимый для формирования полной шины данных контроллером.
Память конфигурируется с максимальной рабочей частотой, чтобы минимизировать время выполнения теста ОЗУ. Поэтому регистр и память выбраны быстродействующие, время работы с ОЗУ не должно превышать 120нс. Этому условию удовлетворяет ОЗУ фирмы Samsung, KM62256CLI, имеющая к тому же достаточный диапазон температур. Могут быть использованы и микросхемы других фирм.
Линии RD, WR и A15 подтянуты к плюсу питания через резисторы для исключения случайных процессов при включении питания и при переводе портов ввода-вывода в третье состояние между обменами с ОЗУ.
Линии Reset и PEN подтянуты к плюсу питания согласно требованиям, описанным в документации контроллера через резисторы R50-R52.
Контроллер тактируется кварцевым резонатором ZQ1 с частотой 7.3728МГц, что необходимо для точной установки скорости последовательного порта. Кварцевый резонатор подключен в соответствии с требованиями документации – с двумя конденсаторами С2, С4 на общий провод.
Вывод AREF опорного напряжения АЦП контроллера подключен к повторителю на операционном усилителе и конденсатору C1 для повышения точности измерения АЦП.
Пять светодиодов VD1-VD5 (типа КИПД14Б-К), сигнализирующие перегрузку каналов, подключены к выводам PB0-PB4 порта B микроконтроллера, через токоограничивающие резисторы. Светодиод индикации ошибки VD8 (типа КИПД14Д-Л) самотестирования системы подключен к выводу PD4 микроконтроллера, также через токоограничивающий резистор.
К выводам RX0/TX0 внутреннего аппаратного последовательного порта микроконтроллера подключен преобразователь уровней DD3 MAX232, предназначенный для преобразования TTL или CMOS логических сигналов в сигналы порта RS232 и обратно. Данный преобразователь уровней имеет встроенный повышающий и инвертирующий источники напряжения и требует для своей работы наличия внешних конденсаторов C6-C9.
Питание схемы осуществляется от внешнего двуполярного источника с напряжениями +5В и -5В. Питание осуществляется через разъем X8, на тот же разъем выведены линии RX и TX порта RS232. Конденсаторы по питанию C3, C5 устанавливаются вблизи микроконтроллера, C11, C12 вблизи операционных усилителей DA1-DA4, подключенных к обоим напряжениям питания, а конденсаторы C13-C14 - вблизи разъема X8.
Протокол обмена с компьютером
Разрабатываемая система отсылает один раз в 240 секунд пакет данных, содержащий значения отсчетов за прошедшее время и данные о наличии выхода сигналов за допустимые пределы.
Данный пакет содержит следующие данные:
Заголовок пакета – байты 0x55, 0x00
Длину пакета в байтах, исключая заголовок, длину и поле CRC – два байта, для обычного пакета – 0xЕ1, 0x2Е, то есть 0x2ЕЕ1, или 12001 в десятичной форме.
Один байт, кодирующий младшими битами флаги переполнения каналов.
Данные АЦП каналов, по 5 байт на один отсчет, начиная с первого канала, 2400 отсчетов (данные за 240 секунд по 10 отсчетов в секунду). CRC пакета, полученную сложением по модулю 256 всех байтов пакета, исключая заголовок и CRC.
Каждый отсчет кодируется одним байтом в дополнительном коде, с приведением к шкале в заявленном диапазоне. Для каждого из 5 каналов после приема должен применяться коэффициент пересчета для получения входного напряжения. Коэффициент K получается делением максимального входного напряжения на 127:
|
№ |
U |
K |
|
1 |
-10..10 |
0.078740157 |
|
2 |
-1..1 |
0.007874016 |
|
3 |
-0.1..0.1 |
0.000787402 |
|
4 |
-0.05..0.05 |
0.000393701 |
|
5 |
-0.01..0.01 |
0.0000787402 |
Например, для канала 2 значение 0В будет кодироваться как 0x00, 10В – как 0x7F, а -10В будет кодироваться как 0x81.
Один раз в 10 циклов передачи данных и при включении питания генерируется пакет, определяющий состояние системы. Пакет содержит следующие данные:
Пакет, определяющий что система работает нормально:
0xA5, 0x00, 0xAA,0xAA
Пакет, определяющий что есть ошибки системы:
0xA5, 0x00, 0xFF, 0xFF
Для сброса флагов переполнения и отключения светодиодов используется пакет, отсылаемый с компьютера. Данный пакет содержит следующие данные:
Заголовок пакета – байты 0xAA,0x00
Байт, определяющий сбрасываемые флаги. Единица в соответствующем бите указывает, что данный флаг должен быть сброшен.
CRC, равное предыдущему байту, поскольку байт всего один.
