Введение:
Одной из широко распространенных задач, в практике применения микропроцессорных устройство является генерация элементарных сигналов. Зная принципы работы микропроцессорных систем и способы их применения в решении всевозможных задач, нельзя не иметь представления о том, как можно с помощью микроконтроллера, параллельного порта ввода-вывода и цифроаналогового преобразователя cгенерировать сигнал.
Задачу можно решить многими способами: эти способы различаются по следующим характеристикам:
? объем аппаратных дополнений, применяемых к существующей микропроцессорной системе, стоимость дополнений,
? загруженность процессора, алгоритмическая сложность,
? точность результата,
? гибкость перестройки под другие параметры.
В работе приведен простой в применении и поэтому часто употребимый на практике способ генерации синусоидальных колебаний средствами микропроцессорной системы, далее рассмотрены его достоинства и недостатки и приведены другие способы генерации сигналов.
В виде примера рассматривается генерация гармонических колебаний с частотой 1,5 кГц, не смещенных по оси ординат относительно нуля, и амплитуда колебаний сигнала должна составить 1,5 В.
Основная часть:
Напомним задачу: требуется генерировать синусоидальный сигнал с амплитудой 1,5 В и частотой 1,5 кГц, используя микропроцессорную систему. Смещение по оси напряжений отсутствует.
Никаких дополнительных требований к быстродействию микропроцессора и параллельному выполнению задач не выдвигалось, также не выдвигалось требований к точности, поэтому имеет смысл ограничиться дешевым маломощным микроконтроллером серии Microchip PIC, например, PIC16F873 и задать частоту дискретизации сигнала всего в 10 раз большую частоты генерации сигнала. Таким образом, на один период синусоиды приходится всего 10 равноотстоящих значений функции времени.
На практике используются разные способы получения значений отсчетов сигнала:
? расчет с помощью ряда,
? расчет с помощью кусочно-линейной интерполяции,
? расчет с помощью приближенного полинома второго, либо третьего порядка (погрешность около 1 %),
? использование заранее рассчитанных значений.
Последнее приемлемо именно для этой системы, так как микроконтроллер очень ограничен в вычислительных ресурсах, и любые вычислительные операции могут отразиться на скорости и точности генерации сигнала. Генерация периодических сигналов упрощается при наличии целого числа отсчетов для одного периода сигнала; при воспроизведении сигнала на преобразователь поочередно подаются отсчеты периода сигнала.
Как уже упоминалось выше, в качестве цифро-аналогового преобразователя используется так называемая резисторная матрица R — 2R [1]. Идеальная резисторная матрица с бесконечно малыми погрешностями номиналов работает так, что в случае обычных значений напряжений, используемых при эксплуатации микросхем с ТТЛ (5 В — логическая единица, около 0 В — логический ноль), число, 2n ? 1, которое подано на нее (n — разрядность ЦАП), приводит к появлению на выходе ЦАП пятивольтового уровня, число 0, поданное на резисторную матрицу R — 2R, соответствует нулевому значению на выходе, а всем остальным числам, поданным на входы ЦАП можно поставить в соответстветствия напряжения из промежутка 0...5 В.
Контроллер PIC16F873 [3] имеет восьмиразрядные порты ввода-вывода, один из этих портов следует отвести для подключения цифроаналогового преобразователя, Встроенный таймер контроллера следует настроить так, чтобы один раз в 1/15000 секунды он посылал сигнал на прерывание, подпрограмма обработки которого выдавала бы очередное значение на выход цифроаналогового преобразователя. Подключение ЦАП к контроллеру показано на рисунке 3.