搜索
bottom↓
回复: 7

关于菜鸟用51来实现温度变送器的想法,求各路大神拍砖

[复制链接]

出0入0汤圆

发表于 2012-12-29 21:59:49 | 显示全部楼层 |阅读模式
快放假了,做个温度变送器来玩玩,如果有什么缺点或者不足,请各路大神拍砖......谢谢
传感元件:18B20....(貌似好慢~!)
输出信号:0-5V/0-10V/4-20mA
操作温度0-70度
主控IC:STC12C5A60S2
精度:没有测...
系统框架:电源模块,MCU,低通滤波,显示模块
器件:STC12C5A60S2,LM324,LM2596,......
废话少说,上图!!!!!
原理图:
电源模块..........


主控模块..........


PWM输出处理...........


编程思维: 如何进行0-5V输出呢?----->PWM通过RC滤波再电压跟随输出(如何用PWM变成一个电压呢)------>调节占空比------------>怎么样调节占空比------>将温度0-70的温度值(TEMP)分成256个区间,通过某一段温度就属于某一段的占空比(TEMP/29)!!!!

付上代码一段:
/*********************************************************************************************
程序名:   main.c
编写人:   Michael Chan 
时间:          2012年11月2日
硬件支持:  STC12C5A60S2 外部18.432MHz晶振
接口说明:  蜂鸣器                P20
                         指示灯                P11
                         功能键                P24
                         18B20                P23
                         液晶指示灯        P13
                                    
修改日志:  

/*********************************************************************************************
说明:
                对现场进行测温,对温度范围进行分割,输出PWM波

/*********************************************************************************************/
#include"stc12c5a.h"
#include"lcd.h"
#include"18b20.h"
#include"other.h"
#include"pwm.h"
#define uchar unsigned char
#define uint unsigned int

uchar tnum=0;
bit flag=1;

void timer_init();
void tem_handle();

void main()
{
        uint tem;
        timer_init();

        LCD_init();
        PWM_init ();
        while(1)
        {
                 if(flag==0)
                {
                         flag=1;
                        tem_handle();
                        tem=getTmpValue();

                        if(tem>=0&&tem<=7000)
                        {
                                tem/=29;//pwm转换公式
                                PWM0_set(tem);
                        }
                }
                               
        }
}

void Timer0Interrupt() interrupt 1
{
    TH0 = 0x15;
    TL0 = 0xa0;
        tnum++;
        if(tnum==20)
           {
                tnum=0;
                flag=0;
        }
}
void timer_init()
{
    TMOD = 0x01;
    TH0 = 0x15;                 //5ms
    TL0 = 0xa0;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
void tem_handle()
{
        sendChangeCmd();
        write_com(0x80+0x40+6);
        display(getTmpValue());
        write_com(0x80+0x40+12) ;
        write_str("C",1);
}




待续.............................................................................

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2012-12-29 22:06:33 | 显示全部楼层
温度变送器???

出0入0汤圆

 楼主| 发表于 2012-12-29 22:08:44 | 显示全部楼层
HiWorld 发表于 2012-12-29 22:06
温度变送器???

对,只不过,18B20的原理图没有弄出来

出0入0汤圆

发表于 2012-12-29 22:09:27 | 显示全部楼层
18B20貌似是比较慢,但是最麻烦的还是时序要求太严格。。。。

出0入0汤圆

 楼主| 发表于 2012-12-29 22:12:57 | 显示全部楼层
HiWorld 发表于 2012-12-29 22:09
18B20貌似是比较慢,但是最麻烦的还是时序要求太严格。。。。

时序耐心点就可以搞好了,但是这个变送器精度就不得而知了,那个算法不知道可以不?

出0入98汤圆

发表于 2012-12-29 22:33:32 | 显示全部楼层
精度

18B20测温精度不低
PWM做DAC精度不高

算法精度要高还可以通过标定来补偿
你可以另外做个模拟环路调整

出0入0汤圆

 楼主| 发表于 2012-12-29 22:42:03 | 显示全部楼层
rclong 发表于 2012-12-29 22:33
精度

18B20测温精度不低

请问温度标定是怎么样,还有模拟环路是用来调整电压输出的吗??

出0入98汤圆

发表于 2012-12-29 23:08:18 | 显示全部楼层
草芥风中散 发表于 2012-12-29 22:42
请问温度标定是怎么样,还有模拟环路是用来调整电压输出的吗??

说来话长

标定就是拿你的测量系统跟标准值比较

例如你用一个精度更高的温度计测得你18b20处温度实际值为20摄氏度
那么根据换算应该输出多少? 实际输出多少? 误差多少?
如此进行标定

获得大量数据还可以绘制出实测曲线 再用最小二乘法修正误差或者直接查表补偿误差

模拟环路嘛 你可以找颗LM35跟你这个系统对比看看
分析一下LM35的模拟测温原理 就可以知道大致如何修正自己的系统了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 10:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表