STC单片机ADC接口实现8通道霍尔元件直流电流测量
1,采用十位二进制分辨率实现了8通道综合显示精度0.5%。霍尔元件直流电流测量,实际应用于太阳能控制系统和LED灯具老化测试。
采用霍尔元件实现完全与被测电路绝缘。
2,由于霍尔元件输出信号弱需要较大的放大倍数,所以测量部分采用了16级滤波算法。
3,尽管采用了高精度电阻但是由于放大倍数高,造成每个通道的实际测量值不一致,
必须采用每个通道单独进行线性标定。就是确认初始偏移量和显示值与实际安培数相符。
为了大批量生产还必须实现自动参数标定,标定后参数记忆。
4,实际电流值可以在PLC的主机上的四位数码管上显示,并且与梯形图程序联动。
下面是模拟量采样相关代码
;/*----------------------------
;Initial ADC sfr
;----------------------------*/
;
;/*Declare SFR associated with the ADC */;
;/*Define ADC operation const for ADC_CONTR*/
ADC_POWER EQU 80H ;ADC power control bit
ADC_FLAG EQU 10H ;ADC complete flag
ADC_START EQU 08H ;ADC start control bit
ADC_SPEEDLL EQU 00H ;420 clocks
ADC_SPEEDLEQU 20H ;280 clocks
ADC_SPEEDHEQU 40H ;140 clocks
ADC_SPEEDHH EQU 60H ;70 clocks
;
ADC_ADRJ EQU 20H ;ADRJ in AUXR1 0 As ADC_RES has 8 bits, 1 As ADC_RESL has low 8 bits
ADC_EADC EQU 20H ;enable ADC interrupt
;
;ADCCH DATA 20H ;ADC channel NO.
;/*----------------------------
;Initial ADC sfr
;----------------------------*/
INIT_ADC:
clr ADCSet
MOV P1ASF,#0FFH ;Open 8 channels ADC function
orl PCON2,#ADC_ADRJ ;set ADC_ADJ to 1
; anl AUXR1,#(NOT (ADC_ADRJ)) ;set ADC_ADJ to 0
MOV ADC_RES,#0 ;Clear previous result
mov ADC_RESL,#0
mov a,ADCChCnt ;get channel number
ORL A,#(ADC_POWER OR ADC_SPEEDLL OR ADC_START)
MOV ADC_CONTR,a ;set control register for ADC
MOV A,#2 ;ADC power-on and delay
LCALL Delays
setb EADC ;enable interrupt
setb ea
RET
;/*----------------------------
;ADC interrupt service routine
;----------------------------*/
;/*----------------------------
;ADC interrupt service routine
;----------------------------*/
BUMP_MASK equ 0Fh ;mask out bump index
BUMP_TRIAL equ 16 ;trial size pointor
ADC_ISR:
clr ea
PUSH PSW
PUSH ACC
mov AdcIndex,ADCChCnt
ANL ADC_CONTR,#(NOT(ADC_FLAG));Clear ADC interrupt flag
mov a,ADC_RESL ;ADC_RES ;ADC_RESL ;get low byte
mov CurTl,a
MOV A,ADC_RES ;Get ADC high 8-bit result
anl a,#03h ;10 bits Result
mov CurTh,a
INC ADCChCnt
ANL ADCChCnt,#07H
mov a,ADCChCnt
ORL A,#(ADC_POWER OR ADC_SPEEDLL OR ADC_START)
MOV ADC_CONTR,A ;ADC power-on delay and re-start A/D conversion
setb ADCSet
POP ACC
POP PSW
setb ea
RETI
看到汇编不由得心中一惊.wc,大神. 好 模块扩展用的SPI?
页:
[1]