Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
7.5. Парящий робот
7.5.1. Описание проекта
Летающий робот, разработку которого мы собираемся обсудить — это парящий робот, который может зависать непосредственно над областью, представляющей интерес, пока не выполнит всю необходимую работу. За последние двадцать лет рядом исследователей в университетах и научно-исследовательских лабораториях были изучены и разработаны летающие роботы различных размеров и форм для ряда применений. Одни использовали при этом существующие образцы самолетов и вертолетов, другие изобретали механические системы с машущим крылом, третьи использовали дирижабли. Все эти усилия были предприняты из-за огромных выгод, которые сулят такие роботы в военных и промышленных применениях, включая исследование отдаленных планет, внутреннее и наружное наблюдение, распознавание и локализация целей при военных действиях.
Опишем сначала общие характеристики системы, составляя список требований к проекту, а затем представим проект парящего робота, удовлетворяющий всем этим требованиям. Описание системы включает в себя описание конструкции устройства, структуру программы, и блок-схему алгоритма. После этого приводится пример программы на языке Си.
Цель этого проекта состояла в том, чтобы разработать и изготовить автономную систему парящего робота, управляемую микроконтроллером 68HC9S12. Наиболее трудным аспектом системы является проблема стабильного положения робота, которое должно постоянно поддерживаться контроллером. На рис. 7.21 показана фотография робота на базе парящей рамы. Этот проект был создан студентом старших курсов.
Рис. 7.21. Робот на базе парящей рамы
Чтобы обеспечить работоспособность проекта, мы должны сначала определить все требования к системе. При создании проекта необходимо решить ряд сложных проблем, в числе которых: создание прочной, но легкой летающей рамы, которая удовлетворяла бы летным требованиям, выбор и размещение датчиков, выбор привода пропеллеров, проектирование системы питания и решение задачи стабилизации положения.
Парящий робот должен удовлетворять следующим общим требованиям:
1. Быть автономным;
2. Иметь рабочую область размером 16×16 футов. (40,6×40,6 см);
3. Весить не больше, чем 2,5 фунта (1,14 кг);
4. Обладать собственными средствами взлета и посадки;
5. Использовать двигатели постоянного тока;
6. Поднимать до 4,5 фунтов (2,05 кг), включая собственный вес;
7. Поддерживать постоянную высоту парения;
8. Осуществлять движение во всех направлениях;
9. Избегать препятствий;
10. Иметь энергонезависимую память данных;
11. Стоить не более $500,00.
7.5.2. Системы HCS12 используемые в проекте
В этом проекте будут использоваться следующие под системы HCS12:
• Подсистема входного захвата таймера;
• Модуль АЦП;
• Подсистема ШИМ.
7.5.3. Теоретическое обсуждение
Для парящего робота была разработана простая воздушная рама, подобная существовавшему ранее покупному радиоуправляемому устройству, показанному на рис. 7.21. Она собрана из четырех стержней, скрепленных в центре рамы, имеющей форму креста. К каждому концу стержня прикреплен двигатель постоянного тока и механизм привода для пропеллера. Два соседних пропеллера вращаются во встречных направлениях, чтобы предотвратить рыскание рамы, при этом два пропеллера вращаются по часовой стрелке, а два других — против часовой стрелки. В обычных вертолетах встречное вращение обеспечивается хвостовым пропеллером.
Для управления использовалась T-плата компании ImageCraft с МК семейства HCS12 (рис. 7.22). Частота тактирования МК равна 25 МГц, резидентная Flash-память программ МК равна 256 Кб, оперативная память — 12 Кб и энергонезависимая память данных типа EEPROM — 4 Кб. Для бортовой схемы весьма желательна миниатюризация платы. Для управления двигателями постоянного тока используется встроенный модуль ШИМ. Пьезогирометрические датчики для трех осей вращения обеспечивают изменение углов тангажа, крена и рыскания для управления парящим роботом. Выходы гиродатчика поданы на вход таймера МК и используются, чтобы корректировать скорости вращения всех четырех двигателей парящего робота. В дополнение к гиродатчикам, на роботе установлены четыре инфракрасных датчика. Они обнаруживают преграды, когда робот приближается к стенкам или препятствиям. Выходы датчиков поданы на входной порт АЦП, их сигналы обеспечивают выбор алгоритма управления полетом, позволяющего избежать столкновений со стенками или препятствиями.
Рис. 7.22. Плата с МК НCS12
В качестве гиродатчиков используются три пьезогиродатчика GYA350 компании Futaba. Мы выбрали эти датчики, поскольку они специально предназначены для авиамоделей. Датчик весит 26 г и размещается в корпусе 27 мм×27 мм×20 мм. Он обеспечивает сигналы ШИМ частотой 55 Гц, при этом изменение ширины импульса указывает направление движения датчика и, следовательно, направление движения парящего робота. Этот гиродатчик может также работать в режиме поддержки заданного направления (режим heading-hold), при котором микроконтроллер может определить ширину импульса на выходе датчика летящего робота. При использовании функции входного захвата таймера, робот проверяет направление, оценивая выходные ШИМ сигналы гиродатчиков.
В дополнение к гиродатчикам робот использует для измерения расстояния четыре инфракрасных пары передатчик/приемник GP2D12 фирмы Sharp, чтобы избежать столкновения с любыми объектами. Эти датчики могут обеспечивать диапазон выходных напряжений, соответствующих расстоянию обнаружения от 10 до 80 см. Эти напряжения преобразуются в соответствующие цифровые значения с помощью модуля ATD микроконтроллера. Датчик легок и размещается в корпусе 45 мм×14 мм×20 мм.
Для взлета использовались четыре двигателя постоянного тока Graupner Speed300, питающиеся от постоянного напряжения 6 В. Каждый двигатель весит 50 г при диаметре вала в 2 мм и потребляемом токе до 5 A. На валу двигателя установлена маленькая пластмассовая шестерня, которая приводит во вращение большую шестерню на оси пропеллера, как показано на рис. 7.21.
7.5.4. Структура программы и блок-схема алгоритма
Схема подключения на рис. 7.23 показывает связи компонентов парящего робота с контроллером. На рис. 7.24 схематично показана конструкция робота со всеми компонентами. Обратите внимание, что ШИМ-сигналы регулирующие скорость вращения подаются на ИС силового коммутатора, которая обеспечивают достаточный ток для двигателей постоянного тока. Чтобы обеспечить питание системы используется несколько батарей. Сигналы поступают в МК от датчиков, а выходные сигналы МК управляют ИС коммутаторов двигателей.
Рис. 7.23. Схема подключения управляющих компонентов парящего робота
Рис. 7.24. Диаграмма движения робота со всеми бортовыми компонентами
На рис. 7.25 представлена структура программы для парящего робота, в которой показаны направления потоков данных между программными модулями. На рис. 7.26 показана блок-схема алгоритма программы для управления роботом.
Рис. 7.25. Структура программы парящего робота
Рис. 7.26. Блок-схема алгоритма программы парящего робота
7.5.5. Программный код
В этом разделе, мы представляем программу для управления парящим роботом на языке Си. Программа была первоначально написана Джоулом Перлином, одним из наших студентов, и скорректирована авторами настоящей книги.
//********************************************************************
// filename: flying.с
// Описание программы: Эта программа запускает четыре двигателя и затем
// управляет скоростью вращения каждого из них. После взлета робота
// программа проверяет каждый из датчиков для определения положения
// робота. При обнаружении преграды или крыши, скорости вращения двигателей
// корректируются, чтобы обеспечить правильное направление движения.
//
// Авторы: Джоэль Перлин, Даниэль Пак, Стив Барретт
// Дата создания: 27 июля 2004
// используемая память: программа - 0x1000, данные - 0x3000 и
// стек - 0x4000
//********************************************************************
#include <stdio.h>
#include "hcs12dp256.h"
#pragma abs_address 0x3000
unsigned int count1; //счетчики переменных
unsigned int count2;
unsigned int sensor;
char sensoravg; //сохраняют данные датчиков в виде 8-разрядных чисел