Сервомашинка своими руками

Содержание

Настольная робо-рука манипулятор из оргстекла на сервоприводах своими руками или реверс-инжиниринг uArm

Сервомашинка своими руками

Привет, гиктаймс!

Хочу поделиться с вами результатами реверс-инжиниринга uArm – простого настольно манипулятора из оргстекла на сервоприводах.

Проект uArm от uFactory собрал средства на кикстартере уже больше двух лет назад. Они с самого начала говорили, что это будет открытый проект, но сразу после окончания компании они не торопились выкладывать исходники. Я хотел просто порезать оргстекло по их чертежам и все, но так как исходников не было и в обозримом будущем не предвиделось, то я принялся повторять конструкцию по фотографиям. Сейчас моя робо-рука выглядит так:

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

Пробы и ошибки

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

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

Как правило, механика которую я рисовал до манипулятора, была достаточно простая, и мне не приходилось задумываться о процессе сборки.

Но все-таки я его собрал и попробовал запустить, И рука почти не двигалась! Все детли крутились вокруг винтов и, сли я затягивал их так, чтобы было меньше люфтов, она не могла двигаться. Если ослаблял так, чтобы она могла двигаться, появлялись невероятные люфты.

В итоге концепт не прожил и трех дней. И приступил к работе над второй версией манипулятора. Красный был уже вполне пригоден к работе. Он нормально собирался и со смазкой мог двигаться.

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

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

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

Итак, сейчас вся механика полностью отлажена, устраивает меня и готов заявить, что больше ничего не хочу менять в этой конструкции: Меня удручает то, что я не смог привнести ничего принципиально нового в проект uArm. К тому времени, как я начал рисовать финальную версию, они уже выкатили 3D-модели на GrabCad. В итоге я только немного упростил клешню, подготовил файлы в удобном формате и применил очень простые и стандартные комплектующие.

Особенности манипулятора

До появления uArm, настольные манипуляторы подобного класса выглядели достаточно уныло. У них либо не было электроники вообще, либо было какое-нибудь управление с резисторами, либо было свое проприетарное ПО.

Во-вторых, они как правило не имели системы параллельных шарниров и сам захват менял свое положение в процессе работы.

Если собрать все достоинства моего манипулятора, то получается достаточно длинный список:

  1. Система тяг, позволяющих разместить мощные я тяжелые двигатели в основании манипулятора, а также удерживающие захват параллельно или перпендикулярно основанию
  2. Простой набор комплектующих, которые легко купить или вырезать из оргстекла
  3. Подшипники почти во всех узлах манипулятора
  4. Простота сборки. Это оказалось действительно сложной задачей. Особенно трудно было продумать процесс сборки основания
  5. Положение захвата можно менять на 90 градусов
  6. Открытые исходники и документация. Все подготовлено в доступных форматах. Я дам ссылки для скачивания на 3D-модели, файлы для резки, список материалов, электронику и софт
  7. Arduino-совместимость. Есть много противников Arduino, но я считаю, что это возможность расширения аудитории. Профессионалы вполне могут написать свой софт на C — это же обычный контроллер от Atmel!

Механика

Для сборки необходимо вырезать детали из оргстекла толщиной 5мм: … и 3мм: С меня за резку всех этих деталей взяли около $10. Основание монтируется на большом подшипнике: Особенно трудно было продумать основание с точки зрения процесса сборки, но я подглядывал за инженерами из uArm.

Качалки сидят на штифте диаметром 6мм. Надо отметить, что тяга локтя у меня держится на П-образном держателе, а у uFactory на Г-образном. Трудно объяснить в чем разница, но я считаю у меня получилось лучше. Захват собирается отдельно. Он может поворачиваться вокруг своей оси.

Сама клешня сидит прямо на валу двигателя: В конце статьи я дам ссылку на суперподробную инструкцию по сборке в фотографиях. За пару часов можно уверенно все это скрутить, если все необходимое есть под рукой. Также я подготовил 3D-модель в бесплатной программе SketchUp.

Её можно скачать, покрутить и посмотреть что и как собрано.

Электроника

