Страница 1 из 2
ATMEGA16 датчик температуры цифровой или с АЦП
Добавлено: Сб дек 09, 2006 17:05:33
AJIEKCEu
Добрый день.
Я начал программировать МК ATMEGA16 и сталкнулся с некоторыми проблемами, а именно:
Не как не врублюсь как пользоватьься АЦП хотел использую низкоомный резисторсоорудить датчик температуры (30 ОМ), но вот загвоздка.. с ацп, читал всю инфу и дадачит и в инете. так и непонял,
используются какието регистры и на вход AREF нужно подавать напряж: от2.5 до Uпит
НО как этим пользоваться и выбирать характеристики для отображения текущей температуры так и не разобрался, пожалуйста подскажите!
Этот был первый, а второй - это взять датчик температуры с цифровым выходом, но они денег стоят... да и как цифровой сигнал по одной линии обрабатывать я тоже незнаю..
Поэтому прошу помощи в большой степени по первому вырианту с реализацией на низкообном ризисторе либо с использованием медной проволки.
В заранее благодарен с Ув. Алексей
Добавлено: Сб дек 09, 2006 17:56:32
Sailanser
Не пойму чего ты мучаешься то тут на форуме ветка есть про бортовой комп так там автор сего приспособления выкладывал код для семисегметного индикатора на одном порту + подключение датчика DS18s20 это цифровой термометрер.
Добавлено: Сб дек 09, 2006 18:33:34
AJIEKCEu
Sailanser Я просматривал вссе страницы этой веточки, не видел прости, дай пожалуйста ссылочку прочту...
Ну это по втотрому варианту, а я хотел бы всетаки освоить первый вариант и попробывать АЦП, т.к. мы делали по нему курсовую, целую систему проектировали с ИОН, компаратором и прочей.. не в МК, а на микросхемах и аналоговых компонентах!
Хотя бы маленький опыт получить... преобразования напряжения в цифровой код на МК
Добавлено: Сб дек 09, 2006 18:55:26
Мышонок
Вначале был аналог. Потом код (цифра). В DS1820 просто уже встроен АЦП, а температуру в нём измеряет грубо говоря транзистор. Т.е. чисто цифровых датчиков температуры не существует. Температура сначала преобразуется в электрический вид (напряжение, сопротивление), а затем уже в цифровой.

