Проект работает только от 5 В. При повышение глючит. Где я налажал?

VOS
Offline
Зарегистрирован: 07.08.2015

Всем привет.

Собираю очередной "звездолет" детям из подножных материалов, и сделал управление главным мотором с помощью ШИМ через нрф24л01+. Пульт использовал от предыдущего проекта - карпового кораблика.

И, вдруг, оказалось, что мой мотор нормально регулируется только тогда, когда Уно запитывается строго от 5 вольт. при попытке поднять входное напряжение хотя бы на 1 -2 вольта, мотор начинает глучить.

Что за...?

Вот схема приемника:Приемник

Вот код приемника:

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Servo.h>

unsigned long time =0; // для засекания времени обновления массива (наличие связи с пультом)

RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно

byte recieved_data[6]; // массив принятых данных
byte servo_ruly = 2; // сервопривод на 2 цифровом (право/лево руля)

byte pwm = 6; // пин 6 на шим
byte data4; // переменная в которую преобразуется радиосигнал джойстика "вперед"

Servo myservo1; //серво руля

byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

void setup() {
  Serial.begin(9600); //открываем порт для связи с ПК

time=millis();


  pinMode(servo_ruly, OUTPUT); // настроить пин сервопривода как выход
pinMode(pwm, OUTPUT); // настроить пин шим как выход

//  pwm = 0;

  myservo1.attach(servo_ruly);
  myservo1.write(90);

       radio.begin(); //активировать модуль
  radio.setAutoAck(1);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах

  radio.openReadingPipe(1, address[0]);     //хотим слушать трубу 0
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp(); //начать работу
  radio.startListening();  //начинаем слушать эфир, мы приёмный модуль
}

void loop() {
  byte pipeNo;

  while ( radio.available(&pipeNo)) 
  {  // слушаем эфир со всех труб
    radio.read( &recieved_data, sizeof(recieved_data) );         // чиатем входящий сигнал
    time=millis(); // засекаем и сбиваем время при каждом приеме данных
      myservo1.write(recieved_data[1]); // повернуть серво на угол с 1 элемента массива
    
        if ((recieved_data[4])>=130) // джойстик в нормальном(центральном) положении дает значение 127-128
    {
    data4 = map (recieved_data[4],130,255,0,255);
    analogWrite (pwm, data4);   
    }
    else {analogWrite(pwm, 0);   
    } 
  }

 
         if((millis()-time)>1000)
         { //если больше 1секунды не обновлялся массив (пропал сигнал пульта), останаливаем мотор
          analogWrite(pwm, 0);
          }

}

На всякий случай схема передатчика:

пульт

Код передатчика:

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
 
RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
 
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
 
#define JOYSTICK_1_X A0
#define JOYSTICK_1_Y A1
#define JOYSTICK_2_X A2
#define JOYSTICK_2_Y A3
#define POTENT_KT803 A4
 
byte button = 3;  // кнопка на 3 цифровом (фара)
 
byte transmit_data[6]; // массив, хранящий передаваемые данные
byte latest_data[6]; // массив, хранящий последние переданные данные
//boolean flag; // флажок отправки данных
 
void setup() {
  Serial.begin(9600); //открываем порт для связи с ПК
 
  pinMode(button, INPUT_PULLUP); // настроить пин кнопки
 
  radio.begin(); //активировать модуль
  radio.setAutoAck(1);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах
 
  radio.openWritingPipe(address[0]);   //мы - труба 0, открываем канал для передачи данных
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)
 
  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!
 
  radio.powerUp(); //начать работу
  radio.stopListening();  //не слушаем радиоэфир, мы передатчик
}
 
void loop() {
 
  transmit_data[0] = !digitalRead(button); // инвертированный (!) сигнал с кнопки
  transmit_data[1] = map(analogRead(JOYSTICK_1_X), 0, 1023, 60, 120); // значение право/лево руля
  transmit_data[2] = map(analogRead(POTENT_KT803), 0, 1023, 10, 160); // регулятор мощности малого хода KT803
  transmit_data[3] = map(analogRead(JOYSTICK_2_X), 0, 1023, 255, 0); // выгруз левый/правый
  transmit_data[4] = map(analogRead(JOYSTICK_1_Y), 0, 1023, 255, 0); // полный/малый вперед + малый назад катера
  transmit_data[5] = map(analogRead(JOYSTICK_2_Y), 0, 1023, 0, 255); // запасной
  radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио
}
 
П.С.: Ардуино для меня только хобби, могу не знать каких-то простых для вас вещей. Может кому будет ясно почему схема работает от 5 вольт, но не работает от7 или 9 вольт. Объясните пожалуйста. Буду признателен.
alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

