ivan dimir, если только в одной точке измерять, то полградуса и BME280 смогет (только его сначала прогнать надо хотя бы по двум-трем точкам - минимальная, средняя и максимальная температуры эксплуатации - с калибровочным). Если много точек, можно проще: терморезистор или термопара + мультиплексоры с миллиомным сопротивлением + трех или четырехпроводная схема + внешний 24-канальный АЦП + измерение на разных токах.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
ivan dimir, а что нужно? Ну напиши нормальное техзадание, что тебе нужно сделать. Тебе народ и посоветует, какие можно использовать датчики! Самый действенный и простой вариант - терморезисторы. Если взять самые дешевые и в схеме делителя прямо к АЦП МК подключить, получишь точность в градус-полтора. Если взять подороже, да и АЦП внешний, да еще и по трех- или четырехпроводной схеме подключить — получишь уже доли градуса (а какие - зависит от бюджета, т.к. для измерения сотых придется очень сильно вложиться; а для точности в полградуса можно обойтись совсем недорогими компонентами).
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
ds18b20 подходит потому как можно и больше расстояние.Моя комната находится на южной стороне а мне нужно замерять температуру воздуха улицы с северной стороны.А также влажность.Примерно около 20 метров.И у меня вопрос.Я подключать на 5 вольт контроллер порта немогу.Даже если я настройку порта на выход open dreain.А потом при отпускании на входе порта 5 вольт оказывается?
ivan dimir, у STM32 куча выходов - 5v tolerant! И если ты используешь UART для этих целей (хотя, на мой взгляд, две ноги МК ради этой фигни - роскошь!), то подавляющее большинство уартовских ног толерантны к 5В. Дальше. Если таки и будешь использовать DS18, то, в принципе, желаемой точности в полградуса, возможно, добьешься (если, конечно, это - честный даллас, а не китайское нечто по баксу за штучку). И там вполне можно длинный провод проложить, и оно будет работать.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
ivan dimir, вам же ранее написали и картинку даже приложили. Изменить режим с выхода на вход и обратно сможете? Как включить выход в Open-drain прочитаете в мануале? Единственная сложность - это очень короткие интервалы от 5 до 60 мкс, и надо осциллографом проверять, что получили действительно то что надо, а не больше из-за выполнения инструкций.
Есть только 2 способа: таймер с DMA, либо UART. Дрыгать ногами вручную - мягко говоря, идиотизм!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Я конечно не спицыолист, но вот друганы из инета говорят, что вроде как видели в мануалах, что типа там от 3 до 5 лет вольт. Ссылку на даташит дать или сами найдете?
Цитата:
таймер с DMA как это?
Да забейте. Сделайте хотябы ногодрыгом, чтобы хоть что-то там закрутилось, а потом уже если хотите будете хучь таймеры, хучь уарты прикручивать. В мануале, если не ошибаюсь, был пример схемы с уартом и объяснение принципа.
Я разделяю ваш сорказм.Но мне простительно я не профи и не русский.Так всё таки с ногодрыгом видел.С УСАРТОМ слышал.А вот пример таймер-DMA на 1-WIRE не видел.Где увидеть и с чем его едят?Значит нет такого.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
У меня вопрос.Как выполнить функцию когда через ноль .Потому как в плюсах показует а в минусах какой то бред.Как это сделать.ds18b20 по порту выполнен.
К сожалению пример на недоступном мне сейчас компе.
Ну а если почитаете у вас два пути Первый: if (tmp < 0) tmp = 0 - tmp; Второй: if (tmp < 0) tmp = ~tmp + 1; Затем как и было, умножаете на 0.0625 или делите на 16.
Последний раз редактировалось korsaj Пн июн 13, 2022 10:04:57, всего редактировалось 4 раз(а).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения