|
这一期给大家带来的是DAC的电压控制输出,在实际控制过程中需要对某些电机进行电压控制。以往在使用DAC的时候,一般都是5V输出,这次改换为3.3V输出(实测为3.28V)有点难搞,需要增加一个升压电路才能达到原来的控制效果。我就给大家讲一下ADC的控制,至于升压电路嘛,大家可以发挥自己的才智去思考一下。老规矩,贴代码。
void StartDAC(){ if(Tab[0]==0x02) { a=(Tab[1]<<24)|(Tab[2]<<16)|(b<<8)|c; DacCfg(DACCON_CLR_Off,DACCON_RNG_IntVref,DACCON_CLK_HCLK,DACCON_MDE_12bit); printf("DAC=%fmV\r\n",(1200.0/4095*((Tab[1]<<8)|Tab[2]))); DacWr(0,a); Tab[0]=0x00; Tab[1]=0x00; Tab[2]=0x00; }}不需要初始化函数了,直接在while循环里见吧。上面的函数就是对DAC输出的直接控制了,函数也挺容易理解的,我就给大家简单说一下吧。还是接着之前的几篇经验,所以这里就比较好理解了。首先这个数组在之前就已经定义过了,这里只需要调用一下就好,然后由于DacWr()函数需要写入32位数据,所以我将数组里第二位数据左移24位(第一位数据是标志),然后和后面的数据组合就可以组成DAC控制数据了。举个例子,比如D540000,输出就是1V,因为调用的是内部参考电压,所以计算过程就是:1200/4095*D54=1000mV,当然D54要转换成十进制数的。才串口界面打印出来的就是DAC的输出电压,还是比较精确的。经过多次测试,误差大概在0.1mv左右,基本上满足测试要求。初始化函数不需要,但是记得要和之前几篇经验中写的一样,将Start函数放到指定位置。 |
|