设为首页收藏本站
查看: 729|回复: 0

【米尔瑞萨RZ/G2L开发板-创新应用】adc应用——基于热电偶的温控平台

[复制链接]

2

主题

0

回帖

42

积分

新手上路

积分
42
meiyao 发表于 2023-9-10 18:03:24 | 显示全部楼层 |阅读模式
开发过程:
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摄氏度,如图所示
微信图片_20230910175205.png 微信图片_20230910174645.jpg 微信图片_20230910174709.jpg
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[128];
                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发送到开发板。
最后运行效果如图所示
常温下的状态
微信图片_20230910174714.jpg

利用打火机烧烤传感器到80度左右
微信图片_20230910174725.jpg 820230910174753.jpg


回复

使用道具 举报

您需要登录后才可以回帖 登录

本版积分规则

Archiver|手机版|小黑屋|米尔科技论坛   

GMT+8, 2024-10-16 15:31 , Processed in 0.048825 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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