IOT / Esp32 / FreeRTOS / Arduino / stm32
799 subscribers
747 photos
133 videos
29 files
199 links
Копилка материалов по работе с микроконтроллером esp32 / stm32
Download Telegram
Всё собрал.
Вот результат тестового прогона.

Красные пипки плохо примыкают к разъёмам - от давления там собираются большие капли и в неподходящий момент они плюхаются в обрезок бутылки.

Завтра куплю ещё капельниц - тогда переходники станут герметичнее и будет наливать точнее.
Media is too big
VIEW IN TELEGRAM
Стоит дописать ещё пару моментов до красивого функционала:


1) конфигурировать по mqtt вес перехода на полив каплями. Диаметр трубок в насосах миксера больше чем на тестовом насосе, и налив происходит сильно быстрее. На первых получал переналив даже до перехода на "капли".

2) Отправлять результат взвешивания по mqtt в веб интерфейс, а также отдельно отправлять результат налива (который на скрине предыдущего поста).
This media is not supported in your browser
VIEW IN TELEGRAM
Страсти поутихли, война надоела, жизнь постепенно вовзращается в привычное русло.

Мне помогли с прошивкой.
Уже давно помогли, но только сейчас нашлось время и я вернулся к ковыряниям.
Ноги моргают, ацп измеряет, UART строчит.

Продолжаем дальше собирать список "багов" и различных весёлых штук.
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Самое странное на данный момент - это ресет🤪

- если я резко нажму - он нормально загружается (мигает по очереди зелёный и синий)

- если я долго подержку кнопку ресет - процессор не загружается

- есть ещё какое-то средние положения при которых горит только зелёный диод и не мигает.

Среднее положение поймать сложнее всего, хотя на видео вот смотрите 2 раза повторилось.

Радует что после быстрого нажатия всё работает.
Не радует что ST-link прижимает ресет надолго и мы получаем зависший процессор :(
Следующее - это конценсатор который не смог.

Делители напряжения NTC и TDS питаются от источника опрного напряжения 2.5V, и этот источник опорного оказывается шумит.
Для сглаживания есть конденсатор, который выбран не правильно при формировании BOM. Но даже если бы в BOM попал правильный конденсатор - не факт что он бы справился с этим шумом.

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

Мне кажется в предыдущей версии платы такого шума небыло - завтра гляну. Видимо нужно будет изучать матчасть, чтобы лучше понять как решать такие проблемы.
Ещё проблемы с питанием были - что-то неправильно сделано в батарейном питании. Но это лечится с помощью откусывания лишней кренки и после этого всё ок.
В предыдущей версии платы на stm103c8t6 питание с источника опорного напряжения не шумит.
А на новой плате это выглядит так.
Основные параметры вроде как такие-же:
- стабилизатор тот-же https://lcsc.com/product-detail/Voltage-References_Changjiang-Electronics-Tech-CJ-CJ431_C3113.html
- резистор на котором падает напряжение те-же 100 ом
- кондеев стало не меньше, хотя 22uF вроде небыло в момент заказа и я их заменял на что мог
[Шалость не уадалсь]

Я сдаюсь) идея с питанием делителей напряжения от источника опорного напряжения 2.5V мне очень нравится.
Если питать от понижайки - то там от схемы к схеме это напряжение прыгает на 40-50mV.
А при работе с опорным это напряжение сильно стабильнее.

Но не получается победить шум :( Тут видимо нужна помошь кого-то опытного.

В итоге выхернул опорник, запитал от линии 3.3V и норм.
Шумы пропали.
Пока искал баги в последней плате, понял как быстрее решать вопросы с осенней версией EC-модуля.

Выкинул источники опорного, кинул перемычку на 3.3V, откабировал побыстрому. Получилось идеально! с первого раза =)
🔥1
Девайс заступил на боевое дежурство.

С выключенным дисплеем, потому что при включении начинает очень сильно расходиться положительное и отрицательное измерения падения напряжений.
А вот графики.
EC пока считается без температурной компенсации - этот потсчёт сдеаем чуть позже когда накоплю данные.

Значение 3+ слишком большое - долил в систему воды, и EC стало падать =)
👍1
Сохраню для истории как EC зависит от температуры
А вот так график выглядит после компенсации по температуре.

Выглядит шумно. В первую очередь потому что NTC очень шумный - с этим ещё предстоит разобраться.

С другой стороны шум находится в диапазоне 3290-3320 - это меньше 1% значения - более чем достаточно для бытовых нужд.

По колебаниям электропроводности раствора можно достаточно неплохо определять колебания температуры =)
👍3
Немного неожиданные результаты первых часов работы после переноса термокомпенсации на устройство:

1) Термокомпенсация сразу на устройстве работает отлично.

2) Перестала шуметь температура. Хотя температурная таска не поменялась.

3) Есть у меня некий "показатель здоровья" который измеряет разницу между двумя измерениями:
ec-positive = падение напряжения на щупе при прямой подаче напряжения
ec-negative = 3300 - падение напряжения на щупе при обратной подаче напряжения.

Эти два показателя не равны из-за того что напряжения питания не совсем 3300 mV, а может отличается на 15-60mV в зависимости от особенности линейного стабилизатора именно на этом устройстве. При этом среднее арифметическое значение между ними всегда показывает норму.

После изменения кода оба значения сдвинулись. Раньше сдвиг был около 30mV (Δ≈60), а теперь подпрыгнул до 250mV. Среднее арифметическое при этом осталось прежним.

Почему такое происходит - пока не понятно. Примерно такой-же эффект я получал если пробовал измерять много раз NTC
А ещё получал похожий сдвиг измерений когда добавлял на устройство 7-сегментный индикатор. Проблема видимо программная а не аппаратная, что вселяет надежду в ближайшее время дисплей на устройство всётаки вернуть =)
Колебания EC за сутки составили:
(3360-3220) / 3220 = 4.3%

Есть небольшая перекомпенсация по температуре. Коэффициент термокомпенсации сейчас равен 70, а работает это по следующей формуле:
k = ecConfig.getEcKoefT();
ec = ec + k * (25.0 - temperature);

А ещё у меня есть непротестирванный функционал работы с конфигурацией по mqtt, который самое время проверить.
Код внутри mqtt-колбека:
  if (type.compare("config") == 0) {
if (name.compare("ecKoefT") == 0) {
ecConfig.setEcKoefT(val);
}
}
Те мне нужно отправить 69 в топик
$devices/***/config/ecKoefT и должно произойти чудо =) Проверимс...
Отправил, но пока не понимаю повлияло на что-нибудь или нет.

Стоит реализовать обратную связь и запись этих значений в энергонезависимую память.

На картинке полная структура mqtt-топиков в которые девайс отправляет данные в режиме отладки.