First step is, disconnect the source pin of all high-side power transistors from the original full-bridge power stage and then connect to the input pins of stator coil of switched reluctance motors (SRMs). Also connect the other input pins of stator coil to the drain pin of all low-side power transistors in the phase sequence like A,B and C respectively.
Now I have migrated the sensorless control code in the TI document " Developing an SRM Drive System Using the TMS320F240 APPLICATION REPORT: SPRA420."
There are much inconsistent codes in the motorware as the following and which no any demo code for driving the stop, start buttons and speed control via Tach/Pot input.
And in the "drv830x_hwguide.pdf" included in the motorware DVD the most important feedback signals via ADC different channels as following:
59 ADC-A1 IA-FB Current sense phase A
61 ADC-A2 I-TOTAL DC Bus current sense
63 ADC-A3 IC-FB Current sense phase C
67 ADC-A5 IC-FB Current sense phase C
71 ADC-A7 ADC-Vhb2 Phase Voltage sense B
7 ADC-B0 TSI Tach/Pot input
9 ADC-B1 IB-FB Current sense phase B
11 ADC-B2 VDCBUS DC Bus voltage sense
13 ADC-B3 IA-FB Current sense phase A
15 ADC-B4 ADC-Vhb3 Phase Voltage sense C
17 ADC-B5 IB-FB Current sense phase B
21 ADC-B7 ADC-Vhb1 Phase Voltage sense A
But in the code section existing in the drv.h of the project of "RM46L852_sensored_speed_smo"
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Update ADC object
adcGetData(adcREG1, adcGROUP1, obj->AdcResults1);
//!13 ADC-B3 IA-FB Current sense phase A
//!59 ADC-A1 IA-FB Current sense phase A
obj->adcData.I.value[0] = ((obj->AdcResults1[0].value<<4)-obj->cal_offset_A)*obj->adc_current_gain_A; //ileg1.ImeasA_f;
//!9 ADC-B1 IB-FB Current sense phase B
//!17 ADC-B5 IB-FB Current sense phase B
obj->adcData.I.value[1] = ((obj->AdcResults1[2].value<<4)-obj->cal_offset_B)*obj->adc_current_gain_B; //ileg1.ImeasB_f;
//!63 ADC-A3 IC-FB Current sense phase C
//!67 ADC-A5 IC-FB Current sense phase C
obj->adcData.I.value[2] = 0;
Why is zero?
The adcData.I.value[2] is a non-zero value and has to be the form of "((obj->AdcResults1[0].value<<4)-obj->cal_offset_C)*obj->adc_current_gain_C;"
but changing AdcResults1[0] to AdcResults1[4], I guess maybe, where add the "cal_offset_C" and "adc_current_gain_C" to be the member of the structure _DRV_Obj_.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
obj->currentAB.value[0] = obj->adcData.I.value[0];
obj->currentAB.value[1] = obj->adcData.I.value[1];
// Change the currentAB to be MATH_vec3 in the struct _DRV_Obj_ of drv.h
MATH_vec3 currentAB;
//Add the following line
obj->currentAB.value[2] = obj->adcData.I.value[2];
//DC bus voltage
obj->adcData.dcBusV = (obj->AdcResults1[1].value)*0.00024414;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
In the code section existing in the drv.h of the project of "RM46L852_instaspin_bldc"
//Get the DC Bus Volage
obj->vDCBus = (((float32_t)obj->AdcResults1[2].value) * 0.00024414);
At different ADC channels but sampling the same DC bus value.
why?
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//DC bus voltage
obj->adcData.dcBusV = (obj->AdcResults1[1].value)*0.00024414;
// Get B-phase BEMF Value
obj->iqVbIn = (((float32_t)obj->AdcResults1[1].value) * 0.00024414) - obj->instaHandle->vbOffset;
At the same ADC channel but sampling the different value.
why?
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//!21 ADC-B7 ADC-Vhb1 Phase Voltage sense A
obj->iqVaIn = ((float32_t)obj->AdcResults1[5].value) * 0.00024414;
//!71 ADC-A7 ADC-Vhb2 Phase Voltage sense B
obj->iqVbIn = ((float32_t)obj->AdcResults1[1].value) * 0.00024414;
//!15 ADC-B4 ADC-Vhb3 Phase Voltage sense C
obj->iqVcIn = ((float32_t)obj->AdcResults1[3].value) * 0.00024414;
Why are the ADC channels not relative to the AdcResults1[1,3,5]?
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
What situation is!