Kekovsky

Kekovsky

Делаю что-то. Родом с села.
Пикабушник
поставил 74221 плюс и 96 минусов
отредактировал 2 поста
проголосовал за 2 редактирования
Награды:
С Днем рождения, Пикабу!5 лет на Пикабу
32К рейтинг 950 подписчиков 1226 комментариев 39 постов 34 в горячем
68

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН

Привет, ребятки, из числа подписчиков и не только (если кому-то ещё интересно - можете тоже заходить на огонёк). Как всегда, "пролетели 2 недели", но, программа потихоньку пишется (и уже даже как никогда близка к завершению). Сегодняшний пост будет о реализации обработки ТЭНа, которая жизненно необходима для получения горячей воды в посудомойке. Некоторые моменты я сильно упростил, но, тем не менее, удалось выполнить и эту задачу. Итак, как мы знаем, в нашей машинке имеется ТЭН. Но для его корректной работы необходима обработка данных термометра, чтобы понимать, на какой интервал времени нужно этот самый ТЭН включать. Устанавливать какой-то дополнительный термометр не нужно, он уже есть в машинке.

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

1. Измерения по сопротивлению термистора (dR от dT)
2. Приведение их к изменению напряжения (преобразование dR в dU) (используется "мост Уитстона")
3. Сравнение полученного напряжения с опорным напряжением, получение разницы в процентном соотношении (в этом нам поможет физик Кларенс Мэлвин Зенер)
4. Приведение полученного соотношения к абсолютному значению температуры в градусах (а в этом нам поможет математика 7 класс)
5. Вычисление ориентировочных интервалов включения ТЭНа по полученным данным

Собственно, на момент написания поста, мною это всё уже проделано и результаты вписаны в историю программы:

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки


Давайте теперь разберём каждый этап.

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

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Тут я столкнулся со следующей проблемой: висячий на воздухе провод термистора ловил целую кучу помех, от насоса, мотора и т.д., поэтому, показания очень сильно прыгали. В данном случае видно, что значению в 26,6 градусов соответствует сопротивление 6,37 кОм. Однако, это совсем не верно. В качестве временного выхода было использовано измерение "на остывание": сначала я разогрел бак до 60 градусов, затем отключил все приборы из сети и измерил повышение сопротивления. Полученные точки показаны на графике (синяя кривая).

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Как можно видеть, мы получили примерную характеристику термометра. На участке от 30 до 50 градусов почти линейна, далее немного закругляется в сторону экспоненциальной. Ниже 26 градусов измерить было невозможно, т.к. это была комнатная температура. В целом, этот график позволил сделать следующие выводы:

1. Функция зависимости dR от dT может быть приближена к линейной для температур до 60 градусов (что является заводской температурой в программах для данной машинки)
2. Сопротивление при комнатной температуре начинается от 10-12кОм, следовательно, балластный резистор примем сопротивлением в 15 кОм (т.к. ниже комнатной температуры машинка остывать у нас не будет).

2. Приведение к измерению напряжения
Для измерения напряжения используется слегка видоизмененный измерительный мост Чарльза Уитстона, открытый в 1843 году.

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Суть его заключается в сравнении напряжений, полученном с помощью делителя на исследуемом сопротивлении (R1, R2) с опорным (R3, R4). Только, в данном случае, оно даёт как бы "логический" сигнал, где R4 - переменное сопротивление, подбираемое реостатом. А в нашем случае необходимо процентное соотношение, вместо вольтметра используется АЦП, который уже встроен в контроллер ATMEGA328.

3. Сравнение полученного напряжения с опорным напряжением

Хотел бы заострить внимание на следующих моментах:

- Ввиду большого количества помех из-за силовых агрегатов (насосы, клапаны) в качестве опорного напряжения выбирается не резистор, а стабилитрон с балластным сопротивлением. В моём случае нужен был стабилитрон (он же диод Зенера в честь известного физика) на 2,5В. Который заменяется микросхемой TL431 из блока питания, катод соединяется с управляющим выводом). Балластный резистор для него методом подбора выбран на 330 Ом (маловато, но можно оставить и так).
- Т.к. у нас второй "вывод" измерителя АЦП уже подключен к земле по схеме микроконтроллера, мы не можем подавать на него опорное напряжение, это приведёт к замыканию его на землю. Благо, в микроконтроллере на этот случай предусмотрен вывод AREF, на который и подключается опорное напряжение. Противоположный вывод термистора подключаем к одному из входов АЦП (в нашем случае ADC5)

Давайте теперь настроим АЦП на самом контроллере:

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Настройка его очень простая:
- Разрешаем считывание показаний АЦП
- Выбираем опорное напряжение с AREF пина (нашего стабилитрона). Специально акцентировал на этом внимание, если REFS1 установить как 0 и REFS0 как 1, то будет выбрано напряжение питания, а на AREF желательно ставить керамический конденсатор. Использование такой конфигурации не всегда рекомендуется, в нашем случае показания начнут плясать, как Айседора Дункан, поэтому устанавливаем оба бита как 0.
- Выбираем ADC5 регистром мультиплексора ADMUX (в нашем случае - вывод 5 он же IN_RS C5 на порту C).

В CheckTemperature просто получаем значение ADC (он же ADCW) после установки соответствующего бита в регистре АЦП. В результате мы "загнали" текущую температуру в доступную нам для работы область.

4. Приведение полученного соотношения к значению температуры

После предыдущего шага мы получили значение в попугаях (процентах): насколько наше исследуемое напряжение превышает или ниже опорного. Так как исследуемое напряжение сконфигурировано резистором на уровень 2,5В и ниже, соответственно, мы будем получать значение от 1024 до 0. (Такое сравнение выбрано, чтобы не терять лишнюю дискретность).

Далее, аналогично с первым опытом были измерены значения температуры в попугаях относительно эталонного термометра. Полученные показания видны на том же графике (бордовая кривая). Как можно видеть, бордовая кривая лежит ниже голубой, что объясняется сопротивлением балластного резистора. Нам это нисколько не мешает, но необходимо будет ввести поправку.

Теперь, наша задача заключается в том, чтобы привести значение в "попугаях" к значению в градусах цельсия. Для этого исследуем зависимость этих двух величин:

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Как можно видеть на графике, она представляет собой ветвь функции y = sqrt(x). Видна обратная зависимость значений (в красном квадрате) В нашем случае не требуются очень точные измерения, поэтому мы можем привести следующие простейшие преобразования:

