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

Прикручиваю датчики к контроллёру

Добавлено: Вс фев 13, 2011 20:38:57
thunder87l
Надо на мк повесить датчики давления, температуры и влажности воздуха.

Купил себе вот эти радости:
давление: http://lv.farnell.com/freescale-semicon ... dp/1555603
температура: http://lv.farnell.com/jsp/search/produc ... KU=8598550
влажность: http://lv.farnell.com/jsp/search/produc ... KU=1566265

чтобы вам не лазить по даташитам:
Температура - резистивный датчик: 1K при нуле, 1.385K при 100 градусах. Интересует промежуток от -30 до +55.
Влажность - ёмкостный датчик: 300pF при нуле, 360pF при максимальной влажности. Интересуют все значения.
Давление - на выходе напряжение.

Включать хочу примерно так:
model.JPG
схемы включения датчиков
(13.56 КБ) 651 скачивание
Посчитал включение температурного датчика в делитель напряжения с образцовым 1.1К резистором - для хорошей точности нужен 12-14битный ADC. На AVR контролёрах стоят 10битные. Можно ADC и купить, но лишние IC в схему включать не хочу. На AVRfreaks наткнулся на схемку для измерения ёмкостей (см. рисунок).

1) включаем счётчик
2) пускаем на лапку мк единицу
3) ждём прерывания от компаратора
4) останавливаем счётчик
5) меняем напряжение на пине на ноль и оставляем так до следующего измерения

Теперь, собственно вопросы:

1) С контроллёром вроде определился - хочу AtTiny261A: http://lv.farnell.com/atmel/attiny261a- ... dp/1841618. Он довольно дешёв, у него есть ADC, мультиплексуемый компаратор, 8 и 16 битные таймеры, и USI для связи.

Что меня мучает:
Первое - пустая Errata в даташите: not known, not tested.
Второе - у меня програматор года полтора назад куплен, а этот контроллёр вроде новый. В списке устройств програматора написано что поддерживает AtTiny261. Atmel в общем стараются делать новые девайсы совместимыми с предыдущими, но меня терзают сомнения. Может лучше взять AtTiny261 (в два раза дороже)?

2) Не имею представления как подобрать резистор и конденсатор для датчиков так, чтобы наибольшая точность достигалась в нужном мне диапазоне. И вообще - будет ли там хоть какая-то точность с этим методом включения?
Точные значения резистора и конденсатора я подсчитаю численно в экселе - подскажите только в каком диапазоне искать.
И ещё - как по-англицки будет образцовый резистор? На слово "reference" поиск Farnell выдаёт только voltage reference микросхемы. Если можно - тыкните пальцем в какой категории в каталоге их искать. Особенно - конденсаторы. Надо бы что-то поточнее, но 4-6 евро/шт - максимум.

А, почти забыл - мк будет работать от 10 или 20 МГц - как удобнее. Думаю - возьму кристалл подороже - с тремя нулями после запятой.

3) Осталось только поинтересоваться про напряжения.

Питание. Все результаты измерений относительны к напряжению питания, и по идее нет особой разницы - будет там 4.7В или 5.2В. Но всё-же. Датчик питать буду не от лабораторного блока питания, а от китайской подделки (хоть и стабилизированой), поэтому и интересуюсь - может ли повлиять на результат измерений небольшой дрифт в радиусе полувольта от номинала? Если повлияет - наверно надо какую-нибудь стабилизирующую микросхемку втиснуть. Жаться сильно не стоит - сыкономив 1 евро десятикратно похерить точность я не хочу.

Фильтрация питания. Для более-менее точной измерительной техники на мк допустимо ставить стандартный комплект?:
электролит 47uF + керамика 100nF между VCC и GND
дроссель 100uH-120uH между VCC и AVCC
100nF между AVCC и AGND
И глупый вопрос - куда включать AREF? На прямую в AVCC? Это же как я понимаю - reference voltage для ADC?
Ничего вроде не забыл?

