完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有关电流电压的计算过程,很不理解,根据读取到的DAC值计算实际值的时候,电流计算为什么不需要除以4096乘以3.3,再减去偏置,再除以放大倍数和测量电阻的乘积?
以下程序求具体解释: static inline void HAL_readAdcData(HAL_Handle handle,HAL_AdcData_t *pAdcData)[ HAL_Obj *obj = (HAL_Obj *)handle; _iq value; _iq current_sf = HAL_getCurrentScaleFactor(handle); _iq voltage_sf = HAL_getVoltageScaleFactor(handle); // convert current A // sample the first sample twice due to errata sprz342f, ignore the first sample value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_1); value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[0]; // divide by 2^numAdcBits = 2^12 pAdcData->I.value[0] = value; // convert current B value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_2); value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[1]; // divide by 2^numAdcBits = 2^12 pAdcData->I.value[1] = value; // convert current C value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_3); value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[2]; // divide by 2^numAdcBits = 2^12 pAdcData->I.value[2] = value; // convert voltage A value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_4); value = _IQ12mpy(value,voltage_sf) - obj->adcBias.V.value[0]; // divide by 2^numAdcBits = 2^12 pAdcData->V.value[0] = value; // convert voltage B value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_5); value = _IQ12mpy(value,voltage_sf) - obj->adcBias.V.value[1]; // divide by 2^numAdcBits = 2^12 pAdcData->V.value[1] = value; // convert voltage C value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_6); value = _IQ12mpy(value,voltage_sf) - obj->adcBias.V.value[2]; // divide by 2^numAdcBits = 2^12 pAdcData->V.value[2] = value; // read the dcBus voltage value value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_7); // divide by 2^numAdcBits = 2^12 value = _IQ12mpy(value,voltage_sf); pAdcData->dcBus = value; return;] // end of HAL_readAdcData() function |
|
相关推荐
6 个讨论
|
|
有关电�电压的计算过程,很不理解,根据读取到的DAC值计算实际值的时候,电流计算为什么不需要除以4096乘以3.3,再减去偏置,再除以放大倍数和测量电阻的乘积?
以下程序求具体解释: static inline void HAL_readAdcData(HAL_Handle handle,HAL_AdcData_t *pAdcData)[ HAL_Obj *obj = (HAL_Obj *)handle; _iq value; _iq current_sf = HAL_getCurrentScaleFactor(handle); _iq voltage_sf = HAL_getVoltageScaleFactor(handle); // convert current A // sample the first sample twice due to errata sprz342f, ignore the first sample value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_1); value = _IQ12mpy(value,current_sf) - obj->adcBias.I.value[0]; // divide by 2^numAdcBits = 2^12 pAdcData->I.value[0] = value;ERIC:这里使用的是标幺化的处理,数据格式是Q24的结构,所以一个12位的ADC,其实就是一个Q12的数据,再通过IQ12mpy处理成Q24,这就变成了标幺值,然后再乘以硬件系数值。注意ADCbias其实也是经过标幺化处理后的了。 - ERIC |
|
|
|
|
|
guigui_7044 发表于 2020-7-24 20:25 Hi,ERIC 我还有疑问是,那这个标幺化,跟实际计算中涉及到的3.3以及运放等系数有什么具体的关联?标幺化电压应该是以 USER_IQ_FULL_SCALE_VOLTAGE_V 为基值吧?电流应该是以 USER_IQ_FULL_SCALE_CURRENT_A 为基值吧? 读到的模拟量转化为数字量后的值,为什么直接就可以标幺化了?有没有相关的转换过程?我想明白的是跟实际计算是不是一样的,谢谢您! |
|
|
|
|
|
oiewjrj 发表于 2020-7-24 20:09 Hi,mangui zhang 是的,但是我的疑问是库函数里面的计算,好像跟实际计算不一样,他具体是怎么计算的? 而且开发板中,硬件用的是反向运算放大器的接法,而计算时为什么也是采用正向运行放大器接法时的计算? 反向运算放大器不应该是: value = - _IQ12mpy(value,current_sf) + obj->adcBias.I.value[0]; 这样计算么? |
|
|
|
|
|
adaliu001 发表于 2020-7-24 20:32 我还有疑问是,那这个标幺化,跟实际计算中涉及到的3.3以及运放等系数有什么具体的关联?标幺化电压应该是以 USER_IQ_FULL_SCALE_VOLTAGE_V 为基值吧?电流应该是以 USER_IQ_FULL_SCALE_CURRENT_A 为基值吧? 读到的模拟量转化为数字量后的值,为什么直接就可以标幺化了?有没有相关的转换过程?我想明白的是跟实际计算是不是一样的,谢谢您! ERIC: 其实,我想说的是,殊途同归,它的方法跟你说的其实是一个道理。 首先,程序里面用了标幺化,那么就代表着4095时,等于标幺化的1. 一般的电机算法,也不用程序什么系数之类的,而是直接把0~4095整成0~1就可以了,然后就电流环控制。至于1代表多少安的电流,你自己知道就好,或是如果程序需要,你再乘以比例系数,换算出来。 那么motorware里面,它为了方面观察,所以做了很多变量来表示实际的电流大小,所以就要用到硬件的系数啦。那么标幺后的1,里面代表的电流大小的IQ FULL SCALE那个值,而不是硬件的最大电流,所以就需要乘以一个系数啦。 里面用到Q24的数值表示方式,3.3V的模拟量,经过AD后是4095,也就是Q12的标幺1, 需要转换成Q24,所以要做一个IQ12mpy。 - ERIC |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
696 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
605 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1065 浏览 1 评论
760 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
530 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
171浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
133浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
130浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
126浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
64浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 19:29 , Processed in 1.029644 second(s), Total 54, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号