Помошь с сервоприводом

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Надо изготовить :
Интересует скетч под управления сервоприводом MG90S от ардуино NANO при помощи
Инфракрасный датчик препятствий YL-63.

Углы настрою сам.

Требуется исполнитель :
С готовым скетчем.

Сроки :
Срок, как можно быстрее.

Оплата :
Символическая
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
Ни фига не понятно что тебе надо в принципе.
Оплата символическая.. Я вот знаю один хороший американский символ - Бенджамин Франклин, президент такой..
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Есть датчик препятствий. Есть сервопривод. Нужно что бы при сработке датчика препятствия, серво поворачивался на нный угол, если датчик перестал видеть препятствие - серво возвращается в начальное состояние.
По сути работа, как от кнопки. Нажал серво повернулся, отжал серво встал в исходное состояние. Единственное это все дело надо еще объединить с плавной работой сервопривода.

Я не знаю, сколько это стоит. Но думаю, если человек понимающий, то ему это не составит труда сделать за несколько минут.
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Строго на определенный угол вне зависимости от величины сигнала.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
Но придется настроить датчик

C++:
#include <Servo.h>
Servo servo; 
void setup() {
  servo.attach(9);
  pinMode(A1,INPUT);
}

void loop() {
  if (analogRead(A1)>500) servo.write(90); else servo.write(0);
  delay(20);
}
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Не работает. Поворачивается при загрузке на 90 и обратно на 0. Потом не работает при сработке датчика, а потом через какое то время может и пару раз крутануть еще. Сработку датчика отслеживаю по индикации на борту. Параметры портов исправил - серво d3, а датчик а0
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
А нет, перезагрузил и все заработало. А подскажите если не сложно, как добавить туда плавную работу сервопривода
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
да, ну есть библиотека у Алекса, и есть код, там именно реализована более медленная работа сервопривода
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
Ну значит надо вместо include servo взять библиотеку Гайвра
#include <ServoSmooth.h>
, у него на сайте есть примеры про все на свете.
А костяк такой же останется.
Ну может за мелкими изменениями
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
что-то не как(

#include <Adafruit_PWMServoDriver.h>
#include <ServoDriverSmooth.h>
#include <ServoSmooth.h>
#include <smoothUtil.h>


ServoSmooth servo;
uint32_t myTimer;
void setup() {
Serial.begin(9600);
servo.attach(3);
servo.setSpeed(40);
servo.setAccel(0.05);
pinMode(A1,INPUT);
}

void loop() {
if (millis() - myTimer >= 40) {
myTimer = millis();
if (analogRead(A1)>500) servo.write(20); else servo.write(90);
}
}
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Вообще перестал работать. Не двагается и все тут. Может как то надо разнести на две функции поворот в рабочее\исходное состояние?


#include <Adafruit_PWMServoDriver.h>
#include <ServoDriverSmooth.h>
#include <ServoSmooth.h>
#include <smoothUtil.h>

ServoSmooth servo;
uint32_t myTimer;
void setup() {
Serial.begin(9600);
servo.attach(3);
servo.setSpeed(100);
servo.setAccel(4);
pinMode(A1,INPUT);
}

void loop() {
boolean state = servo.tick();
if (millis() - myTimer >= 100) {
myTimer = millis();
if (analogRead(A1)>500) servo.write(0); else servo.write(90);
}
}
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
1) Код надо оформлять как код, что бы людЯм было возможно нормально это смотреть. Это элементарное уважение к собеседникам.
2) Мало просто заменить, надо чутка почитать про библиотеку, понять что изменилось
3) Главное! Код не помойка! Все подряд туда совать не надо. К чему все эти дикие инклюды ?

C++:
#include <ServoSmooth.h>
ServoSmooth servo;

void setup() {
  Serial.begin(115200);
  servo.attach(3);
  servo.setSpeed(30);
  servo.setAccel(0.05);
  pinMode(A1, INPUT);
}

void loop() {
  Serial.println(analogRead(A1));
  servo.tick();
  if (analogRead(A1) > 500) servo.setTargetDeg(0); else servo.setTargetDeg(90);
}
 
  • Лойс +1
Реакции: brendan

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Еще раз спасибо.
1. не знал, если когда-нибудь еще надумаю, буду знать.
2. если, что-то еще буду планировать на будущее, буду уже стараться сам разобраться, почитаю для начала про азы кодинга.
3. от незнания.
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Пришлось заменить привод, так как не тянул нагрузку. Купил сервопривод MG966R. И он почему то не работает с данным скетчем. При сработке от датчика - гудит, но при этом не крутится. Думал, может надо увеличить скорость и ускорение, не помогло. Значения датчика не менял, так как вроде как работает от датчика, хоть и не совсем понятно как. поставил другую серву (старую -прошлую), работает все как надо, а с этой какая то проблема(
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Во вложение, надеюсь будет понятно. Еще я думал, что может мощности не хватает. Но при самом первом включение, он крутился без остановочно, пока я питание не убрал с ардуино.
 

Вложения

Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
Вот об этом я и говорил. так подключать нельзя! серва очень мощная и сожжет тебе порт ардуины только так. Убери ее и подключи старую, проверь работает ли порт!
Такие сревы надо подключать только от ОТДЕЛЬНОГО источника питания. сделав землю общей.
Посмотри
 

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Помер бобик. Питания выдает на портах, но на 5 вольтовом, еле 4 выдает. И греется мама не горюй.
Направляю схему новую. В паспорте на серво вычитал, что • Stall Current 2.5 A (6V).
Вот думаю и правда ли нужно 3А на это дело?
Датчик вроде работает.
Надо сейчас тогда блок купить, и новую ардуино поставить. Код вроде я так понял менять не надо.
 

Вложения

Старик Похабыч

★★★★★★★
14 Авг 2019
4,234
1,297
Москва
Тогда уж и датчик питания питай от БП, зачем нагружать ардуину ?

Юристы говорят "Незнание закона не освобождает от ответственности, а вот знание - очень часто". Так вот с физикой так не прокатит.. Ответственность будет всегда. Поздравляю с 1-ым подбитым ;)
 
  • Лойс +1
Реакции: Roden

Diepso

✩✩✩✩✩✩✩
12 Авг 2020
22
0
Все я окончательно запутался. Купил новую ардуино, купил блок питания на 5v 3a. Все это дело подсоединил, залил предварительно старую конфигурацию на новую ардуино. Включаю, а серво просто дергается туда сюда, и иногда чуть прокручивает. Я быстро выключил питание. Отключил серву, и датчик, и померил на контактах 5.38, ну думаю норм, включил еще раз вообще не реагирует, потом выключил ардуинку, заново включил - серво опять пошел дергаться. Думаю, может и серво тогда тютю, поставил другой маленький - тоже самое, поставил маленький, который до этого стоял тоже самое. Был запасной датчик поменял, тоже самое. Подключил дискретный выход на старую ардуино - тоже самое. Залил скетч, чисто покатать серву в две стороны тоже самое. И я вообще не понимаю куда смотреть еще, и в чем все таки подвох.