meiyao 发表于 2023-9-10 18:03:24

【米尔瑞萨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]
查看完整版本: 【米尔瑞萨RZ/G2L开发板-创新应用】adc应用——基于热电偶的温控平台