Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplom3 / DIPLOM / ZAPISKA / ZAPISKA.DOC
Скачиваний:
55
Добавлен:
16.04.2013
Размер:
113.15 Кб
Скачать

Блок-схема алгоритма программы.

Применение микроконтроллера предполагает, что рассмотренная выше структурная схема должна быть запрограммирована. Разработку программы будем вести в соответствии со структурной схемой. Это возможно благодаря наличию у микропроцессора множества линий ввода/вывода. Прежде всего разделим их на группы, которые будут служить для связи со структурными блоками. Точное разбиение на группы показано на принципиальной схеме. Программу можно представить в виде совокупности блоков - программных модулей, каждый из которых выполняет отдельную функцию.

Синтаксис большинства ассемблеров позволяет включать в тело одного программного модуля ссылки на другие модули. Хотя не существует общего стандарта, но в соответствии с принятым в С-компиляторах обозначением #include подобная команда используется и в ассемблерах. Поэтому возможно разместить программный код, реализующий функции различных структурных блоков в разных файлах поддерживая приведенную на схеме иерархию. Основной программный модуль соотнесем с микроконтроллером и будем подключать к нему исполнительные функциональные модули.

Назовем основной модуль по имени устройства с расшифровкой относительно используемого микроконтроллера. Например, для PIC1400 название будет состоять из сокращения UKT38 и кода 14: ukt38_14.asm. Компиляция этого модуля приведет к образованию загрузочного модуля ukt38_14.hex, содержащего двоичный код программы, записываемый в микроконтроллер при программировании памяти программ. Четырем блокам, представленным на схеме, соответствуют следующие программные модули:

  1. adc.asm - модуль управления подключением датчиков, измерениями. Модуль выполняет аналого-цифровое преобразование сигнала датчика в код для последующей обработки.

  2. display.asm - интерфейс дисплея и исполнительных органов.

  3. rs232.asm - последовательный интерфейс PC.

  4. mcl_i2cf.asm - интерфейс ППЗУ.

Помимо функциональных модулей в состав программы входят следующие библиотеки подпрограмм:

  1. constant.inc - базовый набор констант и макроопределений устройства;

  2. mac14000.inc - набор специфических констант и макроопределений PIC14000;

  3. digits.inc - набор кодов семисегментного индикатора;

  4. bin2bcd.asm - библиотека двоично-десятичной арифметики;

  5. fplib.asm - библиотека функций плавающей арифметики;

  6. fp_aux.asm - дополнительные функции обработки чисел с плавающей точкой;

  7. keys.asm - ядро обработчика сигналов клавиатуры.

Вторая функция, которую выполняет главный модуль, это управление квантованием времени. Квант времени определяется минимальным интервалом времени, который может пройти между выполнениями операций процессора. В случае регулятора температуры временная зависимость присутствует в блоках АЦП, индикатора, последовательного интерфейса. В процессоре PIC14000 реализован интегрирующий АЦП с минимальным временным интервалом АЦП - 20 мс. Минимальный временной интервал индикатора - обновление - 1 с. Минимальный временной интервал интерфейса ПЭВМ - синхронизация на скорости 4800 бод - 208 мкс.

Управление квантованием осуществляется путем программирования прерывания от аппаратного таймера микроконтроллера. Зададим время генерации прерывания 208 мкс. Все другие отсчеты получим, организуя на его основе программные счетчики.

АЦП.

АЦП PIC14000 является точным линейным аналого-цифровым преобразователем. Метод линейного преобразования особенно подходит к прикладным программам, в которых относительно длительное время (порядка нескольких миллисекунд) преобразования может быть приемлемо. PIC14000 использует цифровой метод интегрирования для устранения многих из погрешностей и сложностей, связанных с аналоговым интегратором.

Для вычисления измеряемого аналогового напряжения используется следующее уравнение:

Vin=(Nin/Nbg)´Kbg,

где Nin - счет для выбранного входа;

Nbg - счет для опорного напряжения;

Kbg - абсолютное значение опорного напряжения, хранимое в ЭСПЗУ микроконтроллера.

Данное уравнение предполагает, что начальное напряжение пилы (V0) равняется нулю при измерении как входного, так и аналогового напряжений. Однако, практически конденсатор нельзя разрядить полностью после очередного измерения, и заряд в несколько милливольт, называемый напряжением смещения, может остаться на конденсаторе. Это явление называется диэлектрической абсорбцией емкости и его эффект изменяется в зависимости от материала диэлектрика, напряжения, до которого конденсатор был заряжен и от времени разрядки. Наименьшей абсорбцией обладают тефлоновые конденсаторы, полистирольные и полиэтиленовые тоже очень хороши. Керамика, стекло и мика неплохие, а танталовые и электролитические плохо подходят для аналогово-цифровых преобразований.

В дополнение, компаратор (который сравнивает напряжение пилы с входным напряжением и останавливает таймер, когда напряжения равны) обычно имеет ошибку смещения в несколько милливольт. Это напряжение смещения компаратора добавляется к смещению из-за диэлектрической абсорбции. Наконец, счетчик длительности нарастания пилы может иметь небольшие постоянные задержки включения и выключения, которые в той же мере, как и смещения, влияют на измерение.

Для того, чтобы вычислить точное значение входного напряжения, необходимо учесть различные напряжения смещения в уравнении. Для этого они объединяются и измеряются.

Для этого в PIC14000 предназначены два опорных напряжения на пиле. Отношения этих значений известно и его можно использовать для вычисления общего напряжения смещения.

Это осуществляется путем выполнения преобразования обоих опор пилы, и использованием упрощенной калибровочной константы для отношения этих величин и вычислением напряжения смещения как счета смещения. Этот счет смещения затем используется в других уравнениях.

Для вычисления используется уравнение нахождения координаты нуля прямой по двум известным точкам:

Noffset=Nreflo - Kref´(Nrefhi - Nreflo),

где

  • Nreflo - код нижней опорной точки;

  • Nrefhi - код верхней опорной точки;

  • Kref=Sreflo/(Srefhi - Sreflo) - калибровочный коэффициент;

  • Srefhi - нижнее опорное линейное напряжение;

  • Sreflo - верхнее опорное линейное напряжение.

Выражение для преобразованного напряжения:

Vin = Kbg ´(Nin - Noffset)/(Nbg - Noffset)

Учитывая смещение в вычислении Vin, коды входного канала и опоры компенсируются таким образом, как будто преобразование действительно происходило от нуля вместо некоторого напряжения смещения.

Для выполнения преобразования выполняются следующие шаги:

  • измерение напряжений опорной линии Sreflo и Srefhi;

  • выполнение преобразования при подключенном измеряемом напряжении канала;

  • вычислении реального напряжения.

Поскольку схема измерения спроектирована таким образом, что измерение также производится по относительной схеме, можно не учитывать калибровочный коэффициент. Он не влияет на результат измерения. Это еще раз наглядно демонстрирует универсальность алгоритма вычисления напряжения температурного канала в предлагаемом устройстве.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в папке ZAPISKA