Чтобы заставить руку работать достаточно всего навсего подключить пять сервоприводов к Arduino и подать на них питание с хорошего источника. У uArm использованы какие-то двигатели с обратной связью.

Я поставил три обычных двигателя MG995 и два маленьких двигателя с металлическим редуктором для управления захватом.

Тут мое повествование тесно сплетается с предыдущими проектами.

С некоторых пор я начал преподавать программирование Arduino и для этих целей даже подготовил свою Arduino-совместимую плату. С другой стороны как-то раз мне подвернулась возможность дешево изготовить платы (о чем я тоже писал).

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

Этот шилд на самом деле очень простой. На нем четыре переменных резистора, две кнопки, пять разъемов для сервопривода и разъем питания. Это очень удобно с точки зрения отладки. Можно загрузить тестовый скетч и записать какой-нибудь макрос для управления или что-нибудь вроде того. Ссылку для скачивания файла платы я тоже дам в конце статьи, но она подготовлена для изготовления с металлизацией отверстий, так что мало пригодна для домашнего производства.

Читайте также  ЗУ для пальчиковых аккумуляторов своими руками

Программирование

Самое интересное, это управление манипулятором с компьютера. У uArm есть удобное приложение для управления манипулятором и протокол для работы с ним. Компьютер отправляет в COM-порт 11 байт. Первый из них всегда 0xFF, второй 0xAA и некоторые из оставшихся — сигналы для сервоприводов.

Далее эти данные нормализуются и отдаются на отработку двигателям. У меня сервоприводы подключены к цифровым входам/выходам 9-12, но это легко можно поменять. Терминальная программа от uArm позволяет изменять пять параметров при управлении мышью.

При движении мыши по поверхности изменяется положение манипулятора в плоскости XY. Вращение колесика — изменение высоты. ЛКМ/ПКМ — сжать/разжать клешню. ПКМ + колесико — поворот захвата. На самом деле очень удобно.

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

работы

И, наконец, само видео работы манипулятора. На нем показано управление мышью, резисторами и по заранее записанной программе.

Ссылки

Файлы для резки оргстекла, 3D-модели, список для покупки, чертежи платы и софт можно скачать в конце моей основной статьи.
Подробная инструкция по сборке в фотографиях (осторожно, траффик).

  • робо-рука
  • манипулятор
  • uArm. servo
  • сервопривод
  • Arduino

Источник: https://habr.com/post/387875/

Управление сервоприводом (сервомашинкой) с помощью микроконтроллера ATMega

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

Как устроена сервомашинка

Большинство сервоприводов используют три провода для работы. Провод для питания, обычно 4.8В или 6В, общий провод (земля) и сигнальный провод. Управляющий сигнал передает информацию о требуемом положении выходного вала.

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

Чем выше напряжение питания сервопривода, тем быстрее он работает и больший момент развивает.

Характеристики сервоприводов

Размер и вес

Размеры бывают: “микро”, “мини”, “стандартный” и “гигант”. В пределах каждого класса размеры могут немного меняться. Средние размеры сервоприводов для справки:

  • Микро: 24мм x 12мм x 24мм, вес: 5-10 г.
  • Мини: 30мм x 15мм x 35мм, вес 25 г.
  • Стандарт: 40мм x 20мм x 37мм, вес: 50-60 г.

Скорость

Скорость сервоприводов измеряется временем поворота качалки сервопривода на угол 60 градусов при напряжении питания 4.8В и 6В. Например, сервопривод с параметром 0.22с/60° при 4.

8В поворачивает вал на 60 градусов за 0.22с при напряжении питания 4.8В. Это не так быстро, как может показаться. Наиболее быстрые сервоприводы имеют время перемещения от 0.06 до 0.09с.

Угол поворота

Сервоприводы могут иметь угол поворота вала 60, 90, 180 градусов. Угол поворота ограничивается электроникой и механически. Существуют сервоприводы без ограничения, т.е. вращающиеся на 360 градусов.

Если у Вас имеется сервопривод с рабочим диапазоном 60 градусов, то расширить его можно только изменив конструкцию сервомашинки. Иногда можно увеличить диапазон специальным образом исказив управляющий сигнал.

Но это нестандартный и ненадежный способ.

Момент на валу

