Радиоуправление на Ардуино.

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Значение с val почему то не считывается в приемнике ???

"дело было не в бобине".

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

mag155 пишет:

Значение с val почему то не считывается в приемнике ???

jeka_tm пишет:

А ведь даже двоичное число нужно нужно собирать из цифр

mag155
Offline
Зарегистрирован: 21.12.2017
void loop(){

if (radio.available() > 0 ) {
  char val = radio.read();
  int value = atoi(val);
  analogWrite(5, value);
  Serial.println(value);

не val а value  не считывается приемником.

b707
Offline
Зарегистрирован: 26.05.2017

jeka_tm, если передавать числа, а не символы - ничего собирать не надо будет....

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

не val а value  не считывается приемником.

И не должно!

сообщение #49 перечитай

mag155
Offline
Зарегистрирован: 21.12.2017

Я ж и так числа вроде передаю от 1 го до 250 ти. Почему приемник не читает из ????

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Я ж и так числа вроде передаю от 1 го до 250 ти. Почему приемник не читает из ????

ЧИТАЙ #49 ВНИМАТЕЛЬНО!!!! метод print() отправляет по радио строку! Нафига ты его используешь, если у тебя числа?

mag155
Offline
Зарегистрирован: 21.12.2017

Перечитал. Правда хамство ваше это перебор. Вот так ??

if (radio.available() > 0 ) {
  char val = radio.read();
  int value = atoi(val);
  analogWrite(5, val);
  Serial.println(val);

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ты наверно имеешь в виду radio.write()

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Вот так ??

Нет. Хамство ты заслужил. Если без хамства. то сказать мне больше нечего....

mag155
Offline
Зарегистрирован: 21.12.2017

Зачем ты тогда вобще вылазиш не нравится сиди и не воняй.Хрен ты мега умный.

mag155
Offline
Зарегистрирован: 21.12.2017

?

mag155
Offline
Зарегистрирован: 21.12.2017
if (radio.available() > 0 ) {
  byte val = radio.read();
    analogWrite(5, val);
  Serial.println(val)

Все дело в байтах как и писал 777

mag155
Offline
Зарегистрирован: 21.12.2017

b707

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

mag155 замени в передатчике radio.print() на radio.write(), а приемник из 63 поста

mag155
Offline
Зарегистрирован: 21.12.2017

Благодарю заменил. Даже сам до пер что нужно заменить.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Так работает или нет?

mag155
Offline
Зарегистрирован: 21.12.2017

Да все работает в порту как положено от 1 до 250. Вот как типерь разделить значение шим от значение кнопок ? Чтоб друг другу не мешали ??

mag155
Offline
Зарегистрирован: 21.12.2017
if (radio.available() > 0 ) {
  byte val = radio.read();
    analogWrite(5, val);
Serial.println(val);
}
   val = radio.read();
  if( val== "10" ) {
  
  digitalWrite(13,1);
  }
  }

Вот такой приемник 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Ты спасибо b707 забыл сказать

mag155
Offline
Зарегистрирован: 21.12.2017

Кнопки мешают шиму .

mag155
Offline
Зарегистрирован: 21.12.2017

Да я ему конечно благодарен, но его хамство отбивает говорить ему спасибо .

mag155
Offline
Зарегистрирован: 21.12.2017

Как кнопки отделить идеи есть ??

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Через массив например. Создаем массив типа byte на 3 элемента. первые два на кнопки, последний на шим. это в передатчике. Аналогично в приемнике. Считываем числа и заполняем массив, как использовать это уже сам решай

mag155
Offline
Зарегистрирован: 21.12.2017

Благодарю буду пробовать .

mag155
Offline
Зарегистрирован: 21.12.2017

Через масив работает, но тк по одному каналу идут данные на шим и на кнопку они все время миняются и шим прерывается диод моргает ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тебе нужно настроить таймаут твоего софтварного uart, точно не скажу нужно подобрать. это в приемнике. а в передатчике не слать постоянно а добавить задержку между отправками чтобы приемник мог отследить конец посылки. и все таки надо добавлять наверно if radio.available. это первое. также добавить условие написать для принятых значений если изменилось то отправить на шим и т.д. , а не постоянно. врядли у тебя значения управления меняются несколько раз в секунду

mag155
Offline
Зарегистрирован: 21.12.2017

Смотрел порт меняются не сколько раз в секунду.

mag155
Offline
Зарегистрирован: 21.12.2017

Несколько

mag155
Offline
Зарегистрирован: 21.12.2017

Всем привет а как одновременно управлять несколькими шим от двух не зависимых потенциомеров?

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Всем привет а как одновременно управлять несколькими шим от двух не зависимых потенциомеров?

так же как ШИМ + кнопки - см. сообщение #74 от Жека.

 

mag155
Offline
Зарегистрирован: 21.12.2017

Благодарочка!!!

mag155
Offline
Зарегистрирован: 21.12.2017

Вопрос такой как при определенном условии сделать val на максимум

 if ( val1 < val2  ){
 digitalWrite(11,0);
digitalWrite(12,1);
analogWrite(5,val1);
}

Надо чтоб val 1 вышла резко на максимум ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

А что ты делаешь?

mag155
Offline
Зарегистрирован: 21.12.2017

Смысл в том двигатель вращается в одну сторону если двигатель начинает вращатся быстрее чем заданно нужно включить реверс и шим на максимум чтоб тормрзить

if( val1 > val2  ){
 digitalWrite(11,1);
digitalWrite(12,0);
digitalWrite(13,0);
 }
   if( val1 < val2  ){
 digitalWrite(11,0);
digitalWrite(12,1);
digitalWrite(13,1);
}
 val1 = analogRead(potent_pin1);   
  val1 = map(val1, 0, 1023, 0, 250);  
   val1 = constrain(val1, 0, 250);     
   analogWrite(5,val1);

 val = analogRead(potent_pin);  
  val = map(val, 500, 1023, 0, 250);  
  val = constrain(val, 0, 250);     
   analogWrite(3,val);
 val2 = analogRead(potent_pin2);  
  val2 = map(val2, 500, 1023, 0, 250);  
     val2 = constrain(val2, 0, 250);
Serial.println(val2);
}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

))) зачем?

