четверг, 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 (прошивка)

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

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

  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 на тот момент не смог этого сделать. Возможно что-то поменялось, пробуйте.

      Удалить