Момент сервопривода измеряется по весу груза в кг, который сервопривод может удерживать неподвижно на качалке с плечом 1 см. Указывают две цифры, для напряжения питания 4.8В и 6В.

Например, если указано, что сервопривод развивает 10кг/см, значит, что на качалке длиной 1см сервопривод может развить усилие 10 кг, прежде чем остановится.

Для качалки в 2см такой сервопривод сможет развить усилие 5кг, а на 5мм 20кг.

Цифровые и аналоговые сервоприводы

Цифровые и аналоговые сервоприводы механически не отличаются друг от друга. У них те же корпуса, моторы, шестеренки и даже потенциометры. Все дело в способе управления мотором.

Цифровые сервоприводы более точны и, как правило, имеют меньшее время реакции. Но они потребляют больше энергии, чем аналоговые сервоприводы.

Управляющий сигнал для аналоговых и цифровых сервоприводов одинаков.

Управляющий сигнал

Управляющий сигнал представляет собой импульсы переменной ширины. Импульсы повторяются с постоянной частотой (как правило, с частотой 50Гц). Положение сервопривода определяется шириной импульса.

Для типичного сервопривода, используемого в радиоуправляемых моделях, длительность импульса в 1500 мкс означает, что сервопривод должен занять среднее положение.

Увеличение или уменьшение длины импульса заставит сервопривод повернуться по часовой или против часовой стрелки, соответственно.

Таким образом, для управления сервоприводом нам потребуется формировать ШИМ с частотой 50 герц. При этом для положения “0” длительность импульса должна составлять 1000 микросекунд, а для положения “максимум” – 2000 микросекунды. Среднее положение – 1500 микросекунд.

Схема сервотестера

Финалом наших изысканий будет плата сервотестера, работающая с двумя сервоприводами. Светодиоды отображают режим сервотестера.

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

Управляющие сигналы для сервоприводов формируются на ногах OC1A, OC1B.
Режимы переключаются кнопкой. Три светодиода отображают режим работы сервотестера.

  • Режим 1 – положение сервомашинок задается потенциометром
  • Режим 2 – задается среднее положение сервоприводов
  • Режим 3 – задающий сигнал циклически изменяется от одного крайнего положения к другому.

Питание сервотестера осуществляется от батарей напряжением 6..12В.

Печатная плата

Файл печатной платы в формате lay можно скачать в конце статьи.
Скачать плату, прошивку, исходный код

Исходный код

#include #include #include //=================================== АЦП ==================================//Инициализация АЦП:void adc_init(void){ ADCSRA = _BV(ADEN) | _BV(ADPS0) | _BV(ADPS1) | _BV(ADPS2); // prescaler = 128} //Чтение канала АЦП:uint32_t adc_read(uint8_t ch){ ADMUX = _BV(REFS0) | (ch & 0x1F); // set channel (VREF = VCC) ADCSRA &= ~_BV(ADIF); // clear hardware «conversion complete» flag ADCSRA |= _BV(ADSC); // start conversion while(ADCSRA & _BV(ADSC)); // wait until conversion complete return ADC; // read ADC (full 10 bits);} int main() { char mode=0; // Режим — по умолчанию 0 int direct=0; uint16_t adc_result; #define ICR_MAX F_CPU/50 // ICR1(TOP) = fclk/(N*f) ; N-Делитель; f-Частота; 1000000/1/50 = 20000 #define OCR_MIN ICR_MAX/20 #define OCR_MAX ICR_MAX/10 #define OCR_CENTER (ICR_MAX/4/10)*3 // На порту кнопки включаем подтягивающий резистор DDRB &= ~(1

Источник: http://www.avislab.com/blog/serva/

Постройка самолета из потолочки. Установка аппаратуры

ЛМ-17 уже построен и летает, а я все еще никак не соберусь описать процесс постройки до конца. Главным образом потому, что занят еще одним авиамодельным проэктом. Ну та ладно — сейчас то вы это читаете, а это значит, что таки заставил себя что-то описать.

В процессе завершения работ над ЛМ-17 вспомнил, что у меня есть комплект колес, фиксаторов и 2мм стальная проволка. поэтому я пошел еще дальше, чем было запланировано — я сделал самолету шасси. Знаю, что это не слишком честно, но повторюсь — ЛМ-17 весьма отлично летает при запуске с рук.

