Вопрос по питанию проекта

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

Здравствуйте, собираю свой проект робот-пылесос. В состав входит : два колеса ( с мотор редуктором, стандартные желтые), драйвер L298N, ультразвуковой датчик, сервопривод (sg90). Питаться это все должно от двух 18650, соединены параллельно через модуль разряда-заряда TP4056(тоже параллельно соединил, проверял заряжает до 4.2 и выключается обо по мере заряда каждого). Кинул через повышайку MT3608, получил общую шину 5.5 В , запитал ардуино в VIN/GND( на 5V и GND поставил конденсатор 470 электролитический) и драйвер от этой же шины.

Включаю драйвер, ардуинка загорается, движки свистят, но не крутят. Подключал от стационарного блока питания по аналогичной схеме( выход у него тоже 5.5). Все работает прекрасно кружиться, вертиться. 

Я так понял, что проблема именно в питании, повышайка слишком зашумлена либо не вытягивает по току. Что посоветуете сделать? Заменить повышайку? На какую? Пробовал запитывать повышайкой только силовую нагрузку, аккумами отдельно питал ардуинку, получилась та же песня.

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

До 7-9 В пробовал повышать, тоже результатов нет

rkit
Offline
Зарегистрирован: 23.11.2016

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

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

В нормальном режиме, считаем что крутиться два движка, там не больше 0.5 А по паспорту, да во время пуска с пусковыми токами может быть и 1А+, но я пробовал включать только 1 двигатель в схему, та же песня

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

Технические характеристики, движков

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Без схемы и скетча здесь будет только глум, смехуёчки и Ваши обиды на форум, на его обитателей и на жизнь в целом. Так что или выкладывайте схему и скетч, или прекращайте писать/читать тему пока ещё не до конца разочаровались в человечестве. Это я Вам «как мать говорю и как женщина»

И, кстати, не знаю, что Вы там повышали, но 5.5 на Vin не подают. Делайте пять и подавайте на 5V

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

Пробовал и на 5V повышать и в 5V. Тот же результат, не уверен нужен ли для этого скетч, но схемку, набросаю скину.

lilik
Offline
Зарегистрирован: 19.10.2017

Что вы всё данными сыплете :) Возьмите повышайку на 5 Вольт и прямо два движка к ней и замер напряжения скажите - будет понятно всё и сразу. 

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

Мда, видимо засиделся, я уже, что-то забыл, что так можно). Щас попробую.

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021
#include <Ultrasonic.h>
#include "ServoSmooth.h" 

//Шим: 3,5,6,9,10,11


#define echo 8
#define trig 7
int serv = 9; // 9 and 10 for servo
int start1 = 1;
Ultrasonic ultrasonic(trig, echo);
ServoSmooth servo1;

//Ultrasonic  
float dist_3[3]={0.0, 0.0, 0.0};
float k;
float middle, dist, dist_filt;
byte delta;
unsigned long sensTimer;

//end
int rflag=1;
int lflag=0;

#define PIN_ENA 5 //Вывод управления скоростью вращение мотора №1 
#define PIN_ENB 6 //Вывод управления скоростью вращение мотора №2
#define PIN_IN1 2 //Вывод управление направлением вращения мотора №1
#define PIN_IN2 3 //Вывод управление направлением вращения мотора №1
#define PIN_IN3 4 //Вывод управление направлением вращения мотора №2
#define PIN_IN4 12 //Вывод управление направлением вращения мотора №2

  int power = 200; // Значение ШИМ ( или скорости вращения)

void setup() {
  // Установка всех управляющих пинов в режим выхода
  pinMode(PIN_ENA, OUTPUT);
  pinMode(PIN_ENB, OUTPUT);
  pinMode(PIN_IN1, OUTPUT);
  pinMode(PIN_IN2, OUTPUT);
  pinMode(PIN_IN3, OUTPUT);
  pinMode(PIN_IN4, OUTPUT);
  // Команда остановки двум моторам

     digitalWrite(PIN_IN1, LOW);

     digitalWrite(PIN_IN2, LOW);

     digitalWrite(PIN_IN3, LOW);

     digitalWrite(PIN_IN4, LOW);
    servo1.attach(serv,70);
    servo1.smoothStart();
}
//Начало функций движений

void MForward(){
  //delay 850 
   power = 200;
      analogWrite(PIN_ENA, power);
      analogWrite(PIN_ENB, power);
  
  digitalWrite(PIN_IN1, HIGH);
  digitalWrite(PIN_IN2, LOW);
  digitalWrite(PIN_IN3, HIGH);
  digitalWrite(PIN_IN4, LOW);
  }
  
 void MBack(){
  //delay 850 
   power = 200;
      analogWrite(PIN_ENA, power);
      analogWrite(PIN_ENB, power);
      digitalWrite(PIN_IN1, LOW);
      digitalWrite(PIN_IN2, HIGH);
      digitalWrite(PIN_IN3, LOW);
      digitalWrite(PIN_IN4, HIGH);
  }
  
 void MRight(){
    //delay 1500 
         power = 210;
  
      analogWrite(PIN_ENA, power);
      analogWrite(PIN_ENB, power-10);

      digitalWrite(PIN_IN3, HIGH);
      digitalWrite(PIN_IN4, LOW);
      digitalWrite(PIN_IN1, LOW);
      digitalWrite(PIN_IN2, HIGH);
  }
  
  void MLeft(){
    //delay 1500 
    power = 210;
      analogWrite(PIN_ENA, power-10);
      analogWrite(PIN_ENB, power);
  
      digitalWrite(PIN_IN1, HIGH);
      digitalWrite(PIN_IN2, LOW);
      digitalWrite(PIN_IN3, LOW);
      digitalWrite(PIN_IN4, HIGH);   
  }
  
  void Mstop(){
 

  
      digitalWrite(PIN_IN1, LOW);
      digitalWrite(PIN_IN2, LOW);
      digitalWrite(PIN_IN3, LOW);
      digitalWrite(PIN_IN4, LOW);
  }
// Конец функций движения

void loop() {
  //Задержка запуска
if(start1 == 1) {
    
    delay(700);
    start1 = 0;
      servo1.write(70);
     }
   
  



//Проверка движения
/*
    MForward();
    delay(850);
    Mstop();
    delay(500);
    MBack();
    delay(850);
    Mstop();
    delay(500);
    MLeft();
    delay(1500);
    Mstop();
    delay(500);
    MRight();
    delay(1500);
    Mstop();
    delay(500);
    Mstop();
    delay(1500);
    */
    

  for(int i = 0;i <= 2;++i){

    dist_3[i] = ultrasonic.distanceRead();                 // получить расстояние в текущую ячейку массива
  }
  dist_filt = middle_of_3(dist_3[0], dist_3[1], dist_3[2]);    // фильтровать медианным фильтром из 3ёх последних измерений


  
  if(dist_filt >= 25){
    MForward();
    delay(50);
  }
  else { if(rflag==1){
    Mstop();delay(20);
    MRight(); //поворот на 90
    delay(1000);
    Mstop();
    delay(50); 
    MForward();// прямо на 1 габарит 
    delay(850);
    MRight(); //поворот на 90
    delay(1000);
    rflag=0;
    lflag=1;
    } 
    else{ if(lflag==1){
      Mstop();delay(20);
      MLeft(); // влево на 90
      delay(1000);
      Mstop();
      delay(50);
      MForward();// прямо на 1 габарит
      delay(850);
      MLeft();// влево ещё на 90
      delay(1000);
      lflag=0;
      rflag=1;
      }
    }
    }

}



// медианный фильтр из 3ёх значений
float middle_of_3(float a, float b, float c) {
  if ((a <= b) && (a <= c)) {
    middle = (b <= c) ? b : c;
  }
  else {
    if ((b <= a) && (b <= c)) {
      middle = (a <= c) ? a : c;
    }
    else {
      middle = (a <= b) ? a : b;
    }
  }
  return middle;
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

VODOLAZ47 пишет:
не уверен нужен ли для этого скетч

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

ЕвгенийП пишет:

Без схемы и скетча здесь будет только глум, смехуёчки и Ваши обиды на форум, на его обитателей и на жизнь в целом. 

Так что, можете не выкладывать, но когда Вам захочется назвать всех здешyих обитателей мудаками, вспомните о моём предупреждении и крепко подумайте, кто повёл себя как мудак :-)

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

Скетч я скинул, но было бы теперь хорошо закрыть тему, если модераторы есть. При пуске 2 движков действительно проседает напряжение под нагрузкой до 3.5. Думаю проблема всё таки в преобразователе .

Vlad1m1r
Vlad1m1r аватар
Offline
Зарегистрирован: 08.06.2019

Память останется навсегда

lilik
Offline
Зарегистрирован: 19.10.2017

VODOLAZ47 пишет:

Скетч я скинул, но было бы теперь хорошо закрыть тему, если модераторы есть. При пуске 2 движков действительно проседает напряжение под нагрузкой до 3.5. Думаю проблема всё таки в преобразователе .

Для твёрдости гипотезы надо замерить на аккуме когда к нему напрямую движки.

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

lilik пишет:

VODOLAZ47 пишет:

Скетч я скинул, но было бы теперь хорошо закрыть тему, если модераторы есть. При пуске 2 движков действительно проседает напряжение под нагрузкой до 3.5. Думаю проблема всё таки в преобразователе .

Для твёрдости гипотезы надо замерить на аккуме когда к нему напрямую движки.

Если напрямую, то с 4.1 до 3.56 В просадки. А вот повышайка даже если ставить 9В понижает до 3.5.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Китайские два ампера этого модуля нужно делить на два

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

v258 пишет:

Китайские два ампера этого модуля нужно делить на два

Да, но я нашел ещё один гвоздь, как оказалось модуль заряда-разряда, даже при небольшой нагрузке, снижает напряжение

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

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

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

Всем, спасибо, что ответили, завтра, перепаяю сообщу об изменениях .

Weisnar
Weisnar аватар
Offline
Зарегистрирован: 19.07.2018

b707 пишет:
ставьте TP4056 только на заряд, а разряд напрямую

В этом году заметил, что купил разные TP4056. Одни дают 2А, а вторые - нет. Под увеличилкой фоткал отличие маркировки их компонентов, так что кому будет сильно интересно, могу найти. 

И из-за этого тоже подумывал, а что если "только на заряд, а разряд напрямую". Проблема только, что лично мне функция защиты от полного разряда тоже полезна. И вроде как её можно компенсировать встроенной в AVR системой BOD: 

Но руки так и не дошли и пока стараюсь там где надо использовать TP4056, которые точно выдают 2А.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Защиту от разряда делает не TP4056, а маленький чип на краю платы. Кроме того продаются отдельные платы защиты типа таких - https://aliexpress.ru/item/32822496220.html

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

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

v258 пишет:

Защиту от разряда делает не TP4056, а маленький чип на краю платы. Кроме того продаются отдельные платы защиты типа таких - https://aliexpress.ru/item/32822496220.html

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

Вот так соединял, если снимать с Out+/- идут просадки по напряжению, напрямую к аккуму, просадок нет.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Это просто сказка какая-то ))) Зачем вы это наворотили? Зачем там вообще две платы? Вам так критична скорость зарядки? Тогда выберите другую плату зарядки, например эта - https://aliexpress.ru/item/4001185451085.html - на 3 ампера. А так вы, простите, хню наворотили

ЗЫ: если IN+ и OUT+ на плате TP4056 соединяются напрямую, то IN- и OUT- разрываются мосфетом защиты. А вы что насоединяли? ))

В общем, как я и говорил - коряво подключили, вот и имеете проблемы

VODOLAZ47
Offline
Зарегистрирован: 17.05.2021

v258 пишет:

Это просто сказка какая-то ))) Зачем вы это наворотили? Зачем там вообще две платы? Вам так критична скорость зарядки? Тогда выберите другую плату зарядки, например эта - https://aliexpress.ru/item/4001185451085.html - на 3 ампера. А так вы, простите, хню наворотили

ЗЫ: если IN+ и OUT+ на плате TP4056 соединяются напрямую, то IN- и OUT- разрываются мосфетом защиты. А вы что насоединяли? ))

В общем, как я и говорил - коряво подключили, вот и имеете проблемы

Понял, снимать + и - с out можно, если  in+ и in - не задействованы, если задействованы, то только через мосфет

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Простите, но вы таки не понимаете, что вы там наворотили. Уберите одну плату и убедитесь, что проблема ушла. Если так уж критично две платы - тупо соедините их в параллель. А сейчас у вас нагрузка подключена к OUT+ одной платы  и OUT- другой. И если плюсы плат соединены, то OUT- плат разорваны. В общем, дело ваше, можете настаивать дальше, но так работать не будет ))

ЗЫ: чуть наврал - не IN- и OUT- разрываются мосфетом, а OUT- и BAT-

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Е мае... а китайцы то уже серийные продают... Отстали мы.... Там за 10 тыр и ультразвуковые сенсоры, и оптические, и лидар !!!! Если это все по отдельности покупать то в полтинник не уложисся.... А он еще и умный все видит, все слышит, по вай фай управляется, вотку привозит , если попросишь.... А тут собирают.... Чудны дела твои , господи...

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

brokly пишет:

Е мае... а китайцы то уже серийные продают... Отстали мы.... Там за 10 тыр и ультразвуковые сенсоры, и оптические, и лидар !!!

А если купить 2 и раздербанить, можно запилить проект из соседней темы про синхронизацию машинок с объездом препятствий)) Надо закинуть туда идею