
- •1 Задание на курсовую работу
- •2 Разработка принципиальной схемы устройства
- •2.1 Аналоговая часть
- •2.2 Цифровая часть
- •3 Протокол обмена данными с компьютером
- •4 Разработка программного обеспечения контроллера
- •5 Тестирование программы
- •6 Алгоритм программного продукта
- •7 Листинг программы
- •8 Принципиальная схема устройства
2.2 Цифровая часть
В качестве основного устройства был выбран микроконтроллер DD1 AtMega128 фирмы Atmel. Данный контроллер имеет все необходимые встроенные средства, но у него недостаточно оперативной памяти для накопления данных в течении заданного интервала – 120 секунд. Поэтому дополнительно установлена микросхема оперативной памяти DD3 62256 объемом 32 КБайта и параллельный регистр DD2 74AC573, необходимый для формирования полной шины данных контроллером.
Чтобы минимизировать время выполнения теста ОЗУ, память конфигурируется с максимальной рабочей частотой. Поэтому регистр и память выбраны быстродействующие, время работы с ОЗУ не должно превышать 120нс. Этому условию удовлетворяет ОЗУ фирмы Samsung, KM62256CLI, имеющая к тому же достаточный диапазон температур Линии RD, WR и A15 подтянуты к плюсу питания через резисторы для исключения случайных процессов при включении питания и при переводе портов ввода-вывода в третье состояние между обменами с ОЗУ. Линии Reset и PEN подтянуты к плюсу питания согласно требованиям, описанным в документации контроллера через резисторы R50-R52.
Контроллер тактируется кварцевым резонатором ZQ1 с частотой 7.3728МГц, что необходимо для точной установки скорости последовательного порта. Кварцевый резонатор подключен в соответствии с требованиями документации – с двумя конденсаторами С2, С4 на общий провод.
Вывод AREF опорного напряжения АЦП контроллера подключен к повторителю на операционном усилителе и конденсатору C1 для повышения точности измерения АЦП.
Четыре светодиода VD1-VD4 (типа КИПД14Б-К), сигнализирующие перегрузку каналов, подключены к выводам PB0-PB3 порта B микроконтроллера, через токоограничивающие резисторы R21-R24. Светодиод индикации ошибки VD5 (типа КИПД14Д-Л) самотестирования системы подключен к выводу PD6 микроконтроллера, также через токоограничивающий резистор R-25.
К выводам RX0/TX0 внутреннего аппаратного последовательного порта микроконтроллера подключен преобразователь уровней DD4 MAX232, предназначенный для преобразования TTL или CMOS логических сигналов в сигналы порта RS232 и обратно. Данный преобразователь уровней имеет встроенный повышающий и инвертирующий источники напряжения и требует для своей работы наличия внешних конденсаторов C6-C9.
Питание схемы осуществляется от внешнего двуполярного источника с напряжениями +5В и -5В. Питание осуществляется через разъем X8, на тот же разъем выведены линии RX и TX порта RS232. Конденсаторы по питанию C3, C5 устанавливаются вблизи микроконтроллера, C11, C12 вблизи операционных усилителей DA1-DA3, подключенных к обоим напряжениям питания, а конденсаторы C13-C14 - вблизи разъема X8.
3 Протокол обмена данными с компьютером
Разрабатываемая система отсылает один раз в 120 секунд пакет данных, содержащий значения отсчетов за прошедшее время и данные о наличии выхода сигналов за допустимые пределы.
Данный пакет содержит следующие данные:
Заголовок пакета – байты 0x55, 0x00
Длину пакета в байтах, исключая заголовок, длину и поле CRC – два байта, для обычного пакета – 0x41, 0x38, то есть 0x3841, или 14401 в десятичной форме.
Один байт, кодирующий младшими битами флаги переполнения каналов.
Данные АЦП каналов, по 4 байта на один отсчет, начиная с первого канала, 3600 отсчетов (данные за 120 секунд по 30 отсчетов в секунду). CRC пакета, полученную сложением по модулю 256 всех байтов пакета, исключая заголовок и CRC.
Каждый отсчет кодируется одним байтом в дополнительном коде, с приведением к шкале в заявленном диапазоне. Для каждого из 4 каналов после приема должен применяться коэффициент пересчета для получения входного напряжения. Коэффициент K получается делением максимального входного напряжения на 127:
Таблица 4
№ |
U |
K |
1 |
-15..15 |
0.118110236 |
2 |
-10..10 |
0.078740157 |
3 |
-1..1 |
0.007874016 |
4 |
-0.1..0.1 |
0.000787402 |
Например, для канала 2 значение 0В будет кодироваться как 0x00, 10В – как 0x7F, а -10В будет кодироваться как 0x81.
Один раз в 10 циклов передачи данных и при включении питания генерируется пакет, определяющий состояние системы. Пакет содержит следующие данные:
Пакет, определяющий что система работает нормально:
0xA5, 0x00, 0xAA,0xAA
Пакет, определяющий что есть ошибки системы:
0xA5, 0x00, 0xFF, 0xFF
Для сброса флагов переполнения и отключения светодиодов используется пакет, отсылаемый с компьютера. Данный пакет содержит следующие данные:
Заголовок пакета – байты 0xAA,0x00
Байт, определяющий сбрасываемые флаги. Единица в соответствующем бите указывает, что данный флаг должен быть сброшен.
CRC, равное предыдущему байту, поскольку байт всего один.