1. Превратим обратную зависимость в прямую. Для этого y = 1024 (макс. значение АЦП) - x
2. Возьмём функцию y = kx + b. K подберём экспериментально, у меня он составил 13,24 для данной системы (при изменении сопротивления хотя бы одного резистора это значение изменится).
3. Сдвиг b подберём эмпирически, у меня он составил 4 единицы (это сдвигает полученный график ближе к середине характеристики), таким образом, погрешность при 25 и при 60 составляет всего лишь 2 градуса Цельсия, что допустимо.

Итак, полученная функция:

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Коэффициент округлил до 13, т.к. нет работы с дробными числами. Для тонких термометров необходимо будет её реализовывать, в моём случае это значение нужно лишь для ориентировки, так что им можно пренебречь.

Итак, сверим показания термометров - заводского и нашего (самодельного):

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Тут уже сфоткано на тапок, но суть, думаю, понятна. При b = 0 показания сходятся на 28 градусах, на 60 градусах расходятся на 8. При b = 4 Показания равномерно расходятся на 3-4 градуса, поэтому, для получения искомой температуры отключения выгоднее пользоваться попугаями (они более точны), а это значение использовать лишь для визуальной ориентировки.
Была идея сделать пост, посвященный именно термостатированию, если у меня дойдут руки, там исправим все эти недостатки.

5. Реализация работы с ТЭНом
Собственно, мы получили возможность измерять температуру в баке. Для работы ТЭНа реализуем две примитивные проверки:

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Проверки сделаны "в 3 этажа", т.к. если делать только одну, то случайная помеха будет вызывать процедуру остановки машины. Периодически такие помехи у меня проскакивали. Поэтому, значение будет подтверждаться аж 3 раза, через 1мс и затем через 10 мс. Если же оно установилось, то ТЭН отключается.
- Первая проверка - догоняем до 60 градусов - 300 попугаев и выключаем ТЭН.
- Вторая - если попугаев очень мало или очень много, значит что-то у нас не так со схемой, выдать ошибку MINTEMP

Собственно говоря, для работы с ТЭНом машинки этого более чем достаточно. Никакого термостатирования в данном случае не требуется, так как машинка достаточно неплохо сохраняет тепло. Если будет необходимость в дополнительном подогреве, нужно будет ещё раз вызвать включение ТЭНа в программе. На данный момент бак прогревается до 62-63 градусов (по самодельному "термометру" это 59-60). После чего сохраняет такое тепло до 30 минут, этого достаточно для одной фазы мойки. Затем можно и подогреть чуть-чуть.

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

ПСДПМ ч.3.2: Термометрия, подключаем ТЭН Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

Показать полностью 11
252

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды)

Всем привет! Этот пост - продолжение серии про написание софта для посудомоечной машины с реверс-инжинирингом.
Часть 1. Вступление

Часть 2. Написание каркаса программы
Собственно говоря, какое-то время меня не было, т.к. был вынужден заниматься добычей пропитания (собственно, как и все). Но речь не об этом. Были сделаны доработки, проведены первые испытания на машине:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Сама программа за прошедшее время немного увеличилась и обросла различными багами и костылями:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Т.е. грубо говоря, текущее значение напряжения на данном порту (логическое) сравнивается с требуемым значением. Для этого входной регистр сдвигается на такое число раз, каков номер исследуемого пина, после чего с помощью простого логического И с 0x01 от него "отрезается" крайний разряд. Соответственно, далее делаем сравнение с требуемым логическим уровнем. Если условие удовлетворяется, то делаем какое-то действие. Самое простое - проверка аквастопа (аварии) и датчика соли с компаратора:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

Впрочем, это не самое интересное. Далее дошла очередь до вывода FM. Вот тут сказалось то, что я плохо знал устройство машины. Я предполагал, что геркон FM срабатывает при заполнении бака, аналогично аквастопу. По факту же оказалось, что сигнал с выхода FM по сути представляет собой стробирование. А сам FM - расходомер, в котором циклично крутится поплавок. Поступила задача - реализовать электронный счетчик этого самого расхода воды. Для этого навесить на контроллер ещё дополнительный функционал. Благо, задача эта несложная. Наш контроллер ATMEGA328 имеет для этого все необходимые мощности. Вот, как выглядит этот самый расходомер. Видно платку и геркон:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

1. Период оборота геркона может быть разным, он зависит от напора, так же попавший пузырёк воды может сбить фазу и привести к неверным выходным данным.

2. Необходимо перенастраивать имеющийся таймер, или же задействовать другой.

Поэтому для реализации счетчика воды решено было использовать второй вариант - прерывания. ATMEGA328 поддерживает два их вида - INT и PCINT. Первое - хорошее дело, так как на оба вывода прерывания выделяется отдельный обработчик. Но увы, они у нас висят на порту D, который в нашем случае хорошо зарекомендовал себя, как выходной порт (т.к. изначально я не думал, что прерывания мне там понадобятся). Так что придется задействовать программные прерывания PCINT, которые можно навесить на любой порт. К тому же, в используемом мною методе обработки это не имеет особого значения. Для начала необходимо определить тайминги. Для этого снимается осциллограмма со входа:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Как можно видеть, в среднем, весь пик занимает интервал в 30 мс. Поэтому для борьбы с помехами и дребезгом мы используем в прерывании метод двух замеров:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Внизу инициализируется прерывание для группы 1 пина 2 - PCINT10, что в нашем случае PINC-2. Пока что оно не согласуется с конфигом, это такой небольшой костылёк, возможно, он будет потом исправлен. В самом прерывании происходит следующее: подстановка FLUID_HOLD - это проверка состояния PINC-2. То есть, прерывание PCINT возникает всегда, когда происходит событие на линии PCINT. Но если при этом у нас это не высокий уровень сигнала на пине C2, то оно идёт мимо и не занимает много лишних тактов. Если же это нужное прерывание, то следом вызывается задержка, спустя 20 мс делается второй замер по этому же пину. Если значение не изменилось, то "горбик" сигнала засчитывается.

Тут есть щекотливый момент: подразумевается, что прерывания не будут вызываться вторым этажом. Иначе же прерыванию необходимо запрещать себя, выполнить задержку, после чего восстанавливаться. Возможно, это место будет переделано - это увеличит точность борьбы с дребезгом. В общем и целом, на осциллограмме это выглядит так:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Красная линия - произошло событие на шине. Оранжевая - событие подтвердилось, это была не помеха. Для контроля получившегося "протокола" к системе была быстро подключена ардуина, выдающая пачку импульсов. Количество импульсов должно быть равным как на передатчике, так и на приёмнике:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Было передано 99 импульсов, пришло 100. Это сделано специально, первый импульс приходит при перезагрузке Arduino. В общем и целом всё соответствует. Интервал 30 мс. Потерь нет, лишних срабатываний тоже нет. Но ардуино связывается по притянутой к земле помехоустойчивой шине. Поэтому при реальных испытаниях всё же возможны ложные срабатывания из-за недостатков алгоритма.

