1. AD7416简介
1. 概述
AD7416是有8个管脚的温度监测器。该温度监测器可通过多路复用器的0通道进行访问。片上寄存器可编程控制极限温度,当温度超过极限时漏极开路温度过热指示器(OTI)处于工作状态。AD7417和AD7418分别是10位,4通道和单通道的ADC,其片上温度传感器可用2.7V~5.5V电压供电。该装置包含一个约15μs的转换器,5通道多路复用器,温度传感器,时钟振荡器,跟踪-保持器和一个2.5V的参考电压。
2. 特点
●10位ADC,转换时间15μs和30μs
●单通道和4单通道模拟输入
●片上跟踪-保持
●温度过热指示
●转换结束自动掉电
●供电电压范围:2.7V~5.5V
●I2C兼容串口
●串行总线地址允许八个AD7416/AD7417连接到一条总线上
●AD7416可代替LM75
3. 封装
2. 编写应用软件读取温度
1. 软件代码
这部分代码将编译成为CGI程序,供BOA调用
hello.c
#include <stdio.h>
#include <time.h>
#include <fcntl.h>
#include <linux/i2c-dev.h>
#include <errno.h>
#define I2C_ADDR 0x49
typedef unsigned char uint8;
static int read_HWclock(int fd, char buff[], int addr, int count)
{
unsigned char ZorF; //正还是负
int res;
unsigned int tempeture = 0;
float wendu;
if(write(fd,&addr,1)!=1) //写地址失败
{
return -1;
}
res=read(fd,buff,count);
tempeture = buff[0];
tempeture=tempeture<<8;
tempeture=tempeture|buff[1];
tempeture=tempeture>>6;
if(buff[0]&0x80) //负
{
tempeture=tempeture-0x01;
tempeture=~tempeture; //变回原码
tempeture=tempeture&0x03FF;
wendu = (float)((double)tempeture/4);
ZorF=0;
}
else //正
{
wendu = (float)((double)tempeture/4);
ZorF=1;
}
printf("%.2f",wendu);
return res;
}
int main(void)
{
time_t now;
struct tm *timenow;
char strtemp[255];
int fd;
char buf[3];
char val,value;
float flight;
fd=open("/dev/i2c-1",O_RDWR);
if(fd<0){
printf("err open file:%s\r\n",strerror(errno)); return 1;
}
if(ioctl( fd,I2C_SLAVE,I2C_ADDR)<0 ){
printf("ioctl error : %s\r\n",strerror(errno));return 1;
}
else{
printf("ioctl ok \r\n");
}
int addr = 0;
time(&now);
timenow = localtime(&now);
printf("Content-Type: text/html \n\n");
printf("<html>\n");
printf("<head><meta http-equiv=\"refresh\" content=\"3\"><title>CGI Output</title></head>\n");
printf("<body>\n");
printf("<h1>");
read_HWclock(fd,buf,addr,2);
printf("</h1>\n");
printf("</body>\n");
printf("</html>\n");
return 0;
}
2. 编译CGI
将文件通过FileZilla上传到树莓派的/home/pi目录下
使用如下命令进行编译,并将hello.cgi拷贝到/var/www/cgi-bin目录下
gcc -o hello.cgi hello.c
cp hello.cgi /var/www/cgi-bin
3. 远程登录,查看CGI效果
再浏览器的地址栏输入:http://192.168.3.106/cgi-bin/hello.cgi,IP地址根据树莓派的实际地址填写