четверг, 25 февраля 2021 г.

Варочная панель Samsung C61R1 и параметры микросхемы CT1C08

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


Вскрытие выявило причину основной неисправности, это был отгоревший контакт силового реле. Вероятно массивный вывод не успел достаточно прогреться (а пайка там производилась волной) и возникла так называемая "холодная пайка". Многие годы этот дефект не давал о себе знать. Немного большее сопротивление, пониженная прочность, постоянное термоциклирование, и в один "прекрасный день" соединение рассыпалось, загорелась дуга, беспощадно пожирающая текстолит. Повезло, что плитку быстро обесточили, и удалось отделаться только небольшой дырой в плате.

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


Я выяснил, что сенсорная кнопка переслала работать ещё задолго до этого инцидента. В первую очередь сравнил сопротивления и ёмкость неисправной кнопки с исправными, никаких значительных различий выявлено не было. И единственным виновником могла быть только сама микросхема, емкостный сенсорный контроллер CT1C08x. При помощи осциллографа я посмотрел импульсы на кнопках и также не обнаружил никаких заметных отличий. Оказалось, что эти кнопки срабатывают только при определенной ёмкости, меньше или больше и они уже не срабатывают. Со снятым стеклом, аккуратно поднося палец мне удалось заставить включится неисправную кнопку. Выходит она не обладает достаточной чувствительностью, чтобы сработать через толстое стекло.

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

Дело в том, что эти микросхемы обладают целым рядом настроек и функций. Они даже позволяют оценивать силу нажатия по изменению ёмкости. Настраивать чувствительность каждой отдельной кнопки и применять площадки в качестве референтных для фильтрации шумов и избегания ложных срабатываний. Но все эти фишки не относятся к этой плите... Изменение параметров и считывание данных производится по шине I²C. Но на нашей плите шина I²C никуда не подключена, она висит в воздухе и используется только для внесения настроек, прошивки. Любой сбой в памяти или изменение свойств текстолита, и кнопки работать не будут.


Причина можно сказать найдена, осталось только считать и отредактировать "прошивку"! Адреса у обеих микросхем стандартные 0xB8 и 0xBA, различия последнего значащего бита заданны аппаратно подтяжкой 19-й ножки (I2C_SC0) к GND и VDD соответственно. Но ни один из имеющихся у меня программаторов не хотел "общаться" с этими микросхемами... 

В итоге после нескольких часов мучений с разными программаторами я уже почти готов был плюнуть на эту затею, с "воскрешением" давно "умершей" кнопки, но любопытство одолело. Я взял первую попавшуюся под руку платку с любимым STM32 (её оказался STM32F103C8T6) и быстренько накидал программку, для работы с I²C. Через пол часа я смотрел на экране осциллографа, как эта плата продолжает игнорировать мои запросы... 

    -    Ну чёрт возьми! Какого хрена? Всё ж именно как надо, все фронты, все спады... Нет только злополучного ответа ACK!

Последняя надежда! Я снизил скорость I2C cо стандартных 100kHz до 10 kHz. И тут всё заколосилось.

Я считал данные с обеих микросхем. Оказалось, что они не слабо отличаются, на одной используется все 8 каналов, на другой только 6 (нулевой и седьмой отключены). Все кнопки имеют разные параметры чувствительности. Но больше всего меня удивило, что у не работавшей кнопки параметр чувствительности выходил за пределы документированного.

Согласно документации в 12-м регистре задается общая чувствительность, а в следующих 8-ми корректировки для каждой кнопки, и они должны быть в пределах 0-127. Но в этой микросхеме было записано три канала со значениями выше 0xF0. Не долго думая, я откинул старшие биты и записал значение близкое к тем что прописаны в соседних полях. Вместо 0xFA я ввел 0x39. Никаких особых манипуляций для сохранения данных в EEPROM не понадобилось. Установил плату на плиту и все кнопки заработали.

Вот и дамп регистров памяти, которые исправно работают на данном аппарате.

CT1C08 dump EEPROM (прошивка)

