Тяжелый квадрокоптер на Arduino Mega 2560

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

ок, только может не МВт, а мВт?
Там написано
Receiver sensitivity to -121 dBm
Transmit power up to 20dBm (100mW)

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

что-то я ничего не могу понять.... 

сегодня доставили заказанный мною БП для аймакса

начал я заряжать на 2,6А, оно зарядило за 130 мин до 5200mAh которые я задал в настройках, напряжение на всех банках при этом было по 12.5V

затем я решал разрядить... и тут началось самое плохое... 

разряжал я 1А, но оно не поднялось выше 0,6А 

и... остановилось разрядив ~4300mAh с ошибкой Low Voltage, при этом напряжение на банках почему-то стало 3.6 2.9 2.9

что бы это значило?? зарядило полностью, а разрядило не полностью?

faand
Offline
Зарегистрирован: 27.09.2014

По току разряда все правильно, больше 0,6 А на трех банках он и не должен давать. У iMAX в цепи разряда стоят 5 Вт резисторы который и так не плохо нагреваются.

 

iMAX B8

 

Зарядник зафиксировал потерю емкости двух банок и отрубился. Банки с напругой 2,9 В скорее всего дохлые.

Можно попытаться зарядить банки по отдельности до 4,2 В (как однобаночную батарею). Когда все баки будут заряжены до 4,2 В произвести разрядку батареи. И так несколько раз. Если результат будет такой же как ты получил, то твоя батарея г...но, летать не будет. Если же выровняешь банки, и при разрядке у всех будет одинаковое напряжение, то скорее всего тебе попались не селектированные банки, у меня такое было на 4 батареях, ну а одну я с разу выкинул, вдохнуть в нее жизнь так и не удалось. Новое не значит рабочее, на дешевых батареях это встречается чаще чем на брендовых такое большая едкость, но иногда встречается.

Проверь на другой батарее, если результат будет такой же то скорее всего гонит зарядник. Хотя я больше склонен винить батарею. По одной батарее трудно сказать на 100% кто виноват.

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

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

а как выбирать потом какую банку заряжать (когда по-одной)? вот нажму я заряжать липо 1 банка, игнорировать то, что будет разность при проверки и при введенных кол-ве банок? 

и каким током заряжать по-одной банке?

и в каком режиме?

faand
Offline
Зарегистрирован: 27.09.2014

В меню надо выставить 1S - 1 банка (только не помню можно ли в iMAX выбрать 1 банку ?) посмотри в меню... я этот трюк проделывал другим зарядником "Hyperion".

Зарадя производится не через силовой разьем батареи, а через балансировочный! В твоей батарее банки соеденины последовательно.

Черный вывод балансировочного разъема минус третей банки, следующий вывод будет ее плюсом (проверяй тесером).

Подключаем выход (OUTPUT) зарядника черный (-) на черный балансировочного разъема, красный от зарядника (+) на плюсовой первой банки... и заряжаем до 4,2 В током 1А.

Таким образом мы зарядили первую банку.

Далее мы должны зарядить вторую банку и для этого нам надо переподключить выход от зарядника к другой банке. В этом случае минусом второй банки будет плюс первой банки и сюда кидаем черный провод от зарядника, седующий контакт на балансировочном разъеме будет плюсом второй банки, и сюда кидаем красный провод от зарядника. Заряжаем до 4,2 В током 1А.

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

Для зарядки третье банки надо подключить черный провод от зарядника на плюсовой провод второй банки, а красный от зарядника на крайний контакт балансировочного разъема и зарядить третью банку до напряжения первых двух банок таким же током 1 А.

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

Потом разряжай эту батарею, если получишь большую разницу в банках по напряжению значит твоя батарея г...но. Напруга на каждой банке не должна опускаться ниже 3,7В при разрядке, и выше 4,2В при зарядке. Чем больше разброс по напряжению между банками тем хуже батарея.

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

в общем я сегодня попробовал зарядить в баланс режиме, заряжал 3А, напряжение было 4,2V 4,16V 4,15V (думаю это неплохой показатель)

далее я разрдил... и тут вот такое: до 3,7V 3,7V 3,7V все шло ровно и стабильно, никакого дисбаланса, но было разряжено на 3800mAh, и я попробовал еще немного подождать: до 3,64V 3.57V 3.58V и тогда я остановил с результатом 4275mAh 

так вот вопрос: может ли еще оставаться 925mAh в аккуме на этих остатках? (ну тоесть какова вероятность, что китайцы надурили)

если не разряжать ниже 3,7V - это нормальный был бы показатель?

+ вопрос: есть ли такие-то можули, способны считывать напряжение по банкам и прочию инфу с аккума и передавать на ардуино? 

вот например такого, но он для APM 2.6 Pixhawk

 

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

Балансируйте дальше. Несколько раз. Раскачается. А вероятность есть. Разряжать можно до 3.4-3.5. Но это уже в ноль....

https://www.google.ru/search?q=lipo+charging&newwindow=1&biw=1680&bih=902&source=lnms&tbm=isch&sa=X&ei=JLAEVZ_3GYHPONL4gOAM&sqi=2&ved=0CAcQ_AUoAg#newwindow=1&tbm=isch&q=lipo+discharging

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

а что на счет датчика?
вот есть такой , но он выводин нужную мне информацию только на свой дисплейчик и не показывает емкость, а мне нужен такой, что сможет передать информацию на ардуину. есть такой?

