ATMEGA16 датчик температуры цифровой или с АЦП

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
AJIEKCEu
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс ноя 26, 2006 18:46:49

ATMEGA16 датчик температуры цифровой или с АЦП

Сообщение AJIEKCEu »

Добрый день.
Я начал программировать МК ATMEGA16 и сталкнулся с некоторыми проблемами, а именно:
Не как не врублюсь как пользоватьься АЦП хотел использую низкоомный резисторсоорудить датчик температуры (30 ОМ), но вот загвоздка.. с ацп, читал всю инфу и дадачит и в инете. так и непонял,
используются какието регистры и на вход AREF нужно подавать напряж: от2.5 до Uпит
НО как этим пользоваться и выбирать характеристики для отображения текущей температуры так и не разобрался, пожалуйста подскажите!
Этот был первый, а второй - это взять датчик температуры с цифровым выходом, но они денег стоят... да и как цифровой сигнал по одной линии обрабатывать я тоже незнаю..


Поэтому прошу помощи в большой степени по первому вырианту с реализацией на низкообном ризисторе либо с использованием медной проволки.

В заранее благодарен с Ув. Алексей
Последний раз редактировалось AJIEKCEu Сб дек 09, 2006 18:00:34, всего редактировалось 1 раз.
МяУУууУуУу
Реклама
Аватара пользователя
Sailanser
Друг Кота
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

Не пойму чего ты мучаешься то тут на форуме ветка есть про бортовой комп так там автор сего приспособления выкладывал код для семисегметного индикатора на одном порту + подключение датчика DS18s20 это цифровой термометрер.
Реклама
Аватара пользователя
AJIEKCEu
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс ноя 26, 2006 18:46:49

Сообщение AJIEKCEu »

Sailanser Я просматривал вссе страницы этой веточки, не видел прости, дай пожалуйста ссылочку прочту...


Ну это по втотрому варианту, а я хотел бы всетаки освоить первый вариант и попробывать АЦП, т.к. мы делали по нему курсовую, целую систему проектировали с ИОН, компаратором и прочей.. не в МК, а на микросхемах и аналоговых компонентах!
Хотя бы маленький опыт получить... преобразования напряжения в цифровой код на МК
МяУУууУуУу
Аватара пользователя
Мышонок
Друг Кота
Сообщения: 3792
Зарегистрирован: Чт сен 14, 2006 11:42:09
Откуда: Обитаю на чердаке
Контактная информация:

Сообщение Мышонок »

Вначале был аналог. Потом код (цифра). В DS1820 просто уже встроен АЦП, а температуру в нём измеряет грубо говоря транзистор. Т.е. чисто цифровых датчиков температуры не существует. Температура сначала преобразуется в электрический вид (напряжение, сопротивление), а затем уже в цифровой. :))
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

И насколько предыдущий пост относится к теме ветки? А еще модератор...
Aheir, это я на это:
Sailanser писал(а): ...для семисегметного индикатора на одном порту + подключение датчика DS18s20 это цифровой термометрер.
Aheir! Соблюдай субординацию! :) Что положено Юпитеру..., в общем знаешь :) Просто разные варианты возникают, не обязательно зацикливаться на каком-то... мышонок

По теме.
Если хочется использовать АЦП и терморезистор, то сразу возникает вопрос: будет ли линеаризоваться сигнал или в контроллер будет зашита температурная кривая в виде таблицы или уравнения?
С точки зрения программирования разница не сильно большая, а вот аппаратная часть будет отличаться.
В первом случае понадобится операционник, во втором - достаточно будет делителя.
Я бы все таки остановился на первом, да и опыт построения таких систем у Вас имеется, судя по постам.
Далее по процессору.
На чем пишете?
Вы правы, опорное напряжение подается на Aref, причем мега имеет встроееный опорник на 2.56В. Параметры не ахти, но пользоваться можно.
Далее - просто грамотная инициализация по даташиту.
Более подробно не пишу, т.к. на С с этим проблем нет, а если Вы на асме пишите, то это для меня сложнее.
Вопросы с цифровыми датчика весьма проработаны и в И-нете масса библиотек для работы с ними.
В качестве промежуточного варианта могу предложить аналоговые датчики температуры с выходным напряджением, пропорциональным температуре. Например, TMP35/TMP36/TMP37 - калиброванный выход до 500мВ/град, цена порядка 20р.
Сам пользовался именно в связке с АЦП в Меге16, без проблем.
Точность правда не высокая, но у всех свои задачи
Реклама
Аватара пользователя
Sailanser
Друг Кота
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

