Yellow Rabbit

3.3V 5V

Преобразователь логических уровней

Есть такая микросхема Max 7219, которая представляет собой контроллер семисегментных индикаторов. Она не только позволяет управлять восемью такими индикаторами, но и допускает каскадное соединение с такими же контроллерами, что позволяет произвольно увеличивать разрядность.

Микросхема max7219 Эта микросхема казалась подходящим кандидатом для моего проекта ``Горилла’’, но у неё обнаружились некоторые особенности, в частности она имеет напряжение питания 5V и соответственно TTL логические уровни.

Логические уровни TTL

Выходы соединяются с LED и следующей такой же микросхемой, так что они нас не интересуют. Остаются три входа: CLK, LOAD и DIN. Поскольку выходы GPIO Raspberry Pi являются CMOS, то для представления логического нуля используется напряжение , а для представления логической единицы .

Казалось бы всё хорошо и мы попадаем в нужный диапазон TTL логики, однако документация на микросхему указывает, что минимально допустимое напряжение для логической единицы равно 3.5V, что полностью исключает возможность управления от Raspberry Pi1.

Фрагмент документации к 7219

Итак нам нужен преобразователь логических уровней.

MOSFET как преобразователь

Рассмотрим следующую простую схему: Схема простейшего преобразователя уровня

Два pull-up резистора обеспечивают логическую единицу с обеих сторон преобразователя. Так что, если на выходе GPIO установлена логическая единица, то падение напряжения на резисторе , транзистор закрыт и на входе 7219 установлен высокий уровень благодаря pull-up резистору .

Если же на выходе GPIO установлен логический ноль, тона падает 3.3V, транзистор открывается и на входе 7219 получает нулевой потенциал.

Наш преобразователь работает.

Но самое замечательное то, что благодаря встроенному диоду этот преобразователь работает и в обратном направлении! :smile:

С логической единицей всё понятно и неинтересно, посмотрим что будет, если 7219 это выход, на котором установлен логический ноль. Тогда начинает течь ток через встроенный диод, на нём падает что-то около , следовательно на резисторе образуется падение напряжения , транзистор окрывается после чего на падает уже все 3.3V эффективно образуя на входе GPIO логический ноль. :smile:

Реализация

Транзисторы BSN20 оказались очень маленькими: BSN20 в натуральную величину

Попробуем припаять на макетную плату один транзистор: Один транзистор на плате

И ещё два для оставшихся линий: Все три транзистоора на плате

Добавляем резисторы: На плату установлены резисторы

Всё в сборе: Полностью собранный конвертер

Проверяем конвертер

Ну заодно и 7219:)

Конвертер работает просто замечательно, а вот 7219 мертва. :angry:

  1. Следует заметить, что в сети полно описаний успешного подключения этой микросхемы к Raspberry Pi. Не знаю как это выходит, возможно разброс параметров у отдельных экземпляров позволяет им работать при более низком уровне логической единицы.