Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
2. Опишите на двух страницах методы проектирования, позволяющие минимизировать чувствительность к помехам.
3. Изучите рекомендации от IEC 6100–4–2 до 6100–4–9. Кратко опишите каждое испытание.
Глава 7
ПРИМЕРЫ ВСТРОЕННЫХ СИСТЕМ УПРАВЛЕНИЯ
ПОСЛЕ ИЗУЧЕНИЯ ГЛАВЫ ВЫ СМОЖЕТЕ:
• Применить структурный системный подход к проектированию встроенных микроконтроллерных систем;
• Создать детальное описание проекта;
• Выбрать модули в составе 68HC12, необходимые для конкретного применения;
• Описать структуру программного обеспечения встроенной микроконтроллерной системы, используя структуру программы и блок-схему алгоритма;
• Написать программу на языке Си для конкретного приложения.
Представим себе красивый, старинный дубовый сундучок для инструментов, подобный показанному на рис. 7.1. Каждая его секция разбита на отделения, для хранения ценных инструментов в каждом из лотков. На каждом из войлочных лотков аккуратно написано название инструмента. В том же лотке хранится также и инструкция по применению инструмента. В предыдущих главах мы описывали аппаратные средства, программное обеспечение, и средства разработки систем. Именно они и лежат в этом «сундучке» инструментов, позволяющих разрабатывать, производить и внедрять встроенные системы управления. В этой главе мы покажем на различных примерах, как разрабатываются встраиваемые микроконтроллерные системы. Мы тщательно выбрали проекты, чтобы показать, как используются подсистемы МК 68HC12 и HCS12 для выполнения разнообразных задач. Методы совместного использования этих периферийных модулей мы покажем на ряде примеров. Для каждого такого примера, мы приведем детальное описание проекта, список используемых в нем подсистем 68HC12, краткие основы теории, если это необходимо, детальную структуру программы, сопровождаемую блок-схемой алгоритма и хорошо документированным программным кодом. Будут рассмотрены следующие примеры применения:
• Система привода для робота, движущегося вдоль стенок лабиринта;
• Лазерный проектор;
• Цифровой вольтметр;
• Система стабилизации скорости вращения двигателя с оптическим тахометром;
• Парящий робот;
• Система защиты от несанкционированного внедрения на базе нечеткой логики;
• Электронная версия популярной игры в «15».
Рис. 7.1. Старинный сундук, с несколькими ящиками. В лотки ящиков мы уложили инструментальные средства, рассмотренные в предшествующих главах
В конце главы мы рассмотрим также процедуру программирования Flash-памяти с помощью отладочной платы «B32».
7.1. Система привода робота, движущегося вдоль стенок лабиринта
7.1.1. Описание проекта
В техническом задании на этот проект, предлагается разработать автономный робот, который мог бы проходить через неизвестный лабиринт. Робот должен двигаться через лабиринт, находя стенки лабиринта с помощью инфракрасных (ИК) локаторов (пар излучатель-приемник), и принимая решения, продвигаться вперед или назад, чтобы продолжить путь через лабиринт. При своем движении робот должен также избегать «мин» (магнитов), скрытых в полу лабиринта. Робот обнаруживает «мины» с помощью датчика Холла. Если робот обнаруживает «мину», то он останавливается, дает задний ход и объезжает ее.
Конструкция робота приведена на рис. 7.2. Корпус его состоит из двух легких связанных вместе алюминиевых платформ. На нижней платформе расположены два двигателя постоянного тока, приводящие в движение два больших колеса, установленных с обеих сторон корпуса. При использовании этой конструкции с двумя колесами, робот может управляться подобно танку. То есть, чтобы выполнить поворот по часовой или против стрелки на двигатели подаются сигналы. Два маленьких ролика с обеих сторон от робота используются, чтобы обеспечить его равновесие и устойчивость. Находясь в покое, робот опирается на три точки. На верхней платформе установлены пять ИК пар излучатель-приемник, которые позволяют роботу обнаружить стенки прямо перед собой и с любой стороны от корпуса. Верхняя платформа содержит также отладочную плату с микроконтроллером 68HC12, которая используется, чтобы принимать входные сигналы, вырабатывать решения, основанные на этих сигналах, и формировать сигналы управления двигателями для реализации этих решений. На нижней пластине робота установлен датчик Холла, позволяющий обнаруживать магнитные «мины».
Рис. 7.2. Робот, движущийся вдоль стенок лабиринта
Робот оборудован двумя основными колесами, с приводом от двигателей постоянного тока. Когда робот движется вперед, он постоянно следит за положением стенок, используя инфракрасные локаторы (пары излучатель-приемник), и за «минами», скрытыми в полу, с помощью датчика Холла.
Чтобы начать движение через неизвестный лабиринт, робот помещается вблизи от его входа. Предназначение робота состоит в том, чтобы проходить через лабиринты, избегая столкновения со стенками и контакта с «минами», скрытыми в полу. Робот едет вперед, когда на оба двигателя поступает одинаковое постоянное напряжение. Когда робот движется вперед с помощью двигателей постоянного тока, он непрерывно проверяет свое положение относительно стенок и магнитов с помощью пяти ИК локаторов и датчика Холла.
Стенки лабиринта окрашены белой краской с высоким коэффициентом отражения, чтобы ИК-сигналы, поступающие от источников, отражались от стенок обратно на приемники. Если робот приближается к стенке, то ее присутствие обнаруживается соответствующим ИК локатором. Например, если робот приближается к углу, расположенному с правой стороны (см. рис. 7.3), то передняя стенка обнаруживается передним локатором, а правая — правым локатором. Робот затем отвечает на принятые им входные сигналы, поворачивая влево, чтобы избежать столкновения со стенками.
Рис. 7.3. Робот, разработанный, чтобы обнаруживать близлежащие стенки
При использовании пяти инфракрасных датчиков, робот готовится сделать левый поворот, избегая стенок, расположенных спереди и справа
Естественная реакция разработчика, получившего задание на столь сложный проект — это паника. Однако если мы используем нисходящее проектирование, мы сможем разбить общее техническое задание на частные требования, выполняемые отдельными подсистемами. Начнем с создания списка функций, требуемых операционной системе робота для выполнения всех его задач. Эти задачи сводятся к следующим:
• Аналого-цифровое преобразование выходных сигналов ИК-датчиков;
• Создание алгоритма поворота робота, позволяющего определить, в каком направлении он должен повернуть в ответ на сигналы ИК-датчиков;
• Разработка функций управления приводом, осуществляющих движение робота вперед и назад и повороты влево или вправо;
• Создание механизма для обработки выходных сигналов датчика Холла;
• Обеспечение функции, позволяющей останавливаться, давать задний ход и обходить обнаруженную «мину»;
• Отображение выполняемых функций на символьном ЖК индикаторе.
7.1.2. Подсистемы 68HC12, используемые в проекте
По списку требуемых функций мы можем определить, какие периферийные модули МК 68HC12 необходимо использовать и какие другие внешние устройства будут необходимы для решения нашей задачи. К используемым устройствам и системам относятся:
• Датчики ИК-излучения и датчики Холла;
• Модуль аналого-цифрового преобразования ATD в составе МК 68HC12 для оцифровки сигналов инфракрасных датчиков и датчика Холла;
• Модуль ШИМ МК 68HC12 для модуляции ширины импульса;
• Интерфейс сопряжения МК с ЖК дисплеем;
• Интерфейс сопряжения МК с ИК-датчиками;
• Интерфейс сопряжения МК с датчиком Холла;
• Интерфейс драйвера двигателя;
• Аккумуляторные батареи, для питания двигателей, датчиков, и отладочной платы MC68HC912B32EVB.
7.1.3. Компоненты системы
Убедимся сначала, что на рынке имеются инструментальные средства, позволяющие выполнить весь список требуемых функций. В предыдущих главах (уложенных в наш сундучок) мы рассматривали следующие компоненты:
• Модуль АЦП в составе МК семейства 68HC12;
• Модуль ШИМ в составе МК семейства 68HC12;
• Интерфейс и программное обеспечение ЖК дисплея;
• Интерфейс драйвера двигателя;
• Батарею для питания системы.
Если вы еще не познакомились с этими устройствами и подсистемами МК, вернитесь к соответствующим главам. Мы же остановимся на двух темах, которые не рассматривали ранее: на паре излучатель-приемник, образующей ИК-локатор, и на датчике Холла.