jrqzy
发表于 2013-1-6 13:31:46
我到反倒有个新问题,为啥atmega手册里面写的是1024,而不是1023,因为平时用atmega8A的芯片就够了,8A片内基准源电压是2.56V=2560mV 确实除以1024等于2.5,转换出来的电压正好。而如果除以1023的话,后面是有小数位的,按照平时思维确实应该除以1023,但为啥手册写的是1024呢,难道还手册错了不成?看图。
河山
发表于 2013-1-9 21:24:51
范例用热敏电阻是不是更简单点儿
弘毅
发表于 2013-1-10 10:59:18
jrqzy 发表于 2013-1-6 13:31 static/image/common/back.gif
我到反倒有个新问题,为啥atmega手册里面写的是1024,而不是1023,因为平时用atmega8A的芯片就够了,8A片内 ...
恩,是1024,强子教程里面原来写错了。。已经改正过来了。
jrqzy
发表于 2013-1-10 22:37:16
不对呀,强子的原话是:
因本程序算法问题造成的测量值偏大问题已经纠正,源算法中 float vol = n * 0.48828125; 被替换为 float vol = n * (5.0 / 1024.0*100);特此说明
0.48828125不就等于 (5.0 / 1024.0*100)么? 何错之有阿
pww999
发表于 2013-1-10 23:16:16
jrqzy 发表于 2013-1-10 22:37 static/image/common/back.gif
不对呀,强子的原话是:
因本程序算法问题造成的测量值偏大问题已经纠正,源算法中 float vol = n * 0.48828 ...
我也不明白??
弘毅
发表于 2013-1-10 23:41:27
本帖最后由 弘毅 于 2013-1-10 23:46 编辑
jrqzy 发表于 2013-1-10 22:37 static/image/common/back.gif
不对呀,强子的原话是:
因本程序算法问题造成的测量值偏大问题已经纠正,源算法中 float vol = n * 0.48828 ...
因为。。原来除以1024是对的,但是发现温度与实际温度有偏差,不准。所以手工修正了下。。除以1023刚好差不多了。其实真实原因是因为5V供电有偏差,导致ADC基准不准,进而导致ADC的结果不准。所以除以1024是正确的,但是结果不正确。。。修正时,修错了地方。
这个问题,在后面调用内部基准帖子上,进行了详细解释~~
迷你强
发表于 2013-1-11 11:35:28
pww999 发表于 2013-1-10 23:16 static/image/common/back.gif
我也不明白??
我悄悄改了。。。。。。。。。{:soso_e149:}
博学笃行
发表于 2013-1-20 20:49:20
学习了,谢谢
Limius
发表于 2013-1-31 17:44:42
ttyp 发表于 2012-10-6 10:45 static/image/common/back.gif
http://wiki.geek-workshop.com/doku.php?id=arduino:arduino_language_reference:map
很好,又多学了一个函数,谢谢~
Limius
发表于 2013-1-31 18:01:16
电阻怎么可能接反 - -
Limius
发表于 2013-1-31 21:33:03
ladywent 发表于 2012-7-25 11:06 static/image/common/back.gif
假如n=1023,那vol=1024*0.48828125=500度?
我觉得vol=n*100/1024=n*0.09766
vol=n*100/1024=n*0.09766
好像你这个算法才是对的吧?
等待你的回复。
glwangnet
发表于 2013-2-20 08:51:35
float vol = n * (5.0 / 1024.0*100); 这样测量出来的温度应该偏高,正确的计算公式最好是: 电压=模拟读数/1024*5,温度=(电压-0.5)*100
迷你强
发表于 2013-2-20 21:43:58
这样吧。。各种偏高,偏低的问题,是因为基准电压5V精度不够造成的。后面有教程使用1.1V芯片内部基准源测温的教程,所以,不要纠结了。。因为参考电平的误差造成的误差。
<一一巛
发表于 2013-3-4 14:36:30
本帖最后由 <一一巛 于 2013-3-5 10:17 编辑
交作业,温度一直在跳:P
18.57
19.06
18.57
void setup() {
Serial.begin(9600); //使用9600速率进行串口通讯
}
void loop() {
float vol = analogRead(A4) * 500.0 / 1023.0; //使用浮点数存储温度数据,温度数据由电压值换算得到
Serial.println(vol); //串口输出温度数据
delay(2000);
}
huluqq
发表于 2013-3-23 21:41:42
我按照这些步骤做,怎么总是显示500.0啊?那儿出错了??连线与代码都一样啊!!