sonyps4.ru

Управление сервоприводом без микроконтроллера. Подключение сервоприводов к Arduino

  • Перевод

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

Сначала Лоуренс Краусс выпустил новую книгу "Вселенная из ничего. Почему не нужен Бог, чтобы из пустоты создать Вселенную " (основанную, в частности, на популярной лекции, доступной на YouTube), освещающую этот вопрос с точки зрения современного космолога. Затем Дэвид Альберт, современный философ науки, составил разгромную рецензию книги для New York Times. Это обсуждение с тех пор продолжается: интервью Джерри Койн (на стороне Альберта), блог "Философия космологии " Рутгерса, большое интервью с Крауссом в The Atlantic, комментарии Массимо Пиглюччи , ещё один ответ Краусса на сайте Scientific American.

По личным и научным причинам я тоже собирался вставить своё мнение. Происхождение Вселенной – одна из тем моей работы , а Лоуренс и Дэвид – мои друзья и партнёры по блогу. Статья будет большой, поэтому приведу краткое содержание. Грубо говоря, вокруг проблемы «почему что-то существует?» скапливается два вида вопросов. Один из видов, базирующийся на платформе физических законов, достаточно гибкой для того, чтобы позволить существование «чего-то» или «ничего» (причём в понятие «что-то» могут входить и время и пространство), звучит как: почему в истинном проявлении реальности существует всякое? Другой вид вопросов связан с тем, почему у нас есть данная конкретная платформа физических законов, или вообще нечто под названием «физические законы»?

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

Затем обсуждение быстро скатывается до обвинений и рассуждений не о том, а жаль, поскольку эти люди умные и соглашаются по поводу 95% интересных проблем, и шансы на продуктивный диалог постоянно уменьшаются.

Как работает Вселенная

Поговорим о том, как на самом деле устроена физика, по нашим понятиям. Со времён Ньютона парадигма фундаментальной физики не менялась; в неё входит три части. Первое – «пространство состояний»: по сути, список всех возможных конфигураций, в которых может находиться Вселенная. Второе - определённое состояние, представляющее Вселенную в какой-то момент времени, обычно в текущий. Третье – некое правило, по которому Вселенная развивается во времени. Дайте мне Вселенную на сегодня, и законы физики скажут, что станет с ней в будущем. Такой способ мышления не менее верен для квантовой механики или ОТО или квантовой теории поля, чем для ньютоновой механики или максвелловской электродинамики.

Квантовая механика, в частности - особенная, но очень многосторонняя реализация этой схемы. (Квантовая теория поля – просто определённый пример квантовой механики, а не новый способ мышления). Состояния – это «волновые функции», а набор всех возможных волновых функций определённой системы называется "гильбертовым пространством ". Его преимущество в том, что оно сильно ограничивает набор возможностей (потому что это векторное пространство: замечание для экспертов). Как только вы сообщите мне его размер (количество измерений), вы полностью определите ваше Гильбертово пространство. Это кардинально отличается от классической механики, в которой пространство состояний может стать чрезвычайно сложным. А ещё есть машинка – "гамильтониан " – указывающая, как именно развиваться из одного состояния в другое с течением времени. Повторюсь, что разновидностей гамильтонианов бывает не много; достаточно записать определённый список величин (собственных значений энергии – уточнение для вас, надоедливые эксперты).

Необходимо непредвзято подходить к тому, какую форму примут итоговые законы физики, но почти все современные попытки их вывести принимают квантовую механику за истину. Это верно и для теории струн, и для других подходов к квантовой гравитации – они могут очень сильно отличаться во взглядах на то, из чего состоит «пространство-время» или «материя», но очень редко небрежно обращаются с основами квантовой механики. Это однозначно относится ко всем вариантам, которые рассматривает Лоуренс в своей книге. На этой платформе определение «законов физики» – вопрос выбора гильбертова пространства (для чего, в свою очередь, нужно только определить его размер) и гамильтониана. Одно из прекрасных свойств квантовой механики – насколько она ограничительная; у нас нет большой свободы выбора из видов законов физики. Кажется, что существует большой простор для творчества, поскольку гильбертово пространство может быть очень большим, а простая сущность гамильтониана может быть скрыта нашим усложнённым взаимодействием с окружающим миром, но основной рецепт остаётся неизменным.

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