Давайте попробуем залить бак машины, для начала, по времени. Для этого используется цикл из предыдущего поста. Он был подвергнут изменениям, а именно, убраны команды на отключение агрегата. Подразумевается, что вся шина обнуляется, а затем включаются нужные приборы. Тут палка о двух концах - при таком способе каждое состояние обязано хранить лишние команды на включение. Но, при этом, не надо отслеживать, если что-то забыли выключить:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Итак, включаем заливку по времени. На 25 секунд. Опытным путём установлено, что этого времени достаточно для того, чтобы заполнить бак до определенной черты. Давайте посмотрим, сколько импульсов насчитает расходомер:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

В полевом варианте всё это выполняется на стареньком ноуте:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Теперь немного из начального курса метрологии. Мы получили значение в 271 попугай. Теперь надо определять, есть ли ошибка и какова случайная составляющая данной величины. Давайте повторим эту же процедуру 6 раз, и сравним результат. Стандартное отклонение, в нашем тяжелом случае, не должно превышать 5.

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Итак, результат:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Для сельской местности сойдёт. В принципе, результаты не берутся с потолка, при прочих равных условиях (одинаковый напор воды, одинаковое время включения) величина ошибки не слишком уж и велика. Далее оценим линейность измерения, чтобы определить накопленную ошибку, характерную для счетчиков. Для этого выберем интервалы от 5 до 30 сек и проведем замеры:

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Как видно, небольшая ошибочка всё-таки накапливается. Но стоит учесть тот факт, что при заливке в течение 30 секунд, вода уже начинает выливаться из бачка машины. Т.е. имеется ввиду, что более этого времени счетчик работать не будет, он будет обнуляться. Поэтому даже ошибка в 7% в данном случае приемлема. Хотя, конечно, хотелось бы более точных результатов.

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

В общем, осталось только физическое обоснование. Делается оно аналогичным образом. За 30 секунд машинка наливает воду до определенной черты. Давайте просто сольём машину (DRAIN_ENABLE на 30 секунд) и до этой же черты просто нальём воду в бак из мерного стакана.

Пишем свой софт для посудомоечной машины ч. 3.1. Реализуем расходомер (+ электронный счетчик воды) Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Для заливки до отмеченной ранее черты понадобился 1 литровый мерный стакан и ещё примерно 550 мл воды. В нашем случае получается, что один попугай примерно равен 6 мл водицы. Следовательно, расход воды в машинке примерно равен 3л/мин при стандартном напоре по 12мм трубе. Так и запишем. В дальнейшем в программе при заливке воды будем считать уже не по таймеру, а по попугаям.

Впрочем, тут придумалась небольшая физическая задачка. Сколько времени понадобится, чтобы в случае поломки расходомера залило соседа снизу? Ответ: при кухне в 8 метров квадратных, если учесть, что залитие произойдет при уровне воды в 1 см, для этого достаточно будет лишь 26 минут зависания программы с открытым клапаном. Поэтому, ребята, посудомойки без присмотра лучше не оставлять. А нам лучше сделать дополнительный контроль по таймеру, помимо аквастопа. Чтобы если в течение минуты требуемые попугаи не набежали, была возможность этот самый клапан прикрыть до выяснения обстоятельств. Эти проверки легко реализуются в различных функциях программы, я оставлю их за кадром пока.

В части поста 3.2. Будем измерять реализовывать термодатчик, дабы можно было ещё и пару поддать, а не только воду экономить.

Всем спасибо, с вами был Kekovsky.

Показать полностью 17
296

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы

Всем привет! Рад, что понравился мой предыдущий пост. В этой части будет, собственно говоря, то что хотел также поместить туда, но не стал раздувать пост. Она не такая интересная ибо, в основном, работаем с программой. Писал я её 2-3 часа в день в свободное время, так что на текущий момент сделано не много (относительно). Многое ещё нужно доработать или исправить.


Продолжим с того, что мы практически подключили железо. Далее заходим в WinAVR Atmel Studio и пишем. Начнём с создания конфигурационного файла, в котором сразу же укажем назначенные порты и пины микроконтроллера для того, чтобы в будущем была возможность расширить/заменить/переназначить выводы под разные платы без значительных изменений в самой прошивке. Выглядит это на начальном этапе примерно так:

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Далее очередь макроподстановок (substitutions) под эти порты для удобной работы. Можно тупо оперировать регистрами, сразу по ходу дела устанавливая на выходной порт значения типа 0x62, 0xCC и т.д., но мы будем всё расписывать для того, чтобы было понятно и самим не запутаться.

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Для проверки правильности работы этих макроподстановок пишем каличную мини "программку" на задержках. В нашем случае она включит залив примерно на 12,7 с, далее насос на 25,5с и опять слив на 12,7с. (значения выбраны произвольно).

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Для проверки на железе заменил свой переключатель на DuPont пины, попутно выведя на них все датчики в т.ч. DOOR и ISB, которые пока не задействую. Также питание +5V от платы. В готовом виде выглядит это так. Релюшки успешно щелкают:

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Далее создадим некое подобие структуры приложения. Учитывая, что программирование под AVR чисто процедурное, никаких классов и экземпляров создавать не надо, поэтому особого труда это не составит.

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Попутно также прикручена каличная библиотека для LCD1602, написанная по памяти. Пока что не умеет в русский язык, работает медленно, возможно, подлежит дальнейшей замене, но для отладки её хватает на все 100. Вынес в отдельную функцию нашу "программу" самым очевидным образом:

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Далее, возможно, будет несколько разных программ. Как уже смеялись в комментах к предыдущему посту, ошибка пока что будет на уровне "ЕГГОГ", но это не страшно, это всё поправимо.

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Далее прикрутил таймер. Т.к. моя микро библиотека 1602 на текущий момент имеет лишь одну функцию - последовательный вывод массива Char'ов (да и те только латиницей),  пришлось городить данные костыли для вывода текущего времени таймера (что помогло мне его отладить), со временем это будет исправлено, если будет в этом потребность. Далее занялся вводом с кнопок и датчиков. Для тестирования вывел все выводы подряд на дисплей. Сделано это было не зря - как выяснилось, некоторые порты были замкнуты между собой соплями из припоя на переходнике, возникшими вследствие многократной перепайки контроллера. Эту проблему устранили, после чего всё стало определяться нормально.

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Сама процедура программы к этому моменту стала выглядеть так, и уже можно начать установку каких-то условий её работы:

