Управление двигателем (сервой) с USB.

InterSky

Хм… 81$ только за контроллер? Arduino стоил всего 10$ 😦

SGordon

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

blade
InterSky:

команде с компа повернулась на определённый угл

InterSky:

способны обеспечить точный поворот на определённый угл? Или погрешность очень большая?

Погрешность там- около 1*, что зависит от дороговизны (следовательно-качества исполнения сервы)
Вы почитайте, как вообще она устроена-может, и паять ничего не придется?
skyflex.air.ru/pages/glider/gl055.shtml
То есть, серва "понимает " широтно-модулированные импульсы положительной полярности с уровнем 3-5 В, длительностью от 1 до 2 мСек повторяющиеся с частотой 50ГЦ.
При этом угол её поворота зависит не от нагрузки (ну, естественно если нагрузка находится в пределах её возможностей 😃 ), а только от положения потенциометра обратной связи.
И она будет тянуть в сторону нулевой разницы между длиной приходящего снаружи командного импульса и внутреннего (который и определяется потенциометром) пока не дотянет 😃
Или- не помрёт 😢
То есть, Вам надо всего то напрограммировать на USB порту компа нужный импульс и прицепить к нему вход сервы (желтый или белый провод).
А на черный и красный- подать соответственно “-” и “+” 5-6 В.

msv

USB хоть и называется портом, по сути это шина (типа PCI). Поэтому сомневаюсь, что там можно напрограммировать какие-хошь импульсы…

blade
msv:

USB хоть и называется портом, по сути это шина (типа PCI). Поэтому сомневаюсь, что там можно напрограммировать какие-хошь импульсы…

Ну, тогда придется приляпать какую- нибудь микросхему типа FTDI, чтобы получить из этого протокола то, что надо 😃
Потом, порты же не только УСБ бывают, или я что то пропустил?
Но это- к компьюторщикам, тут я практически пном-пень 😦

Aleksey_Gorelikov

Самый простой вариант - наверное преобразователь на FT232. К ней есть драйвера для бит-банг режима. Следующий вариант из максимально простых - ардуина. Не понимаю, что сложного в ней нашел топикстартер, посути вся прога делается из 3 операторов. Бесконечный цикл, в нем - получение символа с ком-порта, следом - установить серво на угол (символ), ну и цикл закрытли… 😃 А со стороны компа - просто кидай в компорт символ с нужным углом… 😃

Не? Ну да, я опустил инициализацию ком-порта и серво, ардуино ни разу не использовал, но делается это все на ней реально за 10 минут глядя на ардуиновские-же примеры. И сама идеология ардуины - в том, что ничего паятьне надо, даташит на МК читать не надо, достаточно смутно знать С на уровне "Копи-паст+ не забывать “;”. Зачем там транзисторы и т.д??? Берешь ардуину и серву. У сервы три проводка, обычно черный (скраю), красный (в центре) и еще какой-нибудь белый (со второго краю). ВОт черный втыкаешь в GND ардуины, красный - на +5волт (да хоть на разъеме усб, если серва не слишком мощная), белый - в любой цифровой выход D_x_. Комманда “установить на серве ххх градусов” в ардуино точно есть.

Это все для варианта усб… Если усб не принципиально, то запитываем серву от усб или гейм-порта (там есть 5 вольт), а сигнал на управление берем с ком или ЛПТ… Ну а там уже генерим сервоимпулсь пользуясь “программировать умею”.

10 days later
puh21

Arduino! И ничего больше… Управление сервой, это стандартная функция. Единственное, нужно будет с компьютера програмку написать, которая через COM порт виртуальный будет управляющие “слова” слать. В ардуине ты эти “слова” обрабатываешь и на один из пинов выходит уже готовый управляющий сигнал на серву. Паять почти не нужно… если сможешь облудить проводочки, сможешь подключить. Если нужно могу примеры набросать на коленке. У меня arduino стоит на моделе, принимает сигналы с приёмника и управляет сервами и ESC.

InterSky

Не совсем понимаю необходимость Arduino и SSC-32, ведь если купить переходник c USB на LPT то больше ничего из железа не нужно. А обойтись платами Arduino/SSC-32 без паяльника всё равно не удастся, ведь серве нужно питание (как я понял из комментариев даже средней серве может не хватить того питания что у нетбука на USB выведено, так как сам был свидетелем как иногда даже переностные HDD не запускаются), и придётся ещё искать батарейный блок.
Или есть какие-то готовые комплекты с USB?

puh21
InterSky:

Не совсем понимаю необходимость Arduino и SSC-32, ведь если купить переходник c USB на LPT то больше ничего из железа не нужно. А обойтись платами Arduino/SSC-32 без паяльника всё равно не удастся, ведь серве нужно питание (как я понял из комментариев даже средней серве может не хватить того питания что у нетбука на USB выведено, так как сам был свидетелем как иногда даже переностные HDD не запускаются), и придётся ещё искать батарейный блок.
Или есть какие-то готовые комплекты с USB?

Всё верно! но, переходник питаеться от того же USB. Плюс сам мощность хавает… Это раз. Кодить под переходник может быть сложно, потому что стандартный клас может не увидеть драйвера переходника. Это два. И питание на серву всё равно нужно от куда то брать, если с переходника, смотри пункт первый. С нехваткой питания с платы ардуины, полностью согласен. Я отлаживал с небольшой сервой без нагрузки. Серва работала, но на пределе, глючила даже если быстро стиком подёргать. Но! на ардуине есть вход под внешнее питание, подключаете к нему блок питания(китайский) и всё! Вообще я не очень понимаю для чего это нужно, если предполагаеться ставить на модель, то питание сразу нужно закладывать автономное. Если делать проект на столе, нужно удобную оболочку под форточки писать… ну или чё там у автора на компе стоит…

