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. Не знаю как это выходит, возможно разброс параметров у отдельных экземпляров позволяет им работать при более низком уровне логической единицы.