Пишем свой софт для посудомоечной машины ч. 2. Пишем костяк программы Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Собственно говоря, реализована она самым очевидным образом, т.к. я никогда не учился на программирование, сделал так, как пришло мне в голову. Программа разбивается на этапы (0-99), на каждом этапе производится какое-то действие (или несколько), после чего заводится на определенное время "будильник" (а как лечить будильники мы уже знаем). Этому же будильнику в память передаётся номер следующей стадии, на которую он должен будет перейти по завершении отсчета (если всё пройдёт нормально). Когда ему приходит 100 стадия, он сам себе запрещает прерывание и останавливается. Т.е., грубо говоря, в процессе работы он отнимает только незначительное количество тактов на проверку того, закончилось ли время. В остальное время программа возвращается в главный цикл, и всецело может следить за показаниями датчиков, аварийными показателями, обрабатывать нажатия кнопкок, менять по мере необходимости состояние портов и т.д. Что самое интересное, программа заработала у меня практически сразу, однако, я долго не мог понять, почему она пропускает одну стадию. Через час отладки и копания кода выяснил, что забыл там оператор break. Что ж, бывает..

В конечном итоге программа научилась:

- Выводить данные о состоянии и ошибках на LCD-модуль
- Принимать (но пока не обрабатывать) значения со внешних датчиков
- Выполнять заданную программу по циклу (пока ещё без поправки на показания датчиков)

Далее, в первую очередь, необходимо:

- Реализовать ветвление программы с поправкой на показания датчиков (для этого нужно определить режимы работы этих датчиков при помощи различных опытных испытаний, об этом в следующем посте)
- Доделать реализацию паузы программы с возможностью продолжения с остановленного места
- Подключить АЦП и реализовать снятие данных с термометра, для возможности безопасного включения ТЭНа
- Расписать одну более-менее качественную циклограмму, которая позволит запустить машинку и в тестовом виде что-то в ней помыть.

В комментариях меня просили:

- Реализовать лог машинки и запись последнего состояния её регистров в EEPROM, для продолжения мойки с остановленного места при отключении питания.

Ребят, возможно, это и будет сделано, но на текущий момент абсолютно не вижу в этом необходимости. Это желательно для машинок, которые будут проданы покупателям, но в моём случае гораздо быстрее просто включить слив на 1-2 минуты в начале программы, который удалит оставшуюся воду и начнёт процесс заново. Насчет того, что ТЭН включится насухую - это теоретически возможно, но если всё грамотно расписать, то это произойдет только в случае аварийного замыкания AVR или ULN'ки. Тут уже никак не отследишь.

Всем спасибо, с вами был Kekovsky. До новых встреч.

Показать полностью 9
2563

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг

Всем привет! Предупреждаю заранее, данный проект не является сколь-либо экономически выгодным. За время, затраченное на эту работу, можно было заработать на несколько таких новых посудомоек. Целью данного поста является демонстрация примера разработки ПО для небольшой автоматики в кустарных условиях (аналогичных производственным). Если из этой идеи получится что-то стоящее, то исходные коды проекта я потом выложу. Писать код буду в реальном времени по мере возможности. Конкретно в данном посте мы изучим устройство этой машины, подготовим платформу, и загрузим первую тестовую программу.

Итак, попала ко мне в руки вышедшая из строя посудомоечная машина. Было выяснено, что её агрегаты (соленоиды, насосы и т.д.) находятся в исправном состоянии. Вышел из строя сам контроллер, где находится программа для управления этими приборами. Что, скажу я вам, весьма серьёзная ситуация - ведь без этого контроллера большая и дорогостоящая машина подлежит отправке на помойку. В интернете я уже видел подобные проекты, но они были сделаны как-то халтурно, не уверен, что они вообще работали. Для написания подобного ПО в производственных условиях программисту уже должны быть даны технические параметры всех приборов и назначение выводов. Но у нас нет ни оригинального контроллера, ни исходников. Поэтому нет никаких шансов восстановить заводское ПО. В таком случае, будем писать своё. Но для начала необходимо изучить, что собой представляет машина - ведь у нас нет практически никаких данных, все провода для нас отличаются только цветом. Первым делом, выпаиваем старый, вышедший из строя контроллер:

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Далее, мы видим на плате микросхему ULN2003 (моя называется иначе, но 2003 в названии сути не меняет). Подпаяем к прибору специальную платку (состоит из резисторов и блока переключателей):

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Итак, из даташита мы знаем, что микросхема ULN2003 имеет семь входов и семь выходов с инвертированием сигнала. Сделано это для удобства подключения к реле - при подаче логической единицы 5В на вход микросхемы, выход подтягивается к земле и в катушках реле начинает течь ток. Мощный прибор, подключенный к реле, включается в работу.

Для определения этих самых приборов плату устанавливаем на машину, после чего щелкаем переключателями по очереди. Методом проб переключателей было выяснено, что каждый из 7 выходных пинов выполняет свою функцию:

1. Запуск центробежного насоса (ЦН) на большой скорости
2. Запуск ЦН на малой скорости (половинная загрузка?)
3. Открытие входного клапана (залив воды)

4. Открытие дозатора моющего средства
5. Включение соленоида, находящегося в баке с солью
6. Включение сливной помпы
7. Включение ТЭНа для нагрева воды.

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

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Выявленные опытным путём выводы соответствуют указанным на схеме (выходы - внизу прямоугольника). Однако, также полно внесистемных обозначений. Например, что такое FM? ISS? Это всё пришлось выяснять опытным путём. В результате, спустя некоторое время, схема выглядела уже так:

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Входы расположены следующим образом:

1. RE - вход терморезистора (на 9,7КОм), установленного в баке с водой. Он контролирует температуру воды, нагреваемой ТЭНом. Константа зависимости сопротивления от нагрева для него неизвестна (утеряна в заводской прошивке), её предстоит выяснять опытным путём в следующих постах. Пока опустим его. Вход аналоговый.
2. FM - Fluid Meter. Датчик воды. Представляет собой геркон с магнитом, который размыкается при заполнении бака. Вход цифровой.
3. IAQS - датчик (микрик) аквастопа. При его активации включается режим аварии и отключаются все приборы. Вход цифровой. Его мы тоже пока опустим.
4. +5V и ISS. Питание датчика соли. Он выполнен на компраторе LM339, вход цифровой.
5. ISB - неизвестный переключатель, находящийся в дозаторе моющего средства. Его расположение выяснять не стал, для тестового запуска он пока не нужен. Вход также цифровой и опустим его.
6. DOOR - датчик двери (замок). Работает аналогично IAQS.