PS: Вспомнил. Я в своё время не смог найти переходник на LPT с нормальным разъёмом. Те которые видел там мама и контакты по внитренниму краю прямоугольника расположенны 😃 вощем я так и не сделал переходник на нормальный разъём 😦

ОООО… перечитал ветку… и вспомнил… Топик стартер может использовать управляющие сигналы в COM порте! они работают также как LPT… вроди бы. только возможны неточности в отсчётах, WINDOWS у нас ведь не риалтайм система, по этому возможны подрагивания сервы. стандартный класс ком порта в VS поддерживает ручное управление этими сигналлами… просто по таймеру их дёргать и всё… только нужно всё равно городить преобразователь уровней 😃 вобщем поэтому взять ардуину, написать три строчки и облудить три провода… всё! и если нужно будет, можно поставить на модель!!!

InterSky

Народ, неужели мне удалось найти то что я хотел? Зацените:
www.robotshop.com/productinfo.aspx?pc=RB-Phi-79&la…
Управляется и питается через USB. Ненадо ни одного лишнего проводка подпаивать. Или я что-то недосмотрел?
Правда не могу понять почему Arduino стоит 10$, а эта в 4 раза дороже. Может есть аналоги подешевле?

puh21

да, похоже на правду. но, почему только одна серва? и вопросов питания никто не снимал, мощную серву к такому не подключиш.

Dinotron

“powers servo motors of up to 450mA” Тю! При цене в 38$. Ей богу лучше и познавательней c arduino-й разобраться ИМХО.

InterSky

Но при Ардуино по любому придётся раскашеливаться на питание (ведь USB ноутбука даёт только 0.5A) так что всё равно будет дороже чем 38$.
А неужели 450mA это так мало? Мне же не надо нагрузка 30кг/см.
Может кто-то может дать экспертную оценку - какая нагрузка может создана сервой при 450mA? (примерно)
А то на сервах далеко не всегда пишут про питание, ограничиваясь только типа:
• Speed (sec/60deg): 0.13
• Torque (Kg- cm/Oz-in): 2.8/39.2
• Size (mm): 39.5x20x35.6
• Weight (g/oz): 42/1.48

puh21

#include <Servo.h>

Servo myservo;

void setup()
{
myservo.attach(9);
myservo.write(90); // устанавливает сервопривод в среднее положение
}

void loop() {}

всё… ардуино управляет у вас сервой… ещё четыре строчки обработчика сообщений, которые по USB идут… и ты управляеш с компа…

arduino.ru/Reference/Library/Servo/write

вот документация переведённая. на компе тебе нужно будет общаться с виртуальным COM портом. проще придумать сложно 😃

В момент поворота с усилием, близким к максимальному мотор потребляет, в зависимости от мощности 0,5 - 2 ампера

Взято от сюда www.rcdesign.ru/articles/radio/servo_intro

Dinotron

Вот убей не могу понять где будет использоваться приблуда. В помещении? Тогда какая проблема доп блок питания в розетку воткнуть? На улице? Тогда зачем нагружать акки компа лишней нестандартной нагрузкой если можно использовать LiPo и питать от неё ардуинку и серву?

InterSky

Аккамуляторы нетбуков тянут 12 часов (ну по крайней мере 11-ти дюймовые Asus).
Дам я девайс другу, и что, ему ещё к нему LiPo покупать и зарядник? Неразумно…
Мощность большая не нужна, ну чтобы была сопостовимая с усилием пальцев (0.1 H/m), чтобы на кнопку фотоаппарата нажать.

puh21
InterSky:

Дам я девайс другу, и что, ему ещё к нему LiPo покупать и зарядник? Неразумно…
Мощность большая не нужна, ну чтобы была сопостовимая с усилием пальцев (0.1 H/m), чтобы на кнопку фотоаппарата нажать.

так а друг куда поставит? если на модель то берёт 5В которые на приёмник идут и никаких проблем. если на столе, то можно прямо с ардуины питание брять, это то она потянет.

InterSky
puh21:

если на столе, то можно прямо с ардуины питание брять, это то она потянет.

Не совсем понял. Тоесть вы хотите сказать что Arduino так же как и эта может тянуть одну серву до 450mA без питания?

puh21
InterSky:

Не совсем понял. Тоесть вы хотите сказать что Arduino так же как и эта может тянуть одну серву до 450mA без питания?

Чтобы на кнопку фотоаппарата жать, и если серва не очень мощная сама по себе. То должно хватить питания от USB. На ардуине есть пины, на которые разведено внутреннее питание. помоему до 200mA можно вешать… примерно. Просто потребление сервы зависит от нагрузки на неё. Нагрузка создаётся как статичиская, так и динамическая. Статическая нагрузка это нажатие на кнопку, и удержание положения. Статическая нагрузка не велика, кнопка фото. Динамическая нагрузка, возникает при смене положения качалки, преодоление инерции системы, трения в редукторе. Переключение как я понимаю будет происходить дискретно и составлять значимую долю рабочего хода сервы. Соответственно в этот момент будет чуть ли не максимальный ток. По этому если серва мощная, то току не хватит 😦 возможные пути решения, плавное перемещение качалки не от 180градусов до 90градусов за минимальное время. А растянуть на несколько шагов. Но это не нужное усложнение, просто взять серву не очень мощную. Я вечером напишу какую я в опытах использовал, она при полном токе и питание от ардуины начинала подглючивать, но прям чуть чуть.

puh21

для опытов использовал серву HK 15178B. питал от ардуины. но в случае топик стартера похоже действительно есть смысл переплатить и использовать готовую плату, на одну (не мощную) серву.