ARduino MEga 2560 + servo + IK
- Войдите на сайт для отправки комментариев
Передаю данные с последовательного порта с авиасимулятора, хочу сделать иммитацию прибора с помощью сервомашинки. Данные поступают нормально и стрелка отклоняется, но теряется начальное положение при старте и возникает вопрос как это сделать. Порылся на сайтах и нашёл это
Тут шаговый двигатель , но суть та же. Вот что написано в опасании.(Извените за транслит - гугл переводчик)
Оптическая пара находится позади лицевой панели на расстоянии около 3..5 мм, а передняя панель имеет небольшой вертикальный зазор перед ней (шириной около 2 мм) - это исключает вмешательство внешнего света. Для инструмента, который не имеет иглы, но имеет вращающиеся карты просто использовать черную матовую поверхность на задней стороне этой карты с тонкой белой линии или полоски фольги в соответствие с "нуля" на лицевой стороне.
Запуск программы последовательности ArdSimX перемещает все степперы в сторону положения "ноль", и все степперы (с датчиками или с ограничителем) займет свою позицию. После этой последовательности все степперы будут перемещены в их рабочее положение, соответственно, с входящими данными плагина.
Вот мой код, сервомашинки, может кто сможет уделить немного времени и помочь с кодом? как вернуть стрелку при старте программы в нулевое положение.
#include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int pos = 0; // variable to store the servo position String msgline=""; String bankanglestr=""; void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object Serial.begin(9600); pos=45; myservo.write(pos); //just do this here, once, to check the servo's connected } void loop() { char c; if( Serial.available() ) { // buffer up a line c = Serial.read(); if (c!= '\n') msgline+=c; } if (c =='\n'){ if (msgline.length() > 0){ int firstcomma = msgline.indexOf(","); if (firstcomma > 0 ) { bankanglestr=msgline.substring(0,firstcomma ); pos=bankanglestr.toInt() +90 ; pos=90-(pos-90); myservo.write(pos); delay(15); } msgline=""; } } }У шагового двигателя нет такого понятия как "положение", тогда как у сервопривода - есть. Поэтому, чтобы выставить серву в ноль достаточно всего лишь команды myservo.write(0);, ну, или с любым другим значением параметра для "нулевого" положения.
frankyjohn2014
подскажите, вам удалось разобраться "как повернуть стрелку в нулевое положение"?
у меня аналогичная задача.
У шагового двигателя нет такого понятия как "положение", тогда как у сервопривода - есть. Поэтому, чтобы выставить серву в ноль достаточно всего лишь команды myservo.write(0);, ну, или с любым другим значением параметра для "нулевого" положения.
Я правильно понимаю, что это есть серво? https://ru.aliexpress.com/item/100-NEW-Wholesale-SG90-9G-Micro-Servo-Mot...
Угу. Она самая.
У шагового двигателя нет такого понятия как "положение", тогда как у сервопривода - есть. Поэтому, чтобы выставить серву в ноль достаточно всего лишь команды myservo.write(0);, ну, или с любым другим значением параметра для "нулевого" положения.
Я правильно понимаю, что это есть серво? https://ru.aliexpress.com/item/100-NEW-Wholesale-SG90-9G-Micro-Servo-Mot...
И как её к ардуине подключать? Через серво-контроллер? Нашёл только на 32 канала, мне то нужен один канал )))
И как её к ардуине подключать?
Не ищите, этого нет в Интернете ))).
Если серьёзно, маломощную серву можно подключать так :
Мощную - питание (+5) подавать не с Ардуино, а с отдельного источника соответствующей мощности.
Подключается примитивно: питание - на +5в платы, землю - на землю, а сигнальный провод подключаете к любому PWM сигналу платы. Это если хотите использовать аппаратное управление через analogWrite(millisecs); А можете подключать через библиотеку Servo.h кажется .. там программная эмуляция, насколько помню, соответственно можно подлкючаться к любому выходу.
А ещё рекомендую скачать ArduBlock и поставить его как плагин в Ардуино ИДЕ. Там просто море разных библиотек и визуальное программирование. Тупо соединяете блоки промеж себя и всё. У меня 10-и летний ребенок разобрался практически самостоятельно. Паука вон сделал на 8-и таких сервоприводах .. :)
И как её к ардуине подключать?
Не ищите, этого нет в Интернете ))).
Мощную - питание (+5) подавать не с Ардуино, а с отдельного источника соответствующей мощности.
По подключению получается совсем просто (как бы)
Задача:
Есть контроллер K3NG управляющий поворотным устройством, всё работает, цифирьки на дисплее рисует, но хочется же и стрелку как в аналоговых поворотках, выходит серво-мотор эту задачу решает.
Угол поворота хранится в переменной, эту переменну через библиотеку и выводим (с определённой периодичностью)
Ход рассуждения правильный?
И еще один вопрос, значит, что сам сервомотор должен иметь метку по ориентации его на 360 градусов к примеру?
Мне кажется, Вам пока не хватает знаний, советую хоть чуток изучить тему сервоприводов, ну, например, вот здесь http://robotday.ru/2015/03/28/сервопривод-tower-pro-9g-sg90/
Мне кажется, Вам пока не хватает знаний
Мне кажется, что их нет ))) От слова совсем )))
Благодарствую!!!
Учу материальную часть и, даже немного получается, уже ARDUINO IDE устанавливаю влёт, а вот
ArduBlock
не подключается (в русской версии)
как всё запутано однако )))
PS тем не менее контроллер поворотки (на макетке) c LCD по шине IIC запустить удалось, так что надежда есть )))
PPS неожиданно оказалось, что заказанный девайс до углов только 180 градусов, для 360 совсем другие цены, хочешь-не-хочешь придётся делать индикацию и по элевации, не пропадать же добру )))
Устанавливается отсюда: https://sourceforge.net/projects/ardublock/, русификация там типовая с текущей локали (Вам из такой скриншот и делал).
Сайт разработчика http://blog.ardublock.com/
Там же инструкции "как поставить", "как допиливать".. :)
Устанавливается отсюда: https://sourceforge.net/projects/ardublock/, русификация там типовая с текущей локали (Вам из такой скриншот и делал).
Сайт разработчика http://blog.ardublock.com/
Там же инструкции "как поставить", "как допиливать".. :)
делаю как написано: НО
"Этот гвоздь не в ту стену"
Там фишка в том, что в рабочей папке, где у вас лежит Ардуино ИДЕ, в папке tools надо создать точную структуру папок и ПОЛОЖИТЬ в неё скачанный архив, и потом ПЕРЕИМЕНОВАТЬ его ровно так, как оно сказано. Это не архив, это "оно и есть". :) Да, буковки в верхних и нижних регистрах воспроизведите дотошно в названиях попаок и самого файлика. И не забудьте перезагрузить ИДЕ.
У меня с первого раза тоже "ни палучилося". :)
Так и делал! Под русской XP не заработала, а вот под вистой - работает!
Под вистой и как jar и как распакованный архив (а там много папок получается) работает...