Голубым выделены именно те, которые отвечают за чувствительность отдельных кнопок. Скорее всего эти значения подбираются экспериментальным путём и на разных кнопках, на разных платах, с разными стёклами будут отличаться.

40 комментариев:

  1. здравствуйте
    не подскажете
    как стыкануть stm c CT1C08

    ОтветитьУдалить
    Ответы
    1. Какие у вас проблемы? Стандартный I2C... Вроде нюансы описал.

      Удалить
  2. Здравствуйте.
    По I2C, можно и конфигурировать и состояние считывать.

    ОтветитьУдалить
  3. Здравствуйте. я менял на панели CT1C08 .прошивки у меня не было нашёл фото дампа прописал за шил все заработало .поставил стекло не чувствует ключа.подскажите что отвечает за чувствительность ключа.

    ОтветитьУдалить
    Ответы
    1. Схемы у меня нет... Посмотрите, к какой ноге микросхемы идет от него дорожка. А там по документации глянуть, или сюда напишите, я подскажу. Каким программатором пользовались?

      Удалить
  4. Ответы
    1. Как подключались? у меня почему то не хочет считывать

      Удалить
  5. Добрый день. На 11 ноге замок на CT1C08.не могу найти что в дампе поменять.

    ОтветитьУдалить
    Ответы
    1. Менять нужно байт по адресу 0x0F. Ну и адрес микросхемы правильно выбрать (подозреваю, что это та, что 0xBA)... Попробуйте вместо 0x0D прописать например 0x2D... А там будет видно, хуже стало или лучше.

      Удалить
    2. Здравствует!
      Можете по подробнее объяснить как найти байт 0x0F, и как вместо 0x0D прописать например 0x2D ?

      Удалить
  6. А вместо фото готовый dump прошивки не залить на ресурс? Я так понял с фото если самому писать в этом HxD Hex Editor?

    ОтветитьУдалить
    Ответы
    1. А вы только картинки смотрите? Прочитать то, что я написал не судьба? Смысл вам вшивать данные от чужого стекла?

      Удалить
    2. Я уже перепаял новую микросхему CT1C08, почитал комментарии на алике что якобы она прошита поставил и забыл, но ничего подобного. Вот теперь думаю как заливать и есть ли там какие данные? А стекло такое же.

      Удалить
    3. Стекла одинакового небывает... Под каждое нужны свои калибровки. Что с вашей микросхемой изначально случилось? Нужно её считать и исправить что не так. Вообще по хорошему нужно утилиту для калибровки найти или написать... Тогда всё быстро и четко будет. Но мне такого рода технику редко приносят, так что вряд-ли ещё раз столкнусь, смысла писать приложение ради одного ремонта небыло.

      Удалить
  7. Проблема почти один в один с прогаром, только после удаления копоти, плита не разблокирует пишет знаки L. Предполагаю что владелец с копотью, после прогара пытался запустить ещё раз плиту. Я прочитал что слетела прошивка CT1C08, далее залез на алик и прочитал комменты и заменил. Проблема не решилась. БП в порядке.

    ОтветитьУдалить
    Ответы
    1. Под что прошита? Там две микросхемы... Параметры одной отличаются от параметров второй даже по количеству используемых кнопок. Если их поменять местами - точно работать не будет.

      Удалить
  8. Когда на машине Indesit слетела прошивка, тема такая же была. И там никто не писал сколько Indesit столько и прошивок. Есть модель машины и прошивка, залил и пашет. Так и тут. Есть модель плиты и если она совпадает залил и всё. Не поверю что Ваша плита и плата в единственном экземпляре :)

    ОтветитьУдалить
    Ответы
    1. При чем здесь прошивка?! Прошивка в микроконтроллере лежит. А это калибровочные данные сенсорной панели! У каждой плиты свои калибровки, от одной к другой не подходят, 100 раз обсуждалось.

      Удалить
  9. У меня та что с одной микросхемой CT1C08, там есть место под другую, но оно пустое. Тогда почему везде пишут что она уже прошита и пишут после замены всё заработало?

    ОтветитьУдалить
    Ответы
    1. Где это везде такое пишут? Я вот наоборот вижу сообщения, что микросхему поменяли ничего не заработало пока не прошили... А если у китайцев пишут, то там что угодно написать могут, им абы продать. В конфигурации задается режим работы кнопок, их количество и параметры чувствительности для каждой кнопки. Они отличаются, так как отличается длинна и расположение дорожек идущих к сенсорным площадкам. Datasheet в открытом доступе, есть гиперссылки из статьи. Без правильной конфигурации к конкретной плате оно работать не будет!

      Удалить
  10. Пишут не сами китайцы, а те кто заменили эту микросхему и написали прошита. Ну я и купился. Но на эту тему не очень много информации. Все какие-то мутные ничего внятного никто объяснить не может. С миру по нитке. Один продаёт под эту микросхему программаторы и прошивки. Другие объяснить не могут от а до я. Что к чему. Сиди тут додумывай. Правда я так и не понял почему после копоти кнопки заблокировались. Если прошивать центральный микроконтроллер, то тогда и прошивки должны быть к нему. Программатор я давно купил CH341, я им уже стиралку прошил. Тема то подобная.

    ОтветитьУдалить
    Ответы
    1. Чего Вам не понятно из статьи выше? Микроконтроллер не может управлять этими микросхемами! Шина I²C вообще никуда не подключена. После сборки сенсорной панели туда подключают специальный "программатор" который и проводит калибровку и настраивает режим работы кнопок. Всё, по другому никак! Прочитайте datasheet на CT1C08x... Впаяйте старую микросхему и прочитайте параметры.

      Удалить
  11. Мы наверное на разных языках общаемся поэтому не понимаете. Перечитал Вашу статью и понял, что Вы использовали STM32F103C6T6 или STM32F103C8 какой из них не ясно. Микросхема на плате стоит 0хВА другой нет вообще там? только место под неё. Я так понимаю надо подключить программатор, считать данные и с помощью программы изменить всего лишь значения согласно Вашей фотографии? Просто не все занимаются ARDUNIO :)) чтобы вникать во всё это. Правда так и не понял почему кнопки заблокировались, при разблокировке показывают значение L. Там что значения поменялись какие?

    ОтветитьУдалить
    Ответы
    1. Arduino я тоже не использую и в большинстве случаев - откровенно презираю... Хотя если вам так проще можете хоть ардуино, хоть что угодно использовать, абы оно могло читать и писать регистры по I2C на этой плате. Ни CH341, ни другие программаторы, которые у меня есть не смогли этого сделать. Так что взял первый попавшийся микроконтроллер, под него написал за пол часа. Нет вообще никакой разницы в данном случае, хоть STM32F103C6, хоть STM32F103C8 хоть любой другой, все они умеют I2C... Хотя тот который я использовал, четко указан в статье, и это мне непонятно, откуда Вы взяли маркировку другого... А вообще, на физическом уровне хоть CH341, хоть FT232H или FT2232D могут это сделать, если найти или написать соответствующий софт для работы с CT1C08x.

      Удалить
    2. Скиньте сюда, то, что считали... У меня была другая плата, с двумя микросхемами. Явно вам эти настройки не подойдут.

      Удалить
  12. Вы так и не ответили. С помощью программы NEO programmer сняли данные и изменили прямо в ней? Я так понимаю после копоти слетела калибровка? Т.е согласно Вашей фотографии подключить программатор проверить и изменить данные?

    ОтветитьУдалить
    Ответы
    1. Для начала считать данные и выложить их сюда... У меня NeoProgrammer на тот момент не смог этого сделать. Возможно что-то поменялось, пробуйте.

      Удалить
  13. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  14. Добрый день! Считал с помощью CH341A и Neoprogeammer. Как прикрепить картинку?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте. Подскажите как считали? Внутрисхемно или отдельно? У меня почему-то не хочет не так и не эдок... Или микруха дохлая вернее обе или я что то не так делаю...

      Удалить
  15. Как с Вами связаться?

    ОтветитьУдалить
  16. Добрый день, может остался скетч для stm32?

    ОтветитьУдалить
    Ответы
    1. Код имеется в виду? Нет, не осталось... Там просто в CubeIDE сконфигурировал и пару строчек дописал... Вроде данные тупо дебагером смотрел. Никаких украшательств.

      Удалить
  17. Доброго времени суток. Вот с моей панелью похожая беда случилась. Пробовал считывать дампы с родных микросхем программатором CH341a и программой NeoProgrammer - не в какую. Заменил обе микросхемы, стали считываться. U3 считывается по адресу B8h, а U4 по адресу BAh. Низкий и высокий уровень на ноге 19 соответственно. Подскажите пожалуйста по каким адресам низкого и высокого уровня происходит запись дампа. Не могу залить дамп с Вашей картинки, заливается, на как то частично, и в итоге сенсоры так и не реагируют, кроме вкл/выкл.

    ОтветитьУдалить
    Ответы
    1. Понятно, что не заливается... Это же не дамп памяти, а микросхема - не флешка. На картинке показаны считанные значения первых 36 регистров, начиная с нулевого, соответственно номера байтов совпадают с номерами регистров. Писать нужно в те регистры, в которые нужно, а не всё подряд... Там же есть и регистр сброса, и регистры только для чтения. В документации на микросхему всё описано. Чувствительность по каналам от 0x0D до 0x14, на картинке выделено. Так же нужно удостоверится в правильном выборе опрашиваемых кнопок, регистр 0x03. Из регистра 0x2A можно считывать текущее состояние кнопок, чтоб подбирать чувствительность (настраивать со стеклом).

      Удалить
  18. Спасибо за ответ. Для меня это, к сожалению, тёмный лес. Я так понял что нет в данной ситуации возможности просто скопировать данные в эти микросхемы.

    ОтветитьУдалить
    Ответы
    1. Если у вас плата такая-же как в этой статье, такой-же модификации (присутствует 15 кнопок), то вполне можно ввести эти данные, останется поиграться с параметрами чувствительности. Так как микросхемы не идеально одинаковые, да и текстолит и т.д. Ну а если плата другая, или она по количеству кнопок отличается, тогда нужно вникать в схему, смотреть, сколько и какие каналы используются. Получается у вас одна кнопка все-таки работает? Может там активирована блокировка клавиатуры от детей? Можете мне на почту написать, там-же приложить фото платы.

      Удалить
  19. Спасибо за участие. Плата такая же. Попробую рассказать всё что происходит с этой бякой.

    ОтветитьУдалить
  20. Всем привет. Хочу поделиться своим опытом оживления этой панели. Сразу хочу сказать что в программировании я ноль и в регистрах и адресах не шарю от слова СОВСЕМ.
    Для прошивки я использовал CH341A(чёрный) и программу NeoProgrammer. Теперь последовательность процесса: Подпаиваем три проводника к точкам TP3(SDA), TP4(SCL),
    TP5(GND) на плате сенсоров, варочную панель собираем до кучи, а проводки выводим наружу и подключаем к программатору. Программатор к компу, варку в розетку.
    Запускаем программу. Убеждаемся что обе микросхемы U3 и U4 живые, то есть считываются по адресам _1011100B8_ для U3 и _1011101BA_ для U4. Затем в программе
    прописываем во все регистры НУЛИ и зашиваем в обе микросхемы. После этого варка будет с периодичностью примерно в 10 секунд будет уходить в ошибку. После этого я
    прошил в обе микросхемы дамп который был на этих микросхемах (микросхемы покупал на Алике) и панель ожила, все сенсоры адекватно заработали. Шить надо с установленным
    стеклом - это важно, происходит самокaлибровка сенсоров относительно вашего стекла. Дамп который был в моих чипах СТ1С08 и картинки прикрепить не могу, потому как гость. Может хозяин сайта прикрепит если посчитает нужным.
    Огромное спасибо Александру Гурьянову за консультации. Жму руку.

    ОтветитьУдалить
  21. Тоже довелось иметь дело с такой панелью и не с одной. Имеются две штуки. При прошивке одной доигрался что теперь все регистры читаются как FF, при этом кнопки все, кроме одной работают. Как далее не пытался менять значения регистров, все равно FF читаются. А другую подключаю, там нормально читает. Программатор самодельный.

    ОтветитьУдалить