AJIEKCEu
Вот ссылка на эту ветку http://radiokot.ru/forum/viewtopic.php?t=172
Реклама
Аватара пользователя
Мышонок
Друг Кота
Сообщения: 3792
Зарегистрирован: Чт сен 14, 2006 11:42:09
Откуда: Обитаю на чердаке
Контактная информация:

Сообщение Мышонок »

Aheir писал(а):И насколько предыдущий пост относится к теме ветки? А еще модератор...
Aheir! Соблюдай субординацию! :) Что положено Юпитеру..., в общем знаешь :)

По теме.
Если хочется использовать АЦП и терморезистор, то сразу возникает вопрос: будет ли линеаризоваться сигнал или в контроллер будет зашита температурная кривая в виде таблицы или уравнения?
С точки зрения программирования разница не сильно большая, а вот аппаратная часть будет отличаться.

Если используются стандартные датчики температуры (термометры-сопротивления или термопары), то таблицы и уравнения линеаризации для них можно найти в ГОСТах. Аппаратно делать линеаризацию муторно, проще программно. Это к сведению.
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Аватара пользователя
AJIEKCEu
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс ноя 26, 2006 18:46:49

Сообщение AJIEKCEu »

Хорошо, допустим я возьму любой из TMP35/TMP36/TMP37

Подскажите что дальше делать?
куда подключать, какое опорное напряжение надо и как записать полученное число в регистр или ячейку памяти? что б в дальнейшем выводить
Я читал дадашит, но так ни чего не понял:(
МяУУууУуУу
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

2 мышонок:

Вы счастливый... мышонок :) , если за время своей практики сталкивались исключительно с ГОСТированными терморезисторами и термопарами. А термопары от китайских тестеров по какому ГОСТу сделаны? :)) . Да и приведенной в справочных данных температурной кривой доверять стоит в последнюю очередь, самому надо снимать, а уж потом в контроллер шить.
Линеаризация в диапазоне - один операционник. Ну 2, если эстетствовать. Это все тоже так, к сведению... :)) :)) :))
И не стоит насчет субординации...

Ах, если бы, ах если бы - не жизнь была б, а песня бы... :) Всякое приходилось... Конечно стараемся с фирменными и станд. работать, потому что мы всё таки измериловку изобретаем. А снабженцы постоянно хотят "косых" подсунуть. И нормоконтроль нулевой, НТД часто по своим связям добываем...:cry: :)) мышонок

По существу:
Еще раз прошу уточнить: Вы пишите на Асме или на С? Если на С, могу дать кусок кода, если на Асме, то не ко мне.
Какой диапазон температур и точность необходимы? Какова вообще цель проекта?
Обычно проблемы возникают, если НЕ читать даташит, он как раз их-то и решает...
А вот это абсолютно правильно! Надо цель иметь, а исходя из этого и выбирать средства! :)) мышонок
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

По поводу линеризации мона сделать в экселе, строиш по значениям кривую и на графике щелкаешь правой кнопкой выбираешь линию трейда и подбираешь чё те надо. он уравнение сам напишет.
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Это-то здорово, но я говорил об аппаратной линеаризации... :)
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

В данном случае аппаратно те наврядли точно линеаризовать. можешь применить полевик с n-каналом но в любом случае апроксимацию делать надо буит. кстати можно попробовать уравнение преобразовать в изображение(пр-я Лапласа) и затем реализовать на ПИ или ПИД звеньях. В какой-то степени мона компенсировать нелинейность зацепив паралельно датчику резюк.
Вложения
kty83.pdf
кстати у этих терморезисторов зависимость почти линейная и стоят они копейки
(66.06 КБ) 1031 скачивание
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
Сэр Мурр
Модератор
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Сообщение Сэр Мурр »

Мы линеаризовали этот датчик полиномом 3-й степени, по фактическим замерам. Лучше использовать платиновй термометр, вот у него линейность гораздо выше, и нет проблем с калибровкой. :wink:
Аватара пользователя
AJIEKCEu
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс ноя 26, 2006 18:46:49

Сообщение AJIEKCEu »

Aheir Вообщетот на асме пишу, но на Си тооже можно, хотя не желательно...

На вопрос про цель проекта:
Ознокомление и получение навыков с работой АЦП в АТмега 16

... Из всех разговоров я так и не выудил для себя важной информации...

Таблицы и формулы это уже второе дело, первое дело подключить датчик, и снять некоторую характеристику.. (тообишь некоторе напряжение)

Вот я подаю опрное напряжение на вход Aref , а на какой вход подключать сам датчик? и какая последовательность действий в обработке результата...?
МяУУууУуУу
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

В шестнадцатой Меге под входы АЦП отдан порт А. Выход датчика подключаешь ко входу АЦП через резистор на несколько десятков кОм, на сам вход вешаешь конденсатор 0,1 на землю, на всякий случай. Если опорное напряжение уже подал - с аппаратной частью все.
Далее - программирование.
Если на С, то каким софтом пользуешься?
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

ещё нада анологовую землю заземлить если не заземлена и +5В подать через дроссель на 10мкГн на AVcc.
Настоящий кот всегда либо голоден,
либо невыспался ...
Аватара пользователя
AJIEKCEu
Открыл глаза
Сообщения: 44
Зарегистрирован: Вс ноя 26, 2006 18:46:49

Сообщение AJIEKCEu »

Восновном на асме пишу...
а если на си тоестьь компилятор CodeVisionAVR C Compiler


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


СПасибо в заранее...

а может кто пример схемки видел?
МяУУууУуУу
Гость

Re: ATMEGA16 датчик температуры цифровой или с АЦП

Сообщение Гость »

AJIEKCEu писал(а):Добрый день.
Я начал программировать МК ATMEGA16 и сталкнулся с некоторыми проблемами, а именно:
Не как не врублюсь как пользоватьься АЦП хотел использую низкоомный резисторсоорудить датчик температуры (30 ОМ), но вот загвоздка.. с ацп, читал всю инфу и дадачит и в инете. так и непонял,
используются какието регистры и на вход AREF нужно подавать напряж: от2.5 до Uпит
НО как этим пользоваться и выбирать характеристики для отображения текущей температуры так и не разобрался, пожалуйста подскажите!
Этот был первый, а второй - это взять датчик температуры с цифровым выходом, но они денег стоят... да и как цифровой сигнал по одной линии обрабатывать я тоже незнаю..


Поэтому прошу помощи в большой степени по первому вырианту с реализацией на низкообном ризисторе либо с использованием медной проволки.

В заранее благодарен с Ув. Алексей
Если мерить сопротивление, то опорник не нужен. Питание возмите с AVCC программной перемычкой, а с наружи питание датчика тоже с AVCC. AVCC можно взять с +5V питания через делитель, предварительно отфильтровать RC цепочкой.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Попробую помочь так, как я это понимаю:
Чтобы работать с АЦП на Меге8 (с Мега16 не работал, там, возможно, есть мелкие отличия в регистрах) надо сделать примерно так:
1. ADMUX - устанавливаешь нужный вход АЦП (т.е. вывод порта, с которого сигнал подается на АЦП) и заодно источник опроного напряжения.
2. ADCSRA - запускаешь цикл измерения
3. ждешь, пока в ADCSRA встанет флаг ADIF - признак завершения измерения
4. сбрасываешь этот флаг, читаешь из ADCL-ADCH результат
5. обрабатываешь результат, как тебе надо

Я написал для варианта, когда прерывания от АЦП запрещены, можно то же самое и по прерыванию. Никаких других действий для первого опыта не потребуется. Назначение битов в регистрах ADCSRA, ADMUX и т.п. смотри в даташите. Рекомендую усреднять несколько измерений.

Подавать на вход можно для начала (т.е. обучения) сигнал с переменного резистора от 0 до VREF.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

А в ч ем проблема, если есть Code Vision?
Пользуешь CodeWizard, он тебе сам весь необходимый код сгенерит...
2 галки поставить: использовать АЦП и в каком режиме...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»