(Кстати, никто не мешает шасси установить и вам тоже, для этого необязательны хорошие колеса и специальные фиксаторы.)

Читайте также  Вертикальный ленточный станок по дереву своими руками

Установка мотора на самолет из потолочки

В тестовой версии этого самолета (и в маленьком биплане так же) я крепил мотораму при помощи клея (эпоксидка-пятиминутка или ППУ). Выглядело это не очень красиво и не технологично. На этот раз мы пойдем другим путем. Нам нужна будет деревянная линейка, болтики 2мм (4 шт.) и болтики 2 или 3мм (4шт).

Еще нужна будет дрель и что-то, чем можно отрезать куски линейки (лобзик, пилка). Если не хотите заморачиватся изготовлением деревянной моторамы — можете так же воспользоваться клеем.  Вот схематический рисунок моторамы.Из схемы видно, что нам нужны куски линейки длиной в 50 и 44 мм (т.е.

один кусок — под размер самого первого шпангоута фюзеляжа) — другой кусок под размер второго (внутреннего) шпангоута фюзеляжа (50мм — 2х3мм = 44мм — учитываем толщину потолочки).

В центре переднего куска линейки (тот что 50мм) помимо восьми отверстий под болты нужно еще просверлить отверстие диаметром где то в 7-8мм (чтобы вал мотора не касался линейки и не клинил).

Расположение отверстий на схеме показано схематично — 4 отверстия под крепления мотора — размечаются по отверстиям в самом моторе (прикладываем крестовину к линейке и размечаем). Сначала крепим мотор болтами к переднему куску линейки, потом передний и задний кусок скрепляем между собой болтами — сквозь два слоя потолочки.

Никакого клея не нужно. Это позволит потом без проблем разобрать мотораму.Проблема вибраций и соответственного самораскручивания гаек может быть решена двумя способами: либо пользуемся локтайтом (просто наносим маленькую (а то потом не раскрутите) капельку на резьбу — и закручиваем гайку), либо ставим контргайку. Вместо локтайта можно залить резьбу, например термоклеем.

Установка кабанчиков и сервомашинок на самолет из потолочки

Забавно, но я и тут отступил от плана — вместо трех сервомашинок установил две. (а все потому, что мне срочно нужен был хоть какой нибудь летающий самолет — а ЛМ-17 был в состоянии — «еще 20мин работы и готово»). По этой же причине — я не пользовался хорошими фиксаторами тяг, а воспользовался обычными скрепками.

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

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

Но сначала нужно было установить кабанчики на элероны и руль высоты. Тут есть два способа, одним из которых я ни разу не пользовался   Один — посадить кабанчики на клей (эпоксидку-пятиминутку), второй — воспользоваться шурупами. Я постоянно клею кабанчики эпоксидкой. Быстрее и меньше мороки.

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

Дело в различной ориентации осей вращения сервомашинки и оси вращения рулевых поверхностей. Для руля высоты — сервомашинка будет устанавливаться на киль, поэтому эти две оси будут параллельны. А вот для элеронов между осями угол в 90 градусов. Хм.

Давайте я фотку лучше сделаю А вот еще и видео

Отверстие под сервомашинку нужно прорезать меньше чем сама сервомашинка. Тогда при вставке туда сервомашинки — края потолочки деформируются и весьма надежно зафиксируют ее.

Думаю — лучше потренироваться на кусках потолочки, но при этом обтяните эти куски скотчем.
Можете нанести полимерный клей на место крепления.

Через сутки — сервомашинка будет очень прочно сидеть на своем месте.

Чтобы долго не расписывать, привожу фотографию организации сервопривода элеронов. Согласен, тяги весьма неряшливы. Но у меня есть оправдание, помните? — крайне срочно нужен был самолет.

У меня и обтяжка не очень аккуратная… Кстати, фотография делалась уже после полетов — обратите внимание на клеевой шов на правом элероне
Когда будете устанавливать сервомашинку элеронов, то не забудьте про линейку внутри крыла. Ее, думаю, лучше не пилить