Reference voltage для компаратора.
Как погрешность меньше сделать - устанавливать делителем напряжения, воткнуть стабилитрон или использовать микросхему? Какой минимальный ток нужно обеспечить для работы?
И ещё одно - какое напряжение выбрать? Напомню - мерять собираюсь RC цепь, а там после процентов 85 уже никаким точным ADC ничего не различишь. Одни источники говорят ставить на 3/4 от питания, другие - 70%. Судя по графику с википедии 86,5% тоже хорошо для верхнего предела. Мысли, идеи?

Изображение

Re: Прикручиваю датчики к контроллёру

Добавлено: Вс фев 13, 2011 23:56:29
Murav
thunder87l писал(а):1) С контроллёром вроде определился - хочу AtTiny261A: http://lv.farnell.com/atmel/attiny261a- ... dp/1841618. Он довольно дешёв, у него есть ADC, мультиплексуемый компаратор, 8 и 16 битные таймеры, и USI для связи.
В нём всего 2кБ памяти, а это очень мало - скорее всего всё что ты хочешь сделать просто не влезет. Лучше брать МК с 8 килобайтами, а если в нём ещё будет какая-либо обработка данных и вывод на индикатор, то 16кБ.
thunder87l писал(а):Может лучше взять AtTiny261 (в два раза дороже)?
Они отличаются только энергопотреблением.
thunder87l писал(а):Второе - у меня програматор года полтора назад куплен, а этот контроллёр вроде новый.
Напиши название программатора.
thunder87l писал(а):Посчитал включение температурного датчика в делитель напряжения с образцовым 1.1К резистором - для хорошей точности нужен 12-14битный ADC.
Значит здесь каким-либо способом убрать смещение. Обычно это делают операционным усилителем(в качестве ОУ можно взять LM358) либо дифференциальным режимом АЦП.
thunder87l писал(а):Не имею представления как подобрать резистор и конденсатор для датчиков так, чтобы наибольшая точность достигалась в нужном мне диапазоне.
Резистор и конденсатор подбираются так, чтобы время до срабатывания компаратора было приемлимым(с точки зрения точности). Напряжение на конденсаторе в таком включении считается так: Ucap = Uin-Uin*e^(-t/T), где T - постоянная времени = R*C .
thunder87l писал(а):И вообще - будет ли там хоть какая-то точность с этим методом включения?
Точность - очень низкая. Ёмкость входа МК - в районе 10пФ(и вполне может зависеть от напряжение на входе), что сравнимо с диапазоном датчика влажности, так что приемлемую точность получить вряд ли получится. Кроме того постоянная составляющая никуда не девается.

В случае резистивного датчика лучше постоянное напряжение подавать на АЦП, а в случае емкостного - с помощью операционного усилителя, например во включении интегратора, генерировать какой-либо сигнал и измерять его период компаратором(для этого стоит задействовать соответствующий режим таймера - будет точнее).
thunder87l писал(а):Думаю - возьму кристалл подороже - с тремя нулями после запятой.
Точности даже самого плохого(кроме тех, что вообще не работают) кварца тут хватит.
thunder87l писал(а):Точные значения резистора и конденсатора я подсчитаю численно в экселе - подскажите только в каком диапазоне искать.
http://ru.wikipedia.org/wiki/%D0%A0%D1% ... 0%B5%D0%B9
Обычные резисторы - +-5%. Никаких образцовых резисторов не бывает, бывают точные. Обычно берут +-1%.
thunder87l писал(а):На слово "reference" поиск Farnell выдаёт только voltage reference микросхемы. Если можно - тыкните пальцем в какой категории в каталоге их искать. Особенно - конденсаторы. Надо бы что-то поточнее, но 4-6 евро/шт - максимум.
Я вообще там резисторов и конденсаторов не видел. Их вообще лучше искать в ближайшем магазине радиодеталей - обычные резисторы там точно есть, а точные могут быть не всех номиналов(это не страшно, поскольку это легко можно учесть в контроллере - главное чтобы за пределы диапазона не вышло).
thunder87l писал(а):Питание. Все результаты измерений относительны к напряжению питания, и по идее нет особой разницы - будет там 4.7В или 5.2В. Но всё-же. Датчик питать буду не от лабораторного блока питания, а от китайской подделки (хоть и стабилизированой), поэтому и интересуюсь - может ли повлиять на результат измерений небольшой дрифт в радиусе полувольта от номинала? Если повлияет - наверно надо какую-нибудь стабилизирующую микросхемку втиснуть.
Цифровую часть можно питать чем угодно - на неё помехи мало влияют(да и она сама шумит неслабо), а для аналоговых цепей высокочастотные помехи лучше отфильтровать LC-фильтром. Если использовать нормальные источники опорного напряжения, то неточность напряжения питания влиять совсем не будет.
Керамические конденсаторы по питанию жалеть не стоит - их желательно ставить около входов питания каждой микросхемы.
thunder87l писал(а):И глупый вопрос - куда включать AREF?
Всё зависит от того, что будет источником опорного напряжения. Если внутренний(обрати внимание, у него точность очень паршивая) или питание(подключенное изнутри) - то никуда не цеплять, и можно поставить конденсатор(только если будешь переключать опорные напряжения, ему нужно будет успевать перезаряжаться), а если внешний - то на него.

Re: Прикручиваю датчики к контроллёру

Добавлено: Пн фев 14, 2011 03:21:34
thunder87l
Спасибо. Кое что однако хотелось бы уточнить.


Програматор - Robokits
http://robokits.co.in/shop/index.php?ma ... 2n5p21el46



Про температурный датчик - можно поподробнее про снятие смещения с помощью ОУ? В глаза не видел, представляю слабо. Если можно - ссылочку.



С датчиком влажности - может мне тогда уже дешевле обойдётся купить новый? Вроде этого:
http://lv.farnell.com/honeywell-s-c/hih ... dp/1784720
У датчиков влажности с точностью всегда такой бардак? Погрешности +/-2% и больше.

Но если всё-же использовать тот который уже есть, то:
тут есть какое-то чудо для измерения ёмкости:
http://cxema.my1.ru/publ/skhemy_ustrojs ... 9-1-0-1722
Я думаю этот девайс при желании можно перестроить как надо - но уйдёт несколько времени.
А ещё я видел где-то (тогда не придал значения, сейчай - не могу найти) хитрые микросхемы конвертирующие ёмкость в напряжение или ёмкость в частоту. Напряжение наверно попроще будет.
Хотя не уверен за их точность, и подходят ли для меня они вообще.

И снова про ОУ - как его применить для генерации сигнала от конденсатора?
Вообще ОУ у меня - самое слабое место. Может есть книжка какая тематическая - "1000 и 1 извращение с операционным усилителем" или вроде того? Есть смысл почитать.

Я вообще в гугле несколько раз натыкался на мысль использовать 555 для генерации сигнала. Есть ли в этом какой-то смысл (я имею ввиду - точность измерений)? Там один человечек написал, что можно заставить 555 на конденсаторе генерировать сигнал порядка 1-2 МГц. Но для МК работающего на 10 МГц это как-то напряжно будет, нет?



Про образцовые резисторы. Видимо тут какое-то недопонимание в терминологии, ибо существуют прецизионные резисторы:
от 1 до 10 Ом ±0.005%
от 10 до 100 Ом ±0.0025%
от 100 до 1000 Ом ±0.001%
В универе недавно мучали стабилизатор тока. Так там проволочный одноомовый образцовый резистор стоял, с которого ток меряли, потому как ток через него равен напряжению на концах. Образцовый, в смысле - прецизионный, с которого замеряется напряжение.

Re: Прикручиваю датчики к контроллёру

Добавлено: Пн фев 14, 2011 04:11:08
thunder87l
Начал искать про ОУ почитать. Нашёл ожидаемые извращения в этой брошюрке
AN-31.pdf
сборник схем для операционников
(382.27 КБ) 246 скачиваний
Страница 17, capacitance multiplier. Я вот думаю. Может увеличить эту ёмкость раз в 100? Тогда и 10пФ на ножке контроллёра особо влиять не будет.

Может из этой книженции посоветуешь какую схемку для снятия показаний с температурного резистора?

Ащо там есть высокочастотный фильтр. Можно воткнуть такой в питание ADC.

Вообще возьму наверно штук 5 микриков - поэкспериментирую с ними.

