Линейное и эффективное управление током через несколько светодиодов

У меня около 100 инфракрасных светодиодов, к каждому из которых примыкает фототранзистор для обнаружения небольших различий в расстоянии нескольких объектов ( QRE1113 ).

Поскольку материалы объектов различаются, я хочу иметь возможность калибровать интенсивность каждого излучателя отдельно, чтобы компенсировать это. Поскольку выход каждого фототранзистора измеряется с очень высокой частотой дискретизации (~ 50 тыс./с), я не могу использовать ШИМ-контроллер, так как он обычно работает на частоте около 20 кГц и поэтому должен напрямую управлять током, протекающим через каждый ИК-излучатель.

Поскольку я хотел бы выполнить эту фазу калибровки через I2C, моя идея состояла в том, чтобы использовать цифровой потенциометр, такой как MCP4451, в качестве реостата. Он имеет 4 канала, поэтому я решил использовать его в качестве токоограничивающего резистора для 4 светодиодов. Хотя с одной стороны это привлекательно (низкая цена, простота настройки), я вижу две основные проблемы:

  1. Все доступные цифровые потенциометры имеют диапазон не менее 5 кОм. Мне нужен диапазон около 400 Ом. Используя параллельный резистор, я мог бы регулировать диапазон, но результирующий диапазон больше не был бы линейным. Хотя идеальная линейность не требуется, я хочу иметь возможность делать разумные корректировки во всех областях, а не только на низком токе.

  2. Эффективность. Я питаю все это от источника 5 В, и без калибровочного оборудования я смог подключить 3 светодиода последовательно с резистором. Таким образом, средняя потребляемая мощность на один светодиод составила около 30 мВт, что очень хорошо. При таком подходе каждый светодиод будет стоять сам по себе со своим резистором, что приведет к дополнительному выделению 100 мВт тепла для работы светодиода при мощности 30 мВт.

На следующем графике вы можете увидеть результирующую зависимость от настройки ползунка MCP4415 к результирующему общему сопротивлению и прямому току светодиода. Расчеты для использования параллельного резистора 680 Ом и последовательного резистора 68 Ом (для установки максимума):

настройка вайпера на сопротивление и прямой ток

Связанная схема:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Моя главная проблема, безусловно, заключается в нелинейном отношении стеклоочистителя к сопротивлению, а эффективность является лишь второстепенным соображением. Я открыт для любых решений, но я не могу позволить себе отдельный светодиодный контроллер для каждого светодиода, так как мой бюджет ограничен, поэтому MCP4415 показался мне привлекательным решением (~ 25 € для управления всеми светодиодами).

РЕДАКТИРОВАТЬ: я хочу уточнить некоторые аспекты:

  • Хотелось бы иметь возможность управлять током для каждого светодиода отдельно и линейно, от 10мА до 30мА минимум за 64 шага. Мне не нужна абсолютная точность для любого из этих значений, мне нужен лишь приблизительно равномерный способ пошагового перехода через этот диапазон для линейной регулировки яркости светодиода.
  • Эффективность не является моей главной целью. Функциональность и стоимость являются наиболее важными факторами.
  • Я надеялся, что смогу использовать что-то похожее на MCP4415, так как он дешевый и его не нужно постоянно активно взаимодействовать (он сохраняет свою ценность, по крайней мере, до выключения).
  • Моя фаза калибровки происходит один раз при запуске, когда я итеративно аппроксимирую правильный ток, используя обратную связь от фототранзистора.
  • Сеть 5 В в основном будет питать эти светодиоды и несколько логических микросхем. При необходимости могу переключиться на другое напряжение.

РЕДАКТИРОВАТЬ 2: Дополнительные ответы на вопросы из комментариев.

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

Показать приложение. И какое расстояние и диапазон отражения?

Объекты сделаны из дерева, их нельзя красить или модифицировать. Поэтому коэффициент отражения различается для разных объектов (темные пятна и т. д.).

Ближайшее возможное расстояние составляет около 3 мм (+- 1 мм), максимальное расстояние составляет около 13 мм (+-2 мм). Таким образом, расстояние перемещения будет составлять около 9-10 мм для каждого объекта. Все сделано из дерева, поэтому все измерения имеют такие высокие допуски. Плата уже находится в самой дальней точке от объектов. Я, наверное, не могу изменить эти расстояния (может быть - + 1 мм).

У меня есть 12-разрядные АЦП для измерения фототранзисторов, и я просто хочу потерять как можно меньше точности. Поэтому я хочу настроить ИК-светодиод так, чтобы ближняя точка (3 мм) имела примерно одинаковое значение АЦП для всех объектов. Все, что мне нужно, это приблизительное равенство - я просто не хочу, чтобы один АЦП измерял 3000 в ближней точке, а другой - 3500. Дальние точки не важны.

По сути, вы сделали несколько плохих интерпретаций таблицы данных, предположений и, следовательно, неправильного выбора. hFE=CTR (эффективный) = IcON/If варьируется от 0,2% до 0,9% при 10 мА на 1 мм с использованием полированного алюминиевого зеркала. Каковы ваши требования к устойчивости к ошибкам? И какая разница в высоте чипа? 0,1 мм максимум? 0,05 мм?

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

Что касается высоты чипа: мне приходится паять все чипы вручную, так что предположим пессимистичный 1 мм.

