这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » AD转换的问题 急急急

共20条 1/2 1 2 跳转至

AD转换的问题 急急急

助工
2014-09-05 15:44:37     打赏

知道自己问的挺没水平的,可就是不知道这测出来的数是什么,电压?电流?.AD转换的寄存器还是有点不太明白,还有就是AD转换出来的是什么值,干什么用这数,它怎么计算的

下边是程序想知道ADC12MEM0这里的数是怎么算出来的,

 

我板子上的电路是在P6.0口接了一个滑动变阻器,这个应该是来改变电压的调整电流

 

#include<MSP430x14x.h>
#define Num_of_Results 8
static unsigned int results[Num_of_Results];


void main()
{
  WDTCTL=WDTPW+WDTHOLD;
  P6SEL|=0x01;//P6.0为数/模转换A0通道输入功能
  ADC12CTL0=ADC12ON+SHT0_8+MSC;//设置采样时间、打开DAC12模块
  ADC12CTL1=SHP+CONSEQ_2;//使用采样定时,设置转换模式
  ADC12IE=0x01;//使能ADC12IFG.0
  ADC12CTL0|=ENC;//使能转换
  P2DIR|=0xff;
 
  while(1)
  {
      ADC12CTL0|=ADC12SC;//开始转换
    _EINT();
    LPM0;
  }
  //while(1);
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12_ISR()
{
  static unsigned int index = 0;
 
  results[index]=ADC12MEM0;
  //P2OUT=results[index];
  index=(index+1)%Num_of_Results;
}


专家
2014-09-05 16:39:31     打赏
2楼
转换的是电压。AD就是模拟信号变为数字信号。

高工
2014-09-05 16:43:10     打赏
3楼

貌似AD采集的都是电压吧。

430没用过。这有个总结楼主看一下:http://xxdragon163.blog.163.com/blog/static/96743636201071233352326/

ADC12MEM0应该就是采集到的数据。

假设AD是12位的,那么这个采集到的数据,范围就是0~4096(2的12次幂)。

基准电压如果是3.3。

当采集到的数据是4096时,就是3.3V了。

当采集到的数据是2048时,就是1.65V了。

。。。。。。。类推。。。


专家
2014-09-05 16:45:36     打赏
4楼
首先,ADC转换只能转换电压值,所以计算出来的值肯定代表电压值的大小,比如说,你的参考电压是2.5v,当输入端的电压是2.5V时,转换出来的ADC值可能为4096,输入1.25V时,ADC值为2048。这是有一个对应关系的,根据对应关系的公式,你就能知道采样的模拟电压值是多少了。

助工
2014-09-05 17:10:20     打赏
5楼

嗯稍微明白一些了,但是还有一点疑问,像贴的这个程序,里面即没设置内部基准电压REFON,但是REF2_5也没设置 ,如果要设置内部基准电压为2.5V或是1.5V是不是必须先把REFON置位啊,那贴的这个程序里面是应该是外部电压3.3V吧(430板子上的电压),那如果我测出来的数据是1935,那么所测电压=1935*3.3/4096 大概是1.5V~1.6V之间的电压

还有一个问题如果所测的电压超出了这个基准电压怎么办,会有什么情况发生啊,会烧板子吗,


助工
2014-09-05 17:11:30     打赏
6楼

呵呵新手,实在不好意思了


助工
2014-09-05 17:14:15     打赏
7楼
有点明白了,我再琢磨琢磨,谢谢

高工
2014-09-05 19:16:06     打赏
8楼

不客气,论坛上大家都是相互帮助的


专家
2014-09-05 21:08:39     打赏
9楼
不会烧,超过的话,AD转换出来的值都是最大值4096。

专家
2014-09-06 11:24:00     打赏
10楼
有问题继续来,欢迎你。你在这里会提升很快的

共20条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]