arduino 模拟信号输出怎么输出模拟量

[开发案例] 为Arduino模拟量传感器添加物联App功能
> [开发案例] 为Arduino模拟量传感器添加物联App功能
[开发案例] 为Arduino模拟量传感器添加物联App功能
Karlno从网上淘了两个Arduino传感器,一个光照强度,一个土壤湿度,输出都是模拟量电压的,因为万纳模块有ADC输入功能,于是不需编程,将他们很方便的接到了酷享系统里。【图】光照强度传感器、土壤湿度传感器【图】万纳模块【图】硬件连接硬件连接很简单,将两个传感器的输出口,接到万纳模块的IO1和IO2即可。两个传感器及万纳模块都要供电。实际连接的时候,直接用了万纳模块实验板,用杜邦线就可以完成连接。逻辑上,万纳模块连接传感器,将数据采集并传给酷享系统主机(主节点),主节点类似路由器,自动将数据上报到云端和App中。万纳模块出厂的时候,是空白配置,可以搜索并使用官方的ADC配置。官方ADC配置是将IO1-IO4配置成ADC输入的,我们实际使用了两路。如上图,搜索电压,选择&电压采集设备(百分值)&这个配置,并将它从云端下载下来。配置文件可以通过产品编辑器直接打开查看或者编辑,可以修改成我们需要的功能,不过这里使用默认即可。&电压采集设备(百分值)&这个配置文件,使用了万纳模块的IO1-IO4这四个IO口,将他们配置成了ADC采集,并新建了4个变量,并将ADC采集的结果放到这四个变量里。由于ADC采集的结果实际是一个0-3300的电压值,即0-3.3V。配置文件里通过设置ADC的因子参数为3.3,将ADC采样值除以3.3,得到的就是百分值,这个数值会存储到变量中。附件:电压采样设备(百分值显示)(示范)给酷享系统主机上电,连上网线,通过主机,将配置文件下载到万纳模块中,万纳模块就会被配置成相应功能。如果设计者希望将传感器封装成产品,那可以一次性量产一批万纳模块嵌入到产品中,对于终端用户而言,是不需要接触上述配置工具的。打开App,添加设备,搜索设备类型&电压&,选择&电压采集设备(百分值)&,这个跟刚才的是同一个文件,存储于云端。搜索万纳模块,并添加进去。由于&电压采集设备(百分值)&是一个示范产品,所以没有绑定UI,我们可以搜YwRobot这个UI,将其设置给设备。添加完成之后,就可以点击设备,看到我们模块传来的数据了。任何地方只要手机有网络,都可以看到设备数据。产品型号文件(也就是万纳模块配置文件)及设备UI,可以自己修改,可以本地调试,也可以上传到云,可以实现功能很多,文件见附件。如果使用的主节点是带屏幕的,这些数据可以展示到液晶屏上。可以将传感器数据做成触发源来触发情景动作,比如实现&当光照强度低于60,并且持续了300秒后,就打开灯光或者插座&之类的联动。联动是脱离手机运行的,不需要App在线。附件:UI感谢YwRobot厂商提供的传感器及相关资料、资源。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一PCF8591A/D转换 模拟输入通道的问题 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
PCF8591A/D转换 模拟输入通道的问题
助理工程师
16:07:28  
AD电路图 和数据手册 均已上传&&还是搞不懂四个模拟输入通道到底是怎么回事,从电路图上看不是只用到了AIN0和AIN1吗?AIN2和AIN3 就是没有输入了?? 还有就是 AD转换时的ADC发送字节[命令]数据函数在数据手册上AD转换就直接读就可以啦,为什么还要写这个函数,不懂??求大神指点,灰常感谢。。。
#include&reg52.h&
#include &I2C.H&
#include &PCF8951.H&
//此表为 LED 的字模, 共阴数码管 0-9&&-
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char AD_CHANNEL;
unsigned long xdata&&LedOut[8];
unsigned int&&D[32];
/*******************************************************************
DAC 变换, 转化函数& && && && && &
*******************************************************************/
bit DACconversion(unsigned char sla,unsigned char c,&&unsigned char Val)
& &Start_I2c();& && && && &&&//启动总线
& &SendByte(sla);& && && && &
& &if(ack==0)return(0);& && &&&
& && && && && && && && && && && && && && && && &
& &SendByte(c);& && && && &&&//发送控制字节
& &if(ack==0)return(0);
& &SendByte(Val);& && && && &//发送DAC的数值&&
& &if(ack==0)return(0);
& &Stop_I2c();& && && && && &//结束总线
& &return(1);
/*******************************************************************
& && && && && &
*******************************************************************/
bit ISendByte(unsigned char sla,unsigned char c)
& &Start_I2c();& && && && &&&//启动总线
& &SendByte(sla);& && && && &//发送器件地址&&  谁是发送器??单片机还是8951????
& &if(ack==0)return(0);
& &SendByte(c);& && && && &&&//发送数据
& &if(ack==0)return(0);
& &Stop_I2c();& && && && && &//结束总线
& &return(1);
/*******************************************************************
ADC读字节数据函数& & 读取AD转换的数据& && && &&&
*******************************************************************/
unsigned char IRcvByte(unsigned char sla)
& &Start_I2c();& && && & //启动总线
& &SendByte(sla+1);& && &//发送器件地址 +1为了是读模式
& &if(ack==0)return(0);
& &c=RcvByte();& && && & //读取数据0
& &Ack_I2c(1);& && && &&&//发送非就答位
& &Stop_I2c();& && && &&&//结束总线
& &return(c);
//******************************************************************/
{&&char i,j;
{/********以下AD-DA处理*************/&&
&&switch(AD_CHANNEL)& &&&
& &{& && &&&
& && && && && && && && && && && && && && && && && && & //&&四个通道又是起什么作用呢???
& &&&case 0: ISendByte(PCF);
& && && && & D[0]=IRcvByte(PCF8591)*2;&&//ADC0 模数转换1&&放大2倍显示 case0是用来读取8591第一通道所采集到模拟量的值
& && && & //0x41是控制字节&&D[0]=IRcvByte(PCF8591)*用来读取AD转换的数据
&&case 1: ISendByte(PCF);
& && && && & D[1]=IRcvByte(PCF8591)*2;&&//ADC1&&模数转换2& & 4个模拟输入在该单片机中只用到两个
&&case 2: ISendByte(PCF);
& && && && & D[2]=IRcvByte(PCF8591)*2;&&//ADC2 模数转换3
&&case 3: ISendByte(PCF);
& && && && & D[3]=IRcvByte(PCF8591)*2;&&//ADC3& &模数转换4
&&case 4: DACconversion(PCF, D[4]/4); //DAC& &数模转换
& && &&&D[4]=400;&&//数字---&&模拟输出
& & D[4]=D[0];&&//& &把模拟输入 采样的信号 通过数模转换输出 即把D0 转化成模拟量输出
& &if(++AD_CHANNEL&4) AD_CHANNEL=0;
/********以下将AD的值送到LED数码管显示*************/
&&LedOut[0]=Disp_Tab[D[1]%];
& &&&LedOut[1]=Disp_Tab[D[1]%];
& &&&LedOut[2]=Disp_Tab[D[1]%100/10]|0x80;
& &&&LedOut[3]=Disp_Tab[D[1]%10];
&&LedOut[4]=Disp_Tab[D[0]%];
& &&&LedOut[5]=Disp_Tab[D[0]%];
& &&&LedOut[6]=Disp_Tab[D[0]%100/10]|0x80;
& &&&LedOut[7]=Disp_Tab[D[0]%10];&&
&&for( i=0; i&8; i++)
&&{&&P0 = LedOut;
& &switch(i)& &//使用switch 语句控制138译码器&&也可以是用查表的方式 学员可以试着自己修改& && &
& && &{& &&&
& &case 0:LS138A=0; LS138B=0; LS138C=0;& && && &
& && && &case 1:LS138A=1; LS138B=0; LS138C=0;& && && && &&&
& && && &case 2:LS138A=0; LS138B=1; LS138C=0;
& && && &case 3:LS138A=1; LS138B=1; LS138C=0;
& &case 4:LS138A=0; LS138B=0; LS138C=1;
& &case 5:LS138A=1; LS138B=0; LS138C=1;
& &case 6:LS138A=0; LS138B=1; LS138C=1;
& &case 7:LS138A=1; LS138B=1; LS138C=1;
& && &for (j = 0 ; j&90 ;j++) { ;}& & //扫描间隔时间
& &&&P0 = 0;
本帖子中包含更多资源
才可以下载或查看,没有帐号?
11:57:37  
第一个红色部分当然要加,就算你直接读8591也要先发送读寄存器的地址呀(就是上面也的控制字),不然单片机都不知道去读哪个数据。
第二个红色部分的程序只用到了CASE0、1、4。用来存取和处理都出的数据
助理工程师
14:55:31  
最近我很跳 发表于
第一个红色部分当然要加,就算你直接读8591也要先发送读寄存器的地址呀(就是上面也的控制字),不然单片机 ...
请问模拟输入4 都没有接输入,怎么用啊?
22:17:01  
本帖最后由 最近我很跳 于
22:18 编辑
独孤辉二 发表于
请问模拟输入4 都没有接输入,怎么用啊?
D[4]并不是模拟输入的第4通道,D[4]是数字信号转模拟信号,你看程序。把数字信号转成模拟信号后AOUT输出给LED。
14:49:24  
这个就是普中科技那个啊,我有啊
14:36:26  
#include &PCF8951.H&这个程序是??
14:37:09  
请指点.。。。。。。。。。。。楼主
16:50:44  
都只是在学习怎么用
16:23:50  
电路图是这个样子么?看着有点别扭啊
20:59:22  
01:17:45  
等待验证会员
23:12:46  
我遇到的问题和你一样,放在数码管上根本就没有什么转换的数值变化
等待验证会员
15:52:42  
第一个红色部分当然要加,就算你直接读8591也要先发送读寄存器的地址呀(就是上面也的控制字),不然单片机都不知道去读哪个数据。
第二个红色部分的程序只用到了CASE0、1、4。用来存取和处理都出的数据
感觉有点明白了
11:56:28  
图中那个LED灯也就是DA是不是接错了
15:30:55  
学习中。。。。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司推荐这篇日记的豆列
&&&&&&&&&&&&请问您的问题如何解决的,关于arduino模拟量输入分辨率低的问题!_百度知道
请问您的问题如何解决的,关于arduino模拟量输入分辨率低的问题!
请问您的问题如何解决的,关于arduino模拟量输入分辨率低的问题!
我有更好的答案
如果你觉得他自带的ADC分辨率低的话;你可以 自己在外接一个ADC来转换;用arduino来接受数据处理就行了
采纳率:76%
来自团队:
为您推荐:
其他类似问题
模拟量输入的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【求教】光敏电阻,通过模拟口得到模拟量后如何转换为光照强度?【arduino吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:54,329贴子:
【求教】光敏电阻,通过模拟口得到模拟量后如何转换为光照强度?收藏
arduino, 750多家厂商代理,100多万种现货库存,当天出货,免费送货.
你可以先用标准照度计来标定光敏电阻的值,然后找出转换方式再编程
春泥大哥说的有道理
要想转换成光照度最好用光功率计 去掉背景噪声的情况下测定每个光照强度对应的光敏电阻输出值就可以了 祝你成功
你买过学习板吗?那有你想知道的问题和例子
登录百度帐号推荐应用}

我要回帖

更多关于 arduino 模拟量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信