C8051F的模数转换及直流电机驱动系统中的应用
发布时间:2008/6/3 0:00:00 访问次数:699
1 引言
随着微型计算机的迅速发展,单片机的性能也大大增强。本文介绍silicon labs公司的8位单片机c8051f001系列,该系列器件内部集成了a/d转换器,这给测量模拟信号带来了极大方便。利用单片机自身的pwm口可实现对电机数字系统的控制,提高了控制精度,大大简化了电路,符合小型化和低功耗的设计要求。
2 adc的内部结构和特点
c8051f001/2/5/6/7系列自带一个9通道的可配置模拟开关(amux),一个可编程增益放大器(pga)和一个100 ks/s,12位分辨率的逐次逼近型adc,adc还集成了跟踪保持电路和可编程窗口检测器。amux、pga、模数转换方式和窗口检测器都可通过软件对特殊功能寄存器的设置来实现。模拟多路开关amux中的8个通道用于外部测量,第9通道内部接至片内温度传感器。采样的模拟量由多路开关配置后进入可编程放大器。值得注意的是,pga的增益对温度传感器也起作用。pga增益可以用软件编程为0.5、1、2、4、8或16,复位时的默认增益为1。可以对amux编程为工作在差分方式或单端方式。系统复位后amux的默认方式为单端输入。adc功能框图如1所示。
3 adc工作原理
从外围设备中采集出来的模拟量被选通后,由采样和保持电路通过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所示。
5 adc的启动方式
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位的编程状态决定。
6 adc可编程窗口检测器
8051中的adc可编程窗口检测器非常有用。它不停地将adc输出与用户编程的限制量进行比较,并在检查到越限条件时通知系统控制器,这在中断驱动的系统中尤其有效,既可以节省代码空间和cpu带宽,又能提供快速响应时间。窗口检测器中断标志(adcocn中的adwint位)也可被用于查询方式。参考字的高字节和低字节被装入到adc下限(大于)和adc上限(小于)寄存器(adc0gth、adc0gtl、adc0lth和adc0ltl)。注意,窗口检测器标志即可以在测量数据位于用户编程的极限值以内时有效,也可以在测量数据位于用户编程的极限值以外时有效,这些全部取决于adc0gtx和adc0ltx的编程值。
7 实际应用
图3是直流测速发电机与单片机的接口电路。在该系统中,通过单片机口产生pwm信号控制直流电机的转速。在直流电机的轴上安装直流测速发电机,用来测量电动机的转速,测速发电机输出是模拟量,所以必须经过a/d转换将输出信号转换成数字测速信号,通过单片机将测速信号和给定的pwm信号进行比较,用于加速或减速。从而形成电动机的闭环控制系统。
该电路采用了c8051005单片机。用模拟通道0采集信号,采用2.4 v内部参考电压,模拟输入端具有限流和限压保护。直流测速发电机要与被测电机同轴,两者以相同转速转动,测速发电机
1 引言
随着微型计算机的迅速发展,单片机的性能也大大增强。本文介绍silicon labs公司的8位单片机c8051f001系列,该系列器件内部集成了a/d转换器,这给测量模拟信号带来了极大方便。利用单片机自身的pwm口可实现对电机数字系统的控制,提高了控制精度,大大简化了电路,符合小型化和低功耗的设计要求。
2 adc的内部结构和特点
c8051f001/2/5/6/7系列自带一个9通道的可配置模拟开关(amux),一个可编程增益放大器(pga)和一个100 ks/s,12位分辨率的逐次逼近型adc,adc还集成了跟踪保持电路和可编程窗口检测器。amux、pga、模数转换方式和窗口检测器都可通过软件对特殊功能寄存器的设置来实现。模拟多路开关amux中的8个通道用于外部测量,第9通道内部接至片内温度传感器。采样的模拟量由多路开关配置后进入可编程放大器。值得注意的是,pga的增益对温度传感器也起作用。pga增益可以用软件编程为0.5、1、2、4、8或16,复位时的默认增益为1。可以对amux编程为工作在差分方式或单端方式。系统复位后amux的默认方式为单端输入。adc功能框图如1所示。
3 adc工作原理
从外围设备中采集出来的模拟量被选通后,由采样和保持电路通过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所示。
5 adc的启动方式
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位的编程状态决定。
6 adc可编程窗口检测器
8051中的adc可编程窗口检测器非常有用。它不停地将adc输出与用户编程的限制量进行比较,并在检查到越限条件时通知系统控制器,这在中断驱动的系统中尤其有效,既可以节省代码空间和cpu带宽,又能提供快速响应时间。窗口检测器中断标志(adcocn中的adwint位)也可被用于查询方式。参考字的高字节和低字节被装入到adc下限(大于)和adc上限(小于)寄存器(adc0gth、adc0gtl、adc0lth和adc0ltl)。注意,窗口检测器标志即可以在测量数据位于用户编程的极限值以内时有效,也可以在测量数据位于用户编程的极限值以外时有效,这些全部取决于adc0gtx和adc0ltx的编程值。
7 实际应用
图3是直流测速发电机与单片机的接口电路。在该系统中,通过单片机口产生pwm信号控制直流电机的转速。在直流电机的轴上安装直流测速发电机,用来测量电动机的转速,测速发电机输出是模拟量,所以必须经过a/d转换将输出信号转换成数字测速信号,通过单片机将测速信号和给定的pwm信号进行比较,用于加速或减速。从而形成电动机的闭环控制系统。
该电路采用了c8051005单片机。用模拟通道0采集信号,采用2.4 v内部参考电压,模拟输入端具有限流和限压保护。直流测速发电机要与被测电机同轴,两者以相同转速转动,测速发电机