суббота, 8 ноября 2014 г.

Опыт 3: фоторезистор и сервопривод

Немного теории (не от меня)

Двигатели постоянного тока (ДПТ) с постоянными магнитами Lenze начинают работать сразу, как только к якорной обмотке будет приложено постоянное напряжение. Переключение направления тока через обмотки ротора осуществляется механическим коммутатором — коллектором. Постоянные магниты при этом расположены на статоре.

Шаговые электродвигатели (Шаговый Двигатель ) может быть рассмотрен как ДПТ без коллекторного узла. Обмотки ШД являются частью статора. На роторе расположен постоянный магнит или, для случаев с переменным магнитным сопротивлением, зубчатый блок из магнитомягкого материала. Все коммутации производятся внешними схемами. Обычно система мотор — контроллер разрабатывается так, чтобы была возможность вывода ротора в любую, фиксированную позицию, то есть система управляется по положению. Цикличность позиционирования ротора зависит от его геометрии.

В кратце от себя: шаговый двигатель - двигатель, который крутится не постоянно, а поворачивается на заданный угол.

Опыты

Сервопривод и Ethernet

Для начала воспользуемся нашем предыдущим скетчом для работы с сетью. Немного модернизируем его, для полуения данных по протоколe UDP.

Скетч (показать/скрыть)

Теперь нам нужно его немного поменять, для того, чтобы при приёме данных по сети происходил поворот на заданный угол.

atoi(packetBuffer)
atoi - функция перевода строки в число. С помощью этой функции мы переведем полученную по сети строку в число и зададим угол поворота.

Также ещё нужно подключить необходиме библиотеки и инициализировать сервопривод.
Итого имеем следующее:

Скетч (показать/скрыть)

Фоторезистор

Теперь поэксперементируем с фоторезистором. Будем использовать его для получения данных об освещенности в помещении. Напишем простой пример, в котором будем получать данные с фоторезистора и по результатам зажигать светодиод.

Скетч (показать/скрыть)

Фоторезистор и сервопривод

Теперь совместим оба эксперимента в один. Будем управлять сервоприводом по данным с фоторезистора. Логику я решил сделать такой: выбрал минимальную и максимальную освещенность (выводил данные в консоль), по этим данным будем задавать минимальный максимальный угол поворота. Разница между этими значениями - разница угла поворота. Отсюда считаем шаг соответствия уровня освещенности и угла поворота серво привода:

    if (sensorValue<400){
   gradServo = 0;
    } else if (sensorValue<760){
   gradServo = (sensorValue-400)/2;
    } else {
   gradServo = 180;
    }
  

Итого

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

Скетч (показать/скрыть)

Комментариев нет:

Отправить комментарий