Помогите разобраться с питанием в проекте.

Aref
Offline
Зарегистрирован: 25.03.2014

Я почти не разбираюсь в электрике, тем не менее умудрился собрать робота, который состоит из:

2 аккумулятора 8.4v NiMH 3800mAh
2 уз-дальномера HC-SR04
2 электромотора на колеса как на изображении
[​IMG]
4 серво (2шт HXT900 и 2шт RDS3115)
3 стабилизатора для понижения напряжения на LM2596
1 драйвер моторов на L298N
1 ардуино Уно
1 v5.0 Sensor Shield

I.Ардуина питается от одного аккумулятора со стабилизатором, настроенным на 7 вольт. К ней подключены 2 дальномера; логика драйвера моторов - все через v5.0 Sensor Shield.

II.Другой аккумулятор питает сервы и электромоторы.

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

б.Сервы также питаются от этого второго аккумулятора через еще один стабилизатор LM2596, подключенный к v5.0 Sensor Shield. Питаются 6ю вольтами, для раздельного питания с v5.0 Sensor Shield перемычка убрана. В общем, второй аккумулятор питает через стабилизаторы моторы на 4v и сервы на 6v. Сам аккумулятор на 8.4v, но при полной зарядке мультимер выдает все 9v. Сервы так же рассчитаны на работу от 6 до 4.8v

Но вот в комбинации с сервами не запускаются моторы. По отдельности моторы и сервы работают. От ардуины на питание логики мотор-шилд попадает 4.5 вольт при подключенных сервах. Без серв - 5вольт и моторы крутятся. Получается, что дело в недостаточном питании логики мотор-шилд от ардуины, которое образуется при подключение серв. Только вот из-за чего так происходит, ведь сервы и сами моторы (не логику мотор-шилд) я питаю от отдельного аккумулятора?

 
Aref
Offline
Зарегистрирован: 25.03.2014

Как смог набросал схему подключения. Быть может, надо как-то соединять земли и дело в этом? Моторы не крутятся, если подключены сервы, даже когда на мотор-шилде 5 вольт. Отдельно без серв они работают.

вот схема arduino sensor shield v5

И на всякий случай код еще раз.

// 2 моторa
#define D1 7          
#define M1 8          
#define D2 1         
#define M2 0         
#define ENA 10
#define ENB 9 
// 2 дальномера
#define Trig2 18
#define Echo2 19
#define Trig1 14
#define Echo1 15
// 4 серво
#define SERVO1 3 
#define SERVO2 11
#define SERVO3 5
#define SERVO4 6
#include <Servo.h>
Servo head;
Servo claw;
Servo claw2;
Servo claw3;



void setup(){
  
  pinMode(D1, OUTPUT);
  pinMode(M1, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(M2, OUTPUT);
  
  pinMode(Trig1, OUTPUT); 
  pinMode(Echo1, INPUT);
  pinMode(Trig2, OUTPUT); 
  pinMode(Echo2, INPUT);  
  
  head.attach(SERVO1);
  claw.attach(SERVO2);
  claw2.attach(SERVO3);
  claw3.attach(SERVO4);
  
  head.write(0);
  delay(1000);
  head.write(160);
  delay(1000);
  head.write(79);
  delay(1000);
  
  claw2.write(170); 
  delay(1000);
  
  claw.write(43); 
  delay(1000);
   
   claw3.write(69);
  delay(1000);
  claw3.write(80);
  
  delay(1000);
}

unsigned int impulseTime=0;
unsigned int distanceUP_sm=0;
unsigned int distanceDOWN_sm=0;

void loop() 
{ 
  // замер одного дальномера
  digitalWrite(Trig2, HIGH);
  delayMicroseconds(10);  
  digitalWrite(Trig2, LOW); 
  impulseTime = pulseIn(Echo2, HIGH);
  distanceDOWN_sm = impulseTime/58;
  delay(100);
  // замер другого
  digitalWrite(Trig1, HIGH);
  delayMicroseconds(10);  
  digitalWrite(Trig1, LOW); 
  impulseTime = pulseIn(Echo1, HIGH); 
  distanceUP_sm = impulseTime/58; 
  delay(100); 
  // если на обоих больше 10см - движение
   if (distanceUP_sm >= 10 && distanceDOWN_sm >= 10)
  {
    digitalWrite(D1, 1);
    digitalWrite(M1, 0);
    digitalWrite(D2, 1);
    digitalWrite(M2, 0);
    analogWrite(ENB, 254);
    analogWrite(ENA, 254);
  }
  // иначе - стоп
else {
    analogWrite(ENA, 0);
    analogWrite(ENB, 0);
  }
}

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А акум на моторы и на шилд который сколько ампер часов сколько он может выдать сервы много кушают?

Aref
Offline
Зарегистрирован: 25.03.2014

8.4V NiMH 3800mAh - аккум

сервы 4 шт, 2 из них:

RDS3115 Metal gear digital servo Robot servo arduino servo for Robot diy 15kg/cm
скорость:0.14sec/60 градусов по( 6v)
0.16sec/60 градусов по( 7.2v)
крутящий момент:13.5kg. см. на( 4.8v)
15kg. см. на( 6v)
напряжения:4.8v-8.4v

и еще 2:

 HXT900 9g / 1.6kg / .12sec Micro Servo Voltage : 3v ~ 6v

 

Aref
Offline
Зарегистрирован: 25.03.2014

И подключение мотор-шилды на всякий случай

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Я бы замерил потребление в амперах при их работе. Был случии с сервами что тока не хватало. Как в машине при заводе стартером. Пикового тока когда мало она не заведется. Вообщем может очень быть что по напряжению хватает а вот тока на одновременную работу нет. Ну это так если все подключено правильно. Кстати картинка не отображается.

vvadim
Offline
Зарегистрирован: 23.05.2012

а сервы от чего запитаны?