Атмега328P Термо-сенсор, есть он в нем или нет ?

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Атмега328P Термо-сенсор, есть он в нем или нет ?

Сообщение Ariadna-on-Line »

Пробовал читать - возвращается чистый ноль. В даташите написано что сенсор есть во всех 328. Но в форумах - информация противоречивая. Пробовал читать в АТтини85 - там читается и работает вполне нормально. Хотелось бы прояснить тему. С уважением.
akl
Друг Кота
Сообщения: 4443
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Атмега328P Термо-сенсор, есть он в нем или нет ?

Сообщение akl »

У меня нет mega328P, а mega48PA с таким кодом (Aref=AVcc=3V) работает.
Спойлер

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

;	LDI	R16,1<<REFS1|1<<REFS0|1<<ADLAR|1<<MUX3; Aref=1,1V ADC8 смещение
	LDI	R16,0<<REFS1|1<<REFS0|0<<ADLAR|1<<MUX3; Aref=AVcc ADC8 без смещения
	STS	ADMUX,R16

;	LDI	R16,1<<ADEN|1<<ADSC|1<<ADIF|1<<ADIE|1<<ADPS2|1<<ADPS1|1<<ADPS0
	LDI	R16,1<<ADEN|1<<ADSC|1<<ADIF|1<<ADPS2|1<<ADPS1|1<<ADPS0
	STS	ADCSRA,R16
;*****
WAIT_ADSC:
	LDS	R16,ADCSRA
	SBRC	R16,ADSC
	RJMP	WAIT_ADSC
;*****
	LDS	R12,ADCL
	LDS	R11,ADCH
	CLR	R10
СпойлерИзображение
Верхняя часть картинки камень накрыт полиэтиленовым пакетом со снегом. Нижняя часть - камень подогрет паяльником (без энтузиазма). EM08 и N4190 служебная информация.
Вложения
ATmega48PA_Temperature.PNG
(9.89 КБ) 239 скачиваний
veso74
Поставщик валерьянки для Кота
Сообщения: 1902
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Атмега328P Термо-сенсор, есть он в нем или нет ?

Сообщение veso74 »

Сохранил код ниже как тестовой. По идее имеет" кривые " значения - температура зависит от нагрузки МК и самонагревания.
Для использования уточните свой offset - работа напр. 5-7 минут -> разницу между калиброванным термометром.
Можете не использовать float, напр. умножите на 100.
Спойлер

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

void setup() {
  Serial.begin(9600);

  ADMUX = (1 << REFS1) | (1 << REFS0) | (1 << MUX3);
  ADCSRA |= (1 << ADEN);
}

void loop() {
  ADCSRA |= (1 << ADSC);
  while (ADCSRA & (1 << ADSC));

  int raw = ADCW;

  float temperature = (raw - 324.31) / 1.22;

  float offset = 4.9;
  temperature = temperature + offset;

  Serial.print("Raw ADC: ");
  Serial.print(raw);
  Serial.print("  Temp: ");
  Serial.print(temperature);
  Serial.println(" oC");

  delay(1000);
}
Последний раз редактировалось veso74 Вс дек 28, 2025 12:03:47, всего редактировалось 1 раз.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Атмега328P Термо-сенсор, есть он в нем или нет ?

Сообщение roman.com »

Атмега328P Термо-сенсор, есть он в нем или нет ?
есть.
достаточно переключить мультиплексор...

Изображение

другой вопрос что там точность никакая...

Изображение

с такой точностью Термо-сенсор имеет мало пользы))
Вложения
Screenshot_5.jpg
(30.79 КБ) 198 скачиваний
Screenshot_4.jpg
(86.14 КБ) 190 скачиваний
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Атмега328P Термо-сенсор, есть он в нем или нет ?

Сообщение Ariadna-on-Line »

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

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