【米尔瑞萨RZ/G2L开发板-创新应用】adc应用——基于热电偶的温控平台
开发过程:1、测试开发板adc的功能是否正常
2、在ubuntu上安装poky交叉编译器
3、将3.3v的电流经过常温下9k的热敏电阻,再经过一个1k的电阻,最后到在达地端,使用adc通道四读取热敏电阻和1k电阻之间的电压值
4、假设温度在一定范围内是线性变化,建立T1=k*adc1/4096+b和T2=k*adc2/4096+b方程组,通过两个温度值及对应的adc值进行校正系统。其中x前面的系数为adc数值/4096,0.10546875和0.32592733分别对应温度为29.6和60.2摄氏度,如图所示
5、在ubuntu上建立一个main.c,写上如下代码,实时读取温度
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <unistd.h>
void main()
{
float k=138.8013; //温度系数
float b=14.9608;
printf("start!\n");
#if 1
const char* fileName="/sys/bus/iio/devices/iio:device0/in_voltage4_raw";
#else
const char* fileName="/home/fang/MYIR/Dome/2_adc/test.txt";
#endif
while(1)
{
int fd=open(fileName,O_RDONLY);
if(fd<0)
{
printf("open file fial!\n");
}
char buf;
while(read(fd,buf,sizeof(buf)-1)>0)
{
int val=atoi(buf);
float tempVal=k*val*1.0/4096+b;
printf("tempVal:%.2f\n",tempVal);
//printf("%s,%d\n",buf,val);
}
close(fd);
sleep(1);
}
printf("ok\n");
}
通过$CC main.c -o app命令后生成一个可执行的文件,利用scp app root@192.168.3.32:/home/root发送到开发板。
最后运行效果如图所示
常温下的状态
利用打火机烧烤传感器到80度左右
页:
[1]