Провод сервомашинки пропускаем внутрь фюзеляжа. Для сервомашинки руля высоты — можно было конечно пропустить сервоудлинитель внутри фюзеляжа, но.

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

Для меня это было неактуально. Следующий самолет будет более продуман. Надеюсь

Постройка самолета из потолочки:

1. Необходимые для постройки материалы.
2. Чертежи
3. Перенос чертежей на потолочку
4. Склейка. и Как правильно клеить потолочку полимерным клеем
5. Список необходимой аппаратуры
6. Окончание постройки корпуса
7. Установка аппаратуры
8. Настройка аппаратуры. и Описание программы t6config

Источник: http://luckytech.ru/lm-17-6.html

Z- Motor Servo Shield своими руками

15.12.2014 21:20:00

Z- Motor Servo Shield DIY — это плата расширения для Arduino UNO и совместимых. Позволит управлять двумя коллекторными двигателями либо одним биполярным шаговым с потреблением до 600мА, а также подключить до четырех сервоприводов с суммарным потреблением до 3 Ампер. 

Является обновлением Motor Shield L293D и имеет ряд улучшений.

Стабилизатор серво части L7805 (5В, 1А) заменен на LM338T с выходным током до 3 Ампер и регулируемым выходным напряжением, которое задается перестановкой джампера (всего 3 варианта: 5, 6 или 7 Вольт).

 На Шилд добавлен разъем для подключения блютуз модуля, оставлены такие плюшки как: дублирующие гребенки на разъемах подключения моторов, индикаторный светодиод 13pin с возможностью включения/отключения. Мотор часть осталась без изменения. 

Встречайте Z-Motor Servo Shield.

Принципиальная схема: diy-z-motor-servo-shield-schematics

Основные технические характеристики:

• Напряжение питания силовой части: 4.5 — 12В

• Количество каналов драйвера L293D: 2

• Максимальный ток на канал драйвера: 600мА

• Ток стабилизатора серво части: 3A

Задействуемые пины Arduino:

Выводы отвечающие за направление вращения двигателей:

(I1) Цифровой вывод 7 — DC Мотор №1
(I2) Цифровой вывод 4 — DC Мотор №2

Выводы отвечающие за скорость вращения двигателей:

(E1) Цифровой вывод с поддержкой ШИМ 5 — DC Мотор №1
(E2) Цифровой вывод с поддержкой ШИМ 3 — DC Мотор №2

Выводы вынесенные на гребенку для подключения сервоприводов

Цифровые выводы 6, 9, 10, 11.

В случае, если вы не подключаете сервоприводы, данные выводы можно использовать как обычные цифровые пины, а гребенку для подключения как трехпиновые разъемы G V S для подключения датчиков, модулей и т.п. В таком случае необходимо установить джампер выбора питания в положение +5V

Подготовка к работе, источники питания

На плате шилда имеется джампер, соединяющий вывод M+ клеммника внешнего питания силовой части и вывод VIN платы Arduino.

Замыкая и размыкая данный джампер можно переводить платы на режимы питания от одного источника или раздельного от разных источников.

Читайте также  Как сделать латр своими руками

Питание от одного  источника

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

Рекомендуемое напряжение для стабилизатора на плате Arduino лежит в пределах 6 … 12 В. Ниже 6 В — стабилизатор может не выдавать необходимые 5 В для работы Arduino, а выше 12 В — может перегреться и сгореть.

Отталкиваясь от этих характеристик, напряжение для обобщенного питания будет лежать в пределах 6 … 12В.

Для питания от одного источника необходимо замкнуть джампер как показано на рисунке.

Питание от отдельных источников

Для питания от отдельных источников необходимо снять джампер.

Полезная информация

Не всегда аккумуляторная батарея либо батарейки справляется с задачей объединенного питания. При включении моторов возможна просадка напряжения, которая в свою очередь приведет к перезагрузке контроллера.

 Для уменьшения просадки напряжения на линии питания моторов установлен конденсатор большой емкости.

В случае если ваша батарея не сможет справиться с питанием и моторов и Arduino, то воспользуйтесь раздельной схемой питания.

1.1 Для самодельных плат на базе ATmega 8

