Электротранспорт
Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск    

Реклама:

Продвинутое самодельное универсальное ЗУ на МК

Страницы: 123 ... 37>>Вниз

Автор Тема: Продвинутое самодельное универсальное ЗУ на МК  (Прочитано 9564 раз)

0 Пользователи и 1 Гость просматривают эту тему.

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Данная тема является естественным развитием темы "Моргалка на Arduino. Этюды для начинающих"
Здесь предлагается описывать схемы не простых моргалок, а навороченных, с дополнительными функциями - такими как разряд, измерение тока, внутреннего сопротивления, различные дисплеи, органы управления, сбор данных, связь через интернет... и прочее-прочее-прочее, что выходит за рамки простейших моргалок для начинающих.


Информация по методам и алгоритмам заряда применяемых в этой теме
Скрытый текст
Заряд постоянным током
Скрытый текст
Это такой заряд, при котором постоянные ток и напряжение подаются на аккумулятор непрерывно, без пауз, до конца заряда, пока ток заряда не достигнет минимального значения.  Существуют разные методы, например Метод Вудбриджа - когда на аккумулятор подается напряжение  с верхним порогом 14,4-16В, без ограничения тока, в результате сначала ток имеет максимальное значение, а затем постепенно снижается в конце.  Далее Классический метод CC-CV.     СС - означает, что сначала заряжают стабилизированным током 0,1-0,3С   CV -в конце стабилизированным напряжением = 14,4-16В.   
Импульсный заряд
Скрытый текст
Импульсный заряд, это такой заряд, при котором используется импульсы тока длительностью от микро секунд до несколько десятков секунд.  Между импульсами делаются паузы, длительность которых может быть от долей секунды до нескольких десятков секунд..  здесь не надо путать импульсные ЗУ с простыми зарядными устройствами, которые используют импульсные блоки питания с выпрямлением и стабилизацией тока и напряжения, с сглаживающими фильтрами.. такие ЗУ не считаются импульсными, они просто используют современные импульсные блоки питания.
Импульсы заряда могут еще заполнятся импульсами более высокой частоты - ШИМ..  в таких случаях импульсы с более высокой частотой будут называться пачками ШИМ, а основные импульсы - модулирующими или модуляцией (зачастую идет путаница в названиях). 

Основные отличия импульсного заряда от заряда непрерывным, постоянным током
Скрытый текст
Поскольку в импульсном заряде используется пауза, то за время паузы происходит стабилизация (релаксация или рассасывание, к примеру - диссипация тепла в паузе..) химических процессов, что позволяет подавать импульсы с более высоким потенциалом не перегревая аккумулятор и не допуская бурный электролиз в конце заряда.  В свою очередь, импульсы с более высоким потенциалом способствуют более энергичному процессу десульфации, восстановлению, меньше изнашиваются положительные пластины (которые изнашиваются быстрее отрицательных при малых токах заряда)..   и как итог - продлению срока службы аккумулятора. Как правило, там где обычные ЗУ уже не в состоянии нормально заряжать, импульсное ЗУ способно  зарядить и восстановить аккумулятор до рабочего состояния.

Основные методы и алгоритмы импульсного заряда
Скрытый текст
Поскольку импульсный заряд предполагает очень широкий набор значений таких как - длительность импульса, длительность паузы,  частоты, коэффициента заполнения..  а также значений тока и напряжений, то это налагает бОльшую ответственность за правильный подбор этих параметров, иначе результат может быть непредсказуем, причем как в лучшую, так и в худшую сторону..   Именно из-за неправильного применения характеристик имп. заряда, зачастую люди спотыкаются и разочаровываются в импульсном заряде.. а то и вовсе, - становятся ярыми противниками.
Скрытый текст
По конструкции ЗУ,  по сложности алгоритмов на форуме применяются следующие терминологии.
"Долбилки" - устройства использующие импульсный заряд с малой длительностью импульсов, но имеющие высокий потенциал до 40 Вольт и током в сотни или больше Ампер..  алгоритм, как правило, простой и схема тоже.
"Моргалки" - прерыватели заряда построенные на реле, либо на микросхемах, к примеру на таймерах LM555 с простым алгоритмом.
"Моргалки на МК" (на микроконтроллерах)  - то же самое, но с применением микроконтроллеров, с несложным алгоритмом.
Импульсные адаптивные зарядные устройства - полноценные ЗУ на микроконтроллерах, с импульсным адаптивным  алгоритмом и расширенными функциями как заряда, так и разряда.   
Адаптивный алгоритм означает, что программа в процессе заряда/разряда сама определяет характеристики импульсов и пауз, а также управляет током и напряжением заряда, исходя из состояния аккумулятора. 

--------------------------------------------------------------------------------------------------------------------------------------------
Пользователи, которые поместили свои схемы и скетчи
Скрытый текст
 
Импульсное зарядное устройство "Моргалка" на модуле esp32 с измерением внутреннего сопротивления 11 апр 2018 в 21:47 
Схема, графики и скетч
Скрытый текст
СхемаПродвинутое самодельное универсальное ЗУ на МК
Сначала замеряют ЭДС -V1  (НРЦ в паузе), потом подают определенный ток Y и снова мерят напряжение V2  затем вычисляют вн. сопр.    Rвн =(V2  -V1)/ Y    Сделал по простому - резистор 0,1 Ом в качестве шунта, на нем измеряется ток.
Итак, моргалка на esp32, АКБ 6В 1,2Ач, БП 8В.  Дельта 0,4В
Графики
Заряд около суток:
Продвинутое самодельное универсальное ЗУ на МК
Длительность импульса и паузы в мс:
Продвинутое самодельное универсальное ЗУ на МК
Какое-то Rвн.
Продвинутое самодельное универсальное ЗУ на МК
Напряжение в импульсе:
Продвинутое самодельное универсальное ЗУ на МК
Скетч
// analogread-esp32
// 12/04/2018
// (c)dunkel
// esp32, питание 5V stab
// Pin32 - заряд, на затвор мосфета
// Pin33 - разряд, на затвор мосфета
// PinА1 - напряжение с делителя АКБ 1k/5.1k
// PinА3 - шунт 0.1Ом

#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
unsigned long t;
int pin = 32;
void setup() {
  Serial.begin(9600);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  pinMode(pin, OUTPUT); // - на затвор мосфета заряда
  digitalWrite(pin, LOW); //
}
void loop() {
  float U0 = 0;
  float U1 = 0;
  float U2 = 0;
  float I = 0;
  float R = 0;
  t = micros();
  //  delay(700);
  U0 = readU016();
  t = micros() - t;
  Serial.print(" 32 000 ar, U0 ");  Serial.print(U0, 4);
  Serial.print("  ,t = ");   Serial.print(t); Serial.print(" us");
  SerialBT.print(",  32 000 ar, U1 ");  SerialBT.print(U0, 4);
  SerialBT.print("  ,t = ");   SerialBT.print(t); SerialBT.print(" us");
  t = micros();
  digitalWrite(pin, HIGH); //
  //  delayMicroseconds(400);
  U1 = 0;
  U2 = 0;
  for (int j = 1; j <= 32; j++) {
    U1 += analogRead(A0);
    U2 += analogRead(A3);
  }
  U1 = U1 * 0.0001816;
  U2 = U2 * 0.0001834;
  digitalWrite(pin, LOW); //
  t = micros() - t;
  I = (U2 - U1) * 10;
  R = (U1 - U0) / I - 0.1;
  Serial.print("  32 ar, U1 "); Serial.print(U1, 4);
  Serial.print("  32 ar, U2 "); Serial.print(U2, 4);
  Serial.print(" , I "); Serial.print(I, 4);
  Serial.print(" , R "); Serial.print(R, 4);
  Serial.print("  ,t = ");   Serial.print(t); Serial.println(" us");
  SerialBT.print("  32 ar, U1 "); SerialBT.print(U1, 4);
  SerialBT.print("  32 ar, U2 "); SerialBT.print(U2, 4);
  SerialBT.print(" , I "); SerialBT.print(I, 4);
  SerialBT.print(" , R "); SerialBT.print(R, 4);
  SerialBT.print("  ,t = ");   SerialBT.print(t); SerialBT.println(" us");
}


// Измерение UAK 32000, длительность 300мс
float readU016() {
  long U1 = 0; //Напряжение на АКБ
  float result = 0.0;
  float V1 = 0.0;
  float K1 = 0.0000001814; // 32000 300ms 5.1k/1k esp32
  for (int j = 1; j <= 32000; j++) {
    U1 += analogRead(A0);
  }
  V1 = U1 * K1;
  result =  V1;
  return result;
}

--------------------------------------------------------------------------------------------------------------------------------------------
 
Долбилка-моргалка_1 « : 06 Апр 2018 в 16:21 »
Скрытый текст
Схема
Скрытый текст
   Продвинутое самодельное универсальное ЗУ на МК
Выкинул всё что левее транзистора а вместо этого поставил оптопару TLP620  и выход с ардуины
Скетч
Скрытый текст
const int LedPin =  13;      // the number of the LED pin
int Led_shim1 =9;   // 2kHz
int val_shim1=1;
int led = 13;

void setup() {
  pinMode(Led_shim1,OUTPUT);
  pinMode(led, OUTPUT); 
 
  TCCR1A = TCCR1A & 0xe0 | 1;
  TCCR1B = TCCR1B & 0xe0 | 0x0b;         // 9 pin 1 kHz
 
  analogWrite(Led_shim1, val_shim1);
 }

void loop()
{
  digitalWrite(led, HIGH);   
  delay(1000);               
  digitalWrite(led, LOW);   
  delay(1000);             
}
--------------------------------------------------------------------------------------------------------------------------------------------
 
Проект на базе дисплея Nextion и МК C8051F125 « : 11 Авг 2018 в 20:26 ».
--------------------------------------------------------------------------------------------------------------------------------------------
Краткий путеводитель по теме  Последнее обновление 17.08.2018 0:49
Скрытый текст
1страница    - методы изм вн. Сопр, схемы и скетчи от Alex_N  и Dunkel
Скрытый текст
•   ответ №1    Метод измерения вн. Сопр. В режиме заряда, обсуждение.
•   ответ №2    Схема импульсной моргалки-долбилки на транзисторе
•   ответ №5    Про метод Вологина (опр вн. Сопр.) обсуждение
•   ответ №12    Alex_N  скетч долбилки
•   ответ №13   Данные по скорости измерений INA219
•   ответ №14   Dunkel  реализует метод изм вн. Сопр на ESP32 (32 измерения за 0,3мс.)
•   ответ №16   Dunkel  схема и скетч на ESP32

Скрытый текст
2стр.   
3стр.   
4стр.   
5стр.   
6стр.   
7стр.   
8стр.   
9стр.   
10стр.   
11стр.   
12стр.   
13стр.   
14стр.   
15стр.   
16стр.   
17стр.   
18стр.   
19стр.   
20стр.   
21стр.   
22стр.   
23стр.   
24стр.   
25стр.   
26стр.   

« Последнее редактирование: 17 Авг 2018 в 20:35 от UriBas »

Сообщение понравилось: Dkin, владимиррр

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Кто нибудь может дать совет, как в ардуино лучше всего Rвн мерить. А то я останавливаю ШИМ, подллючаю одну нагрузку, выдерживаю 10 сек, подключаю другую, опять 10 сек, короче долгая музыка получается ( как на Украине говорят ). А если пытаюсь в процессе, то пляшет от скажем 1 до 26. Т.е. даже усреднять бесполезно. А хотелось бы прямо в процессе.
,  Есть метод (сам еще не пробовал) примененный - http://arduino.ru/forum/proekty/poloumnaya-zaryadka-dlya-ni-mh-akkumulyatorov?page=2#comment-141927
Вот выдержка -
Цитата
Попробовал сейчас измерять внутреннее сопротивление не  традиционным способом ( с резистором-нагрузкой и без), а под зарядным током. В конце зарядки, перед тем, как отключить зарядный ток измеряю текущий ток (I), и текущее напряжение на аккуме (U1), потом отключаю зарядный ток, измеряю напряжение ничем не нагруженого аккума (U2), далее по формуле Rвн = (U1-U2)/ I ; Получается очень похоже на правду, в принципе я об этот спрособе писал и раньше, но сам ни разу не пробовал )
А вот его скетч - http://arduino.ru/forum/proekty/tester-akkumulyatorov-dlya-lotka#comment-139958
Скрытый текст
Измеряю пока двумя разными способами.
Первый способ -  коммутирую мосфет к резистору 75 ом, снимаю напряжение,  вычисляю ток. Отключаю резистор мосфетом. Включаю другой резистор 8 ом, тоже измеряю, отключаю. Потом по формуле вычисляю. Второй способ точно как в статье с картинками, описывать не буду. Эти методы дают немного разные результаты, но что точнее не ясно, не с чем сравнить.  Что б улучшить разрешение АЦП работает в оверсемплинге. Вот текущий скетч если интересно:

#define r1 71.78
#define r2 7.645
void setup() {
Serial.begin(9600);
pinMode(9,OUTPUT); //ключ резистора R1
pinMode(8,OUTPUT); //ключ резистора R2
pinMode(A5,INPUT_PULLUP); // START KEY
}

void loop() {
if (digitalRead(A5)==0) {

//metod 1 Метод №1
float volt_zero= adc();
digitalWrite(9,HIGH);
float volt_start= adc();
digitalWrite(9,LOW);
digitalWrite(8,HIGH);
float volt_end= adc();
digitalWrite(8,LOW);
float Rvn= (volt_start-volt_end) / ((volt_end/r2)-(volt_start/r1));
Serial.print("Metod_1 ");
Serial.print("Rv=");
Serial.print(Rvn,3);

//metod 2 Метод №2
volt_zero= adc();  //  вот..  adc();  это функция измерения (внизу которая)
digitalWrite(9,HIGH);
volt_start= adc();
digitalWrite(8,HIGH);
volt_end= adc();
digitalWrite(9,LOW);
digitalWrite(8,LOW);
Rvn= (volt_start-volt_end) / (volt_start/r2);
Serial.print("  Metod_2 ");
Serial.print("Rv=");
Serial.print(Rvn,3);
Serial.println();
 } //end if dig.read(a5)
} //end loop


float adc(){ // Это декларируется (создается) функция замера АЦП с оверсемплингом
uint32_t adc_buff=0;
for (int n=0; n<=4095; n++ ) {
adc_buff+= analogRead(A0); }
adc_buff >>=6; // 65472 full scale 16bit
return (float)adc_buff/65472*4.99;
}
Можно еще почитать книжку "ИЗМЕРЕНИЕ ВНУТРЕННЕГО СОПРОТИВЛЕНИЯ СВИНЦОВО-КИСЛОТНОГО АККУМУЛЯТОРА
В РЕЖИМЕ ЕГО ЗАРЯДКИ"  (прикрепил файл)
« Последнее редактирование: 13 Май 2018 в 03:53 от UriBas »

Сообщение понравилось: Серик

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Схема базисная отсюда http://akumuliatory.com/desulfatatsii-avtomobilnogo-akumulyatora-svoyimi-rukami/.   Примерно одна из них. (первое что в поиске попалось).
Эта? 
Скрытый текст
Продвинутое самодельное универсальное ЗУ на МК
Да, интересно будет посмотреть результат, только скетч и схему приложите, чтобы кому интересно могли повторить без лишних хлопот.
  Кто-нибудь может объяснить,  к чему этот поток сознания?
Ну это в свете последних изысканий СанСаныча и Владимира..  - влияние ШИМ частот до 2кГц на эффективность.  Генератор на 555 надо крутить вручную, а на Ардуине можно менять в зависимости от состояния АКБ, может пригодится..
« Последнее редактирование: 13 Май 2018 в 04:02 от UriBas »

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
- влияние ШИМ частот до 2кГц на эффективность. 

А эффективность как меряют?

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
На мой взгляд, попытки управлять процессами в ХИТ с привязкой к фиксированным временным интервалам (частоте ШИМ в данном случае) не совсем уместны.  Это ведь не замкнутая механическая система, там протекают десятки различных химических реакций, они зависят от внешних факторов, которые меняются по времени.
Тут лучше подходит последовательный алгоритм, который адаптивно меняет длительность импульса и паузы в зависимости от реакции АКБ.
« Последнее редактирование: 05 Апр 2018 в 20:55 от Dunkel »

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
На мой взгляд, попытки управлять процессами в ХИТ с привязкой к фиксированным временным интервалам (частоте ШИМ в данном случае) не совсем уместны.  Это ведь не замкнутая механическая система, там протекают десятки различных химических реакций, они зависят от внешних факторов, которые меняются по времени.  Тут лучше подходит последовательный алгоритм, который адаптивно меняет длительность импульса и паузы в зависимости от реакции АКБ. 
Абсолютно согласен, что нужен гибкий алгоритм, мы как раз и двигаемся  в эту сторону.  Но параллельно идут исследования по изменению вн. сопр.  и по частотам, тем более что , в теме "Самодельный измеритель Rвн" https://electrotransport.ru/ussr/index.php?topic=53465.0#quickreply достиг успехов в реализации метода изм вн. сопр. переменкой и даже можно мерить во время заряда, есть графики хорошо иллюстрирующие зависимость.   

Как по мне, это конечно здорово отслеживать по вн. сопр., но и "дельта" тоже достаточно точно отображает эту зависимость (что лучше - еще не известно), ведь по сути, размах амплитуды импульсов относительно определенного значения тока и времени - это и есть показатель состояния ХИТ и его вн. сопр.  Интересен и Ваш подход с кварками, когда по сути идет подстройка частоты ШИМ..  а не только скважности.

Кстати, про размах амплитуды (дельта) - метод Вологина как раз так и предполагает изм. вн. сопр.   Сначала замеряют ЭДС -V1  (НРЦ в паузе), потом подают определенный ток Y и снова мерят напряжение V2  затем вычисляют вн. сопр.    Rвн =(V2  -V1)/ Y     Единственно, там еще делают замеры при другом токе, потом еще и при разряде, потом вычисляют среднее.. это конечно точнее, но в принципе у Вас как раз реализован метод измерение напр. в каждом кварке..  если усреднить все кварки, вычесть НРЦ в паузе и поделить на ток,  то получится примерно то же самое, а может и точнее, потому что больше вычислений.
http://chem21.info/page/043252241175073137240123085103234095079153129093/
http://chem21.info/page/026055139030242085200125147108219179192177126029/
« Последнее редактирование: 06 Апр 2018 в 02:38 от UriBas »

Alex_N

  • Местный
  • ****
  • Репутация: 4
  • Сообщений: 529
  • Россия, Оренбург
  • Мы с приятелем вдвоем...
  • Оффлайн Оффлайн
    • Награды
Эта?
Да эта. Только я выкинул всё что левее транзистора а вместо этого поставил оптопару TLP620  и выход с ардуины. Ну и кренка 5В. Я уже написал, что использовал у же ненужные полудохлую ардуину и предыдущий вариант платы, на которой катушки уже были смонтированы.
Для Dunkel повторяю, что это просто попытка посмотреть будет ли этот десульфатор реально помогать.
Скетч ( если нужен ) выложу позже. Он дома, а я на работе. Да там весь скетч из десяти строк (примерно).

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
если усреднить все кварки, вычесть НРЦ в паузе и поделить на ток,

Осталось понять, каким образом измерять ток в коротких импульсах порядка 1мс.  INA219?

PS Все-таки кванты, а не кварки. Так глубоко я еще не залезал.

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Для Dunkel повторяю, что это просто попытка посмотреть будет ли этот десульфатор реально помогать.  Скетч ( если нужен ) выложу позже. Он дома, а я на работе. Да там весь скетч из десяти строк (примерно). 
Вот на сколько будет "помогать" - это зависит от алгоритма, от схемотехники..  поэтому и надо прилагать скетч и схему, чтобы было ясно, ну и (повторяюсь) чтобы можно быстро повторить, кто хочет продолжить эстафету", иначе какой смысл?
Осталось понять, каким образом измерять ток в коротких импульсах порядка 1мс.  INA219? PS Все-таки кванты, а не кварки. Так глубоко я еще не залезал.
Ну да, кванты..  Мерить ток можно и INA219, она сама хорошо усредняет и выдает готовый результат..  по моему, очень хорошо, заодно и емкость мерить получится, что немаловажно.   

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
Мерить ток можно и INA219, она сама хорошо усредняет и выдает готовый результат.. 

Так нам нужно мгновенное значение тока в импульсе или усредненное пачки импульсов?

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Так нам нужно мгновенное значение тока в импульсе или усредненное пачки импульсов?
В идеале, надо бы мерить в импульсе ток и напряжение.. выборок побольше, потом усреднять.   Но надо прикинуть по возможностям.

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
В идеале, надо бы мерить в импульсе ток и напряжение.. выборок побольше, потом усреднять.   Но надо прикинуть по возможностям.

Вы вроде пробовали INA219, какая там длительность измерения?

Alex_N

  • Местный
  • ****
  • Репутация: 4
  • Сообщений: 529
  • Россия, Оренбург
  • Мы с приятелем вдвоем...
  • Оффлайн Оффлайн
    • Награды
Как и обещал, прикладываю скетч.
А вообще насколько меньше деталей у десульфатора получилось, по сравнению с LM555 ! Не нужно никакой обвязки практически.
Прикольная получилась штуковина - цепляешь к АКБ и она себе жужжит. Если толку не будет, то МЧС получится. От той тоже только жужжание.

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Вы вроде пробовали INA219, какая там длительность измерения?
 
По даташиту  такие показания
12 bit+1sp    - 532μs  (1 сэмпл -выборка за 0,532мс)
12 bit+2sp    - 1.06ms
12 bit+4sp   - 2.13ms
12 bit+8sp   - 4.26ms (8 сэмплов -выборок за 4,26мс)
12 bit+16sp   - 8.51ms
12 bit+32sp   - 17.02ms
12 bit+64sp   - 34.05ms
12 bit+128sp    -68.10ms
Сломался было у меня модуль, провозился пару дней  пока сделал, еще празник..  На практике в библиотеках не нашел, как выставить к примеру   - 12 bit+8sp   4.26ms .. сейчас уже вычитал по даташитам и сваял в экселе расчеты для записи в регистры, как только сделаю, выложу здесь результаты. 
« Последнее редактирование: 12 Апр 2018 в 13:49 от UriBas »

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
,  слишком долго.
ESP32 с 12-битным АЦП делает 32 измерения за 0,3мс. Как раз подходит для измерения в импульсе.
Попробовал измерить R моргалкой по Вашей методике:

Сначала замеряют ЭДС -V1  (НРЦ в паузе), потом подают определенный ток Y и снова мерят напряжение V2  затем вычисляют вн. сопр.    Rвн =(V2  -V1)/ Y   

Сделал по простому - резистор 0,1 Ом в качестве шунта, на нем измеряется ток.
Итак, моргалка на esp32, АКБ 6В 1,2Ач, БП 8В.  Дельта 0,4В

Заряд около суток:


Длительность импульса и паузы в мс:


Какое-то R (наверное надо еще вычесть 0,1 шунта):


Это ток в импульсе:


Напряжение в импульсе:


Последний график наглядно демонстрирует, почему я измеряю дельту не в импульсе, а сразу после него. 
Хотя некоторые товарищи, в теме про "Анализы", утверждали, что это неправильно.


Сообщение понравилось: UriBas

UriBas

  • Старожил
  • *****
  • Репутация: 16
  • Сообщений: 1567
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Скрытый текст
,  слишком долго.
ESP32 с 12-битным АЦП делает 32 измерения за 0,3мс. Как раз подходит для измерения в импульсе.
Попробовал измерить R моргалкой по Вашей методике:

Сделал по простому - резистор 0,1 Ом в качестве шунта, на нем измеряется ток.
Итак, моргалка на esp32, АКБ 6В 1,2Ач, БП 8В.  Дельта 0,4В

Заряд около суток:


Длительность импульса и паузы в мс:


Какое-то R (наверное надо еще вычесть 0,1 шунта):


Это ток в импульсе:


Напряжение в импульсе:
Последний график наглядно демонстрирует, почему я измеряю дельту не в импульсе, а сразу после него. 
Хотя некоторые товарищи, в теме про "Анализы", утверждали, что это неправильно.
Вы имели ввиду разницу напряжений между первым и последним графиками?

На счет измерения Rвн очень наглядно вышло..  и по моему вполне адекватно.  Так что, в общем, алгоритм хорошо отрабатывает Rвн.   Было бы конечно еще неплохо сравнить с классикой и по возможности с переменкой типа Ланкола".   У Вас там получилась разная частота ШИМ, вначале -333 в конце - 72Гц.  Поскольку пауза увеличивалась ступенчато, то хорошо видно, как меняется Rвн в импульсе и как это отрабатывает дельта!

По вкаченной емкости в АКБ 6В 1,2Ач. 
По графику тока, средний ток до 7,2В держался на уровне 1,8А, время до 7,2В составляет примерно 23000сек = 6ч 23м  и емкость примрно = 11,4Ач,  поскольку коэф заполнения около 30% и по идее должно закачаться не менее 4Ач ..  Мысль такая, проверить это дело, на сколько ЗУ реально закачивает до 7,2 (14,4В или 2,4на банку) емкости?

Потом добивка +13часов.. средний ток около 1,6А , коэф заполения в среднем около 12%.. значит еще вкачено было около 2Ач .. тоже интересно было бы проверить.

Да, и вложите в Ваш этот пост с графиками - скетч и схемку (или ссылку на схему), я это дело прикреплю на первой странице..  по моему хороший опыт!

Dunkel

  • Наш человек
  • ***
  • Репутация: 1
  • Сообщений: 293
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
Вы имели ввиду разницу напряжений между первым и последним графиками?

Конечно, особенно в начале заряда. Если дельту измерять в импульсе - заряд просто не начнется, будет срабатывать отсечка.

По вкаченной емкости в АКБ 6В 1,2Ач. 
По графику тока, средний ток до 7,2В держался на уровне 1,8А, время до 7,2В составляет примерно 23000сек = 6ч 23м  и емкость примрно = 11,4Ач,  поскольку коэф заполнения около 30% и по идее должно закачаться не менее 4Ач ..

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

Схема:


Схема не совсем меня устраивает, надо делать нормальный стабилизатор 3,3В. Китайцы явно сэкономили на конденсаторах, результаты измерений прыгают.

 Скетч для измерения R:
Скрытый текст
// analogread-esp32
// 12/04/2018
// (c)dunkel
// esp32, питание 5V stab
// Pin32 - заряд, на затвор мосфета
// Pin33 - разряд, на затвор мосфета
// PinА1 - напряжение с делителя АКБ 1k/5.1k
// PinА3 - шунт 0.1Ом

#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
unsigned long t;
int pin = 32;
void setup() {
  Serial.begin(9600);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  pinMode(pin, OUTPUT); // - на затвор мосфета заряда
  digitalWrite(pin, LOW); //
}
void loop() {
  float U0 = 0;
  float U1 = 0;
  float U2 = 0;
  float I = 0;
  float R = 0;
  t = micros();
  //  delay(700);
  U0 = readU016();
  t = micros() - t;
  Serial.print(" 32 000 ar, U0 ");  Serial.print(U0, 4);
  Serial.print("  ,t = ");   Serial.print(t); Serial.print(" us");
  SerialBT.print(",  32 000 ar, U1 ");  SerialBT.print(U0, 4);
  SerialBT.print("  ,t = ");   SerialBT.print(t); SerialBT.print(" us");
  t = micros();
  digitalWrite(pin, HIGH); //
  //  delayMicroseconds(400);
  U1 = 0;
  U2 = 0;
  for (int j = 1; j <= 32; j++) {
    U1 += analogRead(A0);
    U2 += analogRead(A3);
  }
  U1 = U1 * 0.0001816;
  U2 = U2 * 0.0001834;
  digitalWrite(pin, LOW); //
  t = micros() - t;
  I = (U2 - U1) * 10;
  R = (U1 - U0) / I - 0.1;
  Serial.print("  32 ar, U1 "); Serial.print(U1, 4);
  Serial.print("  32 ar, U2 "); Serial.print(U2, 4);
  Serial.print(" , I "); Serial.print(I, 4);
  Serial.print(" , R "); Serial.print(R, 4);
  Serial.print("  ,t = ");   Serial.print(t); Serial.println(" us");
  SerialBT.print("  32 ar, U1 "); SerialBT.print(U1, 4);
  SerialBT.print("  32 ar, U2 "); SerialBT.print(U2, 4);
  SerialBT.print(" , I "); SerialBT.print(I, 4);
  SerialBT.print(" , R "); SerialBT.print(R, 4);
  SerialBT.print("  ,t = ");   SerialBT.print(t); SerialBT.println(" us");
}


// Измерение UAK 32000, длительность 300мс
float readU016() {
  long U1 = 0; //Напряжение на АКБ
  float result = 0.0;
  float V1 = 0.0;
  float K1 = 0.0000001814; // 32000 300ms 5.1k/1k esp32
  for (int j = 1; j <= 32000; j++) {
    U1 += analogRead(A0);
  }
  V1 = U1 * K1;
  result =  V1;
  return result;
}


Немного поправил процедуру относительно той, что была в моргалке, теперь результаты больше похожи на правду:



Сообщение понравилось: Massa75, UriBas

Alex_N

  • Местный
  • ****
  • Репутация: 4
  • Сообщений: 529
  • Россия, Оренбург
  • Мы с приятелем вдвоем...
  • Оффлайн Оффлайн
    • Награды
Согласен, больше не буду. Да и решил не на ad711 а на ad623. Там и делов то - один резистор припаять. Ну и шунт разумеется. Для ардуино - то что надо.
... А ведь мы молчим, что здесь ветка про ардуино, а не что то другое.
« Последнее редактирование: 24 Апр 2018 в 19:16 от Яков93 »

Страницы: 123 ... 37>>Вверх
 

Помощь форуму | Отказ от ответственности | Новая версия форума
©, Форум электротранспорта, electrotransport.ru, 2007—2018.
Копирование материалов возможно только с согласия правообладателя.

Размер занимаемой памяти: 5.5 мегабайт.
Страница сгенерирована за 0.305 секунд. Запросов: 108.

Powered by SMFPacks Alerts Pro Mod
Powered by SMFPacks Mentions Pro Mod