Возможность первая: время фундаментально

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

Так как это относится к вопросу «нечто против ничто»? В процессе эволюции квантового состояния Вселенной она может проходить через фазы, в которых она очень похожа на ничто в общепринятом смысле – то есть, как пустое пространство, или как странная негеометрическая фаза, в которой мы бы вообще не распознали пространство. Позже, посредством неустанного влияния гамильтониана, она может эволюционировать во что-то, что очень похоже на «нечто», даже очень похожее на ту вселенную, что мы видим сегодня. Поэтому если для вас «ничто» – это «пустота» или «отсутствие пространства», то законы квантовой механики дают удобный способ понять, как ничто может превратиться в чудесное нечто, внутри которого мы обнаруживаем себя. Это интересно, и важно, и достойно написания книги, и это одна из возможностей, которую обсуждает Лоуренс.

Возможность вторая: время вторично / приблизительно

Вторая возможность состоит в том, что Вселенная вообще не эволюционирует – гамильтониан нулевой, пространство возможных состояний существует, но мы просто сидим в нём неподвижно, без фундаментального «течения времени». Вы можете решить, что эта возможность логическая, но не правдоподобная; ведь разве мы не видим, как всё вокруг нас всё время меняется? Но именно в эту возможность вы немедленно уткнётесь, если просто возьмёте классическую ОТО и попытаетесь её квантовать (то есть, изобрести квантовую теорию, сходящуюся к ОТО в классическом пределе). Мы не знаем, правильно ли это – Том Бэнкс, к примеру, считает , что нет – но эта возможность существует, поэтому нам надо подумать о том, что это могло бы значить, если бы оказалось правдой.

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

Именно такой вариант имеют в виду такие квантовые космологи, как Джеймс Хартл, Стивен Хокинг, Алекс Виленкин, Андрей Линде и другие, говоря про «создание Вселенной из ничего». В этом представлении в истории Вселенной буквально существует момент, до которого других моментов не существовало. Есть граница времени (предположительно, перед Большим взрывом), до которой не было ничего. Ни вещества, ни квантовой волновой функции; не было ничего предыдущего, поскольку понятие «пред-» не имеет смысла. Это тоже интересно, важно, и об этом стоит написать книгу, и это ещё одна из возможностей, о которых рассуждает Лоуренс.

Почему вообще существует Вселенная?

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

Так на что же нам жаловаться? Если подумать, то такие рассуждения, если принять некое конкретное определение понятия «ничего», могут объяснить, как Вселенная может возникнуть из ничего. Но они не объясняют, и даже не пытаются объяснить, почему нечто существует – почему эта эволюция волновой функции, или почему даже вся эта система «волновых функций» и «гамильтонианов» будет верным способом рассуждать о Вселенной. И, может, вам не интересны эти вопросы, и никто не вправе отнимать у вас права ими не интересоваться; но если подзаголовок вашей книги гласит «почему существует нечто, а не просто нет ничего», вы, по сути, отказываетесь от права не интересоваться этим.

Помогает ли нам развитие современной физики и космологии подойти к этим вопросам о том, почему вообще существует нечто под названием «вселенная», почему существуют такие вещи, как «законы физики», почему эти законы принимают вид квантовой механики, почему именно такая волновая функция и гамильтониан? Коротко говоря, нет. Мне неясно, как они бы могли это сделать.

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

Призывы к простоте тут тоже не помогают. Вселенная могла бы быть единственной точкой, не меняющейся во времени. Или единым осциллятором, бесконечно колеблющимся туда и сюда. Это было бы очень просто. Как-нибудь может появиться некое определение простоты, по которому наши законы окажутся простейшими, но всегда будут другие, по которым они не такие. В любом случае, мы тогда могли бы задать вопрос, почему законы должны быть простыми? Точно так же заявление «возможно, где-нибудь реальны все физические законы» не отвечает на наш вопрос. Почему реальны все физические законы?

А иногда, с другой стороны, современные космологи говорят о других законах физики в контексте мультивселенной, и предполагают, что нам виден один набор законов, а не другой, по фундаментально антропным причинам. Но это, опять-таки, простая неаккуратность. Мы говорим о низкоэнергетическом проявлении базовых законов, но эти базовые законы одинаковы по всей мультивселенной. У нас всё равно остаётся вопрос о существовании этих глубинных законов, создающих мультивселенную.

