Всякие кухонные девайсы я ремонтирую не часто, но что поделать, знакомых много и всем хочется кушать, так что иногда приходится. Попала эта железяка ко мне на ремонт после того, как задымилась и перестала греть...
Вскрытие выявило причину основной неисправности, это был отгоревший контакт силового реле. Вероятно массивный вывод не успел достаточно прогреться (а пайка там производилась волной) и возникла так называемая "холодная пайка". Многие годы этот дефект не давал о себе знать. Немного большее сопротивление, пониженная прочность, постоянное термоциклирование, и в один "прекрасный день" соединение рассыпалось, загорелась дуга, беспощадно пожирающая текстолит. Повезло, что плитку быстро обесточили, и удалось отделаться только небольшой дырой в плате.
Во время таких ремонтов важно полностью удалить все частицы углерода - угля и сажи, и защитить плату исключив вероятность нового пробоя. Для восстановления очень удобно пользоваться фотополимерами и такие работы мною много раз проводились, так что не вызвали никаких трудностей. Силовая часть была полностью восстановлена и казалось, что всё заработало. Но в ходе испытаний оказалось, что одна из сенсорных кнопок не работает. Сперва я подумал, причина может быть в остатках сажи на стекле или на поверхности сенсорной платы, ведь ей тоже немного досталось. Но причина оказалась намного глубже...
Я выяснил, что сенсорная кнопка переслала работать ещё задолго до этого инцидента. В первую очередь сравнил сопротивления и ёмкость неисправной кнопки с исправными, никаких значительных различий выявлено не было. И единственным виновником могла быть только сама микросхема, емкостный сенсорный контроллер 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 (прошивка) |
Голубым выделены именно те, которые отвечают за чувствительность отдельных кнопок. Скорее всего эти значения подбираются экспериментальным путём и на разных кнопках, на разных платах, с разными стёклами будут отличаться.
здравствуйте
ОтветитьУдалитьне подскажете
как стыкануть stm c CT1C08
Какие у вас проблемы? Стандартный I2C... Вроде нюансы описал.
УдалитьЗдравствуйте.
ОтветитьУдалитьПо I2C, можно и конфигурировать и состояние считывать.
Здравствуйте. я менял на панели CT1C08 .прошивки у меня не было нашёл фото дампа прописал за шил все заработало .поставил стекло не чувствует ключа.подскажите что отвечает за чувствительность ключа.
ОтветитьУдалитьСхемы у меня нет... Посмотрите, к какой ноге микросхемы идет от него дорожка. А там по документации глянуть, или сюда напишите, я подскажу. Каким программатором пользовались?
УдалитьCH341a. программа NeoProgrammer.
ОтветитьУдалитьКак подключались? у меня почему то не хочет считывать
УдалитьДобрый день. На 11 ноге замок на CT1C08.не могу найти что в дампе поменять.
ОтветитьУдалитьМенять нужно байт по адресу 0x0F. Ну и адрес микросхемы правильно выбрать (подозреваю, что это та, что 0xBA)... Попробуйте вместо 0x0D прописать например 0x2D... А там будет видно, хуже стало или лучше.
УдалитьЗдравствует!
УдалитьМожете по подробнее объяснить как найти байт 0x0F, и как вместо 0x0D прописать например 0x2D ?
А вместо фото готовый dump прошивки не залить на ресурс? Я так понял с фото если самому писать в этом HxD Hex Editor?
ОтветитьУдалитьА вы только картинки смотрите? Прочитать то, что я написал не судьба? Смысл вам вшивать данные от чужого стекла?
УдалитьЯ уже перепаял новую микросхему CT1C08, почитал комментарии на алике что якобы она прошита поставил и забыл, но ничего подобного. Вот теперь думаю как заливать и есть ли там какие данные? А стекло такое же.
УдалитьСтекла одинакового небывает... Под каждое нужны свои калибровки. Что с вашей микросхемой изначально случилось? Нужно её считать и исправить что не так. Вообще по хорошему нужно утилиту для калибровки найти или написать... Тогда всё быстро и четко будет. Но мне такого рода технику редко приносят, так что вряд-ли ещё раз столкнусь, смысла писать приложение ради одного ремонта небыло.
УдалитьПроблема почти один в один с прогаром, только после удаления копоти, плита не разблокирует пишет знаки L. Предполагаю что владелец с копотью, после прогара пытался запустить ещё раз плиту. Я прочитал что слетела прошивка CT1C08, далее залез на алик и прочитал комменты и заменил. Проблема не решилась. БП в порядке.
ОтветитьУдалитьПод что прошита? Там две микросхемы... Параметры одной отличаются от параметров второй даже по количеству используемых кнопок. Если их поменять местами - точно работать не будет.
УдалитьКогда на машине Indesit слетела прошивка, тема такая же была. И там никто не писал сколько Indesit столько и прошивок. Есть модель машины и прошивка, залил и пашет. Так и тут. Есть модель плиты и если она совпадает залил и всё. Не поверю что Ваша плита и плата в единственном экземпляре :)
ОтветитьУдалитьПри чем здесь прошивка?! Прошивка в микроконтроллере лежит. А это калибровочные данные сенсорной панели! У каждой плиты свои калибровки, от одной к другой не подходят, 100 раз обсуждалось.
УдалитьУ меня та что с одной микросхемой CT1C08, там есть место под другую, но оно пустое. Тогда почему везде пишут что она уже прошита и пишут после замены всё заработало?
ОтветитьУдалитьГде это везде такое пишут? Я вот наоборот вижу сообщения, что микросхему поменяли ничего не заработало пока не прошили... А если у китайцев пишут, то там что угодно написать могут, им абы продать. В конфигурации задается режим работы кнопок, их количество и параметры чувствительности для каждой кнопки. Они отличаются, так как отличается длинна и расположение дорожек идущих к сенсорным площадкам. Datasheet в открытом доступе, есть гиперссылки из статьи. Без правильной конфигурации к конкретной плате оно работать не будет!
УдалитьПишут не сами китайцы, а те кто заменили эту микросхему и написали прошита. Ну я и купился. Но на эту тему не очень много информации. Все какие-то мутные ничего внятного никто объяснить не может. С миру по нитке. Один продаёт под эту микросхему программаторы и прошивки. Другие объяснить не могут от а до я. Что к чему. Сиди тут додумывай. Правда я так и не понял почему после копоти кнопки заблокировались. Если прошивать центральный микроконтроллер, то тогда и прошивки должны быть к нему. Программатор я давно купил CH341, я им уже стиралку прошил. Тема то подобная.
ОтветитьУдалитьЧего Вам не понятно из статьи выше? Микроконтроллер не может управлять этими микросхемами! Шина I²C вообще никуда не подключена. После сборки сенсорной панели туда подключают специальный "программатор" который и проводит калибровку и настраивает режим работы кнопок. Всё, по другому никак! Прочитайте datasheet на CT1C08x... Впаяйте старую микросхему и прочитайте параметры.
УдалитьМы наверное на разных языках общаемся поэтому не понимаете. Перечитал Вашу статью и понял, что Вы использовали STM32F103C6T6 или STM32F103C8 какой из них не ясно. Микросхема на плате стоит 0хВА другой нет вообще там? только место под неё. Я так понимаю надо подключить программатор, считать данные и с помощью программы изменить всего лишь значения согласно Вашей фотографии? Просто не все занимаются ARDUNIO :)) чтобы вникать во всё это. Правда так и не понял почему кнопки заблокировались, при разблокировке показывают значение L. Там что значения поменялись какие?
ОтветитьУдалитьArduino я тоже не использую и в большинстве случаев - откровенно презираю... Хотя если вам так проще можете хоть ардуино, хоть что угодно использовать, абы оно могло читать и писать регистры по I2C на этой плате. Ни CH341, ни другие программаторы, которые у меня есть не смогли этого сделать. Так что взял первый попавшийся микроконтроллер, под него написал за пол часа. Нет вообще никакой разницы в данном случае, хоть STM32F103C6, хоть STM32F103C8 хоть любой другой, все они умеют I2C... Хотя тот который я использовал, четко указан в статье, и это мне непонятно, откуда Вы взяли маркировку другого... А вообще, на физическом уровне хоть CH341, хоть FT232H или FT2232D могут это сделать, если найти или написать соответствующий софт для работы с CT1C08x.
УдалитьСкиньте сюда, то, что считали... У меня была другая плата, с двумя микросхемами. Явно вам эти настройки не подойдут.
УдалитьВы так и не ответили. С помощью программы NEO programmer сняли данные и изменили прямо в ней? Я так понимаю после копоти слетела калибровка? Т.е согласно Вашей фотографии подключить программатор проверить и изменить данные?
ОтветитьУдалитьДля начала считать данные и выложить их сюда... У меня NeoProgrammer на тот момент не смог этого сделать. Возможно что-то поменялось, пробуйте.
УдалитьЭтот комментарий был удален администратором блога.
ОтветитьУдалитьДобрый день! Считал с помощью CH341A и Neoprogeammer. Как прикрепить картинку?
ОтветитьУдалитьЗдравствуйте. Подскажите как считали? Внутрисхемно или отдельно? У меня почему-то не хочет не так и не эдок... Или микруха дохлая вернее обе или я что то не так делаю...
УдалитьКак с Вами связаться?
ОтветитьУдалитьДобрый день, может остался скетч для stm32?
ОтветитьУдалитьКод имеется в виду? Нет, не осталось... Там просто в CubeIDE сконфигурировал и пару строчек дописал... Вроде данные тупо дебагером смотрел. Никаких украшательств.
УдалитьДоброго времени суток. Вот с моей панелью похожая беда случилась. Пробовал считывать дампы с родных микросхем программатором CH341a и программой NeoProgrammer - не в какую. Заменил обе микросхемы, стали считываться. U3 считывается по адресу B8h, а U4 по адресу BAh. Низкий и высокий уровень на ноге 19 соответственно. Подскажите пожалуйста по каким адресам низкого и высокого уровня происходит запись дампа. Не могу залить дамп с Вашей картинки, заливается, на как то частично, и в итоге сенсоры так и не реагируют, кроме вкл/выкл.
ОтветитьУдалитьПонятно, что не заливается... Это же не дамп памяти, а микросхема - не флешка. На картинке показаны считанные значения первых 36 регистров, начиная с нулевого, соответственно номера байтов совпадают с номерами регистров. Писать нужно в те регистры, в которые нужно, а не всё подряд... Там же есть и регистр сброса, и регистры только для чтения. В документации на микросхему всё описано. Чувствительность по каналам от 0x0D до 0x14, на картинке выделено. Так же нужно удостоверится в правильном выборе опрашиваемых кнопок, регистр 0x03. Из регистра 0x2A можно считывать текущее состояние кнопок, чтоб подбирать чувствительность (настраивать со стеклом).
УдалитьСпасибо за ответ. Для меня это, к сожалению, тёмный лес. Я так понял что нет в данной ситуации возможности просто скопировать данные в эти микросхемы.
ОтветитьУдалитьЕсли у вас плата такая-же как в этой статье, такой-же модификации (присутствует 15 кнопок), то вполне можно ввести эти данные, останется поиграться с параметрами чувствительности. Так как микросхемы не идеально одинаковые, да и текстолит и т.д. Ну а если плата другая, или она по количеству кнопок отличается, тогда нужно вникать в схему, смотреть, сколько и какие каналы используются. Получается у вас одна кнопка все-таки работает? Может там активирована блокировка клавиатуры от детей? Можете мне на почту написать, там-же приложить фото платы.
УдалитьСпасибо за участие. Плата такая же. Попробую рассказать всё что происходит с этой бякой.
ОтветитьУдалитьВсем привет. Хочу поделиться своим опытом оживления этой панели. Сразу хочу сказать что в программировании я ноль и в регистрах и адресах не шарю от слова СОВСЕМ.
ОтветитьУдалитьДля прошивки я использовал CH341A(чёрный) и программу NeoProgrammer. Теперь последовательность процесса: Подпаиваем три проводника к точкам TP3(SDA), TP4(SCL),
TP5(GND) на плате сенсоров, варочную панель собираем до кучи, а проводки выводим наружу и подключаем к программатору. Программатор к компу, варку в розетку.
Запускаем программу. Убеждаемся что обе микросхемы U3 и U4 живые, то есть считываются по адресам _1011100B8_ для U3 и _1011101BA_ для U4. Затем в программе
прописываем во все регистры НУЛИ и зашиваем в обе микросхемы. После этого варка будет с периодичностью примерно в 10 секунд будет уходить в ошибку. После этого я
прошил в обе микросхемы дамп который был на этих микросхемах (микросхемы покупал на Алике) и панель ожила, все сенсоры адекватно заработали. Шить надо с установленным
стеклом - это важно, происходит самокaлибровка сенсоров относительно вашего стекла. Дамп который был в моих чипах СТ1С08 и картинки прикрепить не могу, потому как гость. Может хозяин сайта прикрепит если посчитает нужным.
Огромное спасибо Александру Гурьянову за консультации. Жму руку.
Тоже довелось иметь дело с такой панелью и не с одной. Имеются две штуки. При прошивке одной доигрался что теперь все регистры читаются как FF, при этом кнопки все, кроме одной работают. Как далее не пытался менять значения регистров, все равно FF читаются. А другую подключаю, там нормально читает. Программатор самодельный.
ОтветитьУдалить