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


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

Реклама:

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

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

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

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

UriBas

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


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





« Последнее редактирование: 18 Май 2018 в 12:22 от UriBas »

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

UriBas

  • Старожил
  • *****
  • Репутация: 13
  • Сообщений: 1411
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Кто нибудь может дать совет, как в ардуино лучше всего 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

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

Dunkel

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

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

Dunkel

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

UriBas

  • Старожил
  • *****
  • Репутация: 13
  • Сообщений: 1411
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
На мой взгляд, попытки управлять процессами в ХИТ с привязкой к фиксированным временным интервалам (частоте ШИМ в данном случае) не совсем уместны.  Это ведь не замкнутая механическая система, там протекают десятки различных химических реакций, они зависят от внешних факторов, которые меняются по времени.  Тут лучше подходит последовательный алгоритм, который адаптивно меняет длительность импульса и паузы в зависимости от реакции АКБ. 
Абсолютно согласен, что нужен гибкий алгоритм, мы как раз и двигаемся  в эту сторону.  Но параллельно идут исследования по изменению вн. сопр.  и по частотам, тем более что , в теме "Самодельный измеритель 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
  • Сообщений: 443
  • Россия, Оренбург
  • Мы с приятелем вдвоем...
  • Оффлайн Оффлайн
    • Награды
Эта?
Да эта. Только я выкинул всё что левее транзистора а вместо этого поставил оптопару TLP620  и выход с ардуины. Ну и кренка 5В. Я уже написал, что использовал у же ненужные полудохлую ардуину и предыдущий вариант платы, на которой катушки уже были смонтированы.
Для Dunkel повторяю, что это просто попытка посмотреть будет ли этот десульфатор реально помогать.
Скетч ( если нужен ) выложу позже. Он дома, а я на работе. Да там весь скетч из десяти строк (примерно).

Dunkel

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

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

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

UriBas

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

Dunkel

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

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

UriBas

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

Dunkel

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

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

Alex_N

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

UriBas

  • Старожил
  • *****
  • Репутация: 13
  • Сообщений: 1411
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Вы вроде пробовали 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
  • Сообщений: 281
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
,  слишком долго.
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

  • Старожил
  • *****
  • Репутация: 13
  • Сообщений: 1411
  • Украина, Ровно
  • Ездю на батарейках!
  • Онлайн Онлайн
    • Награды
Скрытый текст
,  слишком долго.
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
  • Сообщений: 281
  • Россия, Санкт-Петербург
  • Оффлайн Оффлайн
    • Награды
Вы имели ввиду разницу напряжений между первым и последним графиками?

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

По вкаченной емкости в АКБ 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
  • Сообщений: 443
  • Россия, Оренбург
  • Мы с приятелем вдвоем...
  • Оффлайн Оффлайн
    • Награды
Согласен, больше не буду. Да и решил не на ad711 а на ad623. Там и делов то - один резистор припаять. Ну и шунт разумеется. Для ардуино - то что надо.
... А ведь мы молчим, что здесь ветка про ардуино, а не что то другое.
« Последнее редактирование: 24 Апр 2018 в 19:16 от Яков93 »

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

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

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