Оо.Вам скорее понадобиться промежуточное звено.Проблема в том что открытие полевика примерно равно пяти вольтам.Шилд L298N.Выход как раз на Ваш мотор а управляющее напряжение сделать от 0до 5 В

SLKH
Offline
Зарегистрирован: 17.08.2015

VOS пишет:

Всем привет.

Собираю очередной "звездолет" детям из подножных материалов, и сделал управление главным мотором с помощью ШИМ через нрф24л01+. Пульт использовал от предыдущего проекта - карпового кораблика.

И, вдруг, оказалось, что мой мотор нормально регулируется только тогда, когда Уно запитывается строго от 5 вольт. при попытке поднять входное напряжение хотя бы на 1 -2 вольта, мотор начинает глучить.

Что за...?

Вот схема приемника:Приемник

 

 
П.С.: Ардуино для меня только хобби, могу не знать каких-то простых для вас вещей. Может кому будет ясно почему схема работает от 5 вольт, но не работает от7 или 9 вольт. Объясните пожалуйста. Буду признателен.

на картинке УНА питается от 9в по входу VIN, в соответствии со спецификацией. 

можно пояснить про  "Уно запитывается строго от 5 вольт. при попытке поднять входное напряжение хотя бы на 1 -2 вольта, мотор начинает глучить." ? Куда эти 5-6-7 вольт подаются?

VOS
Offline
Зарегистрирован: 07.08.2015

SLKH пишет:

 Куда эти 5-6-7 вольт подаются?

Все время речь идет о питании ардуино. На схеме 9 В, при них схема глючит, а когда даю 5 вольт, то все идеально. Даю 6 вольт и больше - начинает глючить.

SLKH
Offline
Зарегистрирован: 17.08.2015

VOS пишет:

SLKH пишет:

 Куда эти 5-6-7 вольт подаются?

Все время речь идет о питании ардуино. На схеме 9 В, при них схема глючит, а когда даю 5 вольт, то все идеально. Даю 6 вольт и больше - начинает глючить.

 

при подаче 5 - 6 - 7v на вход VIN  какие напряжения на пине "5v" ?

VOS
Offline
Зарегистрирован: 07.08.2015

SLKH пишет:

при подаче 5 - 6 - 7v на вход VIN  какие напряжения на пине "5v" ?

Завтра отпишусь. Ардуино не со мной сейчас.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

VOS , напишите подробно на какие именно пины ардуины и какое напряжение подаёте. Т.к. у ардуины несколько вариантов запитки - через стабилизатор и напрямую на микроконтроллер. И для каждого варианта напряжения различаются.

VCC (5V) - строго 5В

VIN (RAW) - от 7В до 12В

VOS
Offline
Зарегистрирован: 07.08.2015

SLKH пишет:

при подаче 5 - 6 - 7v на вход VIN  какие напряжения на пине "5v" ?

при подаче 5v на  VIN напряжение на пине  "5v" равно 4,2v,

при подаче 6v и больше на  VIN напряжение на пине  "5v" равно 5v,

при поднятии с 5v до 6v на  VIN, напряжение на пине  "5v" плавно растет от 4,2 до 5 v.

VOS
Offline
Зарегистрирован: 07.08.2015

Jeka_M пишет:

VOS , напишите подробно на какие именно пины ардуины и какое напряжение подаёте. 

Всегда запитываю только через VIN. Даю от 5В до 12В.

Теперь понял, что стаб выравнивает 5 вольт при подаче от 6вольт минимум.

SLKH
Offline
Зарегистрирован: 17.08.2015

VOS пишет:

Jeka_M пишет:

VOS , напишите подробно на какие именно пины ардуины и какое напряжение подаёте. 

Всегда запитываю только через VIN. Даю от 5В до 12В.

Теперь понял, что стаб выравнивает 5 вольт при подаче от 6вольт минимум.

"Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В."

http://arduino.ru/Hardware/ArduinoBoardUno

 

Гриша
Offline
Зарегистрирован: 27.04.2014

VOS пишет:

П.С.: Ардуино для меня только хобби, могу не знать каких-то простых для вас вещей. Может кому будет ясно почему схема работает от 5 вольт, но не работает от7 или 9 вольт. Объясните пожалуйста. Буду признателен.

Откиньте мотор и повесьте лампочку или светодиод. Как физически соединены земли? Источники питания строго как на схеме или как-то иначе? Добавьте в программу еще один ШИМ и повесьте контрольный светодиод (управление программно-параллельное) – что когда происходит (при любом ШИМ или определенном значении)?.

 

