Это было 9 лет назад…
После установки в калину термометра он быстренько откинул копытца и начал показывать откровенную ерунду.

11,5 градусов когда должно быть около 25. Причём показания особо не изменялись хоть в лёд датчик опускай хоть спичкой нагревай.

Ну значит что то отрыгнуло подумал я, жаль конечно я так хотел термометр с зеленым светодиодным индикатором, а он паразит вот такое изобразил. Покрутил я его, замерил напряжения вроде всё в порядке, ну значит что то с прошивкой подумал я и откинул его в дальний ящик. Не совсем же он умер хоть что то показывает, значит можно попробовать восстановить.
Наше время…
И вот этот день настал, по прошествии 9 лет я решил его поковырять. Тем более что кто то уже ковырял подобное ) Пора тряхнуть стариной ) Смотрим что у нас имеется.
Крохотная платка 41х22 мм, на ней два разъёма (питание и датчик), явно видно стабилизатор AMS1117-3.3, крохотная микросхема с 20 ножками в корпусе TSSOP20 ну и в целом всё. 12 ножек индикатора распаянные в два ряда по 8 ножек. Для начала решил глянуть даташит на стабилизатор, ну просто чтобы общую картину по питанию знать. Это у нас "low dropout voltage regulator" стабилизатор в корпусе SOT-223 выдающий 3,3 вольта, ток до 800мА. Максимальное входное напряжение заявлено 15 вольт. Не густо особенно учитывая что в машине нормальное это 14,4в. Дома то я его от ЛБП проверял на 12в питании. Возможно что то пошло не так при включении в машине. Но теперь уж что сделано то сделано.
И кстати сразу скажу тем кто хочет сказать что цена ему копейки, на Али их горстями продают, выкинь и купи новый. Я бы так и сделал но у меня спортивный интерес, хочу понять что случилось и можно ли оживить.
Микросхемка оказалась микроконтроллёром stm8s003f3p и это главная причина по которой я его не выкинул 9 лет назад. Да, это было очевидно что китайцы начнут делать клоны, внаглую и никого не стесняясь. И программировать эти клоны будет непонятно чем. Как вам идейка ремонтировать девайс в котором стоит нечто похожее на на известный микроконтроллёр (по распиновке) но еще и со стертой маркировкой ? По моему такой точно проще выкинуть ) Мало того что МК китайский так еще даже и с него маркировку содрали ) И я на 99% уверен что если сейчас на Али заказать подобный термометр (вольтметр, амперметр) то в нем будет стоять какой то китайский МК или клон другого известного.
Но у нас всё в порядке, у нас еще нормальный МК от ST и он 9 лет ждёт своего часа )
Смотрим схемотехнику: (На плате есть маркировка BC101, на перемычку ног МК не смотрим про нее будет дальше, это уже моих лап дело)

Вход питания через стеклянный диод D1 идёт на вход стабилизатора AMS1117-3.3. Тут же на входе стоят два конденсатора С2 и С4. Глупо конечно измерять из не выпаивая, но давайте попробуем. Тут мой новый мультиметр намерил 980нФ, ну значит два по 0,5мкФ стоят напряжение по идее должно быть 16в как минимум. Сигнал с датчика температуры идёт сразу на 3ю ногу МК. Резистор R1 подтягивает 3ю ногу к +3,3в питания образуя с датчиком температуры делитель напряжения. Датчик температуры я так думаю обычный NTC термистор на 10 кОм, при комнатной температуру около 27 градусов мой тестер намерил 8,62 кОм. Измерять R1 не выпаивая не получается, показывает 16 с чем то кОм. На экране монитора кстати очень классно всё видно, всё большой и чёткое и когда руками туда лезешь то всё микроскопическое и пипец как неудобно. С5 и С6 фильтруют сигнал с датчика, мультиметр показывает 1,5мкФ. С1 фильтрует питание +3,3в возле ножки 9 МК. Конденсатор С9 фильтрует Vcap соответственно на нём должно быть +1,8в. Конденсатор С10 держит сброс на 4й ножке МК.
Напряжение кстати на моё удивление на выходе стабилизатора ровно 3,3в (иногда прыгает до 3,302). На датчике 0,969в при комнатной в районе +28°С. С3 стоят прямо на выходе стабилизатора тестер намерил 17мкФ это получается сообща с С1. С9 и С10 измерить не удалось, но по идее должны быть 0,1мкФ.
Ну и осталось разобраться с дисплеем, у нас тут классический трёхразрядный семисегментный с общим катодом.
Слава богу тут обошлось без сюрпризов и распиновка индикатора классическая 1й вывод сегмент Е, 5й вывод сегмент G, 7й вывод сегмент B, 12й вывод катод 1го разряда. А то знаете есть еще вариант когда у индикатора всего 6 выводов, причём внутри никакой логики нет вообще и вся коммутация происходит на выводах т.е. имея 6 ножек можно управлять 30 диодами включенными в различных комбинациях. Тут всё хорошо, мало того что распиновка индикатора классическая так еще и имеются 8 резисторов по 220 Ом. А ведь могли впаять только 3 резистора. Да как вообще можно такой выкинуть если на борту есть stm8s003f и индикатор на 3 разряда с резистором на каждом сегменте ? )
Дальше нужно определить выводы МК которые идут на индикатор. Часть видна снаружи, часть где то под брюшком МК проходит. Сначала я думал ну раз МК живой (индикация ведь работает) то щас напишу прошивку чтобы сегменты по порядку загорались и по очереди буду записывать куда какие идут.
Да и пятачки для прошивки вон они, ну всё предусмотрели товарищи из поднебесной.

