Здравствуйте! Имеется датчик температуры 3,3 в, микроконтроллер 5 в и вот такой преобразователь, который, как я понимаю, работает по вот такой схеме.
Имеется вопрос. Что по подтягивающим резисторам? Нужны ли они вообще? Предполагается, что со стороны датчика уже стоят резисторы по 4,7К и убрать их оттуда не представляется возможным. Так как в преобразователе уже стоит резистор на 10К, то он наложится на резистор в датчике и будет уже порядком меньше, чем 4,7К в итоге. Не помешает ли это все? Стоит ли ставить Допольнительные резисторы со стороны МК? Например еще на 10К и в итоге получится 5К, что очень близко к стандартному 4,7К.
В общем, главный вопрос в том, как это все подружить так, чтобы работало надежно. Заранее огромное спасибо всем людям, которые помогут.
_________________ The only one thing necessary for the triumph of evil ...is for good people to do nothing.
Вот SD карту приделали, почти всё на резисторах и один транзистор, но есть недостаток, очень капризна к питанию, должно быть ровно 5в и не меньше, больше 6в тоже пипец. Ваши модульки врятли лучше.
Есть специальные контролеры, если уж покупать, то их.
Видел чтото вроде 74LV244, она проглатывает 5в сигнал, и выдаёт 3в от которых питается, но статью сложно найти.
У датчика может быть двусторонний интерфейс, таких преобразователей нет вообще. Надо делать отдельную схему переключения направлений. Но вроде есть супер вафля от ti, но даже кластер не понял как она должна работать и она не работает.
М-да. Действительно я не указал, что датчик пирометрический и работает по интерфейсу i2c. Как-то, для меня очевидная вещь, оказалась упущенной из виду для других. Это не UART, где и простой резистивный делитель прокатит. Вот и вопрос о подтягивающих резисторах. Хотя, я думаю, оно и без них должно работать (в конверторе они уже запаяны). Дедлайн близок. На покупку чего-то другого тупо нет времени. Есть в наличии вот такой вот переходник и всё. Но он же должен работать и для i2c.
_________________ The only one thing necessary for the triumph of evil ...is for good people to do nothing.
Дедлайн близок, говорите? Дед приближается? Переходник на I2C нужен только специальный, двунаправленный - по крайней мере для линии SDA. Можно попробовать подключить 5-вольтовый слэйв прямо к 3.3-вольтовому МК, выбрав у МК интерфейс с 5В-толерантными лапами и подключив подтяжку на 5 В.
_________________ ВНИМАНИЕ! Я часто редактирую свои сообщения, поэтому перед ответом мне советую обновить страницу. За перенос модераторами в МЯВУ тем с моими сообщениями я ответственности не несу.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Переходник на I2C нужен только специальный, двунаправленный
Этот преобразователь на мелких мосфетах двунаправленный, это классика вообще то. В древних теликах конца 90х он уже вовсю применялся с I2C для согласования 3,3В контроллеров с 5В тюнерами, памятью, видеопроцами и тд.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
_________________ ВНИМАНИЕ! Я часто редактирую свои сообщения, поэтому перед ответом мне советую обновить страницу. За перенос модераторами в МЯВУ тем с моими сообщениями я ответственности не несу.
Ничего простого в i2c нет, он двунаправленый, и кроме uart не с чем просто не получится. Может есть какито костыли, я искал разные развязки, перебирал разные интерфейсы у ардуины, в итоге ничего кроме спец микросхем не попалось. Я бы представил чтото вроде резистора и стабилитрона. Техники из 90 видел не много, документацию от неё найти сложно, и то чаще всего всё было на 5в. В моём понимании проще заказать чем искать даже полевики, нужной мелочи чаще всего нет.
Прицепите схемку если чтото попадётся рабочее. Помню много разное видел, а как начал искать, ну прям как со схемами из 90, ничерта нет в поисковиках
Однако же в своё время, лет десять с чем-то назад, я делал гальваноразвязку для I2C. Так что особо сложного там тоже нет.
_________________ ВНИМАНИЕ! Я часто редактирую свои сообщения, поэтому перед ответом мне советую обновить страницу. За перенос модераторами в МЯВУ тем с моими сообщениями я ответственности не несу.
Стоит ли ставить Допольнительные резисторы со стороны МК? Например еще на 10К и в итоге получится 5К, что очень близко к стандартному 4,7К.
Если устройство на линии LV1 выдаст ноль, то оно будет нагружено обоими резисторами в параллель. Т.е. 5кОм. Тоже самое со стороны HV1. Поэтому, никаких доп. резисторов не нужно. А если окажется, что на линии LV1 уже есть резистор, то R3 следует убрать.
Жестоко, однако! В то время, как микроконтроллеры уже чуть ли не к 1.8В питания начинают приближаться, человек нашел МК с пятивольтным питанием! Или долго в криокамере пролежал?
P.S. Теоретически, можно питание и до 1.5В снизить (чтобы оставалось 0.3В между переходами 0-1). Здорово было бы! Воткнул CR2032, да работай себе…
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Здравствуйте. Не имею систематических знаний по И2С, но хочу разобраться с подключением датчика GXHT30. В таблице 9 его дейташита показан блок "SCL free", что это значит- на шину не давать синхроимпульсы и отпустить ее? И еще один блок "SCL pulled low"- как микроконтроллер после него узнает когда начинать прием?
"SCL free", что это значит- на шину не давать синхроимпульсы и отпустить ее?
Да, именно так. Здесь имеется в виду, что во время измерения сенсор не влияет на SCL и I2C шину можно использовать для связи с другими устройствами.
sathv писал(а):
"SCL pulled low"- как микроконтроллер после него узнает когда начинать прием?
I2C драйверы многих МК имеют эту опцию (clock stretching) реализованную аппаратно и прозрачно для пользователя. Если такой опции нет, то следует после получения ACK от сенсора проверить состояние линии SCL программно и ждать пока она не поднимется в лог. 1 прежде чем продолжать. А можно просто после запроса на новое измерение подождать достаточно долгое время (большее чем время измерения параметров ~15мс) прежде чам читать данные из сенсора.
GXHT30. В таблице 9 его дейташита показан блок "SCL free", что это значит- на шину не давать синхроимпульсы и отпустить ее? И еще один блок "SCL pulled low"- как микроконтроллер после него узнает когда начинать прием?
Тут вот про что речь. Преобразование аналог -> цифра занимает время. Может оказаться, что когда вы хотите получить данные, они ещё не готовы. И вам на выбор предлагают два варианта, что делать в этом случае. 1) Датчик будет отвечать NAK, и вы программно должны повторять попытки чтения в этом случае. 2) Аппаратная пауза. Датчик ставит шину на паузу (SCL pulled low), как только данные готовы, передача продолжится.
Зачем этот выбор, последний вариант вроде бы удобнее? Не все Master устройства его поддерживают.
Спасибо за пояснение. Получается, если я командой выбрал режим clock stretching enabled, то датчик пошлет ACK и опустит шину на время измерений- SCL pulled down. В дейташите не объясняется зачем команда Fetch Data. Может мне и надо очистить датчик? У меня индицируются и температура и влажность по 65536 (это без пересчета по формуле), т.е. принимаю все единицы.
Добавлено after 5 minutes 35 seconds: Не 65536, а 65535. Данные, ведь, 16 бит.
В дейташите не объясняется зачем команда Fetch Data.
Эта команда нужна для чтения данных при периодических измерениях. При этом для производства таких измерений нужно послать 1 раз команду из Таблицы 10, задающей период измерений. Далее можно лишь читать данные без подачи нового запроса на измерение. Разница с командой единичного измерения из Таблицы 9 в том, что для производства каждого нового единичного измерения нужно подавать команду запроса измерения, а при периодических измерениях сенсор будет производить их без специального запроса в соответствии с выбранным периодом.
sathv писал(а):
Может мне и надо очистить датчик? У меня индицируются и температура и влажность по 65536
Имеете в виду ресет? Это не нужно. Проще после заливки в МК нового кода отключить на время питание. Если у Вас имеется логический анализатор, приведите осциллограммы сессии с сенсором. Проверьте превильность конфигурации I2C интерфейса. Может на все Ваши запросы датчик отвечает NACK(?)
Спасибо за помощь. Будьте добры, подскажите еще. Я написал программу на ассемблере и там получается, что такты SCL, они не периодические, а имеют длину от 10 до 100 мкс, примерно. Датчик это допускает? (Сам-то МК работает, там задействован АЦП, выводится что надо на ЖКИ, а вот с GXHT30 связи нет) Прошу извинить, если уже достал неразумными вопросами.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения