В ассортименте китайских интернет-магазинов, среди прочих товаров, нередко можно встретить и разнообразные электронные модули, предназначенные для взаимодействия со стандартным USB-flash накопителем (в обиходе более известным как «флешка»). Обычно такие модули представляют собой функционально законченные устройства, выполненные на отдельной печатной плате (часто, кстати, весьма неплохого качества), из которых, как из «кирпичиков», можно относительно легко создавать более сложные системы. В основном такие модули — это различные вариации MP3-плееров: от простейших, управляемых всего несколькими кнопками, до весьма совершенных образцов с ЖК-дисплеями и возможностью организовать обмен данными с микроконтроллером. Эксплуатация таких модулей показала их вполне надежными и неприхотливыми изделиями; интерес к которым подогревает также и их достаточно развитая функциональность по привлекательной цене.
Но, иногда при разработке тех или иных устройств, в состав которых планируется включить подобные модули, может возникнуть необходимость определить момент, когда пользователь вставил «флешку» в соответствующее гнездо. К примеру, если речь идет об использовании модульного MP3-плеера в качестве источника сигнала для какого-либо мощного УНЧ, то неплохо было бы организовать автоматическое отключение питания этого самого УНЧ (или перевод его оконечных каскадов в «спящий режим») всякий раз, когда «флешка» вынута из гнезда плеера — чтобы избежать, пусть и тихого, но все ж таки неприятного гула в колонках. Или, к примеру, если оконечный УНЧ питается от списанного компьютерного блока питания ATX (по сложившейся в последнее время радиолюбительской традиции), то было бы разумным запитать платку плеера от «дежурной» линии +5VSB, а силовую часть БП, работающую на усилитель, запускать лишь при подключенной «флешке». Тогда, при изъятии «флешки» из ее гнезда, БП автоматически перейдет в режим «stand-by»; благодаря чему, в отсутствие музыки, пользователя не будет беспокоить фон в колонках и шум от «кулера» БП.
К сожалению, далеко не все такие модули имеют возможность оперативно отслеживать момент подключения «флешки» — большинство из них не располагает какими-либо информационными выводами, по состоянию которых можно было бы определить факт наличия накопителя в его гнезде. Но, немного поэкспериментировав с подключением «флешек» к подобным модулям, я нашел весьма простой способ решения данной проблемы: для того, чтобы узнать о присоединении накопителя, достаточно включить в цепь питания «флешки» обычный диод типа 1N400x — падение напряжения на этом диоде будет присутствовать лишь в том случае, если «флешка» вставлена в разъем модуля. Схема получившегося датчика приведена на рисунке:
Работает устройство следующим образом. Диод VD1 включен в разрыв отрицательного провода питания USB-накопителя: анодом — к минусовому контакту «флешки», а катодом — к общему проводу схемы (с этим же проводом соединяется и отрицательный провод питания модуля, к которому будет подключаться «флешка»). Напряжение с анода VD1, через резистор R3, подается на прямой вход компаратора DA1. Пока USB-гнездо модуля остается свободным, ток через VD1 отсутствует — соответственно, падение напряжения на этом диоде также равно нулю. При этом напряжение на инверсивном входе компаратора, созданное резистивным делителем R1-R2, составляет приблизительно 250mV — что приводит к открытию внутреннего транзистора микросхемы (выход у LM393 выполнен с открытым коллектором), который замыкает нижний вывод R5 на общий провод. В итоге, при отсутствующей «флешке», напряжение на выходе схемы отсутствует. Если же теперь к USB-разъему модуля подключить флеш-накопитель, то ток, потребляемый цепью его питания, создаст на VD1 (а значит, и на прямом входе DA1) падение напряжения величиной около 500mV, которое превысит напряжение на инверсивном входе компаратора. В результате, внутренний выходной транзистор DA1 закроется, и выход схемы окажется соединен с источником питания через резистор R5. Таким образом, напряжение +5V появляется на выходе датчика лишь тогда, когда «флешка» находится в своем разъеме. А это напряжение, в свою очередь, уже несложно использовать для организации работы того или иного устройства. К примеру, можно опрашивать выход схемы при помощи микроконтроллера, «руководящего» работой системы, в составе которой будет работать китайский модуль; или же подключить к датчику какой-нибудь транзисторный ключ/оптотрон, управляющий, к примеру, «пробуждением» блока питания ATX из дежурного режима.
В качестве DA1 применим практически любой аналоговый компаратор (или даже операционный усилитель), допускающий однополярное питание. В описанном варианте датчика использовалась микросхема LM393, выход которой выполнен с открытым коллектором. Особенностью работы подобных микросхем является отсутствие напряжения на выходе, вне зависимости от состояния компаратора: если такой компаратор находится в «опрокинутом» состоянии (U пр. < U инв.), то его выход, через внутренний транзисторный ключ, просто замыкается на общий провод; в случае же «прямого» состояния компаратора (U пр. > U инв.) внутренний транзистор закрывается, и выход переходит в высокоомное состояние. Исходя из этого, в схему был введен резистор R5 — он «подтягивает» выход DA1 к напряжению питания в тот момент, когда компаратор находится в «прямом» состоянии, и внутренний транзистор на выходе DA1 закрыт. Если же в качестве DA1 будет использоваться компаратор (или ОУ), имеющий выход, выполненный по классической схеме (у таких компараторов при U пр. > U инв. на выходе присутствует напряжение питания), то резистор R5 необходимо исключить. Напряжение питания данной схемы может быть в диапазоне 2-36V (такой диапазон питающих напряжений указан в дата-шите на LM393 в качестве допустимых). А для того, чтобы опорное напряжение на инверсивном входе компаратора всегда имело бы постоянное значение (вне зависимости от изменений питания), в схему был введен стабилитрон VD2, ток которого ограничен резистором R4, благодаря чему напряжение на делителе R1-R2 всегда поддерживается неизменным. Если же планируется питать схему от источника менее 5V, то необходимо произвести перерасчет сопротивлений R1 и R2 делителя таким образом, чтобы напряжение на инверсивном входе компаратора составляло около 250mV.
Кстати, в процессе разработки данной схемы у меня имелись некоторые опасения, связанные с тем, что диод VD1 будет «приворовывать» питание у «флешки» — ведь падающие на нем 500mV, необходимые для срабатывания компаратора, вычтутся из питающего напряжения накопителя, что может привести к сбоям в его работе. Но, в результате испытаний нескольких «флешек» различной емкости (и от различных производителей) был сделан вывод, что незначительное снижение питающего напряжения совершенно никак не сказывается на надежности и безотказности работы накопителей. А изучение имеющихся в интернете схем показало, что «начинка» большинства «флешек» и вовсе питается напряжением 3,3V — для чего в их конструкции присутствует соответствующий интегральный стабилизатор; поэтому, снижение напряжения на USB-разъеме до 4,5V совершенно безопасно для как для самого накопителя, так и для находящихся на нем данных.