P1 - пресловутый прессостат, но он в данной машине к модулю не подключается, а работает независимо.

Итого, имеем 4 на данный момент важных входа:
1. RE - его реализуем позже через полумостовую схему измерения
2. FM - проверяется через подтяжку линии к 5В через резистор 10K на плюс питания и 2K к самой линии.
3. ISS - аналогичным образом
4. DOOR/IAQS (их пока можно объединить) - аналогичным образом.

От себя также добавлю 2 кнопки (питание и служебная кнопка), и 6 выводов для работы дисплея 1602 (включен в полубайтном параллельном режиме).

Таким образом, мы определили, что к выбираемому контроллеру для данной машинки предъявляются следующие требования:

1. Наличие 14 и более I/O портов для всех агрегатов (выходной регистр, входы, также для подключения дисплея 1602, которого не было в оригинальной схеме)

2. Наличие на борту таймеров (непосредственно для работы отсчёта времени)

3. Наличие АЦП (для обработки показаний термодатчика)

4. Возможность подключения кварцевого генератора для обеспечения стабильности схемы

Собственно, ничего серьёзного. Подойдёт контроллер ATMEGA8 (но т.к. он уже сильно устарел, заменим на любимый китайцами и ардуинщиками ATMEGA328, они полностью совместимы). Скажу сразу, Arduino в данном проекте мы не используем, пишем на чистом AVR.

Когда контроллер выбран, настало время подготовить плату и приборы для отладки. Начнём с того, что подготовим тестовый стенд для ИМС. Запаяем её и некоторые DuPont пины.

Было / стало:

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Далее, подготовим аппаратные имитаторы агрегатов машинки. Кто-то скажет, что отладить можно было и в электронном виде, на что я скажу да, можно. Но часто бывает, что в симуляторе не выявляются некоторые косяки, такие как дребезг кнопок, наводки и т.д., т.к. условия там слишком приближены к идеальным. Плюс ко всему, прибор не очень громоздкий, так что можно изготовить "набор для отладки". Состоит он из платы с микросхемой ULN2003, имитирующей работу нашего модуля и агрегатов (но вместо них установлены светодиоды). Второй модуль состоит из 2 кнопок и 3 переключателей, имитирующих наши важные датчики, также, туда будет установлен терморезистор

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Для оптимизации схемы некоторые доработки выполнялись "на соплях" прямо на дисплейном модуле:

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Вот так вся эта отладочная установка смотрится после сборки. Выходной регистр назначен на порт D (используется 7 выводов из 8), дисплей - на порт B (6 выводов), входной регистр - на порт C (неполный, 6 выводов):

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

Теперь создадим проект под эту схему. Сразу же инициализирую git-репозиторий. Пока что лишь маленькая программка "бегущие огни" на задержках для проверки правильности проводки.

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

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

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

Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг Электроника, Техника, Avr, Автоматика, Длиннопост, Посудомоечная машина, Самоделки

Дальнейшие задачи по этому устройству, в основном, программные и заключаются в следующем (будем выполнять во второй части поста):

1. Инициализировать аппаратный таймер, отмеряющий время работы конкретного агрегата
2. Инициализировать дисплей для вывода тестовой информации о состоянии машины
3. Написать тестовую программу, которая позволит залить воду в бак машинки, прогнать её насосом без нагревания в течение 5 минут, после чего слить воду.

В дальнейшем:
- Инициализировать АЦП для корректной работы термодатчика и ТЭНа (какое мытьё посуды без нагрева воды)
- Реализовать функцию паузы / аварийного слива
- Реализовать открытие отсека моющего средства в программе
- Индикация отсутствия соли (вывести с датчика на дисплей)
- Реализовать аквастоп/остановку по замку

Более сложные заморочки, такие как выбор программы под разную посуду, подгонка времени и напора воды под конкретное моющее средство пока реализовывать не планирую, ибо эти фичи, как правило, нужны уже конечному потребителю (да и то не всегда). Для минимальной же работоспособности прибора сойдут и ранее перечисленные функции. Подключение модуля и первые натурные испытания 7-минутной тестовой программы также в следующем посте. Пока что наше изделие ещё не переросло уровень "Ардуина щелкает, светодиодами мигает", но это всё в скором времени поправимо.

А пока всё, с вами был Kekovsky, спасибо всем кто дочитал (если кому-то это интересно). Своё мнение по поводу проекта пишите в комментариях.

Показать полностью 10
113

Ставим Linux на пылесос

Я ставлю Linux на пылесос, мои глаза красны, как никогда

Когда услышали эту цитату, поспорили с приятелем, получится ли поставить Linux на пылесос. Выполняю. Нам понадобятся: сам пылесос

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

Также: микрокомпьютер Orange Pi PC, релейный модуль от ESP8266 (у меня он с доработками, подойдет также любой другой, сам контроллер ESP для упрощения задачи можно снять)

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

Понадобится также несколько DuPont перемычек. Два модуля соединяется весьма нехитрым образом: питание реле от 3 и 5 пинов на 40-pin разъеме Orange PI, сигнальный контакт вешаем на произвольный GPIO (у меня это 13 нога, A0). Сигнал пускаем в обход контроллера STC15F104, сразу на 7 ножку, для увеличения тока резистор заменил с 10кОм на 1кОм.

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

Далее установим Linux-производную ОС в память компьютера. Для этого используется SD-карта с распакованным образом Armbian. В моём случае, это Focal (основанная на Ubuntu дистрибутиве). Для нашей задачи вид дистрибутива роли никакой не играет. Данные записываются на карту стандартным образом при помощи Win32 Disk Imager (да, кто-то ещё пользуется Win7 для подобных задач):

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

После записи образа, нужно установить root-логин и пароль, и мы сразу заходим в систему доступ к пинам GPIO осуществляется в данном случае через sysfs. Под рукой не было HDMI-монитора, был только проектор, так что все манипуляции проводил с его помощью. Для того, чтобы установить состояние пина, мы используем следующие команды из терминала:

1. Объявляем пин 0:

echo 0 > /sys/class/gpio/export

2. Устанавливаем режим работы пина 0 на выход:

echo out > /sys/class/gpio/gpio0/direction

3. Устанавливаем значение 1 для данного пина:

echo 1 > /sys/class/gpio/gpio10/value

