基于C8051F的模数转换及直流电机驱动系统中的应用
扫描二维码
随时随地手机看文章
1引言
随着微型计算机的迅速发展,单片机的性能也大大增强。本文介绍SiliconLabs公司的8位单片机C8051F001系列,该系列器件内部集成了A/D转换器,这给测量模拟信号带来了极大方便。利用单片机自身的PWM口可实现对电机数字系统的控制,提高了控制精度,大大简化了电路,符合小型化和低功耗的设计要求。
2ADC的内部结构和特点
C8051F001/2/5/6/7系列自带一个9通道的可配置模拟开关(AMUX),一个可编程增益放大器(PGA)和一个100kS/s,12位分辨率的逐次逼近型ADC,ADC还集成了跟踪保持电路和可编程窗口检测器。AMUX、PGA、模数转换方式和窗口检测器都可通过软件对特殊功能寄存器的设置来实现。模拟多路开关AMUX中的8个通道用于外部测量,第9通道内部接至片内温度传感器。采样的模拟量由多路开关配置后进入可编程放大器。值得注意的是,PGA的增益对温度传感器也起作用。PGA增益可以用软件编程为0。5、1、2、4、8或16,复位时的默认增益为1。可以对AMUX编程为工作在差分方式或单端方式。系统复位后AMUX的默认方式为单端输入。ADC功能框图如1所示。
3ADC工作原理
从外围设备中采集出来的模拟量被选通后,由采样和保持电路通过PGA增益放大,经过一个12位的逐次逼近寄存器(SAR)转化为数字量,具体过程是将二进制规则变化的参考电压逐次与模拟输入电压作比较,以寻找一个与输入电压最接近的参考电压,最后在逐次逼近寄存器(SAR)中获得12位的转换结果。
4初始化设置
设置寄存器REF0CNR的0位选择是否应用内部电压基准缓冲器,设置AMUX配置寄存器A-MUX0CF以选择模拟端口的输入方式。通道选择寄存器AMUX0SL的低3位用于选择0~7个通道或者温度传感器(AMXAD0),配置寄存器ADC0CF用来设置SAR转换时钟和ADC内部放大增益。控制寄存器ADCOCN用于设置ADC启动方式、ADC窗口比较中断及ADCOH和ADCOL的对齐方式。最后将ADCEN置1,使能ADC,准备转换数据。寄存器ADCOCN的内容如图2所示。
5ADC的启动方式
A/D转换的启动方式有4种,由ADC0CN的ADC启动转换方式选择位(ADSTM1,ADSTM0)的状态决定。转换触发源有:
1)写1到ADC0CN的ADBUSY位;
2)定时器3溢出(即定时的连续转换);
3)外部ADC转换启动信号的上升沿,CNVSTR;
4)定时器2溢出(即定时的连续转换)。
向ADBUSY写1方式提供在需要时用软件控制ADC启动转换的性能。ADBUSY位在转换期间置1,转换结束后复0。ADBUSY位的下降沿触发一个中断(当被允许时)并置1中断标志ADCINT。注意:当转换是由软件(on-demand)启动时,应查询ADCINT标志(而不是ADBUSY)判断转换何时结束。转换结果保存在ADC数据字的MSB和LSB寄存器:ADC0H和ADC0L中。转换数据在寄存器对ADC0H:ADC0L中的存储方式可以是左对齐或右对齐,由ADC0CN寄存器中ADLJST位的编程状态决定。
6ADC可编程窗口检测器
8051中的ADC可编程窗口检测器非常有用。它不停地将ADC输出与用户编程的限制量进行比较,并在检查到越限条件时通知系统控制器,这在中断驱动的系统中尤其有效,既可以节省代码空间和CPU带宽,又能提供快速响应时间。窗口检测器中断标志(ADCOCN中的ADWINT位)也可被用于查询方式。参考字的高字节和低字节被装入到ADC下限(大于)和ADC上限(小于)寄存器(ADC0GTH、ADC0GTL、ADC0LTH和ADC0LTL)。注意,窗口检测器标志即可以在测量数据位于用户编程的极限值以内时有效,也可以在测量数据位于用户编程的极限值以外时有效,这些全部取决于ADC0GTx和ADC0LTx的编程值。
7实际应用
图3是直流测速发电机与单片机的接口电路。在该系统中,通过单片机口产生PWM信号控制直流电机的转速。在直流电机的轴上安装直流测速发电机,用来测量电动机的转速,测速发电机输出是模拟量,所以必须经过A/D转换将输出信号转换成数字测速信号,通过单片机将测速信号和给定的PWM信号进行比较,用于加速或减速。从而形成电动机的闭环控制系统。
该电路采用了C8051005单片机。用模拟通道0采集信号,采用2。4V内部参考电压,模拟输入端具有限流和限压保护。直流测速发电机要与被测电机同轴,两者以相同转速转动,测速发电机的输出电压必须经过RC滤波处理后才能得到稳定的直流电压。R1为限压电阻,调整滑动变阻器的位置使测速电机达到最大转速时,滑变抽头采样得到的电压为2。4V。通过脉宽调制PWM控制开关管工作的开关状态,栅极输入高电平时,开关管导通,12V电压加在电动机两端,时间为t1;栅极输入低电平时,开关管截止,电动机两端电压为0,时间为t2。可得到占空比a=t1/(t1+t2)。在t2时段内,电源断开,电动机电感通过二极管D1释放电能,D1起到续流作用。
图4为产生PWM波的程序图,图5为调速子程序的流程图。
CA生成PWM波主要是调节PCA0CPH0的值改变PWM波的占空比a=[256-(PCA0CPH0)]/256。下面是调速子程序,设电机给定值存放在50H单元中。
8进行A/D转换时应注意的问题
8。1信号处理
C8051F内部基准电压的范围为AGND~AV±0。3V,任意引脚在任何情况下(不论ADC或PGA的设置如何)必须使其输入电压保持在AGND和AV+之间,如果测试的模拟输入电压范围为0~5V,必须使信号衰减才能输入ADC引脚。这里用到8051内部的PGA(可编程增益放大器)。如果选用放大倍数为0。5倍,那么信号将衰减一半。如使用外部1。25V参考电压,PGA增益GAIN为0。5,允许的电压输入范围是0V~2。5V,AIN电压还必须在AGND和VREF/GAIN之间。假设一个12位的ADC,AINx引脚的输人电压小于AGND,结果将是0x000;如果输入电压大于(VREF/GAIN),结果将是0xFFF。[!--empirenews.page--]
要注意的是,PGA不会改变信号的最大输入范围。同样当使用外部VREF时,也要求VREF的最大值比AV+小300mV,建议采用MAX873作为外部基准电压源。
8。2抗扰处理
C8051F的ADC转换结果一般很准确,但如果A/D转换后测得的数据跳变很大,那么很有可能是输入信号中有干扰脉冲,需要加抗扰处理:
1)将模拟电源和数字电源分开,电源之间的电压差必须满足数据手册中的规定D<0。5V。
2)将模拟地和数字地分开,不能混用。注意一定要在远离CPU处(或电源处)通过导线连接,否则会在CPU的模拟地和数字地引脚之间产生电势差,造成系统不稳定,甚至死机现象。
3)没有用到的模拟引脚要接模拟地。
4)在VREF引脚接0。1μF和4。7μF电容,用于滤波和抑制噪声。
5)模拟信号的输入电压不能超过AV+-0。3V,为保证模拟输入引脚不被高电平损伤,要采取保护措施,如加入稳压二极管MBR360等。另外为防止模拟输入通过大的电流,还要在模拟引脚和模拟地之间加一只1μF的电容。