Итак, моторами M1 и M2 управляют два отдельных канала микросхемы L293D. Для управления M1 служат выводы I1 и E1, для M2 выводы I2 и E2.

«I» отвечают за направление вращения, а выводы «E» отвечают за вкл/выкл и скорость вращения моторов. Однако у контроллеров ATmega8 (самый дешевый камень для DIY поделок) цифровые выводы 5 и 3 не имеют поддержи ШИМ. В связи с этим на них получится вращать моторы только на максимальной скорости. 

На примере одного канала (для второго будет идентично), для начала, рассмотрим самый простой пример 

//Тестировалось на Arduino IDE 1.0.5#define I1 7 // Вывод I1 подключен к пину 7#define E1 5 void setup(){  pinMode (I1, OUTPUT); // Задаем работу выводов в качестве выходов  pinMode (E1, OUTPUT);} void loop(){  digitalWrite (I1, HIGH); // На вывод I1 подан положительный сигнал, мотор вращается в одну сторону  digitalWrite (E1, HIGH); // На вывод ENABLE подан высокий логический уровень, вращение разрешено на максимальной скорости  delay(1000); // Ждем 1 сек    digitalWrite (I1, HIGH);   digitalWrite (E1, LOW); // На вывод ENABLE подан низкий логический уровень, вращение запрещено  delay(1000);     digitalWrite (I1, LOW); // На вывод I1 подан отрицательный сигнал, мотор вращается в другую сторону  digitalWrite (E1, HIGH); // На вывод ENABLE подан высокий логический уровень, вращение разрешено на максимальной скорости  delay(1000);     digitalWrite (I1, LOW);   digitalWrite (E1, LOW); // На вывод ENABLE подан низкий логический уровень, вращение запрещено  delay(1000);}

1.2 Для всех остальных плат выше ATmega 8

Платы на базе ATmega 168, 328, 2560 т.е. все платы Arduino выпускаемые на данный момент в серийном производстве имеют ШИМ на выводах 3 и 5. Изменяя скважность ШИМ сигнала подаваемого на выводы E1 и E2 мы сможем регулировать скорость моторов. 

В программном коде он будет задаваться функцией

analogWrite (E1, число от 0 до 255);

//Тестировалось на Arduino IDE 1.0.5#define I1 7 // Вывод I1 подключен к пину 7#define E1 5 void setup(){  pinMode (I1, OUTPUT); // Задаем работу выводов в качестве выходов  pinMode (E1, OUTPUT);} void loop(){  digitalWrite (I1, HIGH); // На вывод I1 подан положительный сигнал, мотор вращается в одну сторону  analogWrite (E1, 0); // Значение ШИМ минимальное, двигатель не вращается  delay(1000);   digitalWrite (I1, HIGH);   analogWrite (E1, 100); // Значение ШИМ равно 100, двигатель вращается с медленно   delay(1000);   digitalWrite (I1, HIGH);   analogWrite (E1, 170); // Значение ШИМ равно 170, двигатель вращается с быстрее   delay(1000);   digitalWrite (I1, HIGH);   analogWrite (E1, 255); // Значение ШИМ максимальное, двигатель вращается на максимальной скорости   delay(1000); }

2 Шаговые моторы

//Тестировалось на Arduino IDE 1.0.

5#include #define STEPS 50 // количество шагов на 360 градусов (из документации к шаговику)// задаем пины которые будут программно чередоваться, без использования 74HC00 их будет 4Stepper stepper(STEPS, 4, 7); void setup() {  pinMode(5, OUTPUT); // вывод отвечающий за ENABLE  pinMode(3, OUTPUT); // вывод отвечающий за ENABLE  stepper.setSpeed(20); //скорость поворота шагового двигателя  pinMode(13, OUTPUT);  digitalWrite(13, HIGH); // индикация включения} void loop(){  // делаем один оборот  digitalWrite(5, HIGH); // разрешаем вращение мотора  digitalWrite(3, HIGH); // разрешаем вращение мотора  stepper.step(1*STEPS); // делаем оборот  delay(1);  digitalWrite(5, LOW); // запрещаем подачу напряжения на мотор  digitalWrite(3, LOW); // запрещаем подачу напряжения на мотор   delay(1000);   /* делаем один оборот назад */  digitalWrite(5, HIGH); // разрешаем вращение мотора  digitalWrite(3, HIGH); // разрешаем вращение мотора  stepper.step(-1*STEPS); // делаем оборот в обратном направлении  delay(1);  digitalWrite(5, LOW); // запрещаем подачу напряжения на мотор  digitalWrite(3, LOW); // запрещаем подачу напряжения на мотор   delay(1000); }

3 Сервоприводы

Сервоприводы бывают с различными размерами, характеристиками, а главное с разными рабочими напряжениями. Чаще всего они лежат в диапазоне от 5 до 7 вольт.

На плате Z-MSShield для питания сервоприводов можно выбрать 3 варианта выходного напряжения (5, 6 либо 7 Вольт),  Для корректной работы стабилизатора, входное напряжение должно быть на 2 вольта выше выходного.

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

Для работы с сервоприводами размера «mini», к примеру 9G рекомендуемое напряжение 5 вольт, а для мощных сервоприводов размера «standart» и «big», к примеру MG995, установите джампер в положение «6 или 7 Вольт» в зависимости от параметров сервопривода.

//Тестировалось на Arduino IDE 1.0.5#include  Servo myservo; void setup() {   // устанавливаем пин как вывод управления сервой   myservo.attach(11);} void loop() {    // устанавливаем угол 0°   myservo.write(0);   delay(2000);  // устанавливаем угол 90°   myservo.write(90);   delay(2000);  // устанавливаем угол 180°   myservo.write(180);   delay(2000);}

Итоговый тест-драйв

// Тестировалось на Arduino IDE 1.0.

5#include  Servo myservo6;Servo myservo9;Servo myservo10;Servo myservo11;#define I1 7#define I2 4#define E1 5#define E2 3 void setup(){  digitalWrite (13, HIGH);  delay(1500);   pinMode (E1, OUTPUT);  pinMode (E2, OUTPUT);  pinMode (I1, OUTPUT);  pinMode (I2, OUTPUT);  digitalWrite (E1, LOW);  digitalWrite (E2, LOW);   myservo6.attach(6);  myservo9.attach(9);  myservo10.attach(10);  myservo11.attach(11);} void loop(){  ///// Тестируем моторы  digitalWrite (I1, HIGH);  digitalWrite (I2, HIGH);  for (int i = 40; i < 255; i++)  {    analogWrite (E1, i);    analogWrite (E2, i);    delay(20);  }  for (int i = 255; i > 0; i—)  {    analogWrite (E1, i);    analogWrite (E2, i);    delay(20);  }  digitalWrite (E1, LOW);  digitalWrite (E2, LOW);  delay(1000);   ///// Тестируем сервоприводы  myservo6.write(0);   delay(800);   myservo6.write(90);   delay(800);   myservo6.write(180);   delay(800);  myservo6.write(90);   delay(800);   myservo6.write(0);   delay(800);     for (int i = 0; i < 170; i++)  {    myservo6.write(i);     myservo9.write(i);     myservo10.write(i);     myservo11.write(i);     delay(30);  }  for (int i = 170; i > 0; i—)  {    myservo6.write(i);     myservo9.write(i);     myservo10.write(i);     myservo11.write(i);     delay(30);  }      delay(3000);}

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

При подключении питания соблюдайте полярность. Неправильное подключение может вывести из строя платы или источник питания.

Не прикасайтесь руками к драйверу двигателей и стабилизатору напряжения в процессе работы двигателей и сервоприводов,  они могут сильно нагреваться. Прикосновение может привести к ожогу.

В архиве лежит шаблон под ЛУТ, Eagle файлы  и список деталей

Открываем изображение => Печать => Во всю страницу

Для облегчения распайки smd компонентов с обратной стороны платы, где нет маркировки, приведу картинку. Хочется отметить, что на smd конденсаторах нет маркировки номиналов, но на картинке они нанесены. 104 — 0,1 мкФ.

Монтаж стабилизатора на плату

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

Источник: http://zelectro.cc/DIY_Z-Motor_Servo_Shield

Понравилась статья? Поделить с друзьями: