ПаверКомбайн на ардуинке.

Craftim

✩✩✩✩✩✩✩
4 Окт 2019
14
1
Игрался я тут сидел с ina226... и пришла такая идейка, пишу сначала сюда, если идея зайдет, надо будет реализовывать)))

На сегодняшний день у любого радиолюбителя имеется некоторая оснастка, нуждающаяся в источнике питания - умный паяльник, ардуинки, светодиодные ленты и т.д. самая разнообразная умная и не слишком нагрузка. ЛБП всяких разных тоже уже делали переделали, НО хочется чего то компактного, мощного и умного... и отдельно разных компонентов полным полно - от мини лбп от usb порта, до приличных взрослых лбп за приличные деньги, с павербанками та же история... да и аналогичное устройство В ПРИИИНЦИПЕ тоже есть - это мини лбм от miniware (производитель паяльника ts100), но опять же аналог только с сильнющей натяжкой...

Ладно, к сути:
Реинкарнируем в современность "народный павербанк" Гайвера, прикручиваем к нему ардуинку с возможностью работать с QC+PD, собираем батарею 5s-6s с балансировкой, BMS питаем от QС или PD розетки, отдельными модулями на sw3518 (все протоколы включая DASH,VOOC и если есть питание 20в может отдать 100W ) делаем выходы под зарядку. Применив управление ардуинкой протоколами быстрой зарядки, можем реализовать одним из этих модулей ЛБП в павербанке, регулируя вольтаж модуля. Так же вешаем на все это дело модуль типа INA226 (или трехканальную версию) - и на красивый цветной дисплей выводим всю инфу по состоянию батареи, напряжении и токе на выходах и входе... а если сердцем проекта брать не attiny 13, 26 и т.д. а скажем esp32 какую нибудь, то можно на корпусе лабораторной павербанки предусмотреть коннекторы\площадки\разъемы под щупы, то не лишним было бы иметь на борту такого устройства еще и тестер компонентов, мозгов должно хватить, дисплей красивый есть, мощностей хоть отбавляй...Не забываем о WiFi и BT возможностях чипа... а чтоб еще и красивый прям был, предусмотреть возможность вкрячивания адренсных диодов типа sk6805 с белым каналом - подсветка рабочего места (т.к. такой девайс всегда под рукой должен жить), цветная динамическая индикация режимов\состояний\алертов. Про алерты, ардуинкой же можно предусмотреть всякие безопасности устройства, типа внутреннее отключение всех\конкретных портов QC,PD от аккумулятора (мосфетами или ssr, профи виднее), еще какие нибудь умные штуки..

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



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

Геннадий П

★★★★★★✩
14 Апр 2021
1,969
632
44
Так вы повербанк хотите сделать или ЛБП? И зачем тут ардуина?
 

Craftim

✩✩✩✩✩✩✩
4 Окт 2019
14
1
ЛБП в павербанке и все, что выше)) Ардуинка для нормального отображения всяких данных на дисплее, ардуинка же управляет подсветкой, тестером компонентов, запрашивает от блока питания нужный протокол для зарядки (хотя это можно чисто платой заряда type-c 100w 5s, но это около 1500р....а так ардуинка с блока запрашивает pd100w и пускает их на плату BMS).

Я изначально думал просто купить плату двунаправленную и к сборке из 18650 на bms поставить... далее задумался об индикации заряда батареи, т.к. семисегменты (как в видео в Заметках Ардуинщика) ну вообще не в кассу, как минимум по габаритам... да и с tft или ips как то приятнее инфу воспринимать... по аналогии с дешевыми павербанками на 4 светодиодиках делать? тоже как то не очень... В итоге покупной вольтметр - #овно, для индикации нужен дисплей, дисплею ардуиноподобный контроллер, а раз есть контроллер, дисплей, питалово всякое и куча памяти в контроллере, почему бы этот самый контроллер не нагрузить ещё всякими полезными ардуинщику ништяками... Из обзора тестера компонентов с "Заметок", либо питание неудобное, либо дисплей отстой, либо цена или ещё что то... Народными усилиями, типа как с Гайверлампой, может получится крутой девайс.
 
Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
Как показывает практика, участь подобных убер-девайсов одна: повторять такое почти не будет желающих. Если таковые вообще найдутся.
 

Craftim

✩✩✩✩✩✩✩
4 Окт 2019
14
1
Я таки решил двигаться в сторону убердевайса и попробовал сегодня "чат ГоПоТу" запрячь на написание скетча... Хотя бы ориентировочного. Некрупные скетчи вроде норм пишет, это даже я вижу, что работать будет))) Начал усложнять запросы...

Больше информации о конфигурации: 3 тактовые кнопки , кнопки 1 и 3 для переключения между режимом вольтметра и режимом тестера, кнопка 2 для начала теста компонента. На дисплее отображается 2 экрана: первый показания вольтметра, второй экран тестера компонентов. Напиши скетч без delay. И распредели скетчи вольтметра и тестера на разные ядра esp32. Для ina226 использовать библиотеку GyverINA, а для дисплея библиотеку GyverOLED


И нейросеть со второй попытки (в первой она мне просто описание устройства выдала и попросила дополнительную инфу) выдала мне
Хорошо, вот скетч без использования функции delay, в котором кнопки и дисплей работают с помощью задачи Interrupt Safe:

#include <Wire.h>
#include "GyverINA.h"
#include "GyverOLED.h"

// Номер ядра на котором будет выполняться вольтметр
const int voltCore = 0;

// Номер ядра на котором будет выполняться тестер компонентов
const int testCore = 1;

const uint8_t BUTTON_VOLT = 3; // Первая кнопка, переход в режим вольтметра
const uint8_t BUTTON_TEST = 4; // Вторая кнопка, запуск теста компонента
const uint8_t BUTTON_COMP = 6; // Третья кнопка, переход в режим тестера компонентов

int currentMode = 0; // Текущий режим

// Инициализация INA226
GyverINA ina(0x40);

// Инициализация OLED-дисплея
GyverOLED OLED(128, 64, Wire);

// Функция вольтметра
void voltMeterTask(void *pvParameters) {
(void) pvParameters;

ina.begin();

// Начальное отображение на дисплее
OLED.clear();
OLED.setFont(Fonts::FreeSansBold9pt7b);
OLED.setCursor(0, 20);
OLED.print("Voltmeter mode");

while(1) {
float voltage = ina.getBusVoltage_V();
float current = ina.getBusCurrent_mA();

OLED.setCursor(0,44);
OLED.print("Voltage: ");
OLED.print(voltage);
OLED.print(" V");

OLED.setCursor(0, 56);
OLED.print("Current: ");
OLED.print(current);
OLED.print(" mA");

// Ожидаем 100 мс, чтобы не занимать всю доступную процессорную мощность ядра
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}

// Функция тестера компонентов
void testComponentTask(void *pvParameters) {
(void) pvParameters;

while(1) {
// ваш код для тестера компонентов

// Ожидаем 100 мс, чтобы не занимать всю доступную процессорную мощность ядра
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}

// Инициализация портов кнопок как прерываний
void setupButtons() {
pinMode(BUTTON_VOLT, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_VOLT), [] {
currentMode = 0;
}, FALLING);

pinMode(BUTTON_TEST, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_TEST), [] {
if (currentMode == 1) {
// Запуск тестера компонентов
// ваш код для тестера компонентов
}
}, FALLING);

pinMode(BUTTON_COMP, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_COMP), [] {
currentMode = 1;
}, FALLING);
}

