Comments 38
Конденсатор параллельно обмотке реле зачем? 8)
Там еще R5 мелковат, как будто КТ819 — полевик, а не биполярник, а на место конденсатора C2 просится диод в обратном включении, чтобы КТ819 раньше времени не упокоился.
Также не ясно, почему использована LM317 вместо 7805.
Также не ясно, почему использована LM317 вместо 7805.
LM317 был под рукой на момент идеи.
Я подумал о диоде уже позже. Еще всё можно исправить.
По поводу R5 можно подробнее? Я пока что учусь всему этому.
mlu, кондер поставил что бы не так громко щелкало (мне показалось что помогло).
Я подумал о диоде уже позже. Еще всё можно исправить.
По поводу R5 можно подробнее? Я пока что учусь всему этому.
mlu, кондер поставил что бы не так громко щелкало (мне показалось что помогло).
Кстати, судя по всему, конденсатор — электролит, да еще его при каждом выключении реле по нему обратной полярностью шарашит… Нехорошо это. Маловероятно, что несчастный рванет, но может и потечь когда-нибудь.
Да, это проблема. Пока как фикс можно конденсатор заменить диодом. Аппарат редко выключается по реле и думаю что ничего не случится, но для часто используемых вариантов надо будет пофиксить.
Обратным током, но не полярностью! Импульса обратного выброса не хватит чтобы переполюсовать конденсатор. А вот при открытии реле транзистор будет работать чисто на ESR конденсатора, и если поставить отличный электролит… то транзистор может вышибить. Но это не случится — источник питания слишком слаб чтобы обеспечить ток для пробоя динозавра КТ819, этому еще будет способствовать ограниченный ток базы…
И кстати, КТ819 пишется без черточки.
И кстати, КТ819 пишется без черточки.
Тогда и LM317 без неё. Спасибо.
Скажем так, спорить о том, кто в переходном процессе главнее (напряжение или ток), это все равно что спорить о первичности курицы или яйца (эти величины взаимосвязаны и рассматривать их нужно совместно, не зря же придумали использовать комплексные числа для этой цели). Из той же серии вопрос о том, что поражает человека — ток или напряжение.
Неприятность в том и состоит, что по конденсатору шарахают при каждом переключении реле. В сочетании с маленьким сопротивлением R5, мы имеем недостаточно открытый транзистор. Недооткрытый транзистор и конденсатор создают RC-цепь, которая растягивает включение реле, что автор и заметил как менее интенсивное щелканье при срабатывании.
При отключении тот же страдалец C2 не дает току через обмотку быстро прекратиться, придерживая якорь и подтормаживая его, что также выражается в менее интенсивном срабатывании.
Неприятность в том и состоит, что по конденсатору шарахают при каждом переключении реле. В сочетании с маленьким сопротивлением R5, мы имеем недостаточно открытый транзистор. Недооткрытый транзистор и конденсатор создают RC-цепь, которая растягивает включение реле, что автор и заметил как менее интенсивное щелканье при срабатывании.
При отключении тот же страдалец C2 не дает току через обмотку быстро прекратиться, придерживая якорь и подтормаживая его, что также выражается в менее интенсивном срабатывании.
Фактически С2 с катушкой реле представляют собой контур, но добротность у него низкая — звенеть будет, но не так хорошо как голое реле.
Плавное включение и отключение реле кстати чревато быстрым износом контактов под действием тока — искрить будет дольше и контакты быстрее подгорят. На высоковольтных выключателях так там вообще стараются размыкать его на сверхзвуковых скоростях, из-за чего звук размыкания линейного выключателя 330КВ линии подобен пушечному выстрелу и слышен за пару километров.
Плавное включение и отключение реле кстати чревато быстрым износом контактов под действием тока — искрить будет дольше и контакты быстрее подгорят. На высоковольтных выключателях так там вообще стараются размыкать его на сверхзвуковых скоростях, из-за чего звук размыкания линейного выключателя 330КВ линии подобен пушечному выстрелу и слышен за пару километров.
Тоже писал свой велосипед с декодированием команд пульта. Правда на ассемблере, код выполнялся в прерывании от TSOPа, ел пару байт ОЗУ, и никак не мешал контроллеру выполнять другие функции. Правда код «не по феншую», т.е. не по стандарту, просто снимал битовый слепок команды, а дальше он неспешно сравнивался с такими же слепками, снятыми в режиме обучения.
Со всеми пультами, что были дома, работало. Точнее и девайс и сейчас работает.
Со всеми пультами, что были дома, работало. Точнее и девайс и сейчас работает.
Можно было не играть в спарту, а взять тини45 или 85. Ну и диодик поставь на реле, а то у тебя контроллер вышибить может.
Это увлекательно и хорошо дисциплинирует. Я получил удовольствие от разработки.
ну все таки сначала транзистор вышибет, а дальше как повезет.
МК оказался довольно живучим. Я уже на ту самую ногу управляющую транзистором подавал 12В. ATtiny нагрелась сильно, но ничего не страшного не случилось, хотя я немного испугался.
Очень может быть, что выгорели защитные диоды, оберегающие контроллер от статического электричества (подключены от каждой ноги на плюс и минус питания).
Скорей всего случилось, просто внешне это незаметно. Уже сколько раз с такими микросхемами сталкивался — они работают, но у них наблюдается повышенный ток потребления — видать часть кристалла повреждена и ток просто протекает по неиспользуемым структурам. Когда такой ток будет приличным, со временем может выжечь до чего-то важного и перестанет работать.
С электролитом параллельно реле не вышибет. Мог бы вышибить при включении но слабый источник питания не даст — просто просядет.
Я обычно «прижимаю» Reset к +5В при помощи резистора на 10 кОм чтобы избежать невольных перегрузок микроконтроллера.
А ещё можно подцепить керамику на 0.1 мкФ(100 нФ).

А то микроконтроллер будет чуть что сразу «ловить» ресет, слегка коснулся чем-то порт Reset и перезагрузка МК гарантирована.
А ещё можно подцепить керамику на 0.1 мкФ(100 нФ).

А то микроконтроллер будет чуть что сразу «ловить» ресет, слегка коснулся чем-то порт Reset и перезагрузка МК гарантирована.
Если приёмник на окончательной плате можно развернуть, то минус две перемычки:

Если нельзя — то минус одна.

Если нельзя — то минус одна.
Спасибо. Обновил схемы. Перевернуть скорее всего нельзя т.к. приемник будет смотреть вглубь платы. Конечно можно согнуть ножки и повернуть, но зачем? Единственное что, можно было светодиоды и приёмник попробовать поменять местами.
Просто на видео приёмник смотрит вверх, т.е. ему всё равно, в какую сторону он впаян — поэтому и уточнил «если можно».
Хочу реализовать почти идентичный проект — управление Н-мостом (драйвер двигателя TA7291P) при помощи пульта. При помощи примера IRrecvDemo узнал 16-ричные коды кнопок вверх и вниз: 0x40BFA857 и 0x40BF8877 соответственно. Перевёл в 10-ричную систему, получилось 1086302295 и 1086294135. Изменил соответственно код, 3-я нога приёмника у меня на 3-м пине (PINB4), получилось:
Записал прошивку — ноль реакции. К стати, прошиваю через USBasp программатор скомпилированный Arduino .hex файл. Пробовал устанавливать фьюзы на 9.6МГц:
Подскажите как можно отладить прошивку, хотя бы узнать в какие блоки кода выполняются, а какие нет? Может быть проблема банальная…
#define IRpin 4
Записал прошивку — ноль реакции. К стати, прошиваю через USBasp программатор скомпилированный Arduino .hex файл. Пробовал устанавливать фьюзы на 9.6МГц:
avrdude -c usbasp -p t13 -U lfuse:w:0x7a:m
avrdude -c usbasp -p t13 -U hfuse:w:0xff:m
Подскажите как можно отладить прошивку, хотя бы узнать в какие блоки кода выполняются, а какие нет? Может быть проблема банальная…
Добавил в качестве отладки мигание диодом остатка от деления на 10, в итоге диод начинает мигать как только я нажимаю на клавишу на пульте, но, вот что интересно, намигивает мне значение 2147483648 — т.е. минимальное значение signed long (какую бы кнопку я бы не нажимал), хотя irCode определено как:
Такое впечатление, что irCode где-то переваливает за максимальное значение unsigned long.
unsigned long irCode = 0; // Wait for an IR Code
Такое впечатление, что irCode где-то переваливает за максимальное значение unsigned long.
Долго мучался, но получилось!
Приведу только конечный код функции ожидания сигнала:
Приведу только конечный код функции ожидания сигнала:
Функция listenForIR
unsigned long listenForIR() {
byte currentpulse = 0;
unsigned int pulse; // temporary storage timing
unsigned long irCode = 0;
while (true) {
pulse = 0;
while (IRpin_PIN & _BV(IRpin)) { // got a high pulse
pulse++;
delayMicroseconds(RESOLUTION);
if (((pulse >= MAXPULSE) && (currentpulse >= 0)) || currentpulse == NUMPULSES) {
if (currentpulse > 3) {
if (lastcode != irCode) prevcode = lastcode;
lastcode = irCode;
} else if (currentpulse > 0) irCode = lastcode;
return irCode;
}
}
if (currentpulse > 1) {
irCode = irCode << 1;
if (pulse > 0 && (pulse * RESOLUTION) < 60) {
irCode |= 0;
} else {
irCode |= 1;
}
}
pulse = 0;
while (!(IRpin_PIN & _BV(IRpin))) { // got a low pulse
pulse++;
delayMicroseconds(RESOLUTION);
if (((pulse >= MAXPULSE) && (currentpulse >= 0)) || currentpulse == NUMPULSES) {
if (currentpulse > 3) {
if (lastcode != irCode) prevcode = lastcode;
lastcode = irCode;
} else if (currentpulse > 0) irCode = lastcode;
return irCode;
}
}
currentpulse++;
}
}
Я так понимаю вы изменили resolution? Сейчас не могу сравнить толком с кодом из моего проекта по причине маленького экрана телефона и службы в армии. Возможно мой вариант либо быстрее либо дольше считывает код кнопки. Надо будет поэксперементировать потом, но это уже летом.
Да, методом научного тыка, а вернее методом научного мигания диодом отладочной информации (кол-во тактов между импульсами), было установлено, что значение нужно скорректировать, возможно это из-за того, что мне не удалось прошиться на 9.6МГц (хотя я вроде как попытался установить фьюзы — видимо безрезультатно).
Sign up to leave a comment.
Реле с дистанционным ИК управлением на ATtiny13A