roboforum.ru

Технический форум по робототехнике.

 

HC-SR04 и сервопривод

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

HC-SR04 и сервопривод

Сообщение Ohohohoshenka » 02 апр 2015, 14:11

Здравствуйте ! У меня проблемка , нашел на просторах интернета код а он не работает :cry:
В общем есть HC-SR04 и серво привод MG996R по отдельности работают отлично вместе никак двигатель вроде как хочет стартануть но не может... Плата ардуино микро про
Пример кода для исполнения взят отсюда http://zelectro.cc/HC-SR04
Код: Выделить всёРазвернуть
#include <Servo.h>

#define coef 10 //(коэффициент соответствия 10 градусов на 1см)
#define dead_zone 4
#define max_value 22
#define servoPin 11

#define Trig 9
#define Echo 8
#define ledPin 13

Servo myservo;

void setup()
{
  pinMode(Trig, OUTPUT); //инициируем как выход
  pinMode(Echo, INPUT);  //инициируем как вход
  pinMode(ledPin, OUTPUT);
  myservo.attach(servoPin);
  myservo.write(0);
}

unsigned int impulseTime=0;
unsigned int distance_sm=0;

void loop()
{
  digitalWrite(Trig, HIGH); /* Подаем импульс на вход
   trig дальномера */
  delayMicroseconds(10);  // равный 10 микросекундам
  digitalWrite(Trig, LOW); // Отключаем
  impulseTime = pulseIn(Echo, HIGH); // Замеряем длину импульса
  distance_sm = impulseTime/58; // Пересчитываем в сантиметры
 
  if (distance_sm >= dead_zone && distance_sm <= max_value)
  {
    myservo.write(coef * (distance_sm - dead_zone));
  }
  else if (distance_sm < dead_zone)// если дистанция менее 4 см, серва в положении ноль градусов
  {
    myservo.write(0);
  }
  else
  {
    myservo.write(180);
  }
  delay(100); /* ждем 0.1 секунды,
   Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс.
   */
     }
Ohohohoshenka
 
Сообщения: 3
Зарегистрирован: 02 апр 2015, 14:05

Re: HC-SR04 и сервопривод

Сообщение AndreiSk » 02 апр 2015, 15:52

если это все питается только по USB, то скорее всего не хватает тока. Стандартный USB дает 0.5А и потом может вырубаться (зависит от матплаты). Подайте доп. +5В на пины где серва (где гребенки по три).
Скорее всего УЗ-импульс + серва в моменте кушают больше чем выдает USB порт.
Аватара пользователя
AndreiSk
 
Сообщения: 2618
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: HC-SR04 и сервопривод

Сообщение Ohohohoshenka » 02 апр 2015, 16:47

AndreiSk писал(а):если это все питается только по USB, то скорее всего не хватает тока. Стандартный USB дает 0.5А и потом может вырубаться (зависит от матплаты). Подайте доп. +5В на пины где серва (где гребенки по три).
Скорее всего УЗ-импульс + серва в моменте кушают больше чем выдает USB порт.

да все было именно так ! Но теперь сделал-плата + датчик расстояние питаются по юзб от блока питания - от того же блока питается и серво мотор ! Просто на ардуину один выход с сервы вцепил на 9 , а -+ вцепил с блока 5 в! Ситуация та же, моторчик делает ттттттт.... и не стартует ничего, может в коде что то поменять ? я не понимаю... :cry: Что может быть не правильно?
Ohohohoshenka
 
Сообщения: 3
Зарегистрирован: 02 апр 2015, 14:05

Re: HC-SR04 и сервопривод

Сообщение AndreiSk » 02 апр 2015, 16:58

Сервы на 9в подцепил? ну.. герой. Понюхай, не пахнет ли горелым :crazy:
Сервы обычно от 6в, но нормально и от 5в будут работать. Некоторые специальные работают от 7-8в, но 9в это кирдык для большинства серв. Оставь в системе только +5 и все.
Аватара пользователя
AndreiSk
 
Сообщения: 2618
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: HC-SR04 и сервопривод

Сообщение Ohohohoshenka » 02 апр 2015, 17:29

AndreiSk писал(а):Сервы на 9в подцепил? ну.. герой. Понюхай, не пахнет ли горелым :crazy:
Сервы обычно от 6в, но нормально и от 5в будут работать. Некоторые специальные работают от 7-8в, но 9в это кирдык для большинства серв. Оставь в системе только +5 и все.

Совсем обижаете :D напряжение поставил на сервы 5, отдельно все работает хорошо и не горит :sorry:
Ohohohoshenka
 
Сообщения: 3
Зарегистрирован: 02 апр 2015, 14:05

Re: HC-SR04 и сервопривод

Сообщение slom » 24 апр 2015, 12:54

у меня такой код когда то работал, я его переделал под свои нужды.
вот он:
Код: Выделить всёРазвернуть
#include <Servo.h>

#define coef 10 //(коэффициент соответствия 10 градусов на 1см)
#define dead_zone 20
#define max_value 100
#define servoPin 10

#define Trig 9
#define Echo 8
#define ledPin 13

Servo myservo;

void setup()
{
  pinMode(Trig, OUTPUT); //инициируем как выход
  pinMode(Echo, INPUT);  //инициируем как вход
  pinMode(ledPin, OUTPUT);
  myservo.attach(servoPin);
  myservo.write(0);
  Serial.begin(9600);
  /* задаем скорость общения. В нашем случае с компьютером */
 
}

unsigned int impulseTime=0;
unsigned int distance_sm=0;

void loop()
{
  digitalWrite(Trig, HIGH); /* Подаем импульс на вход
   trig дальномера */
  delayMicroseconds(10);  // равный 10 микросекундам
  digitalWrite(Trig, LOW); // Отключаем
  impulseTime = pulseIn(Echo, HIGH); // Замеряем длину импульса
  distance_sm = impulseTime/58; // Пересчитываем в сантиметры
 
   Serial.println(distance_sm); // Выводим на порт
 
  if (distance_sm >= dead_zone && distance_sm <= max_value)
  {
    myservo.write(50);
    delay(2000);
  }
 
 
  else
  {
    myservo.write(160);
  }
  delay(200); /* ждем 0,1 секунды,
   Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс.
   */
     }



попробуйте поменять мои пины под свои и залить... насколько я помню, мой код еще в сириал порт выводит инфу о расстоянии до объекта. это вам поможет понять работает ли эхолот.
проверьте еще раз все ли контакты подсоединены правильно.
проверьте серву исправна ли?
иногда нужно все разобрать и собрать заново. казалось бы все правильно, а н нет где то...
Аватара пользователя
slom
 
Сообщения: 632
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 2

Mail.ru counter