Вы говорите 3 ИК последовательно, но тогда 1 R на ИК светодиод??? Не показывать в серии?

Извините, если я был неясен. Я имел в виду один резистор на 3 светодиода последовательно, это текущая конструкция (ниже). Я имел в виду, что я не могу поставить их последовательно, если я хочу управлять ими по отдельности.

Всего у меня 90 датчиков, так что этот шаблон повторяется 30 раз.

Текущий дизайн

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат . Любые сделанные выводы должны быть отредактированы обратно в вопрос и/или любой ответ(-ы).
Если вы используете CMOS для управления светодиодами (высокая или низкая сторона), Req CMOS может варьироваться от 20 до каждых 60 Ом в зависимости от Vdd чипа ARM или Microchip и т. д. (Vol/Iol = Req) @ Vdd зависит от Vdd
Все, что мне нужно, это примерно равно - я просто не хочу, чтобы один АЦП измерял 3000 в ближней точке, а другой - 3500. - Я знаю, что это не то, о чем вы просили, но может быть проще сделать все светодиоды одинаковой яркости из хорошо отрегулированный источник питания, а затем просто откалибруйте показания АЦП при запуске и постобработайте их показания, чтобы компенсировать то, что вы измеряли во время калибровки. Таким образом вы можете немного потерять точность для некоторых объектов, но я сомневаюсь, что это самый большой источник неточности. Сделать этот звонок можете только вы, но стоит подумать :)
@marcelm Ну, я просил любые предложения;) - Так что да, я могу это сделать. Есть только одна проблема, которая будет сохраняться, и это то, что я ничего не могу сделать, если мои значения обрезаются, т.е. моя яркость слишком высока для одного объекта. Но поскольку сейчас нет другого жизнеспособного решения, я думаю, что у меня нет реального выбора, не так ли?

Ответы (1)

Как насчет источника тока OPAMP, питаемого модулированным переменным напряжением от ШИМ?

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Идея состоит в том, чтобы OA1 регулировал ток таким образом, чтобы напряжение на Rsense равнялось Vin, таким образом делая ток через светодиод пропорциональным Vin. OA2 действует как буферный усилитель для того переменного напряжения, которое может быть сгенерировано с помощью ШИМ и отфильтровано до квази-постоянного.

OA2 позволяет модулировать Vin цифровым сигналом Vmod. Модуляция инвертируется: когда Vmod имеет высокое значение, Vin падает до нуля, в то время как Vmod=0 приводит к тому, что Vin устанавливается пропорционально коэффициенту заполнения ШИМ.

Я очень ценю ваш ответ, но мне кажется, что это хорошее решение только для нескольких светодиодов, так как в моем случае мне нужно будет постоянно подавать 100 различных ШИМ-сигналов - по одному на каждую из этих цепей на светодиод. Если я не хочу делать это из микроконтроллера, мне пришлось бы дополнительно приобрести микросхему таймера для каждого из них и использовать упомянутый мною цифровой потенциометр, который сохраняет запрограммированное значение. В целом все это кажется очень сложным и дорогим в таком масштабе. Я надеялся, что смогу сделать это с помощью всего лишь нескольких дополнительных компонентов.
@nyronium, вы все еще можете использовать свои цифровые потенциометры вместо ШИМ и фильтра нижних частот, используя тривиальные делители напряжения. Я не думаю, что вы найдете решение, использующее значительно меньше компонентов, если только не будет конкретной ИС, делающей именно то, что вы хотите. Вам нужна модуляция, которую вы не можете сделать без активного компонента. Вы можете отказаться от OA1 и подключить Q1 напрямую к Vin, позволяя резистору действовать как управляемый напряжением источник тока бедняка, но это почти все упрощения, которые вы можете сделать.
Сначала я думал, что может быть очень простой способ, о котором я не знал. Но это кажется настолько простым, насколько это возможно, и хотя этот дизайн слишком велик для моего варианта использования, я думаю, что он отвечает на вопрос. Спасибо.
@nyronium Обратите внимание, что вам не нужно принимать мой ответ, если он действительно не помогает. Хотя я не знаю лучшего способа сделать это, кто-то другой может. Отсутствие принятого ответа может привлечь дополнительное внимание к вашему вопросу, хотя, по моему опыту, немногие пользователи просматривают список вопросов без принятого ответа, когда ищут новую задачу. К сожалению, большинство людей (включая меня) обычно просматривают список HNQ и получают еще один бесполезный ответ на вопрос, на который уже ответили более 10 раз.
Что ж, я принял ваш ответ, потому что вы ответили на вопрос, который я задал. Я знаю, что это уменьшит вероятность других ответов, но во время обсуждения я заметил, что люди теряются в деталях, которые не имеют значения, потому что я думаю, что предоставил слишком много несвязанной информации. Я думаю, мой вопрос был бы лучше воспринят, если бы я спросил что-то вроде «Простейший источник тока на 10-30 мА, регулируемый потенциометром 5k» . Это уберет все ненужные дополнительные вопросы. Но я думаю, что уже слишком поздно для этого, так как это будет немедленно помечено как дубликат.
@nyronium Вопросы, которые сосредоточены на одном решении и не дают достаточного контекста, также иногда плохо воспринимаются (подумайте, «это домашнее задание?» и «вы женаты на этом горшке?» вроде замечаний). Ну что ж.