Подпаялся, залил прогу в которой более менее примерно набросал подключение сегментов. Долго и нудно высматривал и записывал. Проще и быстрее было бы прозвонить мультиметром, но выводы у TSSOP20 идут с шагом 0,65мм, я уже староват чтобы точно в них попадать, да и это еще повезло что недавно прикупил щупы с острыми кончиками, старыми щупами было бы вообще не реально. В итоге сделал прозвонку частично тестером и частично программой. Под конец уже в программе набросал дефине
#define SEG_A PD1
#define SEG_B PD2
#define SEG_C PC4
#define SEG_D PA3
#define SEG_E PA2
#define SEG_F PD3
#define SEG_G PC6
#define SEG_DP PC3
и просто тупо по очереди подправлял нужные если сегменты загорались не по порядку.

В итоге получилось как то так

Ндас… неудобно.
Я бы развёл поудобнее )
Кстати по названию BC101 находится вот что

очень любопытно какой там МК стоит, сильно сомневаюсь что это распродают остатки 9 летней давности )
И кстати характеристики указаны

Видно что питание от 4,5в до 15в и диапазон температур от -50 до +110°С. В принципе уже в притирочку для применения в автомобиле ибо 15 вольт и 110 градусов это слишком мало. В машине в бортсети могут быть всплески и больше +15в и температуру измерять до +110 как то не серьёзно, головка блока может разогреться и чуть сильнее и это в штатном режиме она еще будет. Современные моторы очень уж теплонагруженные.
Бодался с прошивкой я долго, очень долго, и если бы не ИИ то врятли вообще бы смог. Кстати из 4х попробованных мной ИИ только один смог толково. Chat GPT оказался вообще полным шлаком ни на что серьёзное он не способен, поболтать с блондинками про бананы это он может, написать простенькую программу для МК это ему не по зубам. Дальше на очереди Алиса, она чуть лучше чем GPT и вроде даже писать умеет но какая то тормознутая, начинает писать и вдруг виснет, может написать 30% а может только 10%. Ощущение что общаешься с бабушкой которой 120 лет и которая в любой случайный момент вдруг забывает о чём говорила 10 секунд назад. Или что чаще просто останавливается и всё. Китайский Deepseek красавчик, хорошо пишет, хорошо считает, ну почти всё хорошо но постоянно мелкие косяки, а когда таких косяков десяток или два вручную исправлять их очень надоедает. Ну и лидером у меня стал Grok, уж не знаю что там курит команда Илона Маска но блин он может делать вещи, я прям не ожидал.
Так ладно, схема у нас имеется, на всякий случай смотрим распиновку МК

Датчик у нас паршивенький аналоговый, подключен на 3ю ногу МК это PD6 или что нам важнее AIN6. Но что имеем то имеем. На эту 3ю ногу я убил два вечера, даже просто тупо оцифровать значение с AIN6 и вывести на дисплей оказалось проблемой. И тут я начал подозревать не ладное. Под конец второго вечера я плюнул и увидев что 2я нога не задействована, а на ней имеется AIN5 взял значение с неё. И о чудо всё заработало, поперекидывал вход АЦП между AIN6 и AIN5 убедился что МК просто напросто отрыгнул PD6/AIN6.
Теперь вы поняли как оказалась перемычка между PD5 и PD6 )
Осталось написать програмку чтобы брать значение АЦП с PD5 вместо PD6, превращать его в градусы и выводить на индикатор.
Хотелки у меня были вот такие:
Ниже -9,9 градусов показываем знак минус и две цифры температуры.
От -9,9 до 0 показываем минус и один знак после запятой
От 0 до +99,9 просто показываем один знак после запятой
От 99,0 и выше показываем три цифры без десятых долей градуса
В общем держите прошивку
disk.yandex.ru/d/EKLCRELdMSsyzQ
Если у вас подобный термометр и также отрыгнула 3я нога, то можете перекинуть датчик на вторую ногу и пользоваться дальше.
Проверил показания в районе нуля

Проверил показания в районе 100 градусов

Рабочий диапазон сделал от -40°С до +150°С
При выходе за диапазон показания не меняются, т.е. при 156 градусах будет показывать 150.
Отлаживал долго и нудно, отловил много глюков. Делать термометр на NTC резисторах крайне неудобно ибо шкала очень нелинейная.