void setup() {
Serial.begin(9600);

// Настраиваем порты кнопок
setupButtons();

// Настраиваем дисплей
OLED.begin();
OLED.setFont(Fonts::FreeSansBold9pt7b);

// Создаем задачу для вольтметра на заданном ядре
xTaskCreatePinnedToCore(
voltMeterTask, // Функция задачи
"VoltmeterTask", // Имя задачи
5000, // Размер стека задачи
NULL, // Параметры для задачи
1, // Приоритет задачи
NULL, // Дескриптор задачи
voltCore // Ядро на котором будет выполняться задача
);

// Создаем задачу для тестера компонентов на другом ядре
xTaskCreatePinnedToCore(
testComponentTask, // Функция задачи
"TestComponentTask", // Имя задачи
5000, // Размер стека задачи
NULL, // Параметры для задачи
1, // Приоритет задачи
NULL, // Дескриптор задачи
testCore // Ядро на котором будет выполняться задача (другое ядро)
);
}

void loop() {
// Пустая функция для основного цикла кода
}



Теперь у нас есть две задачи: voltMeterTask, которая выполняется на одном ядре и содержит код для вольтметра, и testComponentTask, которая выполняется на другом ядре и содержит код для тестера компонентов. Мы также настраиваем порты кнопок, чтобы они работали как прерывания, и настраиваем дисплей, чтобы отображать данные в соответствии с текущим режимом.

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

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

te238s

★★✩✩✩✩✩
14 Ноя 2021
374
97
А ещё...а ещё добавить туда вайфай! Чтобы на телефоне смотреть как заряжается телефон. И пропеллер,чтоб сам за тобой летал,нечего карманы занимать. А ещё на ARM впихнуть туда осциллограф,ну пульсации при зарядке смотреть👍
 
  • Ахах! +1
Реакции: PiratFox

Craftim

✩✩✩✩✩✩✩
4 Окт 2019
14
1
Смех смехом, но объясните - чем плоха идея обьеденить павербанк, тестер компонентов и не сложный лбп в одно устройство? Все три используются по сути в одном месте, каждое отдельно было реализовано при помощи ардуино. Т.е. сделать лбп на ардуино не тупо, в павербанк её затолкать тоже не тупо, тестер сделать не тупо, а собрать их в одно устройство тупо?
 

Divin

★★★✩✩✩✩
30 Янв 2021
437
192
@Craftim, как показывает практика, отдельные специализированные устройства работают гораздо лучше, чем всяческие 3 в 1, мультитулы и прочая.
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
собрать их в одно устройство тупо?
А кто здесь говорил, что это "тупо"? Здесь общий смысл высказываний был в том, что такое просто никому не нужно, кроме вас самого. Да и ещё бааальшой вопрос, как долго вы будете им пользоваться постоянно. Если, конечно, дело будет доведено до получения сколь-нибудь рабочего законченного устройства. Нужен вам такой девайс - делайте, кто же мешает. Тут и обсуждать-то нечего.
 
Изменено:
  • Лойс +1
Реакции: te238s

poty

★★★★★★✩
19 Фев 2020
3,230
940

@Craftim, павербанк - носимая внешняя батарейка, по большей части сейчас используется для зарядки телефонов. Можно, конечно, и что-то другое заряжать, но точно там, где нет центрального питания.
Зачем с собой носить ещё ЛБП и тестер компонентов - вообще непонятно. Оба компонента используются в целом для проверки (тестирования) и ремонта, в повседневной жизни не нужны, портативными тоже им не требуется быть.
 
  • Лойс +1
Реакции: te238s

te238s

★★✩✩✩✩✩
14 Ноя 2021
374
97
Если мне нужен тестер с собой,зачем он мне с аккумуляторами? Если надо зарядить в дороге телефон,я беру минимальных размеров повербанк,зачем мне какой-то тестер,который изрядно добавляет габаритов и различных органов управления,которые в кармане мешают и могут сломаться?
Даже если мне нужен ЛБП и тестер на одном столе,как правило они расположены с разных сторон "оперируемого"устройства. Так удобней,меньше проводов в одной куче.