Вот, как это выглядит в терминале:

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

После чего у нас установилось значение 1, это можно видеть по индикации модуля:

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

Далее, соберём силовую часть схемы (она весьма несложная). Встроенный выключатель пылесоса SW1 необходимо включить, остальное без изменений.

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

Теперь испытаем устройство:

Ставим Linux на пылесос Электроника, Техника, Linux, Юмор, Микроконтроллеры, Длиннопост

Поздравляю! Имеем пылесос, работающий на ОС Linux. ТЗ выполнено полностью. Аналогичным образом возможна установка Linux на утюг, электрочайник, стиральную машину.

Всем спасибо за внимание, с вами был Kekovsky, хорошего дня :D

Показать полностью 8
991

Запланированное устаревание или как нас обманывает производитель

Обратился ко мне знакомый. Ты ж программист? Посмотри, пожалуйста, почему-то телевизор перестал работать. Вышел положенный год гарантии, официальный сервис уже разводит руками. Телевизор я посмотрел, вследствие чего обнаружил, что он ничего не показывает. Было решено ремонтировать. Разбираю телевизор и вижу плату с таким дефектом:

Запланированное устаревание или как нас обманывает производитель Электроника, Негатив, Обман, Запланированное устаревание, Ремонт техники, Длиннопост

Один из конденсаторов надулся и отгнила ножка. На фото он уже выпаян, приставил к плате для примера (по полярности он не так стоял). Обратил внимание на интересный факт: на плате, в основном, стоят относительно качественные конденсаторы фирмы SAMXON. Они все целые:

Запланированное устаревание или как нас обманывает производитель Электроника, Негатив, Обман, Запланированное устаревание, Ремонт техники, Длиннопост

И только один этот вышедший из строя конденсатор произведён какой-то нонейм-фирмой:

Запланированное устаревание или как нас обманывает производитель Электроника, Негатив, Обман, Запланированное устаревание, Ремонт техники, Длиннопост

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

Показать полностью 3
5244

По последним событиям

По последним событиям Moonduck17, Бан, Справедливость, Сообщества Пикабу, Симпсоны, Мемы
Показать полностью 1
261

Что будет, если подключить к гитаре шнур из "Ну, погоди"?

Многие из тех, кто в детстве смотрел мультфильм "Ну, погоди" прекрасно помнят момент, где Волк собирается подключить электрогитару в розетку с высоким напряжением:

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

В реальности, конечно, этого бы сделать не удалось - ведь шнур для гитары просто физически не войдёт в розетку. Однако, если вспомнить времена, про которые показывается в фильме, можно понять, что многие пионеры советского рока при игре часто использовали самодельную или нестандартную аппаратуру (например, радиолы, магнитофоны). Ввиду того, что зап.части были в дефиците, они вполне могли использовать подключение к самодельному усилителю вместо Jack 6.3 или DIN через обычную розетку, например, от настенного радио. Кто-то даже изготовил модель такого шнура:

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

Теперь давайте предположим, что вы оказались в такой ситуации, как Волк, и всё-таки подключили гитару подобным образом в сеть 220 Вольт переменного тока. Что произойдёт в таком случае?
Сразу же появляется две электрических цепи, типично известных любому электрику. Это фаза-земля и фаза-ноль. Рассмотрим первый процесс.
На многих (да практически на всех) электрогитарах имеется "заземление" струн. Вот так оно выглядит на стратокастере:

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

Это заземление делается с целью уменьшения помех и наводок. Во время игры музыкант касается струн руками и, одновременно, устраняет их функцию "антенны". В комбоусилителе это очень заметно по уменьшению уровня шума. Так вот, этот провод подходит напрямую к одному из контактов Джека (в нашем случае - к большому контакту и самому корпусу). Если этот провод попадёт на фазу, то, собственно, и получится картинка, как в мультфильме: струны окажутся под высоким напряжением, а вы являетесь заземлением. Вот и подумайте, что затем произойдёт.

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

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

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

Точку подключения шнура я обозначил зелёным. Дальше всё будет сильно зависеть от того, в каком положении оказалась на момент подключения ручка громкости (потенциометр). Я обозначил его красным. Вот, как он выглядит физически:

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

Потенциометр по своей схематической роли представляет собой как бы два маломощных резистора, отношение сопротивлений которых можно регулировать. Тогда, исходя из закона Киргхофа, происходит "деление" амплитуды выходного звукового сигнала гитары. В нашем случае, потенциалы с обеих концов потенциометра будут стремиться к нулю. А фаза попадёт на среднюю точку. Соответственно, ток пойдёт в оба конца. Для примера возьмём потенциометр в 250 кОм, как на стратокастере. Примем его номинальную мощность рассеивания, как 0,25 Вт.

- Если громкость будет утоплена вниз (составлять 0%), то произойдёт короткое замыкание фазы и ноля. Тогда, либо выбьет автомат (если он есть), либо перегорит один из проводов внутри гитары, либо вывод потенциометра отпадёт.

- Если громкость будет меньше 50%, то одна половинка резистора начнёт выгорать. Чем меньше громкость, тем быстрее это произойдёт. Действует закон Ома. Например, если громкость будет выкручена на 10%, то мощность в цепи составит: P = 220^2/(0,1*250000) = 1,94 Вт. Это превышает номинальную мощность резистора почти в 8 раз. Он начнёт греться и деградировать. Если же громкость будет составлять 5%, то P = 220^2/(0,05*250000) = 3,87 Вт. Резистор задымится и всполыхнёт, как спичка.

- Если громкость будет примерно равна 50%, то мощность в цепи составит P = 220^2/(0,5*250000) = 0,39 Вт. Хоть это и превышает допустимую, но весьма вероятно, что резистор просто будет нагреваться и сможет выдерживать этот режим достаточно длительное время. В таком случае, более ничего опасного не произойдёт.

- Если громкость будет равна 100%, то потенциометр уже особой роли играть не будет - сопротивление в 250 кОм, даже если включить между нолем и фазой, не сгорит и выдержит нагрузку. Но в таком случае, ток потечёт через катушку звукоснимателя (на схеме обозначен синим). А её постоянное сопротивление - от 3 до 10 кОм, что, согласитесь, весьма мало. Постоянный магнит в ней не является сколь-либо значимым для индуктивности сердечником, а потому, вся энергия будет преобразована в тепло на самой катушке. Со звукоснимателем произойдёт примерно то же, что и вот с этим трансформатором:

Что будет, если подключить к гитаре шнур из "Ну, погоди"? Ну погоди!, Электричество, Электрогитара, Техника, Высокое напряжение, Длиннопост

