无电流采样dsPIC33开发套件
今天遇到的问题相对是致命的,主要是自身的原因。
在前期预览套件的时候,后期实际操作的时候都忽略了电流采样的问题。我们从截图上可以看到,套件在不同输出电压下,输出功率显示部分是变化的,是随电压变化而变化的——于是,我就认为其具体有功率计算的功能点。
可是,事实却是另一番情况!另一番情况!另一番情况!……
我们先看原理图的ADC采样引脚部分,
通过图片我们清晰的看到,这是没有电流采样功能的。而且原理图上也找不诸如霍尔传感器,采样小电阻等关键核心器件。我们再来看看软件上面的设计,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ISR: ADCAN1Interrupt
; Description: Makes 2P2Z compensator control function call.
; Working Reg: Only uses Alt W-Reg Context #1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.global __ADCAN1Interrupt
__ADCAN1Interrupt:
.if(OPENLOOP == DISABLED)
mov _buckControlReference, w0
call _SMPS_Controller2P2ZUpdate_HW_Accel
.endif
; mov ADCBUF0, w0
; mov w0, _buckCurrent
mov ADCBUF1, w0
mov w0, _buckVoltage
bclr IFS6, #15 ; Clear ADCAN1 interrupt flag.
retfie ; Return from interrupt service routine
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; End of Buck ADCAN1Interrupt ISR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
大家看到没有,电流采样是被注释掉了!被注释掉了!被注释掉了!
我们再来看看屏幕上面显示的负载功率是如何实现的?
#if(BUCKLOAD1 == NOLOAD)
#define BUCKLOAD1LCD 0
#elif(BUCKLOAD1 == LOADBANK1)
#define BUCKLOAD1LCD (int)(((float)(BUCKVOLTAGEREFERENCE*BUCKVOLTAGEREFERENCE)/21.5)*100)
#elif(BUCKLOAD1 == LOADBANK2)
#define BUCKLOAD1LCD (int)(((float)(BUCKVOLTAGEREFERENCE*BUCKVOLTAGEREFERENCE)/8.71)*100)
#elif(BUCKLOAD1 == LOADBANK1_2)
#define BUCKLOAD1LCD (int)(((float)(BUCKVOLTAGEREFERENCE*BUCKVOLTAGEREFERENCE)/6.22)*100)
#elif(BUCKLOAD1 == LOADBANK2_3)
#define BUCKLOAD1LCD (int)(((float)(BUCKVOLTAGEREFERENCE*BUCKVOLTAGEREFERENCE)/4.356)*100)
#elif(BUCKLOAD1 == LOADBANK1_2_3)
#define BUCKLOAD1LCD (int)(((float)(BUCKVOLTAGEREFERENCE*BUCKVOLTAGEREFERENCE)/3.618)*100)
#endif
是传说中的宏定义!
其实,上面任何一点均可以证明此次套件无电流采样,我也只是将所有情况以开发进程的形式给大家呈现出来而已。现在要去寻电流采样模块以完成本次实验了。
大家周末快乐^_^