Представленный ниже программируемый генератор прямоугольных импульсов реализован с помощью встроенного ШИМ модуля микроконтроллера PIC16F628A. Скважность и частота импульсов генератора загружаются с компьютера любой терминальной программой, умеющей работать в hex-режиме, причём загруженные данные можно сохранять в EEPROM контроллера, после чего генератор можно использовать автономно.
Максимальная частота нашего генератора равна Fosc/4, а минимальный шаг по ширине импульса равен Tosc (здесь Fosc{Tosc} — это частота {период} тактового генератора контроллера). Минимальная частота генератора равна Fosc/16384. Разрешение генератора может составлять от 2-х до 10 бит, в зависимости от частоты, и рассчитывается по следующей формуле: R=log(Fosc/Fгенер)/log(2). (Формулы для расчёта частоты и длительности импульса генератора смотрите в документации на контроллер или в статье про управляющую программу для него).
Таким образом, в случае использования внутреннего источника тактового сигнала контроллера (4МГц), максимальная частота генератора равна 1 МГц, а минимальный шаг по ширине импульса равен 0,25 мкс (соответственно, разрешение при максимальной частоте составляет 2 бита). Минимальная частота генератора при тактовой частоте контроллера 4 МГц будет всего 244 Гц, правда, с учётом максимального разрешения 10 бит, шаг по ширине импульса при этом будет составлять 4 мкс.
Итак, схема:
![]() Как видите — деталей минимум. Собственно, это две микросхемы: контроллер PIC16F628A и преобразователь интерфейсов MAX232, а так же шесть конденсаторов: С1…С5 — 1 мкФ, С6 — 0,1 мкФ. Насчёт конденсаторов обвязки MAX232 (C1..C5) можете почитать здесь. Линии CTS/RTS были добавлены в схему для возможности аппаратного контроля передачи данных, если же аппаратный контроль использоваться не будет, то эти линии смело можно из схемы выкинуть. |
Готовый девайс:
![]() |