svm
Offline
Зарегистрирован: 06.11.2016

Во первых вопрос. Что означает мотор гючит? Он начинает светиться, разговаривать или изменяет скорость?

Все достаточно странно, если схема собрана правильно и стабилизатор в ардуино работает, то изменение напряжения питания в разумных пределах (6-12В) не должно влиять. Наиболее вероятен вариант неправильного подключения земляных проводников источников питания мотора и ардуины. Минусоовые провода обоих источников  должны быть соединены в одной точке. И посмотрите, хотя-бы тестером, а лучше осциллографом, что происходит на затворе силового транзистора при изменении питания.

 

VOS
Offline
Зарегистрирован: 07.08.2015

svm пишет:

Что означает мотор гючит?

Когда на питание подаю 5 В все работает гуд - меняю сопротивление на пульте и мгновенно (для человеческого глаза) отзывается приемник, меняя напряжение на моторе или светодиоде. Когда даю 6 вольт или больше на питание, то реакция замедленная, очень. 

svm пишет:

что происходит на затворе

Вчера вечером сделал это, оказывается, что сигнал на пин 6 появляется с задержкой, а не задержку дает сам полевик. Получается, какая-то лажа с радиоканалом.У меня по этой схеме, на базе этого скетча работала схема от 9 вольт без проблем. ХЗ, что ему стало. Сегодня попробую напаять жменю кондеров на питание нрф. Вэтот раз я не делал этого, т.к. они есть на ЛМ2596 на входе и выходе, но все же...

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Тогда ещё вопрос:
Зачем вы в передатчике повышаете напряжение до 9 Вольт?
Чтобы потом греть стабилизатор у НАНО ?

VOS
Offline
Зарегистрирован: 07.08.2015

trembo пишет:
Тогда ещё вопрос: Зачем вы в передатчике повышаете напряжение до 9 Вольт? Чтобы потом греть стабилизатор у НАНО ?

Затем, что 9 вольт правильное (6-12В) питание, а моя схема работает только при неправильных 5 вольтах на питании. Хочется разобраться, что происходит.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

То есть подать 5 Вольт на клемму
с надписью "5 Вольт" вы считаете неправильным решением?

VOS
Offline
Зарегистрирован: 07.08.2015

trembo пишет:
То есть подать 5 Вольт на клемму
с надписью "5 Вольт" вы считаете неправильным решением?

Уже не считаю.))
Просто всегда пользовал vin. Говорю о нем. Хочу понять, почему по такой запитке не работает.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Во первых почитайте про 1117 и его параметр падения напряжения.
Во вторых про фьюзы boden.
http://easyelectronics.ru/avr-uchebnyj-kurs-konfiguraciya-fuse-bit.html

А потом вперёд с мультиком измерять эти самые насряжения.
Кстати кондёр на ножках нрф крайне рекомендуется

VOS
Offline
Зарегистрирован: 07.08.2015

trembo пишет:
Во первых почитайте про 1117 и его параметр падения напряжения.
Во вторых про фьюзы boden.
http://easyelectronics.ru/avr-uchebnyj-kurs-konfiguraciya-fuse-bit.html

А потом вперёд с мультиком измерять эти самые насряжения.
Кстати кондёр на ножках нрф крайне рекомендуется


Спасибо

svm
Offline
Зарегистрирован: 06.11.2016

VOS пишет:

 

Когда на питание подаю 5 В все работает гуд - меняю сопротивление на пульте и мгновенно (для человеческого глаза) отзывается приемник, меняя напряжение на моторе или светодиоде. Когда даю 6 вольт или больше на питание, то реакция замедленная, очень. 

 

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

Правильно заданный вопрос-половина ответа.

Гриша
Offline
Зарегистрирован: 27.04.2014

 nrf 3,3В  а ардуино 5В они сопряжены по лог. уровням (сам с ним не работал)? А то получится питаение передатчика по ногам данных через защиту. При питании 5 В через стабилизатор дуине достается не более 4,5В - обоим устройствам нормально, а если поднять - радиомодуль может сдуться... 

VOS
Offline
Зарегистрирован: 07.08.2015

Народ, всем спасибо.

Дело было в кондерах. Добавил электролит 10мкФ и многослойный 0,01 мкФ (Всегда такую пару ставлю) и все работает, как часы. 

Моей ошибкой было исключить пару кондеров, понадеявшись на кондеры в ЛМ2596.

Еще раз спасибо всем. Узнал много нового в процессе. ))

Удачи.

svm
Offline
Зарегистрирован: 06.11.2016

Поздравляем!