Страница 1 из 1

Как определить контроллером (типа stm32f4) температуру?

Добавлено: Чт апр 06, 2017 14:18:35
w307892309
Здравствуйте!

Полная задача: определить контроллером (типа stm32f4) температуру, используя аналоговый датчик, который выдает 4-20мА, зависимость силы тока от температуры линейная

Из тех тем, что нарыл по интернету, понял, что от контроллера поможет вход АЦП, который вроде как измеряет напряжение (а сопротивление у меня не постоянное, напрямую поделить не правильно), основные вопросы:
1. как подключить датчик температуры к входу АЦП (и почему)
2. в каких единицах приходит ответ от АПЦ в контроллер (по описанию - 12bit)

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Чт апр 06, 2017 16:16:02
mickbell
Если датчик не имеет своего питания (скорее всего, так и есть), то плюс подключить к источнику питания напряжением, наверно, вольт 12 (зависит от падения на датчике), минус к общему через прецизионный резистор сопротивлением около 60 Ом. Тогда при токе через датчик 20 мА падение на резисторе будет 1.2 В, что хорошо согласуется с напряжением внутреннего опорного источника STM 1.21 В. Неплохо бы выход подавать на вход АЦП через RC-фильтр.
Коды АЦП в этом случае меняются от 812 при токе 4 мА до 4062 при токе 20 мА. Как температура соответствует току, я не знаю, поэтому градусы в коды АЦП не перевожу.

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Пт апр 07, 2017 08:53:52
w307892309
Если я правильно понял, то схема получается такая:
Изображение

тогда по ней - какой надо фильтр (или как его посчитать)?
у меня фильтр нарисован в разрыв между резистором и АЦП - это верно или его надо сюда же параллельно?

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Пт апр 07, 2017 09:34:34
mickbell
Ну это ещё не схема, с ней нельзя работать. Нарисуйте схему. Принципиальную, и желательно, как полагается: питание сверху, общий снизу, источник, датчик, резистор, вход МК. А чего не хватит - я потом расскажу.

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 09:50:56
w307892309
Изменил картинку, надеюсь она больше похожа на схему.
Емкость конденсатора (да и сам конденсатор) поставил почти от фонаря - есть ли где-нибудь небольшое руководство, как правильно считать емкость?
Изображение

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 09:58:47
Z_h_e
Не мешает сделать защиту на случай КЗ в датчике, а то все 24В на МК пойдут.
Емкость не электролит и какие-нибудь нанофарады.

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 10:08:08
w307892309
2 Z_h_e
пока еще не до защиты, пока хотя бы рабочую схему нарисовать (как бы первая схема)
защиту потом

правильно ли я понимаю, что при текущей схеме в идеальных условиях даже конденсатор лишний?
(я его поставил, чтобы исключить большие колебания напряжения при изменении температуры)

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 10:25:01
Z_h_e
Да, так будет работать. У некоторых датчиков выход не 4-20, а 3,5-22мА. 3.5мА или 22мА сделаны для того чтобы верхний уровень понимал, что датчик есть на линии, но например сигнализирует о своей неисправности.

Прецензионное сопротивление необязательно, отклонение он заданного сопротивления можно скомпенсировать в программе. А вот малый температурный коэффициент резистора будет полезен, но это все зависит от необходимой точности измерения.

Добавлено after 11 minutes 12 seconds:
Все-таки защиту следует сделать. Можно очень простую. Установите сопротивление 1200 Ом между МК и R1 последовательно. МК внутри защищен диодами, а сопротивление уменьшит ток до допустимого для порта. Кажется 20мА допустимый ток, по памяти.

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 10:40:57
w307892309
2 Z_h_e
Спасибо!

про нерабочий датчик подзабыл - он выдает либо 2мА (условный разрыв), либо 24мА (видимо кз)