Re: Прикручиваю датчики к контроллёру

Добавлено: Пн фев 14, 2011 13:27:41
thunder87l
Запостил топик про увеличение ёмкости в аналоговый раздел.

По идее если его увеличить раз в сто, влияние ноги контроллёра будет ниже 0,5%, а это уже вполне приемлемо. Вот только увеличение получилось не совсем в 100 раз. Или есть какой-то хороший способ получить скоректированую формулу зарядки конденсатора, или прийдётся отбросить эту идею, потому как от реального конденсатора результат прилично отличается.

Re: Прикручиваю датчики к контроллёру

Добавлено: Пн фев 14, 2011 16:22:22
Murav
thunder87l писал(а):Програматор - Robokits
Что это за программатор - не знаю. Похоже, что это своя реализация протокола STK500 2.0 , так что скорее всего этот программатор поддерживает всё, что поддерживает AVR Studio.
thunder87l писал(а):Про температурный датчик - можно поподробнее про снятие смещения с помощью ОУ? В глаза не видел, представляю слабо.
Обычно это делают с помощью включения дифференциального усилителя ОУ либо инструментального усилителя.

Вот здесь нашлось некоторое описание работы с датчиками: http://easyelectronics.ru/izmeritelnye-cepi.html
thunder87l писал(а):И снова про ОУ - как его применить для генерации сигнала от конденсатора?
Например включить конденсатор в схеме интегратора, на вход которого подавать опорное напряжение. Только надо придумать, как разряжать конденсатор.
В любом случае тут проще всего измерять ёмкость по времени заряда или разряда.
thunder87l писал(а):Может есть книжка какая тематическая - "1000 и 1 извращение с операционным усилителем" или вроде того? Есть смысл почитать.
Там всего несколько правил на основе которых строится любая схема с ОУ. Советую поискать книжку Хоровиц Хилл "Искусство схемотехники". Так же посмотри статьи на этом сайте.
thunder87l писал(а):Я вообще в гугле несколько раз натыкался на мысль использовать 555 для генерации сигнала.
Точность будет не лучше чем при включении RC-цепочки к микроконтроллеру.
thunder87l писал(а):Про образцовые резисторы. Видимо тут какое-то недопонимание в терминологии, ибо существуют прецизионные резисторы:
от 1 до 10 Ом ±0.005%
от 10 до 100 Ом ±0.0025%
от 100 до 1000 Ом ±0.001%
А зачем такая точность то? Всё равно высокую точность засчёт одних только резисторов получить не удастся - тут надо схему делать как следует.
thunder87l писал(а):Ащо там есть высокочастотный фильтр. Можно воткнуть такой в питание ADC.
В простейшем случае - катушка по питанию и конденсатор на землю.
thunder87l писал(а):Страница 17, capacitance multiplier. Я вот думаю. Может увеличить эту ёмкость раз в 100? Тогда и 10пФ на ножке контроллёра особо влиять не будет.
Лучше сделать на том же ОУ схему преобразования ёмкости в период сигнала.

Re: Прикручиваю датчики к контроллёру

Добавлено: Вт фев 15, 2011 09:05:21
GP1
Можно вопросик?
Прозвучала фраза о недостаточности 10 битного АЦП, а нет ни слова о требуемой точности...
если конечно не спутник запускать собираешься.

Re: Прикручиваю датчики к контроллёру

Добавлено: Вт фев 15, 2011 23:24:08
thunder87l
Ну, насчёт точности... Вообще у этих датчиков (влажности), сколько я видел - значения гуляют от 1% до 3%. Насколько я понимаю - эти 3% включают в себя и погрешность ёмкости самого датчика и погрешность его показаний. Если откалибровать - я думаю 1% добиться можно.

Так что RES=1% я буду доволен, а RES=0.3% - безмерно рад.

А вообще я тут потыкал эти операционники в симуляторе - на каждом ОУ свои значения ёмкости получаются. Штук семь перепробовал разных и понял что натупил - хрен от них добьёшься чего. Идеальный ОУ (в универе сегодня на QUCS посимулировал), тот как часы - всё точно.

Сейчас мост попробую.