Программа Сервисный Центр
0

Программная библиотека управления пятью сервоприводами на микроконтроллере ATtiny45/85


Проект демонстрирует возможность управления пятью сервоприводами с помощью лишь одного микроконтроллера Atmel AVR ATtiny45 или ATtiny85. Так как готовых подобных решений не было найдено для данных микроконтроллеров и использовать микроконтроллеры с большим количеством выводов не хотелось, автор решил написать собственную библиотеку управления.
Программная библиотека управления пятью сервоприводами на микроконтроллере ATtiny45/85
Библиотека получила имя Servo8Bit, она поддерживает работу с 5 сервоприводами на микроконтроллере ATtiny45 и ATtiny85, из ресурсов микроконтроллера использует только 8-разрядный таймер. С ее помощью можно генерировать импульсы управления серво длительностью от 512 до 2560 мкс с 8-битным разрешением (256 значений) и, самое главное, данная библиотека очень проста в использовании. ATtiny85 это 8-выводный не дорогой микроконтроллер с богатой периферией. В сети Интернет имеется несколько решений для управления сервоприводами, однако некоторые имеют недостаточное разрешение, другие рассчитаны на микроконтроллеры с большим количеством выводов и используют в своей работе 16-битный таймер. Библиотека написана по образцу библиотеки Arduino для управления сервоприводом и имеет идентичный интерфейс. Для компиляции используется WinAVR. Вот короткий пример программы, демонстрирующий, как использовать библиотеку Servo8Bit. #include "Servo8Bit.h"
int main()
{
Servo8Bit myServo; //создаем объект myServo
//максимальное количество - 5 сервоприводов
myServo.attach(1); //подключаем серво к порту PB1
//управление сервоприводом
while(1)
{
for(int pos = 0; pos < 180; pos++) // меняем положение от 0 градусов до 180 градусов
{ // с шагом 1 градус
myServo.write(pos); // команда сервоприводу установки штока в позицию 'pos'
delay(15); // ждем 15 мс пока сервопривод отработает команду
}
for(int pos = 180; pos > 1; pos--) // меняем положение шткоа от 180 градусов до 0 градусов
{
myServo.write(pos); // команда сервоприводу установки штока в позицию 'pos'
delay(15); // ждем 15 мс пока сервопривод отработает команду
}
}
} В данном примере опущено определение функции delay(), которая необходима, т.к. используются временные задержки в тексте программы. В секции загрузок имеется сама библиотека и полная программа-пример для управления серводвигателем. Библиотека содержит несколько функций. Рассмотрим их назначение. функция attach() – функция, назначающая переменной Servo вывод микроконтроллера для управления сервоприводом. Например, myServo.attach(1) – порт микроконтроллера PB1 используется для управления сервоприводом; функция write() – запись значения в градусах в сервопривод, соответственно управление исполнительным механизмом сервопривода, т.е. поворот штока сервопривода на заданную величину; функция writeMicroseconds() – запись значения в микросекундах в сервопривод, соответственно управление валом сервопривода; функция read() - функция предназначена для получения информации о текущем положении вала сервопривода (это значение функция получает с последнего вызова функции write()); функция attached() – проверяется назначен ли переменной Servo вывод микроконтроллера; функция detach() – отключение переменной Servo от вывода микроконтроллера. Когда назначается вывод микроконтроллера для управления сервоприводом - функция attach(), на этом выводе микроконтроллера начинается генерация управляющего ШИМ сигнала. Функция detach() останавливает генерацию ШИМ сигнала, т.е. после выполнения данной фуннкци указанный в функции порт микроконтроллера не будет использоваться для управления сервоприводом. Для повторного включения потребуется вызов функции attach(). Управляющий сигнал – это импульсный сигнал с ШИМ (широтно-импульсной модуляцией), представляющий собой последовательность прямоугольных импульсов с амплитудой 3 В - 5 В и длительностью от 0.9 до 2.1 мс. Собственно длительность импульса в ШИМ сигнале и определяет положение исполнительного механизма. Минимальное значение – означает разворот в крайнее левое положение, среднее – центральное положение штока, а максимальное значение – крайнее правое положение. Однако существуют некоторых различия управляющих параметров, в зависимости от модели сервопривода. По умолчанию, это команда сервоприводу для перемещения в среднее положение. Пользователь управляет сервоприводом посредством функции write() с числом в диапазоне от 0 до 180. Это число – положение штока сервопривода в градусах. Микроконтроллер формирует в соответствии с этим значением нужный ШИМ сигнал. Так как выпускаются различные модели сервоприводов и параметры у них разные, то обязательно потребуется конфигурирование – изменение длительности импульсов ШИМ сигнала. С этой целью возможно использование функции write() с несколькими аргументами:  write(pin, min, max), где, pin – вывод микроконтроллера, предназначенный для управления сервоприводом, min – минимальное значение длительности импульса для генерации команды установки штока в положение 0 градусов, max – максимальное значение длительности импульса для генерации команды установки штока в положение 180 градусов. Значения по умолчанию – 544 мкс и 2400 мкс. Кроме того, возможно использование функции writeMicroseconds() для ручной установки длительности импульса. Ограничение текущей версии библиотеки: работает только с микроконтроллером ATtiny45 и ATtiny85. Возможно библиотека будет работать и с другими микроконтроллерами AVR, но автором это проверено не было; поддерживается работа только с 5 сервоприводами*; работа возможна только при тактовой частоте 8 МГц; подключение сервоприводов возможно только на порт B микроконтроллера (это один порт доступный в ATtiny45/85); используется 8-битный таймер микроконтроллера Timer0, возможность выбора другого таймера имеется, но слишком затруднена настройка в этом случае. * драйвер можно легко сконфигурировать для работы с более чем 5 сервоприводами, см. комментарии в тексте программной библиотеки. В планах: поддержка различных тактовых частот; поддержка конфигурирования таймера для использования драйвером сервопривода. Демонстрация работы Загрузки
Программная библиотека Servo8bit, make-файл, пример программы – скачатьНа английском языке: ATtiny45/85 Servo LibraryПеревод: Vadim по заказу РадиоЛоцман

По материалам сайта www.rlocman.ru

Также рекомендуем:

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (7)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"