LM35 и ATmega8

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

Добрый день. Возникла такая проблема. Изучаю АЦП на примере датчика температуры LM35. Вроде бы все работает, только когда устанавливаю температуру более 50 0С показания перестают изменяться. Показания останавливаются на 512. Хотя АЦП то 10 бит. Не могу понять в чем проблема. В архиве исходники и проект Протеус для проверки. Использую ИОН - вывод AREF - 1 В. Измерять тоже должен до 1В. А измеряет только до 0,5 В. Это 50 град.Ц Даже показания не изменяются. Заранее благодарен за ответ.
Вложения
LM35.ZIP
(62.63 КБ) 265 скачиваний
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

чего-то намудрили с выравниванием и забиранием результата АЦП
Реклама
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

Результат из регистра ADCL забирается норм. Проблема возникает, когда результат начинает считываться из регистра ADCH. Но не могу понять в чем проблема.
Нашел транзистор. Понюхал.
Сообщения: 181
Зарегистрирован: Пн янв 14, 2013 15:06:57
Откуда: Д.Вс.

Сообщение takei »

Почему в протеусе не подключена нога AVCC?
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

А куда ее нужно подключить? Подключен вывод AREF к опорному напряжению 1 В.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Использую ИОН - вывод AREF - 1 В
У вас внешний ион?
Изображение
Реклама
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

да внешний. тоже возник вопрос, какое напряжение можно подавать на вывод AREF. Просто программа шла в комплекте с отладочной платой EVBavr04. И там написано, что подать 1 в. А судя по вашей документации мин 2. Попробую.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

документация не моя а производителя, действительно проект для меги8, а в комментариях - подать 1В, может ошиблись - на плату можно устанавливать мегу48 - там Vref 1В минимум.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

in temp,ADCL ; Внимание! ПЕРВЫМ ЧИТАЕТСЯ МЛАДШИЙ РЕГИСТР!!!
in temp1,ADCH

Соблюдается? Если нет, глюки обеспечены.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

dr.doc писал(а):in temp,ADCL ; Внимание! ПЕРВЫМ ЧИТАЕТСЯ МЛАДШИЙ РЕГИСТР!!!
in temp1,ADCH

Соблюдается? Если нет, глюки обеспечены.
Да читаются сначала младший, а потом старший.
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

Не могу найти в даташите минимальное напряжение, подаваемое на пин Vref.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Тогда возможная причина - опорное напряжение. Совпадает по логике - опорное напряжение равно 0,5 минимального и разрядность составляет также 0,5 от 1024.
Похожая ситуация возникает при переполнении, когда входное выше опорного.

Стр. 243 из 303
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Нашел транзистор. Понюхал.
Сообщения: 181
Зарегистрирован: Пн янв 14, 2013 15:06:57
Откуда: Д.Вс.

Сообщение takei »

takei писал(а):Почему в протеусе не подключена нога AVCC?
melandr писал(а):А куда ее нужно подключить? Подключен вывод AREF к опорному напряжению 1 В.
Ваще не понимаю, что там показывает без подключенного АЦП. Вы так свой код будете "лопатить" честные три месяца!
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

Не помогло. Сделал в Протеусе опорное напряжение Vref = 2 В. Показания уменьшились в 2 раза и происходит ограничение все равно на 0,5В. Было при Vref = 1 В содержимое регистра ADC = 512 и входном напряжении 0,5 В. При изменении Vref = 2 В содержимое регистра ADC = 256 при входном напряжении 0,5 В. Проблема где-то в программе, но где не понятно. Не отображает значения которые должны быть в регистре ADCH
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

takei писал(а):
takei писал(а):Почему в протеусе не подключена нога AVCC?
melandr писал(а):А куда ее нужно подключить? Подключен вывод AREF к опорному напряжению 1 В.
Ваще не понимаю, что там показывает без подключенного АЦП. Вы так свой код будете "лопатить" честные три месяца!
Запустите Протеус и посмотрите. До 0,5 В показывает нормально. Обрубает при показаниях больше 0,5 В. При Vref = 1 В
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

странно вычисляется температура

Код: Выделить всё

  	value_low = ADCL;
	value_high = ADCH;
	value = ((value_high<<2)|(value_low>>6));
10mV = 1 градус
При Vref 5В (5000mV)
Temperature = АЦП x (5000/1023)
Например при значении АЦП = 512:
512 x (5000/1023) = 2502mV = 250,2 C - это вряд ли выдержит
Например при значении АЦП = 100:
100 x (5000/1023) = 488,8mV = 48,9 C
Последний раз редактировалось oleg110592 Сб ноя 09, 2013 01:26:16, всего редактировалось 1 раз.
Вымогатель припоя
Сообщения: 580
Зарегистрирован: Пт ноя 08, 2013 01:01:18

Сообщение melandr »

Не понятно почему рубит на 0,5В измерения. Меняю опорное напряжение, а показания считают только до 0,5В
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

надо проверить это
value = ((value_high<<2)|(value_low>>6));
еще включен бит ADLAR:
ADC Left Adjust Result
The ADLAR bit affects the presentation of the ADC conversion result in the ADC Data Register.
Write one to ADLAR to left adjust the result. Otherwise, the result is right adjusted
можно проверить на компьютере (C++ Builder), сегодня уже не хочется, завтра не знаю, может не получиться
Нашел транзистор. Понюхал.
Сообщения: 181
Зарегистрирован: Пн янв 14, 2013 15:06:57
Откуда: Д.Вс.

Сообщение takei »

Да что же это за мазахизм, а понял
melandr писал(а): можно подавать на вывод AREF.
dr.doc писал(а):in temp1,ADCH
melandr писал(а):Проблема где-то в программе, но где не понятно. Не отображает значения которые должны быть в регистре ADCH
тут на форуме только программисты,
takei писал(а):не понимаю, что там показывает без подключенного АЦП
А подать питание на 20 ногу это наверное пусть на другом форуме начинающие подают.
То есть я, вот подал питание
LM35.rar
(56.73 КБ) 189 скачиваний
Теперь ковыряйте программу :tea:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Я вообще не понял смысла использования бита адлар, если вы используете все биты ацп :dont_know:
Он ведь придуман только для того, чтобы можно было тупо не читать младший регистр просто используя старшие 8 бит. Если все используете, не проще взять уже готовое двухбайтное число из двух регистров? Зачем это лишнее преобразование?
Тогда(при адлар==0) будет так:

Код: Выделить всё

 value_low = ADCL;
 value_high = ADCH;
 value = (( uint16_t )ADCH<<8)|ADCL ;
 
Контактная информация:
Ответить

Вернуться в «AVR»