Конец объяснений

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

Вопросы «почему» не существуют в пустоте; они имеют смысл в некоем объяснительном контексте. Если мы спрашиваем «почему курица перешла дорогу?» [популярная тема коротких анекдотов / прим. перев.], мы понимаем, что существуют такие вещи, как дороги, у них есть особые свойства, и у вещей по имени «курицы» есть разные цели и мотивации, и есть вещи, существующие с другой стороны дороги или другие преимущества её перехода. Только в этом контексте можно предложить осмысленный ответ на вопрос «почему». Но Вселенная и законы физики не встроены в какой-то более крупный контекст. Это уже самый крупный из существующих контекстов, насколько мы знаем. Нет ничего плохого в том, чтобы признать, что последовательность объяснений где-то обрывается, и единственным оставшимся объяснением может быть «просто так всё устроено».

Ну, или нет. Мы должны быть хорошими эмпириками и быть открытыми к возможности того, что то, что мы считаем Вселенной, существует в некоем большем контексте. Но тогда мы, вероятно, переопределим это, как вселенную, и останемся с теми же вопросами. Пока вы признаёте, что у Вселенной есть более одного мыслимого способа существовать, у цепочки объяснений всегда будет конец. Я могу и ошибаться, но настаивать на том, что «вселенная должна объяснить себя», довольно безосновательно.

Звуки и фурии

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

Во-первых, я думаю, что книга Лоуренса имеет гораздо больше смысла как часть популярных споров «атеизм против теизма», а не как просто тщательное философское исследование старой проблемы. Послесловие к книге написал Ричард Докинз , а изначально Лоуренс просил об этой услуге Кристофера Хитченса , пока тот ещё не был сильно болен – и оба этих человека, хотя и очень умные, не являются ни космологами, ни философами. Если вы задались целью отвергнуть заявления о необходимости существования (или полезности) Творца в рамках космологической схемы, тогда приведённые рассуждения по поводу «создания из ничего» действительно приходятся к месту. Физическая вселенная прекрасно может быть самодостаточной; ей не нужно ничего и никого снаружи для её запуска, даже если у неё и было «начало». Это не отвечает на классический вопрос Лейбница, но практически нет сомнений в том, что этот факт является примечательным свойством современной физики и имеет интересные последствия для фундаментальной космологии.

Во-вторых, после выхода обзора от Дэвида, Лоуренс неудачно обрушился с критикой на «идиотских философов» и на всю философию в целом, вместо того, чтобы продолжать вести осмысленную дискуссию по интересующим вопросам. Как большинство учёных, Лоуренс мало что получает от философии науки. Но цель философии не в том, чтобы быть полезной науке, не более, чем у микологии – быть полезной грибам. Философы науки не пытаются заниматься наукой, они пытаются понять, как работает наука, и как она должна работать, выбрать логику и стандарты, лежащие в основе научной аргументации, разместить научное знание в рамках более широкого эпистемологического контекста, и сделать много чего ещё интересного, не притворяющегося наукой. А если вам это не интересно, ну и ладно. Но не стоит пытаться подорвать законность существования области выпадами в её сторону – это глупо и не интеллектуально, и представляет как раз то самое нежелание уважительно спорить с исследователями из другой области, о котором мы сожалеем, когда речь заходит о науке. Жаль, что умные люди, соглашающиеся по поводу большей части важных вещей, не могут не согласиться по поводу всего остального, не размениваясь на оскорбления. Мы должны пытаться быть выше этого.

Теги:

  • вселенная
  • рождение вселенной
  • существование вселенной
  • космология
Добавить метки

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

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

1. Подключение к Ардуино

Итак, как уже говорилось выше, сервопривод славится тем, что может поворачиваться на заданный угол. Как же мы будем указывать ему этот угол? Предлагаю использовать для этой цели переменный резистор, он же — потенциометр. Будем вращать ручку потенциометра, а контроллер будет командовать сервоприводу поворачиваться на соответствующий угол.

У потенциометра есть всего три вывода. Крайние подключим к +5В и земле, а центральный к аналоговому входу A0.

У сервопривода SG90 также имеется три контакта. Обычно они окрашиваются следующим образом:

  • коричневый — земля;
  • красный — питание +5В;
  • оранжевый (или желтый) — сигнальный.

Сигнальный провод подключим в цифровому выходу №8. В итоге, получим такую схему:

Подключать оба устройства к Ардуино Уно удобнее через макетную плату:

2. Программа

Теперь напишем несложную программу, которая свяжет все элементы нашего аппарата строгой логикой. Все что нам требуется от контроллера — это:

  • считывать показания с потенциометра в диапазоне от 0 до 1023;
  • преобразовывать полученное число в угол от 0 до 180 градусов;
  • передавать полученный угол на сервопривод.

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

Нажав в конструкторе кнопку «Arduino», откроем страницу с исходным кодом программы для среды Arduino IDE:

#include Servo servos; void setup(){ } void loop(){ servos.attach(8); servos.write((map(analogRead(A0), 0, 1024, 0, 180))); delay(50); }

Как видно из программы, для управления сервоприводом мы использовали библиотеку Servo . В этой библиотеке есть несколько полезных нам функций:

  • attach(номер_вывода) — инициализация сервопривода;
  • write(угол) — поворот сервопривода на заданный угол;
  • read() — получение текущего угла сервопривода.

Для отображения множества чисел 0 — 1023 в множество 0-180, конструктор применил функцию map . Ту же самую операцию, можно было осуществить с помощью выражения:

int angle = (value / 1023.0) * 180;

Загружаем программу на Ардуино Уно, и смотрим что получилось!

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

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

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

Конструктив

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

В качестве обратной связи применяются потенциометры. Поэтому эти сервы имеют ограничения по углу поворота вала вокруг оси. Так, в приобретенных мной сервах Futaba S3003, угол поворота выходного вала составляет 225°.

Технические характеристики Futaba S3003

Параметр Напряжение питания, В
4,8 6,0
Усилие на валу 3,2 кг/см 4,1 кг/см
Скорость позиционирования 0,23 sec/60° 0,19 sec/60°
Размер, Д х Ш х В 41мм х 20мм х 36мм
Масса, г 37

Потенциометр обратной связи посажен прямо на выходной вал, благодаря ему блок управления сервомашинки отслеживает точное положение вала: сопротивление потенциометра изменяется пропорционально углу поворота . Считав сопротивление, блок управления сравнивает это значение с тем, которое должно быть при заданном положении вала. Если эти значения отличаются, блок управления дает команду двигателю повернуть вал в заданном направлении, уменьшая разницу значений. Достигнув положения вала, когда значение с потенциометра совпадает с заданным значением, двигатель останавливается. Считывание значения с потенциометра и его сравнение происходит с большой частотой, поэтому выходной вал будет стремиться занять заданное положение при изменении внешней нагрузки.

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


Управление

В качестве управляющего сигнала служит импульсный сигнал с периодом 20 мс и с длительностью от 0,8 до 2,2 мс. Это некий стандарт управления сервомашинок. Чем длинее пришел импульс, тем на больший угол повернется вал сервомашинки. Для разгона сервомашинки период следования импульсов можно уменьшить до 10 мс.


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


Программная часть

Как видно управлять сервой достаточно просто - достаточно гнать импульсный сигнал с нужной частотой и скважностью. Этот сигнал можно генериовать ШИМ , или написать свою функцию обработки прерывания по таймеру. Но в Bascom-AVR уже есть встроенная команда для управления сервомашинками - Servo . Ее и рассмотрим.

Для начала необходимо сконфигурировать подключение сервомашинок:

Config Servos = X , Servo1 = Portb . 0 , Servo2 = Portb . 1 , Reload = Var

Servos = X ; указывается количество подключаемых сервомашинок, возможно подключение до 14 серв.

Servo1 = Portb . 0 ; указывается порт подключения первой сервы

Servo2 = Portb . 1 ; указывается порт подключения второй сервы

Reload = Var ; здесь Var время в микросекундах, которое проходит между прерываниями от таймера.

По умолчанию для организации прерываний используется Timer0, поэтому использовать его в своих целях уже не получиться. Bascom-AVR позволяет перебросить обслуживание прерываний на любой другой таймер, например чтобы освободить Timer0 и задествовать Timer1 достаточно указать это в строке конфигурации:

