Как преобразовать инвертированный последовательный порт 0-5 В в неинвертированный последовательный порт 0-3,3 В
Эта метеостанция имеет последовательный выход 0-5В. Я пытаюсь прочитать последовательный вывод с помощью платы Adafruit 32u4, и я получаю от нее бессмысленные данные. Когда я подключаю Ultimeter к моему последовательному кабелю > USB, я получаю нормальный вывод данных. Когда я подключаю Ultimeter к 5v arduino через SoftwareSerial в инвертированном режиме, я получаю правильные данные. Но мне нужно подключить эту метеостанцию к аппаратному UART платы Feather 3,3 В, который, похоже, не может работать в инвертированном режиме. Есть ли преобразователь уровня 5v -> 3.3, который также инвертирует последовательный сигнал?
@tavis, 👍1
Обсуждение3 ответа
Лучший ответ:
Я думаю, вы ищете инвертирующий усилитель. Это можно сделать с помощью BJT или MOSFET (при условии, что вашего входа достаточно, чтобы включить MOSFET). Вот пример с BJT:
Диапазон выхода не зависит от входа и определяется напряжением питания.
База > Коллектор не годится для транзистора NPN.
Потому что "база -> сборщик" — это PN.
Так что используйте LM393 для преобразования уровней.
LM393 является открытым коллектором.
В итоге я использовал простой делитель напряжения, чтобы уменьшить 5 В до 3 В, и использовал SoftwareSerial для чтения инвертированного серийного номера. Спасибо всем.
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
Пожалуйста, добавьте дополнительную информацию к вашему вопросу о бывшей в употреблении метеостанции и перьевой доске. Характеристики, марка, тип, ссылки. У этой погоды есть выход RS232? а ардуино — это atmega32u4 с напряжением 3,3 В, работающий на частоте 8 МГц и стоящий 45 долларов? Вам необходимо преобразовать rs232 в уровень ttl. Перьевая доска может быть повреждена RS232., @Jot
Я определил, что последовательный выход метеостанции имеет инвертированное напряжение 5 В ТТЛ. Я могу получить правильные данные, используя программную последовательную инверсию. Выходное напряжение 5 В может быть слишком большим для TTL 3,3 В, но аппаратный UART, похоже, на данный момент не поврежден, хотя я не могу заставить последовательный порт программного обеспечения работать на плате Feather., @tavis
RS232 может передавать сигнал от -12 В до +12 В, но некоторые устройства используют сигнал от -5 В до +5 В, а также есть некоторые не очень совместимые устройства, которые используют диапазон от 0 В до +5 В. Вам следует использовать преобразователь уровня RS232 в TTL. Для проверки используйте хотя бы защитный резистор для Arduino. Например 4к7 или 10к. Серийный порт Arduino находится в режиме ожидания, а RS232 находится в режиме ожидания -12 В. Как вы уже заметили, оно действительно перевернуто. Вы можете попробовать транзистор инвертировать сигнал. Нет необходимости использовать SoftwareSerial. SoftwareSerial имеет ограничения для atmega32u4/Leonardo https://www.arduino.cc/en/Reference/SoftwareSerial., @Jot