日志档案

发表于 2007-5-29 11:31:20

5

标签: 测温  NTC  AVR  ADC  

[原创]AVR M16热敏电阻测温LCM12864显示

热敏电阻用的是5K 玻璃封装(型号为MF58502F327);

液晶是7920(带字库)的控制器;

电路连接是VCC串5K电阻再串热敏电阻到地,ADC电压信号从5K电阻和热敏电阻之间取。

点击看大图

万能板图

点击看大图

热敏电阻特写,用热缩套管包裹

点击看大图

液晶特写

热敏电阻部分:
直接接AD,没有滤波处理。
 VCC
 ┯
┌┐
││R=5K
││
┕┛
 │━━━PC0
┌┐
││
││NTC
┕┛
 │
 ┷
 GND
液晶接口:
型号:TS12864A-3 控制器:ST7920
GND--------------VSS
+5v----------------VDD
NC-----------------V0
PA6---------------RW
PA5---------------E
PC0---------------DB0
   |
   | 
PC7---------------DB7
PD7---------------PSB
NC-----------------NC
PD1---------------RES
NC-----------------NC
+5V----------------A
GND---------------K

 

 

系统分类: 单片机   |   用户分类: AVR   |   来源: 原创   |   【推荐给朋友】

    阅读(1681)    回复(3)  

投一票您将和博主都有获奖机会!

  • xiaojianzhong

    2007-9-8 20:15:18

    这样简单的将信号直接接入ADC,应该会影响信号测量的质量,即产生较大误差。可以加调理电路,经放大器缓冲达到与阻抗变换的效果,再经滤波处理滤除高频噪声干扰。这样信号的信噪比就高了。我是这么认为的。但具体电路,我也不知该怎么设计。近来再设计热泵热水器控制器。遇到这个问题。

  • fabest

    2008-6-11 15:15:20

    具体看应用场合,楼主的方法是最简便的方式,电路简单,成本低。一般情况是没问题的。 但看了楼主的程序发现有问题,在计算最大最小值那里 for(i=1;i<8;i++) // 计算最大值和最小值索引号 { if(adc_value[i]>adc_value_ave) { if((adc_value[i]-adc_value_ave)>max_value) { max_value=adc_value[i]; max_index=1; } } else { if((adc_value_ave-adc_value[i])>min_value) { min_value=adc_value_ave-adc_value[i]; min_index=i; } } }

  • fabest

    2008-6-11 15:17:08

    应将这句 if((adc_value[i]-adc_value_ave)>max_value) { max_value=adc_value[i]; max_index=1; } 改为 if((adc_value[i]-adc_value_ave)>max_value) { max_value=adc_value[i]-adc_value_ave; max_index=i; } 不然最大值为测不出来,只能测出第一个比平均值大的数,楼主思考下。