Config Servos = 2 , Servo1 = Portb . 0 , Servo2 = Portb . 1 , Reload = 10 , Timer = Timer1


После того как все сконфигурировали остается только рулить нашей сервомашинкой. Это делается следующей командой

Servo ( a) = F

а - порядковый номер сервомашинки

F - переменная, значение которой задает угол поворота вала сервы

Тестовый код целиком:


$regfile = "m8def.dat" "микроконтроллер ATmega8
$crystal = 8000000 "частота работы 8МГц

"конфигурируем порты для подключения сервоприводов
Config Portb . 0 = Output
Config Portb . 1 = Output

"настраиваем подключения двух сервомашинок
Config Servos = 2 , Servo1 = Portb . 0 , Servo2 = Portb . 1 , Reload = 15

Dim F As Byte "переменная для первой сервы
Dim S As Byte "переменная для второй сервы

"разрешаем прерывания
Enable Interrupts

F = 15 "значением переменной задается угол поворота вала сервомашинки
S = 70

Do

Servo (1 ) = F
Servo (2 ) = S

Loop

End


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

Меняя значения перемменных F и S можем менять угол поворота первой и второй сервомашинок соответственно. Чем меньше значение параметра Reload, тем шустрее наши сервомашинки будут поворачиваться на нужный угол.

Для своих серв подобрал рабочий диапаз он значений Servo(a), в которых вал может вращаться. Крайнее положения вал занимает при значении 0 и 150, соответственно при значении 75 вал занимает промежуточное положение.


Servo(a) =0 Servo(a) =75 Servo(a) =150

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

Кому интересно, прошу под кат.

Идея

Надо управлять сервоприводом, но без микроконтроллера.

Знания

Всем известно, что опыт и знания помогают творить и находить решения. На страницах Гиктаймса немало примеров использования сервопривода с применением контроллеров. В них подробно рассказано про систему управления сервоприводом. Примем этот опыт других разработчиков за знания необходимые нам для решения задачи. Сервопривод SG90 управляется ШИМ сигналом, параметры которого определяют положение ротора. Период ШИМ около 20 мС, длительность сигнала управления от 500 до 2100 мкС.

Задача

Идея и знания порождают задачу, которую необходимо решить. Сформулируем задачу для воплощения идеи. Это что-то вроде Технического Задания. Кажется, все просто, надо взять генератор импульсов с изменяемой скважностью, подключить питание к сервоприводу, а с генератора подать управляющий сигнал. Особо отметим, что в требованиях есть изменения скважности - то есть должны быть органы управления или пользовательский интерфейс.

Реализация

Вот тут и начинаются муки творчества: что взять и где взять? Можно найти готовый лабораторный импульсный генератор, например Г5-54 с ручками, кнопками, выставить нужные параметры, подключить генератор к сервоприводу. Однако это громоздко и не все могут позволить себе такую роскошь. Поэтому разработчики, опираясь на свой опыт и знания, пытаются совместить желание (идею-задачу) и возможности (материальные и творческие) для реализации задачи. Материальные возможности - это та “жаба” “А сколько и чего я хочу потратить на реализацию идеи?” Творческие возможности - это, “посмотрю-ка я, что у меня уже есть”. Это не обязательно какие-то материальные ценности, а опыт и знания предыдущих разработок, которые можно приспособить под реализацию. Также не лишним будет поискать (погуглить), что кто-то уже реализовывал что-то подобное. Для сокращения вариантов решения необходимо самому добавлять дополнительные требования, ограничивающие фантазии реализации. Например, добавим к требованиям еще одно условие, пусть это будет материальное ограничение, реализация должна быть недорогой .

Поиск альтернатив

Воспользовавшись интернетом, поищем варианты, которые предлагает СЕТЬ. Зададим в поиске: “генератор прямоугольных импульсов с переменной скважностью”. Получим очень много вариантов, как с применением интегральных таймеров NE555 (отечественный аналог КР1006ВИ1), так и на логических микросхемах. Из всего разнообразия я выбрал вариант генератора на инверторе с триггером Шмитта на входе. Во-первых, он самый простой, во-вторых, требует минимум деталей и самое интересное использует единственный логический элемент из шести, если, например, использовать микросхему 74HC14.

Схема такого генератора выглядит так:

Немного теории

Теория гласит, что частота такого генератора равна f = 1/T = 1/(0.8*R*C). Для получения требуемой частоты требуется выбрать номинал одного из элементов, задающих частоту. Так как логический элемент выполнен по технологии КМОП, то имеет большое входное сопротивление, поэтому можно применять элементы задающие небольшие рабочие токи. Выберем емкость С1 из ряда распространенных номиналов, например 0.47 мкФ. Тогда для получения требуемой частоты (50Гц) резистор должен быть приблизительно 53 кОм, но такого резистора в стандартном ряду нет, поэтому выберем 51 кОм.


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

Тогда схема примет следующий вид:


Казалось бы: все, задача решена, но в крайних положениях переменного резистора поведение сервопривода нестабильно. Это связано с тем, что значение длительности импульсов, в крайних положениях переменного резистора, не соответствует требуемым. Лично мне также не по душе применение переменного резистора, поэтому я хочу изменить интерфейс управления, добавив новую “хотелку” в техническое задание, например чтобы скважность менялась в зависимости от освещенности. Для этого есть простое и недорогое решение: применить в качестве регулирующего элемента фоторезистор GL55xx (используют в проектах Arduino), изменение сопротивления которого лежит в широком диапазоне.

Далее начинается самое интересное. Расчетных формул для получения значений сопротивлений обеспечивающих требуемые длительности импульсов нет, поэтому на уровне интуиции (опытным путем, с помощью переменного резистора) определяем значения сопротивления, при которых устанавливаются требуемые значения длительностей импульсов. Затем изменяем схему так, чтобы при изменении сопротивления фоторезистора общее сопротивление изменялось, устанавливая требуемые значения длительностей импульсов.

Итоговая схема принимает следующий вид:

Пояснения к итоговой схеме

Конденсатор С1 номиналом 0.47 мкФ, определяет время перезаряда. Резистор R1 номиналом 51 кОм задает основную частоту повторения импульсов в районе 50 Гц. Комбинация резисторов R2-R4 в сумме будет изменяться в диапазоне от 2.5 кОм до 24 кОм в зависимости от освещенности. Вместе с диодом D1 эти резисторы будут влиять на время перезаряда конденсатора С1 при действии положительного импульса на выходе логического элемента, тем самым определять его длительность.

Результат

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

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

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

В этом уроке мы научимся управлять сервоприводом .

Для урока нам понадобиться:

Подключение к Arduino

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

Подключение сервопривода к плате Arduino производится через ШИМ-выводы. Что Такое PWM (ШИМ) мы уже рассматривали в уроке: Плавное включение светодиода на Arduino с помощью ШИМ (PWM)

За основу возьмем урок Подключение кнопки и светодиода плате Arduino к схеме добавим сервопривод и вот что у нас должно получиться.

Изменим код:

#include // подключаем библиотеку для работы с сервоприводом Servo servo; // объявляем переменную servo типа "servo" int led_pin=3; // пин подключения int button_pin = 4; // пин кнопки // переменные int buttonState = 0; // переменная для хранения состояния кнопки void setup() { pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода. pinMode(button_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. servo.attach(5); // привязываем сервопривод к аналоговому выходу 10 } void loop() { buttonState = digitalRead(button_pin);// считываем значения с входа кнопки if (buttonState == HIGH) { digitalWrite(led_pin, HIGH);// зажигаем светодиод servo.write(0); //ставим вал на 180 delay (1000); // задержка в 1 секунду } else { digitalWrite(led_pin, LOW);// выключаем светодиод servo.write(180); //ставим вал на 0 delay (1000); // задержка в 1 секунду } }

#include // подключаем библиотеку для работы с сервоприводом

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

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

Servo servo; // объявляем переменную servo типа "servo"

Объявлением переменную, она нам понадобиться для работы с библиотекой.

Servo.attach(5); // привязываем сервопривод к аналоговому выходу 5

Функция библиотеки Servo.

Servo.write(180); //ставим вал на 180

С помощью данной функции мы можем повернуть сервопривод на заданный угол.

Следующий урок: IR Пульт. Включение выключение светодиода.



Загрузка...