а сопротивление 1200 Ом при 20мА даст падение напряжения в 24в - мне кажется в этом случае до контроллера (АЦП) может ничего и не дойти? (или мне надо вдумчиво читать электричество для школьников???)

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 10:59:11
Z_h_e
Вход АЦП имеет очень большое входное сопротивление, соответственно ток будет минимален, как и падение напряжения. Единственное, АЦП в момент выборки сигнала будет заряжать свой конденсатор. Но он очень маленький. Думаю проблем не должно быть. Про это есть статья демоны АЦП в stm, точно название не помню.

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 15:30:31
roman.com
на вход АЦП рекомендуется ставить RC-фильтр (для устранения помех, наводок, шумов... и т.д.).
резистор и конденсатор RC-фильтр зависит от частоты помех... впринципе не критично.
резистор порядка 10...20 кОм и конденсатор порядка 1...10 мкФ и будет всё нормально))
19i05j7y3g.png
(9.92 КБ) 695 скачиваний
ещё хорошо бы добавить фильтр в программе МК. Тогда вообще будет всё замечательно))

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Ср май 03, 2017 16:49:37
Z_h_e
roman.com писал(а):резистор порядка 10...20 кОм и конденсатор порядка 1...10 мкФ и будет всё нормально))
Данная схема для STM32 - зло. Сопротивление большого номинала и емкость на входе скорее даст дополнительную погрешность. Хотя на микрофорарадных значениях возможно этих проявлений не будет, а датчик температуры наверняка крайне инертен и задержка на внешнем конденсаторе вряд ли будет иметь значение..

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Чт май 04, 2017 09:41:19
w307892309
по инертности датчика температуры - если я правильно понял документацию, в рабочий режим датчик выходит в течение 30 секунд после включения питания, после этого резких перепадов температуры быть просто не может, соответственно перепады напряжения могут быть только при неисправности датчика\схемы или внешнем воздействии.

а есть ли какая-то методичка, из которой можно понять какой сопротивление лучше - 1200 Ом или 10..20 кОм
и как правильно подбирать конденсатор для фильтра? (я насчитал 10мФ, предложение поступило на 1..10мкФ - разница в порядки)

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Чт май 04, 2017 13:52:16
roman.com
w307892309 писал(а):какой сопротивление лучше - 1200 Ом или 10..20 кОм
зависит от выходного сопротивления датчика и входного сопротивления АЦП МК...

Нужны точные расчёты?)) есть куча справочников.. Только для точного расчёта нужно знать кучу данных..)) Вы уверены что вам это надо?))
[uquote="w307892309",url="/forum/viewtopic.php?p=3097153#p3097153"]как правильно подбирать конденсатор для фильтра?[/uquote]
по частоте среза...
http://tel-spb.ru/rc.html
http://rcl-radio.ru/?p=29002
..
и т.д.

Проще подобрать экспериментально)) Прицепили переменник.. покрутили... посмотрели помехи.. подобрали резистор и конденсатор
(от конденсатора зависит задержка).
Делов то 5 минут)) Быстрее чем долгие и нудные расчёты, да ещё с ошибками))

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Чт май 04, 2017 14:13:49
Z_h_e
roman.com писал(а):Проще подобрать экспериментально))
Только что хотел тоже самое написать. :)

Я Вам 1200 указал не как фильтр для помех, а как защиту порта от перенапряжения. Если у Вас есть калибратор тока, то вместо датчика температуры пока используйте его. Вместо калибратора тока, можно взять вольтметр, два магазина сопротивлений и БП. Магазины включаете последовательно, на одном магазине устанавливаете 100 Ом и измеряете падение напряжения на нем (например 2,000В будет соответствовать 20,00мА). Другим магазином устанавливаете нужный ток.
Конденсатор пока не ставте совсем.
Пишите программу, отлаживаете.
Потом берете кабель нужной длины при эксплуатации и имитируете другие условия эксплуатации. Опять калибратором задаете нужные точки температуры (я думаю не менее 5 по диапазону) и смотрите (само-собой калибратор уже находится удаленно). Если характеристика неприемлемо сдвинулась, начинаете бороться с этим аппаратными и программными средствами. Например подбирать конденсатор и усреднять значения.

---
Длинный неудачный кабель, в неудачном месте без защиты от помех, может не только дать дополнительную погрешность, но из-за сильных помех, провоцировать сбои самого МК. Но для начальных экспериментов на столе об этом пока можно не думать.

Re: Как определить контроллером (типа stm32f4) температуру?

Добавлено: Пт май 05, 2017 11:48:45
roman.com
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3097386#p3097386"][quote="roman.com"]Например подбирать конденсатор и усреднять значения.[/uquote]
конденсатор и так усредняет значение..)) Но этоне избавляет от шумов. Поэтому я например использую программный гистерезис. Петля гистерезиса выбирается больше уровня шумов на входе АЦП. На выходе получаем стабильные данные. Правда, с меньшим разрешением, но зато стабильно))