Металлическая банка с тремя ногами за тридцать рублей — самый недооценённый модуль в ящике. Снаружи фотодиод, внутри — целая приёмная станция: полосовой фильтр, настроенный на несущую 38 килогерц, автоматическая регулировка усиления, демодулятор и выходной транзистор, который умеет только прижимать линию к земле. Поэтому модуль нельзя воткнуть как светодиод: по питанию он строг, по выходу требует подтяжку, а по ногам врёт маркировкой. Разберём внутренности — каждая из них чья-то будущая грабля, а общее подключение в общем виде уже показывал урок про VS1838B и пины.
Цифры в маркировке — не украшение, а спецификация: TSOP4838 слушает несущую 38 килогерц, TSOP4840 — сороковую, и пульт с другой несущей модуль слышит через силу или не слышит вовсе. Бытовая техника почти вся сидит на 36 и 38, поэтому универсальный выбор — 38-й. VS1838B из наборов — тот же 38-й класс с чуть другой обвязкой корпуса; для макетки серии взаимозаменяемы, и дальше я говорю TSOP, имея в виду оба.
Ток модуля — доли миллиампера: около 0.4 миллиампера в покое по даташиту Vishay, с коротким всплеском на приёме. Для макетки от USB это ноль, а в батареечных стендах — приятный бонус: тестер модуля от трёх пальчиковых клеток живёт месяцами и не требует выключателя.
Открытый коллектор: почему выход сам никогда не станет единицей
Выходной каскад модуля — транзистор с открытым коллектором. Пока эфир молчит, транзистор закрыт, и нога OUT висит в воздухе: ни нуля, ни единицы, мусор от соседних проводов, сыплющийся в монитор. Единицу на линии держит подтяжка — внутренняя INPUT_PULLUP на пине Arduino или внешний резистор 10 кОм; при приёме кадра транзистор прижимает линию к земле, и подтяжка смиряется. Отсюда правило конфигурации: вход настраивается с подтяжкой, голый INPUT даст плавающую линию и фантомные нули в логах. Наводку этого рода узнают по симптому: при приёме всё чисто, а в паузах сыплются фантомные команды без всякого пульта — линия поймала соседний шум.
Логика инвертирована относительно того, что светит: в покое линия HIGH, во время вспышки несущей — LOW. Для скетчей с IRremote это невидимо — декодер библиотеки ждёт именно низкую активность модуля, потому что она стандартна. Видимой инверсия становится в самодельных читалках сырых интервалов: там фронт и спад придётся трактовать руками, и путаница направления — первая проверка при странном дампе.
С подтяжкой связана и экономика проводов: на линии до 30 сантиметров хватает внутренней — она слабая, но и длина короткая; дальше ставьте внешний 10 кОм, помехи на длинной линии внутреннюю подтяжку продавливают. А свыше полуметра тянуть сам OUT не стоит: лучше протянуть 5 вольт и поставить модуль ближе к плате.
Питание и конденсатор: почему модуль глотает кадры без него
Питание — 2.7–5.5 вольта у VS1838B; TSOP4838 по даташиту Vishay тянет от 2.5 вольта, но практический коридор общий: 3.3 и 5 вольт обе серии держат. Внутри живёт та самая АРУ — автоматическая регулировка усиления, и её слабое место — шина питания: помеха выпрямляется не только фотодиодом, но и землёй, по которой гуляют пульсации. Реле, драйверы и длинные макетные шины дают ровно те искажения, на которые АРУ открывает уши. На батарейках модуль прощает больше: чистая земля без импульсных соседей — половина запаса прочности АРУ.
Даташит Vishay предписывает конденсатор 100 микрофарад электролитом плюс 100 нанофарад керамикой прямо у ног модуля при длинных линиях питания и сильных помехах; на короткой макетной посадке обычно хватает одной керамики на 0.1 микрофарада. Моя практика грубее: если читалка глотает каждый второй кадр, а от зарядки телефона хуже, чем от USB-порта компьютера, — первым делом лепить электролит 47–100 микрофарад у модуля и только потом искать виноватых в коде. Симптом измеряется без осциллографа: счёт кадров с одного и того же пульта с конденсатором и без отличается в разы. Заодно конденсатор лечит и соседей по макетке: реле перестаёт ронять кадры при щелчке — эффект общий для всей шины 5 вольт.
Про помехи оптические — люминесцентные лампы с их мерцанием, прямое солнце, раскалённая спираль обогревателя — в разделе есть отдельный разговор (урок про свет, лампы и солнце); здесь только замечу границу: АРУ справляется с ними ровно до того спектра, где помеха совпадает с несущей, и это уже не лечится никаким конденсатором.
#include <IRremote.hpp> const int IR_PIN = 11; void setup() { Serial.begin(9600); IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK); // пин 13 мигает на каждый кадр Serial.println("TSOP test: zhmi knopki, kazhdyj kadr - stroka");} void loop() { if (IrReceiver.decode()) { Serial.print("protocol "); Serial.print(IrReceiver.decodedIRData.protocol); Serial.print(", komanda 0x"); Serial.println(IrReceiver.decodedIRData.command, HEX); IrReceiver.resume(); }}Стенд собирается за пять минут и остаётся в ящике как тестер: пришёл пакет модулей — прогнали по кадру с пульта, сравнили счёт. Критерии живого модуля: каждая кнопка печатает строку, команды стабильны от нажатия к нажатию, счётчик кадров растёт ровно по числу нажатий. Мёртвый выдаёт себя тремя способами: монитор молчит совсем, сыплет случайные числа без всякого пульта, или ловит только с тридцати сантиметров — последний случай часто лечится конденсатором, а не заменой модуля. Если Serial ещё не заводили, начните с урока про монитор порта, и держите под рукой урок про стенд тестера пультов — он превращает этот скетч в постоянный инструмент.
Ноги смотрите в даташит именно вашей ножки, глядя на линзу: у TSOP4838 слева OUT, в середине GND, справа VCC; у плат-переходников из наборов порядок бывает перемешан, и маркировка на их обратной стороне врёт чаще, чем кажется. Перепутанные VCC и GND модуль прощает один раз: банка греется секунд тридцать и умирает молча, без дыма — у меня в коробке лежит такой памятный трупик. Про углы и отражения, от которых зависит дальность, отдельно рассуждает урок про дальность и геометрию, а для стены из приёмников в линию есть урок про барьер.
Про корпуса. Чёрный фильтр из эпоксидной смолы на банке — не украшение, а фильтр видимого света: голый модуль без него хуже держит солнце и глотает кадры у окна. Платки-переходники из наборов стоят копейки и дают свободную замену, но у них чаще врёт распиновка и нет места под конденсатор; для стенда я беру голый TSOP в гнездо, для постоянных устройств — платку с предустановленной обвязкой.
| Модуль | Питание | Нюанс | Когда брать |
|---|---|---|---|
| TSOP4838 | 2.5–5.5 В по даташиту Vishay | 38 кГц, инверсный выход | стандартный выбор для бытовой техники |
| VS1838B | 2.7–5.5 В | тот же 38 кГц, в наборах дешевле | макетки и эксперименты: взаимозаменяем с TSOP |
| TSOP4836/4840 | как у 4838 | несущая 36/40 кГц | под конкретный пульт, который 38-й не берёт |
| фотодиод без модуля | любое | нет ни фильтра, ни демодулятора | сырые интервалы и barrier-схемы |
Когда конденсатор поставлен, а модуль всё равно слепнет у окна — это уже не питание, а засветка: АРУ открыла уши на солнце и лампы, и несущая пульта тонет в общем шуме. Лечение механическое: тень, диафрагма из чёрного пластика с отверстием, разворот банки от окна. Граница подвижная и зависит от сезона — стенд, безупречный в январе, может захандрить в июне, и это нормальная оптика, а не поломка. Куда копать дальше, показывает урок про фильтр помех по коду: там мусорные кадры отсеиваются проверками длины и повторов ещё до словаря команд.
И экономика места: банка с фильтром крупнее платки, зато оставляет место под конденсатор и даёт стабильную оптику. На постоянных устройствах я сажаю TSOP в гнездо на короткой посадке — модуль переезжает между проектами за минуту, и стенд из этого урока проверяет его на новом месте тем же счётчиком кадров. Платки приклеиваю двусторонним скотчем: перепайка рвёт ноги, а гнездо переносит переезды спокойно.
- 1. Почему выход TSOP4838 надо конфигурировать с подтяжкой?
- 2. Что означает 38 в маркировке TSOP4838?
- 3. Читалка глотает каждый второй кадр, от зарядки телефона хуже, чем от USB. Первое действие?
- 4. Линия OUT при включённом питании и молчащем эфире показывает 0 вольт вместо 5. Где искать причину?
- 5. Перепутали VCC и GND модуля. Что происходит обычно?
- Внутри банки — фильтр 38 кГц, АРУ и демодулятор; цифра в маркировке — несущая в килогерцах
- Выход открытого коллектора: покой — HIGH через подтяжку, вспышка — LOW; без подтяжки вход ловит мусор
- Питание 2.7–5.5 В у VS1838B; керамика 0.1 мкФ у ног обязательна, при просадках добавляют 47–100 мкФ
- Глотание каждого второго кадра при подключённой зарядке — диагноз питания, а не кода
- Ноги сверяют с даташитом до подачи питания: переполюсовка убирает модуль молча, за полминуты
Частые вопросы по теме урока
- Почему выход TSOP4838 надо конфигурировать с подтяжкой?
- В покое транзистор закрыт, и нога висит в воздухе. Единицу даёт подтяжка — INPUT_PULLUP или внешний 10 кОм; ноль прижимает сам модуль в момент приёма. у него выход открытого коллектора: транзистор только прижимает линию к земле
- Что означает 38 в маркировке TSOP4838?
- Последняя цифра — несущая: 4838 слушает 38 кГц, 4840 — сороковую. Пульт с другой несущей модуль слышит плохо или не слышит вовсе. частоту несущей в килогерцах
- Читалка глотает каждый второй кадр, от зарядки телефона хуже, чем от USB. Первое действие?
- Пульсации шины сбивают АРУ модуля: конденсатор у ног — первое лечение. Переустановка библиотеки и delay тут ни при чём, диагноз ставится сравнением счёта кадров от разных источников питания. электролит 47–100 мкФ у ног модуля
- Линия OUT при включённом питании и молчащем эфире показывает 0 вольт вместо 5. Где искать причину?
- В покое линия обязана стоять HIGH силой подтяжки. Ноль при молчащем эфире — плавающий вход или прижатая линия: проверьте INPUT_PULLUP, потом соседей по макетке, и только потом модуль. нет подтяжки на входе, или линию прижал сосед по макетке
- Перепутали VCC и GND модуля. Что происходит обычно?
- Переполюсовка у этих серий не прощается: модуль прогревается полминуты и дохнет без дыма. Ноги сверяют с даташитом до подачи питания, глядя на линзу. банка греется и молча умирает