Глюки контроллера

Все любят говорить достижениях и успехах. Но, на мой вгляд, о проебах говорить интересней. Потому как успехи у всех одинаковые, что там — пришел, увидел, победил. А вот накосячить можно совершенно разнообразными способами. Причем там, где, казалось бы, все на десять раз истоптано и никаких подводных камней не осталось. Однако, помним правило 34: и про старуху бывает порнуха.

Итак, делюсь :)

Есть девайс, довольно старый, вполне себе исправно работающий. Иногда зависавший, но это случалось редко и я про это даже не знал. Т.к. быстро поднятое упавшим не считается, потому никто не жаловался. Разрабатывал его не я. Я только взял на доработку и мелкосерийное производство.

Доработок там было немного. Ну датчик поменять, чуток подшаманить с точностью показаний, чуток оптимизировать производство, выкинуть лишнее, добавить нужное, заменить разъемы на более удобные. И так далее. Мелочевка. В общем, за год под моим авторством вышло несколько мелких ревизий этого девайса и все было окей.

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

Сделали платы в JLC, смонтировали партию устройств на десяток штук. Собрали и…

Дискотека, блядь! Это какой то трындец. Аппарат виснет и перезагружается каждые десять минут, хаотично. На индикации полный армагеддон. Кракозябры лезут в экран. Полная каша в показаниях. В общем, на лицо срыв стека. Ну очень похоже.

Но откуда? От тех жалких изменений? Да ничего они не влияли. От увеличенного размера буфера? Да там мега128я стоит на мозгах, у не оперативки в десять раз больше чем того требовалось. Попробовал уменьшить буфер. Глючить стало ощутимо меньше, но все равно десять двадцать минут работы и дискотека. Хоть на одном из десяти аппаратов.

Перерыл весь код, перелопатил все функции. Ничего не понимаю. Самое интересное, что у меня на столе все работает отлично. У меня, конечно, не вся установка собрана. Но ключевые датчики подключены. А то, что где то там что то еще срабатывает, вряд ли оно влияет.

Первым делом в таких случаях надо отделить софт от харда. Понять, что же именно глючит. Возможность такая у меня была. достал из архива старую версию софта, которая работала нормально. Разница в железе была, но небольшая. Так что я просто закомментил заглушками те функции которые относились к новому железу и пустил это в прогон. Дискотека, хотя и реже. Уже лучше.

Главный вывод — софт не виноват. Глючит железо. Старой версии железа нет, поэтому проверить на нем новый софт не получится. Но да и не важно.

Но! Железка то не менялась. С прошлой итерации произошла только замена разъема на другой тип. Только сраный коннектор поменялся. И такой лютый эффект от замены одного куска пластика на другой.

Так, стопэ. А когда конкретно оно начинает глючить? А глючить оно начинает на третьей фазе работы, когда начинает качать мембранный компрессор. А когда начинает качать этот компрессор там внутри что-то начинает оголтело щелкать. А что там щелкает? Спрашиваю у конструктора — говорит реле давления. Чисто механическая шняга. А чем щелкает реле давления? А пускателем оно щелкает, вот чем!

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

Вот, смотрите:


Увеличить
С обратной стороны дорожек нет, только перемычки.

Видите косяк? Знаете как исправить? Пишите в комментах свои предположения. А я через несколько дней дам ответ. :)

40 thoughts on “Глюки контроллера”

  1. Экран нижнего USB не подключен к земле, нет керамики по каждому питанию, хотя порты явно все задействованы.

  2. Проблема в N и L которые вдоль всей платы идут и похоже пересекаются с проводом от какого-то соединителя?
    Фильтровать силовое питание от наводок запуска реле? Хотя это не быстрое решение…

    Разводка земли под МК? Отрезать весь нижний полигон и зацепить его от земли источника? Он же вдоль силового провода как антенна получается?

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

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

        1. Это не очень хорошо, но в данном случае не является серьезной проблемой. На нижнем полигоне из всех потребителей только светодиоды оптопар.

  3. В качестве предположения: изменить разводку кварца, чтобы его конденсаторы были подключены не к общей земле, а к своей, отдельной «чистой». Типа как здесь описано: http://caxapa.ru/lib/emc_immunity.html

    И вообще поставить варистор параллельно обмотке того, что там щелкает.

  4. Страшная земляная петля, идушая из под юго-западного угла м/с на земляную ногу в левом ряду этой м/с. Просто разрезать ее в удобном месте. Я б ее разделил над R25, R26.

    1. Петля, да. Но то, что вы увидели не так страшно и делить ее надо, но не тут :) Тут то как раз можно оставить. Есть куда более критичные участки петли.

  5. Сделать 4-х слойную плату. 1) общая земля внизу; 2) питание; 3) еще земля; 4) верхние дорожки.
    Если плата заказная, а не самодельная, какая разница сколько слоёв?

      1. Разница около 50%, как по цене так и по срокам, заказывал в электроконнекте в Новосибе, зато 4 слоя разводить приятнее

        1. Все российские производители однозначно идут нахрен с их ценами и сроками. Т.к. они проигрывают китаю и по ценам и по срокам. Ну и +50% к цене это очень много.

          1. Ну и что, что разница в цене 50%. Платит-то все равно заказчик + мелкая серия, насколько я понимаю. Для такого размера платы это несколько тысяч рублей (при цене производства — миллионы). Зато плата будет маленькой, няшной и помехоустойчивой, и не надо колдовать с разведением дорожек.

            1. Цена производства отнюдь не миллионы. Так что стоимость изделия имеет значение. Они даже комплектуху через себя покупают, чтобы сэкономить несколько сотен на возврате НДС.

              А колдовать там не надо. Тут образовался явный очень серьезный косяк который легко устраняется как в готовой плате (перерезкой двух дорожек). Так и в следующей ревизии его уже не будет.

  6. Дополнение: На верхних дорожках в пробелы кидаем земляные полигоны, и чертовой кучей перемычек соединяем с земляными полигонами внизу.

  7. Фильтрующий конденсатор С12. Земля через С12 идёт на мк, но на сам кондер нет. Полигон разорван. Кинуть перемычку в этом месте, либо перетрассировать плату. А ещё я бы передвинула кондеры ближе к мк, и если есть возможность, питание и землю мк разделить по слоям (питание снизу, землю сверху)

  8. Землю через С12 соединить с общим полигоном. Если есть возможность, перетрассировать плату : разделить по слоям питание и землю по мк.

    1. Подключены по той стороне. Ну и к делу это не относится. Неподключенная оптопара просто не будет работать. Глюков это не вызовет.

        1. Именно. Еще надо с угла слева снизу срезать. Тогда будет островок. Это не ИОН, а СП42 — супервизор питания.

  9. Когда щелкает реле то возрастает ток и где то просаживается напряжение. Контроллер запитывается на напрямую а через общий полигон по которому идет ток реле.
    Надо разделить цепи питания.

    1. Нет, на плате нет ни одного реле. А то реле что щелкает оно от давление щелкает. Оно чисто механическое.

      1. Реле нет но питается же от платы силовая часть. Глюки происходят когда работать реде начинает. Тоесть потребление тока возрастает.
        Или от на контактах реле искры радиопомехи создают.

  10. DIHALT, чувак, ты мой кумир!
    Читаю пост, понимаю 10% от силы, кайф получаю неимоверный. И мечтают понять всё :)
    Прям как в детстве про OSI-модель…

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.