Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Подключение сервомотора к мобильнику за 5 минут


Из прошлых выпусков рассылки вы узнали, как написать свое приложение для Android и с помощью телефона управлять настольной лампой. Сейчас займемся работой с портом аналогового ввода для подключения датчиков и ШИМ выходом для управления, например, сервомотором.

Сначала небольшое видео:

всего на плате IOIO предусмотрено 16 аналоговых входов и 9 выходов, работающих в режиме ШИМ. Благодаря удобным библиотекам, доступ к ним не составляет никакого труда даже для начинающего программиста, не знакомого с языком Java.

1. Работа с аналоговым выходом

Работа с аналоговым входом начинается с инициализации командой

input_ = ioio_.openAnalogInput(40);

Эта команда определяет, что 40 ножка платы IOIO должна работать в режиме аналогового входа.

Для чтения из порта служат две команды

reading = input_.getVoltage();

или reading = input_.read();

getVoltage() возвращает реальное значение напряжения на входе – величину в пределах от 0 до 3.3 В с точностью примерно 3 мВ. Команда read() возвращает относительную величину в пределах от 0 до 1. Обратите внимание, что не стоит подавать на вход напряжение больше чем 3.3 В - последствия для контроллера могут быть необратимы.

Существующая версия прошивки IOIO и библиотеки позволяют читать данные из порта ввода с частотой 1 кГц. Это не свойство железа – теоретический предел скорости измерений порядка 500 кГц – а результат текущей реализации софта. В будущих версиях автор платы обещает сделать частоту получения данных управляемой.

Если ваше приложение требует, что бы все отсчеты сохранялись – например, для построения точного графика - существует возможность буферизации входных данных.

2. Управление сервомотором

вы, конечно, знаете, что такое ШИМ - управление. И управлять таким образом можно не только сервомотором, но и решать многие другие задачи - регулировать скорость вращения коллекторного двигателя, яркость горения светодиодной ленты и т.д. Сервомотор взят для примера только потому, что для его управления не нужно больше никакой электроники.

Чтобы заставить выход платы IOIO работать в режиме ШИМ, нужно написать две строки кода:

Инициализация (12 ножка работает в режиме ШИМ, с частотой 100 Гц)

pwmOutput_ = ioio_.openPwmOutput(12, 100);

И задание ширины импульса, для сервомоторов эта величина обычно бывает в пределах от 500 до 2500 мкс.

pwmOutput_.setPulseWidth(width); // width – ширина импульсов в миллисекундах.

Для собственных экспериментов вы можете скачать готовый apk (40 ножка – вход, 12 – выход) или исходники программы.

У вас еще нет платы IOIO, или нужны датчики/шасси/контроллеры – вам сюда.

В следующих выпусках рассылки - попробуем подключить к телефону манипулятор и управлять им с помощью программного джойстика, использовать встроенные в телефон датчики и многое другое.

До встречи через неделю,

Сергей.


В избранное