Добавлено: Вс дек 10, 2006 00:40:39
Aheir
И насколько предыдущий пост относится к теме ветки? А еще модератор...
Aheir, это я на это: Sailanser писал(а):
...для семисегметного индикатора на одном порту + подключение датчика DS18s20 это цифровой термометрер.
Aheir! Соблюдай субординацию!
Что положено Юпитеру..., в общем знаешь
Просто разные варианты возникают, не обязательно зацикливаться на каком-то... мышонок
По теме.
Если хочется использовать АЦП и терморезистор, то сразу возникает вопрос: будет ли линеаризоваться сигнал или в контроллер будет зашита температурная кривая в виде таблицы или уравнения?
С точки зрения программирования разница не сильно большая, а вот аппаратная часть будет отличаться.
В первом случае понадобится операционник, во втором - достаточно будет делителя.
Я бы все таки остановился на первом, да и опыт построения таких систем у Вас имеется, судя по постам.
Далее по процессору.
На чем пишете?
Вы правы, опорное напряжение подается на Aref, причем мега имеет встроееный опорник на 2.56В. Параметры не ахти, но пользоваться можно.
Далее - просто грамотная инициализация по даташиту.
Более подробно не пишу, т.к. на С с этим проблем нет, а если Вы на асме пишите, то это для меня сложнее.
Вопросы с цифровыми датчика весьма проработаны и в И-нете масса библиотек для работы с ними.
В качестве промежуточного варианта могу предложить аналоговые датчики температуры с выходным напряджением, пропорциональным температуре. Например, TMP35/TMP36/TMP37 - калиброванный выход до 500мВ/град, цена порядка 20р.
Сам пользовался именно в связке с АЦП в Меге16, без проблем.
Точность правда не высокая, но у всех свои задачи
Добавлено: Вс дек 10, 2006 10:43:39
Sailanser
Добавлено: Вс дек 10, 2006 10:45:58
Мышонок
Aheir писал(а):И насколько предыдущий пост относится к теме ветки? А еще модератор...
Aheir! Соблюдай субординацию!
Что положено Юпитеру..., в общем знаешь
По теме.
Если хочется использовать АЦП и терморезистор, то сразу возникает вопрос: будет ли линеаризоваться сигнал или в контроллер будет зашита температурная кривая в виде таблицы или уравнения?
С точки зрения программирования разница не сильно большая, а вот аппаратная часть будет отличаться.
Если используются стандартные датчики температуры (термометры-сопротивления или термопары), то таблицы и уравнения линеаризации для них можно найти в ГОСТах. Аппаратно делать линеаризацию муторно, проще программно. Это к сведению.
Добавлено: Вс дек 10, 2006 12:50:04
AJIEKCEu
Хорошо, допустим я возьму любой из TMP35/TMP36/TMP37
Подскажите что дальше делать?
куда подключать, какое опорное напряжение надо и как записать полученное число в регистр или ячейку памяти? что б в дальнейшем выводить
Я читал дадашит, но так ни чего не понял:(
Добавлено: Вс дек 10, 2006 20:23:38
Aheir
2 мышонок:
Вы счастливый... мышонок

, если за время своей практики сталкивались исключительно с ГОСТированными терморезисторами и термопарами. А термопары от китайских тестеров по какому ГОСТу сделаны?

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

И не стоит насчет субординации...
Ах, если бы, ах если бы - не жизнь была б, а песня бы...
Всякое приходилось... Конечно стараемся с фирменными и станд. работать, потому что мы всё таки измериловку изобретаем. А снабженцы постоянно хотят "косых" подсунуть. И нормоконтроль нулевой, НТД часто по своим связям добываем...
мышонок
По существу:
Еще раз прошу уточнить: Вы пишите на Асме или на С? Если на С, могу дать кусок кода, если на Асме, то не ко мне.
Какой диапазон температур и точность необходимы? Какова вообще цель проекта?
Обычно проблемы возникают, если НЕ читать даташит, он как раз их-то и решает...
А вот это абсолютно правильно! Надо цель иметь, а исходя из этого и выбирать средства!
мышонок
Добавлено: Чт дек 14, 2006 18:27:01
moLCHec
По поводу линеризации мона сделать в экселе, строиш по значениям кривую и на графике щелкаешь правой кнопкой выбираешь линию трейда и подбираешь чё те надо. он уравнение сам напишет.
Добавлено: Сб дек 16, 2006 19:41:24
Aheir
Это-то здорово, но я говорил об аппаратной линеаризации...

Добавлено: Вс дек 17, 2006 10:48:05
moLCHec
В данном случае аппаратно те наврядли точно линеаризовать. можешь применить полевик с n-каналом но в любом случае апроксимацию делать надо буит. кстати можно попробовать уравнение преобразовать в изображение(пр-я Лапласа) и затем реализовать на ПИ или ПИД звеньях. В какой-то степени мона компенсировать нелинейность зацепив паралельно датчику резюк.
Добавлено: Вс дек 17, 2006 15:07:41
Сэр Мурр
Мы линеаризовали этот датчик полиномом 3-й степени, по фактическим замерам. Лучше использовать платиновй термометр, вот у него линейность гораздо выше, и нет проблем с калибровкой.

Добавлено: Пн дек 18, 2006 20:35:23
AJIEKCEu
Aheir Вообщетот на асме пишу, но на Си тооже можно, хотя не желательно...
На вопрос про цель проекта:
Ознокомление и получение навыков с работой АЦП в АТмега 16
... Из всех разговоров я так и не выудил для себя важной информации...
Таблицы и формулы это уже второе дело, первое дело подключить датчик, и снять некоторую характеристику.. (тообишь некоторе напряжение)
Вот я подаю опрное напряжение на вход Aref , а на какой вход подключать сам датчик? и какая последовательность действий в обработке результата...?
Добавлено: Чт дек 21, 2006 15:32:09
Aheir
В шестнадцатой Меге под входы АЦП отдан порт А. Выход датчика подключаешь ко входу АЦП через резистор на несколько десятков кОм, на сам вход вешаешь конденсатор 0,1 на землю, на всякий случай. Если опорное напряжение уже подал - с аппаратной частью все.
Далее - программирование.
Если на С, то каким софтом пользуешься?
Добавлено: Чт дек 21, 2006 19:22:17
moLCHec
ещё нада анологовую землю заземлить если не заземлена и +5В подать через дроссель на 10мкГн на AVcc.
Добавлено: Вт дек 26, 2006 11:10:39
AJIEKCEu
Восновном на асме пишу...
а если на си тоестьь компилятор CodeVisionAVR C Compiler
... дайте плиз фрагмент кода.. для иницилизации АЦП.. чтоб вводить через порт А аналоговый сигнал...
СПасибо в заранее...
а может кто пример схемки видел?
Re: ATMEGA16 датчик температуры цифровой или с АЦП
Добавлено: Ср дек 27, 2006 21:42:29
Гость
AJIEKCEu писал(а):Добрый день.
Я начал программировать МК ATMEGA16 и сталкнулся с некоторыми проблемами, а именно:
Не как не врублюсь как пользоватьься АЦП хотел использую низкоомный резисторсоорудить датчик температуры (30 ОМ), но вот загвоздка.. с ацп, читал всю инфу и дадачит и в инете. так и непонял,
используются какието регистры и на вход AREF нужно подавать напряж: от2.5 до Uпит
НО как этим пользоваться и выбирать характеристики для отображения текущей температуры так и не разобрался, пожалуйста подскажите!
Этот был первый, а второй - это взять датчик температуры с цифровым выходом, но они денег стоят... да и как цифровой сигнал по одной линии обрабатывать я тоже незнаю..
Поэтому прошу помощи в большой степени по первому вырианту с реализацией на низкообном ризисторе либо с использованием медной проволки.
В заранее благодарен с Ув. Алексей
Если мерить сопротивление, то опорник не нужен. Питание возмите с AVCC программной перемычкой, а с наружи питание датчика тоже с AVCC. AVCC можно взять с +5V питания через делитель, предварительно отфильтровать RC цепочкой.
Добавлено: Чт дек 28, 2006 10:46:58
ARV
Попробую помочь так, как я это понимаю:
Чтобы работать с АЦП на Меге8 (с Мега16 не работал, там, возможно, есть мелкие отличия в регистрах) надо сделать примерно так:
1. ADMUX - устанавливаешь нужный вход АЦП (т.е. вывод порта, с которого сигнал подается на АЦП) и заодно источник опроного напряжения.
2. ADCSRA - запускаешь цикл измерения
3. ждешь, пока в ADCSRA встанет флаг ADIF - признак завершения измерения
4. сбрасываешь этот флаг, читаешь из ADCL-ADCH результат
5. обрабатываешь результат, как тебе надо
Я написал для варианта, когда прерывания от АЦП запрещены, можно то же самое и по прерыванию. Никаких других действий для первого опыта не потребуется. Назначение битов в регистрах ADCSRA, ADMUX и т.п. смотри в даташите. Рекомендую усреднять несколько измерений.
Подавать на вход можно для начала (т.е. обучения) сигнал с переменного резистора от 0 до VREF.
Добавлено: Чт дек 28, 2006 15:28:08
Aheir
А в ч ем проблема, если есть Code Vision?
Пользуешь CodeWizard, он тебе сам весь необходимый код сгенерит...
2 галки поставить: использовать АЦП и в каком режиме...