p.s аккум полностью наладился

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

Часто что-то подобное просто ставят в кадр FPV полётной камеры. Ну а дальше смотрим на экране. Дёшево и сердито...

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

не, ну так не пойдет... а вот есть еще OSD, они кроме как налаживать все нужные данные на видео, могут передать эти данные в цифровом виде на ардуину?

 

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

если бы как-то переделать немного проект человека

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

Здравствуйте! У меня возникла проблема. Я решил проверить моторы, пробуя следущее:

Программа на Delphi отправляет на Com Port стринговую строку состоящию из 4 значений ползунков (от 1000 до 2000)

Сетч на Arduino ее принимает, создает массив из 4 элементов, деля ее и переводит как числа, затем отправляет эти значения на ESC

И тут происходит неприятное:

1) Запускаю, в скетче автоинициализация (посылка макс/мин), двигаю ползунки, а оно не меняется, вот какую начальную скорость ему послали, так он и крутится... и главное - если через терминал ввести значение, мотор вообще останавливается... непонимаю почему так и что я не правильно делаю..

Я должен двигать ползунок ближе к 2000, а оно соответственно должно увеличивать скорость, но этого не происходит.

Знатоки, прошу вашей помощи. Вот скетч, а внизу проект на Delphi (использую компонент ComDrv32)

#include <Servo.h> 

Servo motor_1;
Servo motor_2;
Servo motor_3;
Servo motor_4;

int js_position[4]; //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей

int mot_pin_1 = 7;    //Подключаем 1 мотор к пину 7
int mot_pin_2 = 8;   //Подключаем 2 мотор к пину 8
int mot_pin_3 = 9;    //Подключаем 3 мотор к пину 9
int mot_pin_4 = 10;  //Подключаем 4 мотор к пину 10

int max_position = 2000; //Максимальное значение ШИМ 2.0 мс
int min_position = 1000;  //Минимальное значени ШИМ 1.0 мс

int start = 1;  //Флаг задержки запуска

void startEngine() //Запуск моторов
{
  motor_1.write(max_position);
  motor_2.write(max_position);
  motor_3.write(max_position);
  motor_4.write(max_position);
  delay(100);
  motor_1.write(min_position);
  motor_2.write(min_position);
  motor_3.write(min_position);
  motor_4.write(min_position);
  delay(100);
  Serial.println("Motors start");
} 

void setup() 
{
  Serial.begin(115200); 
  motor_1.attach(mot_pin_1, min_position, max_position);    //Инициальзация 1 мотора (порт, начальная позиция, максимальная позиция)
  motor_2.attach(mot_pin_2, min_position, max_position);    //Инициальзация 2 мотора (порт, начальная позиция, максимальная позиция)
  motor_3.attach(mot_pin_3, min_position, max_position);    //Инициальзация 3 мотора (порт, начальная позиция, максимальная позиция)
  motor_4.attach(mot_pin_4, min_position, max_position);    //Инициальзация 4 мотора (порт, начальная позиция, максимальная позиция)
} 

void devideStr(String str)  // Деление строки на слова.
{
     js_position[1]=str.substring(0,4).toInt();
     js_position[2]=str.substring(5,9).toInt();
     js_position[3]=str.substring(10,14).toInt();
     js_position[4]=str.substring(15,19).toInt();
}

void loop() 
{
  //Начальная установка регуляторов в нулевое положение
  if(start == 1){
    startEngine();
    motor_1.write(min_position+250);
    motor_2.write(min_position+250);
    motor_3.write(min_position+250);
    motor_4.write(min_position+250);
    delay(100);
    start = 0;
  }
  
  String s;
  //Serial.println("1");
  while (Serial.available())    //если есть что читать
  {
    s=Serial.readString();
    /*
      Serial.print("String: "); //выводим строку
      Serial.println(s);
     Serial.println(s.substring(0,4).toInt());
     Serial.println(s.substring(5,9).toInt());
     Serial.println(s.substring(10,14).toInt());
     Serial.println(s.substring(15,19).toInt());
    */
     
      //devideStr(s);
     js_position[1]=s.substring(0,4).toInt();
     js_position[2]=s.substring(5,9).toInt();
     js_position[3]=s.substring(10,14).toInt();
     js_position[4]=s.substring(15,19).toInt();
     /*
     Serial.println(js_position[1]);
     Serial.println(js_position[2]);
     Serial.println(js_position[3]);
     Serial.println(js_position[4]);
     */
      motor_1.write(js_position[1]);     //Записываем положение и отправляем на регулятор 1 мотора
      motor_2.write(js_position[2]);     //Записываем положение и отправляем на регулятор 2 мотора
      motor_3.write(js_position[3]);     //Записываем положение и отправляем на регулятор 3 мотора
      motor_4.write(js_position[4]);     //Записываем положение и отправляем на регулятор 4 мотора 
      delay(100);
    
      s = "";
  }
  
  delay(20);  //Задержка цикла 20 мс
}

проект управления 

Dmitry_DM
Offline
Зарегистрирован: 02.11.2014

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

Anna32827
Offline
Зарегистрирован: 06.12.2015

У вас всё получилось и вапрос вы смогли зделать управление спомошью компьютера

questioner
Offline
Зарегистрирован: 10.06.2016

Anna32827 пишет:

У вас всё получилось и вапрос вы смогли зделать управление спомошью компьютера

 

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