И надо как то всё это откалибровать еще.
Есть вот такой онлайн калькулятор Надеюсь ссылка еще будет жива к тому моменту когда вы будете это читать

Чуть удобнее чем вручную считать уравнения Стейнхарта-Харта, придётся измерить сопротивление вашего терморезистора при трёх температурах потом подставить вычисленные коэффициенты A, B и С сюда T = 1/(A + B*ln(Rt) + C*ln(Rt)3).
Всё вроде бы хорошо, но моя IDE наотрез отказалась видеть библиотеку math.h, а без нее T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt)) не посчитать. Поэтому я поступил проще — сделал 17 контрольных точек и линейную интерполяцию по ним
const int adcToTemp[][2] = {
{32, 1500}, // АЦП = 32 -> 150.0°C
{61, 1000}, // АЦП = 61 -> 100.0°C
{159, 500}, // АЦП = 159 -> 50.0°C
{213, 400}, // АЦП = 213 -> 40.0°C
{247, 350}, // АЦП = 247 -> 35.0°C
{286, 300}, // АЦП = 286 -> 30.0°C
{314, 270}, // АЦП = 314 -> 27.0°C
{341, 250}, // АЦП = 341 -> 25.0°C
{373, 200}, // АЦП = 373 -> 20.0°C
{417, 150}, // АЦП = 417 -> 15.0°C
{461, 100}, // АЦП = 461 -> 10.0°C
{505, 50}, // АЦП = 505 -> 5.0°C
{553, 0}, // АЦП = 553 -> 0.0°C
{633, -100}, // АЦП = 633 -> -10.0°C
{735, -200}, // АЦП = 735 -> -20.0°C
{784, -300}, // АЦП = 784 -> -30.0°C
{880, -400} // АЦП = 880 -> -40.0°C
};
Здесь первое число это голый результат на выходе АЦП, а второе это температура, для удобства сдвинул запятую вправо на 1 знак. Измерять каждый резистор потом вносить изменения, потом компилировать и прошивать это мало кому будет интересно тем более для такого неточного датчика. Да и процесс этот долгий и кропотливый

Охота таким заниматься ? Лично мне не очень )
Пример расчёта:


А вот взять готовую прошивку с усредненными значениями это по моему самый удобный вариант.
У меня были мысли а что с ним делать если бы отрыгнули и 2 и 3 нога ? Ну тогда по идее можно сегменты F и B индикатора подпаять к выводам 11 PB5 и 12 PB4, а две освобожденные ножки 19 PD2 и 20 PD3 использовать как вход АЦП. Еще есть вход АЦП на 14й ноге PC4.
А мне тем временем пришла идея что еще можно интересного сделать из подобного термометра )
Жаль у меня нет данных сколько кушал этот термометр с родной прошивкой, сейчас с моей кушает 19мА при напряжении 10 вольт. Работать начинает примерно где то с 4,3 вольта, вот вам и "лоу дроп" стабилизатор )
P.S. у кого есть такие современные термометры купленные недавно (не более года назад) покажите какие там чипы впаяны, очень интересно, а то покупать на Ямаркете по 600 руб ради любопытства жаба давит.










Комментарии 9
Я тут 3 вольтметра прикупил по случаю, проверил как положено -работали. Который вольты и амперы измеряет внедрил в подходящую корпусину и крокодильчики припаял для удобства. Буквально через неделю подключил к зарядке проверить сколько тока и напруги при зарядке идет и нифига, даже не засветился. Подключаю большой вольтметр -такая же картина. Только мелкий работает. Визуально все цело и звонится омметром но не пашет. Вот тебе и китайцы.
Потроха бы увидеть что за чипы с какой маркировкой
Ещё найти бы на что сфоткать что бы видно было.) вот с яндекса фотка только без шунта 0R на входе.
Ндас ( на v1.0 был stm8 в 20 ногом корпусе, это судя по надписи v2.0 оптимизировали видимо так что дешевле уже некуда. Безликий 16 ногий чип это теперь загадка.
210 рублей не великие деньги, немного поработали и то хорошо.
PinkiRaspberry
Потроха бы увидеть что за чипы с какой маркировкой
маркировки нет не на одной
Люблю заниматься всякой ерундой, но на такое меня не хватило бы. )
Пробовал измерение температуры только на ардуинках с датчиками DS18B20. Отличная штука. Вешал по 3-4 датчика параллельно и опрашивал по их серийным номерам.
Ух, классно. сразу 4 температуры ! +77 это двигатель ? Есть где почитать про эту модификацию ?
Да, +77 это двигатель. Но датчик для удобства повесил на патрубок, идущий на радиатор печки, а на нём показания занижаются на 10 градусов… т.е. по факту получается 87. Но так-то если датчик переставить на блок, то должно быть правильно.

Вот тут можно почитать. )
www.drive2.ru/l/689426502160233827/
Я сам тему не создавал. Только пару видосиков снял по меню и работе…
Там в описании видео текстом описано что и как. )