---
tags: TI instaspin
---
# Current and voltage sensing
:pushpin: Changing drive board from DRV8300DIPW_EVM ➝ drv8301kit_revD
* Voltage ADC
* Current ADC
* DC BUS ADC
## DRV8300DIPW_EVM Current sensing
R49、R50、R63 3m Ohm Shunt(電阻型電流感測器)
三相電流搭配差動放大器(倍率10倍,REF為1.65V)
AND No sensing total current

$$
(I\times3m\times10)+1.65 = SOA
$$

## DRV8300DIPW_EVM Voltage sensing


$$
SHA \times \frac{3.01}{100.61} = VSENA
$$
## drv8301kit_revD current sensing
R80 2m Ohm Shunt(電阻型電流感測)
三相電流信號20倍差動放大
總電流信號10倍差動放大

$$
(I\times2m\times20)+1.65=EXT_IB-FB
$$

## drv8301kit_revD voltage sensing


==須注意Current sensing的極性,在DRV8300DIPW_EVM板子上,電流極性反向。==
## Voltage ADC offset、Current ADC offset
:pushpin: 基礎知識[TI IQ LIB](https://hackmd.io/B-CFcyocS6uEyB4Rd_E9_A)

EX: 馬達最大電流55A ADC最大sense電流為+/- 55A(根據shunt電阻求得)
```
#define USER_IQ_FULL_SCALE_CURRENT_A (55)
#define USER_ADC_FULL_SCALE_CURRENT_A (110)
#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))
```
current_sf = 110/55=2,_IQ12mpy(value,current_sf)將電流adc value scale為0~4096*2,再扣掉offset=4096,得value為-4096~4096

-4096~4096(_IQ(-1.0)~_IQ(1.0))在乘上USER_IQ_FULL_SCALE_CURRENT_A(_IQ(20)),Ia實際輸出物理量為(-55A~55A)

EX: DC BUS 36V、ADC最大sense電壓110V(根據sense電阻求得)
```
#define USER_IQ_FULL_SCALE_VOLTAGE_V (36.0)
#define USER_ADC_FULL_SCALE_VOLTAGE_V (110)
#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))
```
volatge_sf = 110/36,_IQ12mpy(value,volatge_sf)將電壓adc value scale為0~4096,再扣掉offset=2048,得value為-2048~2048

-2048~2048(_IQ(-0.5)~_IQ(0.5))在乘上2*USER_IQ_FULL_SCALE_VOLTAGE_V(_IQ(72.0)),Va實際輸出物理量為_IQ(-36V~36V)

## ADC、PWM 腳位確認
可於hal.c中更改腳位參數
詳細可參考
* motorware_hal_tutorial
* DRV8301-HC-EVM sch
* DRV8300-HC-EVM sch
## DRV8301-HC-EVM

DRV8301 SPI功能提供許多硬體保護,若切換至DRV8300可將整個SPI功能disable不影響FOC驅動,只需要hal.h中#define DRV8301_SPI關掉即可

## TI instaspin中如何量測弦波電壓
利用Va(a相電壓對地) - Vb(b相電壓對地) = Vab
同理可得Vbc、Vca line to line voltage
線電壓在乘1/sqrt(3) 可得phase voltage
接著丟進clarke and park運算,提供sensorless角度運算。

分壓電阻經過RC濾波後所量測到的相電壓