После чего процесс остановится. Собственно говоря, вот и всё.
Можно немного подытожить: если так сделать, то либо вас ударит током, либо сгорит часть гитарной электроники. Только в случае, если громкость была выставлена на 50%, а ноль оказался на корпусе, можно обойтись без потерь.
Всем спасибо за чтение.

Показать полностью 7
266

Как не надо работать или "зашёл в придорожное кафе"

Недавно был проездом в соседнем городке, проголодался, решил поискать какую-нибудь забегаловку. В основном, все были с едой на вынос - донер, самса и т.п., а мне хотелось где-нибудь посидеть погреться - на улице было не очень тепло. Прошёлся по аллейке и нашёл таки одну забегаловку со внутренним помещением. Вижу внутри ещё штук 5 людей, захожу.
Из обслуживающего персонала стоит один узбек, и о чём-то беседует с покупателем. Как выяснилось, небольшая группа туристов также зашла перекусить.
- Нам, пожалуйста, четыре шаурмы и по чашке кофе!, - говорят они узбеку.
А он стоит с таким лицом, знаете, с каким бестолковые ребята приходят на первый рабочий день: лицо спокойное и так едва-едва ехидно ухмыляется. В общем, как Равшан с Джамшутом, когда работу сдают. Проходит несколько минут, он в столе копается. Пытается что-то набрать на терминале для продажи еды, затем говорит (с акцентом):
- Извините, я терминал набирать не умею, давайте я на бумага запишу
Спустя ещё минут 5, он в итоге на своём каком-то языке записал заказ, а затем пошёл к холодильнику с продуктами, говорит (с тем же акцентом и лицом):
- Извините, шаурма нет готовить, нет продукты
Туристы говорят, сделайте хотя бы кофе. Мне уже интересно стало посмотреть, что дальше будет. Он берёт стакан с кофе, подходит к кофейному аппарату.. Что-то долго нажимает, но ничего не получается. Затем достаёт ключ, открывает аппарат, многозначительно смотрит внутрь 2-3 минуты и закрывает. Не меняя выражения лица отвечает:
- Извините, кофе не выйдет готовить, ничем не могу помочь
Разъярённые и голодные люди говорят мол, пошли тогда отсюда, ну его к чёрту..
В помещении остался только я один. Но, т.к. прождал уже минут 15 и стал ещё более голодным, говорю узбеку, хот-дог то хотя бы сделаешь?
- Да, сделать, секунду (и записывает на бумагу)
Думаю, ну вдруг он с компами работать не умеет, но готовит прям отменно. Стало даже интересно, накосячит он где-то, или нет. Он где-то там копался, достал продукты, всё подал. Но пока он возился, мне уже настало время уходить, так что хватаю еду и решаю есть по дороге. Иду, ем. Вроде всё нормально - сосиска, огурцы, на вкус свежие, не залежавшиеся.. Доедаю до середины хот-дога и внезапно чувствую там сахар-песок))
Зараза-узбек перепутал солонку с сахарницей...

Показать полностью
1007

Ответ на пост «Почему умирают светодиодные лампы»

Всем привет, понравился пост автора о светодиодных лампах, но хочу ещё немного дополнить теоретическую часть практической. Вопрос выхода из строя светодиодных ламп актуален не только в случае, собственно, бытовых осветительных ламп и фонариков. Эти же светодиодные лампы устанавливаются в LCD-телевизоры, мониторы, проекторы. И если обычная лампа стоит 50-100 рублей, то через 3 отработанных года мы выбрасываем её без особых сожалений. Но вот в случае с цифровыми приборами суммы убытка становятся уже весьма значительными - по состоянию на 2021 год стоимость нового LCD телевизора начинается от 7 000 рублей и доходит до круглых сумм. Но механизм поломки подсветки в них точно такой же, как и у бытовых лампочек. Давайте разберёмся, что у них общего:

Демонстрацию начнём с бытовой лампы. Я взял дешевую лампу за 50 рублей из эконом-магазина. Итак, осветительная лампа состоит из следующих важных узлов, которые могут сломаться. Многие уже это всё не раз видели:

I. Плата со светодиодами. Непосредственно сам светоизлучатель. В случае бытовой лампы выглядит так:

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

В телевизоре она же выглядит так:

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

Обе этих платы представляют собой полностью одно и то же устройство. Разница лишь в том, что сами светодиоды разнесены на различное расстояние - в телевизоре для этого подложка делается в виде ленты и соединяется проводами. В бытовой лампе - делается на целом алюминиевом диске. Сами светодиоды в обоих случаях выглядят так:

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

И один рассмотрим поближе:

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

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

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

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

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

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

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

Т.е. все светодиоды включаются в последовательную цепь, которая от начала и до конца подключается к драйверу. Цепь может быть любой длины - в некоторых телевизорах на концы платы подаётся напряжение в 270 Вольт. Учитывая, что падение составляет лишь примерно 2.8 В на одном кристалле - посчитайте, сколько их там стоит.
Нетрудно догадаться, что при разрыве этой цепочки, перестанут гореть сразу все светодиоды. Лишь некоторые модели ламп и телевизоров имеют несколько параллельных цепочек - у таких в случае обрыва цепи сильно падает яркость, но они остаются в работоспособном состоянии.

Теперь к вопросу, а почему, собственно, эта цепь может быть разорвана? Каков механизм этого?
Как уже упоминали авторы оригинальных постов, основная причина - температура. Но порча прибора происходит не явно из-за неё, а косвенным образом. При повышении температуры начинаются деградационные физические и химические процессы в светодиодах. Их два:

1. Отрыв или разрыв тонкой перемычки. Я неспроста упомянул её на картинке. Тончайшая золотая нить. К светодиоду, как и к любым другим полупроводниковым кристаллам, нить прикрепляется методом вибрационного воздействия, в следствие чего происходит диффузия золота в приповерхностный слой кристалла, и образуется достаточно прочное соединение. Видео этого процесса можно найти на ютубе. Но золото, как и любой другой металл (как известно из курса физики) имеет свойство расширяться при нагреве и сужаться при охлаждении. Чем сильнее нагрев - тем больше будет Δl. Но, так как светодиод залит прозрачным компаундом, деваться этой длине некуда. Образуются упругие микродеформации в золотой нити. При каждом цикле включения-выключения телевизора эту нить как бы спрессовывает с обеих сторон, а потом растягивает, как гармошку. Вот только металлической нити такие деформации на пользу не идут. Ломали в детстве медную проволоку? Гнёшь её туда-сюда, и через 30-60 изгибов деформации накапливаются, связи между молекулами разрываются. То же самое происходит и здесь. Но ввиду того, что для перемычек используется золото - один из самых пластичных металлов в технике, количество циклов включения-выключения значительно увеличивается.

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

2. Термоэлектрическая деградация кристалла.
Светодиод, как и любой другой полупроводник, работает по принципу электронно-дырочного взаимодействия - при химическом производстве вытравливают две зоны в кристалле, одна из которых содержит свободные электроны, другая - дырки. Проводить светодиод начинает при повышении потенциала выше определённого уровня, когда электроны начинают объединяться (рекомбинироваться) с дырками. Длительная эксплуатация кристалла в повышенном температурном режиме и на высоких токах приводит к тому, что начинают образовываться постоянные связи между двумя слоями - и электроны устремляются по ним, превращая носимую ими энергию в тепло (вместо светового излучения) и ускоряя деградацию. Химический состав превращается в обыкновенный проводник. От превышения тока (так как его внутреннее сопротивление начинает стремиться к нулю) перегорает тоненькая перемычка, и светодиод чернеет внутри. Цепь разрывается, работать она больше не будет.
В целом, деградация светодиода происходит по экспоненциальной кривой - постепенно в процессе работы количество "спаек" и утечек растёт. После чего, когда оно превышает определённый предел, начинается внезапный скачкообразный рост тока. Именно в этот момент лампа и сгорает - делает "Пых" и свет погас.

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

Т.е. наглядно это можно представить таким образом (числа на осях не соответствуют действительным, но сам процесс выглядит так) - до момента достижения красной черты по вертикали прибор работает исправно (1-3 года) - утечка небольшая. После чего начинается внезапный рост тока. Лампа начинает тускнеть и однажды ток вырастает настолько, что перемычка или драйвер перестаёт его выдерживать. Это происходит достаточно быстро - за 1-2 месяца.

Как исправляется эта проблема?
Единственный способ отремонтировать такой светильник - замена абсолютно ВСЕХ светодиодов на новые. Почему - должно быть понятно. Нам кажется, что светодиоды находятся в разных корпусах, и если мы заменим или закоротим тот, который непосредственно сгорел (участок, где цепь разорвалась), то цепь восстановится, и всё продолжит работать. Вот только нужно учитывать износ элемента. Посмотрите на схему, которую я приводил. Все светодиоды в ней РАВНОЦЕННЫ. И работают одновременно - как бы представляют собой один большой светодиод. Ведь, как мы уже знаем, светодиодов в одном корпусе может быть несколько. В сущности, не важно, как они размещены. Они являются частью одного целого. Если на ноутбуке вышел из строя чип (например, перегрузили USB-порт), то выходит из строя ВЕСЬ кристалл процессора/хаба - и ядра, и остальные модули. Частично отремонтировать его нельзя - разобрать кристалл и заменить пробитую область невозможно. Так же и здесь - есть лишь иллюзия того, что заменив часть светильника, мы отремонтируем его. Буквально через несколько десятков рабочих циклов цепь снова разорвётся - либо порвётся такая же усталая перемычка на другом светодиоде, либо он от увеличившегося тока также внезапно деградирует.

II. Драйвер светодиодов
С драйвером, в принципе, дела обстоят проще. Он представляет собой обычный импульсный (ШИМ) блок питания. Задача его - сделать из того, что имеется то напряжение, которое подходит для питания светодиодов. Как правило, форма нас не особо интересует - корпус светодиодов дополнительно покрывается люминофором для увеличения инертности. В случае бытовых ламп, драйвер делает из выпрямленного напряжения сети (310 Вольт) напряжение в 70-90 Вольт, достаточное для питания всей ленты.
Интересует нас общая мощность - все современные драйверы работают в цифровом режиме. Поэтому амплитуда и длительность ШИМ-сигнала выставляется таким образом, чтобы передавать её в светодиоды. Хотя, такой режим модуляции также губителен и сокращает срок службы светодиодов - они без конца как бы быстро зажигаются и гаснут, тем самым ещё больше раздраконивая проволоку и кристалл, ускоряя их деградацию.

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

Т.е. на светодиоды подаётся ток такого вида. Вот так выглядит драйвер с ШИМ модуляцией у лампы:

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

И у телевизора (сходство явно есть):

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

В случае с телевизором, в напряжение в 70-90 В преобразуется напряжение питания шины в 12-24В. Т.е. у лампы преобразователь понижающий, у телевизора - повышающий (хотя, зависит от схемы - иногда всё может быть по-другому).

Говоря про драйверы, хочется упомянуть ещё вот такую светодиодную лампу, которая была куплена в незапамятные времена, уже прослужила у меня около 10 лет и до сих пор работает. В чём её секрет?

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

Секрет в том, что вместо ШИМ-драйвера там применяется бестрансформаторный блок питания. Т.е. вместо платы с драйвером, там можно увидеть вот это:

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

К этому конденсатору добавлено несколько резисторов, и таким образом он обеспечивает постоянный ток на плату со светодиодами. При правильном расчете на заводе, мощность небольшая, но плавный пуск и отсутствие ШИМ'а на входе делают своё дело - количество часов работы этой лампы исчисляется десятками тысяч (моя точно отработала более 50 000 часов). В ней просто напросто нечему ломаться. Что до импульсных драйверов, ломаются они, как и любые импульсные блоки питания:

1. Превышение тока - неправильный заводской расчет или деградация светодиодов. Короткое замыкание по выходу.
2. Превышение входного тока - сбой электросети, повышение напряжения выше 280 Вольт (взрывается конденсатор)
3. Деградация конденсатора и разрушение микросхемы возникшими импульсами по входу.
4. Температурная деградация компонентов (то же самое, что и сплавление светодиода, только происходит с выходным транзистором преобразователя)
5. Пробой сетевого напряжения на выход - сплавился кристалл микросхемы и диодный мост, переменка попадает на светодиоды и выводит их из строя.

Решается ремонт драйвера заменой на аналогичный, т.к., как правило, отыскать его составляющие части (например, ШИМ микросхему) нереально или нецелесообразно - 50 рублей не стоят и часа возни по поиску детали. В случае с телевизором тоже иногда бывает проще заменить на аналогичную плату с разбитого ТВ, с целым драйвером.

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

Ответ на пост «Почему умирают светодиодные лампы» Светодиоды, Модификации, Долговечность, Ответ на пост, Длиннопост

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

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

Показать полностью 14
Отличная работа, все прочитано!