В статье расскажу, как подключать сетевые устройства TinyOneWireNet к микроконтроллерам с питанием 3,3 В.
Предыдущая статья Навигация по рубрике Следующая статья
В принципе, обмен по сети, созданной непосредственно на выводе микроконтроллера с питанием 3,3 В работает. Но, снижается помехоустойчивость, допустимое количество устройств, а главное – в устройствах с 3-вольтовыми сенсорами для них не хватает напряжения питания.
Проблему приходится решать за счет дополнительных компонентов.
Принципиальная схема и принцип действия формирователя шины TinyOneWireNet.
Это устройство, формирующее 2 независимые линии TinyOneWireNet с управлением от микроконтроллеров с питанием 3,3 В.
Микросхема 74HC125 – это шинный формирователь с повышенной нагрузочной способностью. Состоит из 4х однотипных независимых буферных элементов с тремя состояниями. У каждого элемента есть:
- вход (A);
- выход (Y);
- разрешение выхода (OE).
Для каждого канала используются по 2 элемента.
К микроконтроллеру каждый канал подключается через 3 вывода:
- вход данных (Di);
- выход данных (Do);
- разрешение выхода (OE).
Резисторный делитель R2, R3 снижает напряжение выходного сигнала до 3,3 В. В любом режиме напряжение 5 В на микроконтроллер не попадет.
Нагрузочная способность буферных элементов 74HC125 до 35 мА, т.е. выше, чем у выводов ATmega328. Это позволяет использовать в сети больше устройств или применять устройства с большим потребляемым током.
При переводе шины в отключенное состояние (функция shortLine()) схема потребляет ток не более 4 мкА. Это важно при использовании устройства в режим сна.
Я применил эту схему в конвертере WiFi TinyOneWireNet, где используется модуль ESP32. На ней подписаны выводы микроконтроллера, к которым я подключил формирователь.
Планируется производить формирователь шины на 74HC125 в виде отдельной печатной платы. Тем более что его можно использовать и с 5-вольтовыми микроконтроллерами.
Программное управление формирователем шин TinyOneWireNet на базе 74HC125.
Для этого существует Ардуино-библиотека TinyOneWireNet_Buf125.h.
В ней создается такой же объект типа TinyOneWireNet, как и в библиотеке TinyOneWireNet.h.
Отличие только в конструкторе.
TinyOneWireNet(uint8_t doPin, uint8_t diPin, uint8_t oePin); // конструктор
- doPin – номер вывода выхода данных;
- diPin – номер вывода входа данных;
- oePin – номер вывода разрешения.
В нем задаются 3 вывода.
Для работы с двумя линиями необходимо создать 2 объекта. Например:
// выводы
#define DI_1_PIN 14 // вход канала 1
#define DO_1_PIN 26 // выход канала 1
#define OE_1_PIN 27 // разрешение канала 1
#define DI_2_PIN 32 // вход канала 2
#define DO_2_PIN 25 // выход канала 2
#define OE_2_PIN 33 // разрешение канала 2
TinyOneWireNet channel1(DO_1_PIN, DI_1_PIN, OE_1_PIN);
TinyOneWireNet channel2(DO_2_PIN, DI_2_PIN, OE_2_PIN);
Т.е. программы с использованием формирователя шин на базе 74HC125 отличаются от систем с формированием шин непосредственно на выводе микроконтроллера только конструкторами.
Добавлю, что функция shortLine() используется, чтобы отключить шину и перевести ее в режим микро потребления тока. Потребляемый ток не более 4 мкА.
В следующей статье расскажу о конвертере WiFi TinyOneWireNet. Он позволяет управлять сетью TinyOneWireNet через Wifi.
Предыдущая статья Навигация по рубрике Следующая статья