интересный способ жечь драйвера если приличный мотор. если есть авто на механике включи задний ход на скорости и газ в пол))

mag155
Offline
Зарегистрирован: 21.12.2017

Тогда нужно увиличивать шим в обратную сторону пока напряжения не выровняются

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Сначала тормоз, а потом уже шим в обратную сторону. И зачем все таки?

mag155
Offline
Зарегистрирован: 21.12.2017

Чтоб двигатель мог поддерживать заданные обороты не зависимо от приложенной нагрузки вперед либо назад

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

))) ну ты даешь

Morroc
Offline
Зарегистрирован: 24.10.2016

mag155 пишет:

Чтоб двигатель мог поддерживать заданные обороты не зависимо от приложенной нагрузки вперед либо назад

Это делается в самом приемнике. Т.е. принял он обороты в виде числа 123 и дальше старается их поддерживать, передавать ничего никуда не надо. Да и вообще ничего не надо пока с пульта не поступит другая команда, только вот как раз обороты поддерживать (кстати это послежнее, чем передавать команды с шим).

mag155
Offline
Зарегистрирован: 21.12.2017

Это уже не приемник. История не в тему ну все же. Решил я собрать мини привод постоянного тока с реверсом поддержанием момента и торможение рекупирацией.Тоесть мы отслежуем напряжение на контактах двигателя и в случае превышения заданног напряжения надо тормозить путем переключения реверса.Проблема в том что при реверса плюс меняется на минус а ардуино с отрицательным напряжением не работает. Кто что посоветует ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

как вариант диодный мост и по полевику на +  и - с выхода диодного моста. только в момент рекуперации нужно драйвер вырубать. или драйвер с полным управлением всеми транзисторами моста (драйвера) и два диода с общим катодом (удобно применить сборку в корпусе TO-220 как в блоках питания, хотя смотря какой ток конечно), а в качестве нижнего полевика использовать нужный нижний транзистор драйвера. в зависимости от направления нужный открываем. чем больше открываем тем сильнее торможение и рекуперация

mag155
Offline
Зарегистрирован: 21.12.2017

Как вот только изменение полярности при торможении побороть идеи есть? Аналоговые входы отслеживает только от 0 до 250.

Morroc
Offline
Зарегистрирован: 24.10.2016

В другой полярности вы тоже что то мерить хотите или уже нет ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

mag155 пишет:
Как вот только изменение полярности при торможении побороть идеи есть? Аналоговые входы отслеживает только от 0 до 250.

Так вроде написал. Оба варианта подходят для разной полярности

При чем тут аналоговые входы?

mag155
Offline
Зарегистрирован: 21.12.2017

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

А когда ты управляешь драйвером будто ты не знаешь

mag155
Offline
Зарегистрирован: 21.12.2017

В случае если двигатель на малой мощности под действием внешних сил начнет вращаться в обратную сторону ардуино должна это исправить добавив мощности в правильную сторону.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

А причем тут аналоговые входы. Энкодер поставь