В первой части мы рассмотрели схему оптического сенсора, посредством которого осуществляется бесконтактный метод измерения скорости вращения, а также исследовали работу схемы преобразования и согласования сигнала с фотодиода.
Как было замечено в первой части, основой конструкции является отладочная плата StartUSB с установленным микроконтроллером PIC18F2550. Отличительной особенностью платы StartUSB for PIC является то, что установленный на плату микроконтроллер имеет предустановленный USB загрузчик, что исключает необходимость в использовании дополнительного программатора. Кроме того, компания mikroElektronika предоставляет бесплатную программу USB загрузчика для персонального компьютера, с помощью которой пользователь сможет без труда запрограммировать микроконтроллер. USB загрузчик для микроконтроллера (firmware) также предоставляется.
Для внутрисхемного программирования и отладки ПО микроконтроллера, например при самостоятельной сборке платы, пользователи могут использовать программатор PICFlash2 после установки соответствующего коннектора на отладочную плату (посадочные места имеются).
Принципиальная схема отладочной платы StartUSB
Подключение датчика и двухстрочного ЖК индикатора необходимо провести в соответствии со схемой, представленной ниже.
Индикатор в нашем устройстве работает по 4-битной шине данных. Выводы данных D4-D7 (11-14) подключаются к контактам отладочной платы RB4-RB7 (это и есть линии порта ввода/вывода микроконтроллера) соответственно. Сигналы управления индикатора RS (4 вывод) и E (6 вывод) подключены к RC6 и RC7.
Управление ИК светодиодом датчика осуществляется по линии RA3, выход схемы согласования подключается к RA4 (вход T0CKI таймера микроконтроллера).
Микроконтроллер работает на частоте 48 МГц используя внутренний PLL.
Модуль Таймера 0 (Timer0) микроконтроллера можно сконфигурировать в 8- или 16-битный режим. Управление таймером осуществляется при помощи регистра T0CON, функции каждого бита регистра показаны на рисунке ниже.
Для нашего случая Timer0 нужно сконфигурировать как 16-битный счетчик, чтобы подсчитывать количество импульсов, поступающих на вход RA4/T0CKI. Счетчик будет активирован на 1 секунду и количество импульсов, поступивших за этот интервал, сохраняется. Далее это значение умножается на 60, чтобы получить количество оборотов в минуту. Без прерывания Timer0 в 16-битном режиме веет счет до 65535, что соответствует 3932100 оборотов в минуту. В нашем проекте предел измерений ограничен значением 99960.
Таким образом, для нашей задачи мы должны произвести следующие изменения в регистре T0CON:
- сбросить (установить 0) бит T08BIT (16-битный режим) и бит T0SE (инкремент при переходе от высокого уровня в низкий на входе T0CKI);
- установить бит T0CS (режим счетчика) и бит PSA (без предделителя).
Для написания программы микроконтроллера использовался компилятор mikroC. Программа несложная, в ней реализуется настройка портов ввода/вывода и встроенного таймера. Интерфейс ЖК индикатора реализуется с помощью встроенной в компилятор библиотеки функций.
Конструкция бесконтактного тахометра на микроконтроллере PIC
Следует заметить, что функциональность устройства может быть расширена за счет включения функции сбора данных, что позволит отслеживать скорость вращения деталей, и полученные данные передать по интерфейсу USB в компьютер для обработки.
Загрузки
Исходный код программы микроконтроллера (mikroC) - скачать