Аналоговые датчики температуры и фотодатчик
- Войдите на сайт для отправки комментариев
Ср, 05/03/2014 - 09:40
Всем привет!
платформа UNO. термодатчик lm35 к А5, фоторезистор к А1, через резистор 10к к минусу. питание от USB
float tempC; int readingTemp; int tempPin=5; int lightPin=1; int readingLight; void setup() { analogReference(INTERNAL); Serial.begin(115200); pinMode(tempPin, INPUT); pinMode(lightPin, INPUT); } void loop() { readingTemp=analogRead(tempPin); // tempC=readingTemp*5.0*100/1024; tempC=readingTemp*1.1*100/1024; Serial.print("temp = " ); Serial.println(tempC); delay(500); // readingLight=analogRead(lightPin); // Serial.print(" / light = " ); // Serial.println(readingLight); delay(500); }
при этом коде выдает вроде как правду
temp = 23.20
temp = 23.10
temp = 22.99
temp = 23.10
temp = 23.10
temp = 23.10
temp = 23.31
temp = 23.20
если аналогреференс заремить, т.е. перейти на опорное дефолтное напряжение 5в и разремить коэффициент умножения 5,0в то выводит
temp = 21.97
temp = 21.97
temp = 21.48
temp = 21.97
temp = 21.97
temp = 21.97
вот вопрос №1: поxему подвирает на 1 градус?
теперь ремим строки касательно термодатчика и разремиваем строки с фотодатчиком, аналогреференс=дефаулт
/ light = 907
/ light = 781
/ light = 690
/ light = 685
/ light = 881
/ light = 904
/ light = 903
/ light = 904
выводит нормально
при смене аналогреференс на интернал - показания зашкаливают...
/ light = 1023
/ light = 1023
/ light = 1023
/ light = 1023
вот вопрос №2 - почему? я так понимаю надо сопротивление поменять? в какую сторону?
далее раскоментиваем все строки по обоим датчикам, аналогреференс=дефолт
temp = 21.97
/ light = 902
temp = 26.37
/ light = 901
temp = 15.63
/ light = 901
temp = 14.65
/ light = 902
temp = 15.14
/ light = 903
temp = 15.63
/ light = 904
temp = 15.14
/ light = 904
и вот вопрос №3 - самый мне непонятный - почему в показаниях температуры полная хрень?
Решение: надо было подтянуть вывод термосенсора согласно даташиту через резистор 20кОм на минус...
PS - столько профи тут, а подсказать не смогли:(((
PPS - но мне полезней молчание даже стало - подучил матчасть:)))
и вопрос №1 все еще актуальный
объясните мне, завсегдатаи, что я неправильно в этой ветке сделал что вы меня оставляете без ответов?
1. название темы? "бэээээ... слишком банальный вопрос чтоб тратить время на какогото очередного чайника..."
2. неправильно расписал свои вопросы? "ооо!!! 3 листинга экрана текста... да ну нах их читать..."
3. "ды мы тут все чайники - чо ты от нас вооооще хочешь?" :)))) привлек внимание кого то или в бан сразу)))
ps. извините на маленький напор.
Хм .. А 1 и 5 пины разве аналоговые?
Если Вы хотите работать с аналоговыми А1 и А5, так и пишите
int sensorpin= A1; // А5
Или
int sensorpin = 15; // 19
Видимо в мануале к аналогрид очепятка - в адресе пина забыли А дописать.
и еще... Для аналогрида пин не надо инициализировать, как инпут.
http://arduino.cc/en/Tutorial/AnalogInput#.Uxn7d7IaySM
http://arduino.ru/Tutorial/AnalogInputPins
а в качестве температурного датчика я предпочитаю DS18B20
"Доктор меня все игнорируют... Следующий" ;)
Решение: надо было подтянуть вывод термосенсора согласно даташиту через резистор 20кОм на минус..PS - столько профи тут, а подсказать не смогли:(((
Вы ничего не путаете? В каком даташите это сказано? По даташиту на LM35 выход не нужно никуда притягивать. Только для измерения отрицательных температур выход притягивается к минусу, но минусу биполярного источника питания. Сажать через 20 ком на общий вывод питания бессмысленно, там и так низкоимпендансный выход.
Решение: надо было подтянуть вывод термосенсора согласно даташиту через резистор 20кОм на минус..PS - столько профи тут, а подсказать не смогли:(((
Вы ничего не путаете? В каком даташите это сказано? По даташиту на LM35 выход не нужно никуда притягивать. Только для измерения отрицательных температур выход притягивается к минусу, но минусу биполярного источника питания. Сажать через 20 ком на общий вывод питания бессмысленно, там и так низкоимпендансный выход.
http://www.ti.com/lit/ds/symlink/lm35.pdf рисунок 2
тогда если не надо подтягивать резистором - почему так показания пляшут?
это не дает ответа на "вот вопрос №1: почему подвирает на 1 градус при смене опорного напряжения?"
http://www.ti.com/lit/ds/symlink/lm35.pdf рисунок 2
это не дает ответа на "вот вопрос №1: почему подвирает на 1 градус при смене опорного напряжения?"
тогда если не надо подтягивать резистором - почему так показания пляшут?
Для пляски могут быть разные причины, это отдельная и большая тема. Максимальная девиация, не связанная с ошибками подключения по моим наблюдениям не более +/- 2 отсчёта АЦП. Если у вас легчает от подключения резистора на общий провод, значит что-то не так с подключением.
Я полагаю, что вопросы из первого поста топика уже не актуальны, тк вообще непонятно что считывалось. Как ведет себя датчик после применения кода от maksim ?
<<2-maksim : мне непонятно, исходя из чего Вы предлагаете применять опорное напряжение для ЦАП температурного датчика INTERNAL - 1.1v ? >>
Вы пишите подтянуть на минус, подразумевая минус питания. только вот минус в даташите подключается не на gnd, а на отрицательное напряжение, полагаю ардовским цап-ом отрицательное напряжение не оцифруется.
Задавая вопросы по температурному и фото датчикам... Неплохо было бы описать задачи, ими решаемые, возможно их можно решить иными , более эффективными методами.
По поводу отсутствия внимания, полагаю Вам полегчало ;)
PS. Буду благодарен, если кто-то кинется ссылкой на схему для подключения аналогового входа atmega328 для измерения температуры в диапазоне 250-450 С, видимо от Pt100, или термопары (бытовое применение). Спасибо.