完善资料让更多小伙伴认识你,还能领取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 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
550 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1514 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1338 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1759浏览 29评论
2786浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1726浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1636浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1647浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 21:03 , Processed in 0.848562 second(s), Total 51, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
75649