This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

InstaSpin and HAL Sensor Startup?

Other Parts Discussed in Thread: MOTORWARE, LAUNCHXL-F28069M, BOOSTXL-DRV8301, BOOSTXL-DRV8305EVM, LAUNCHXL-F28027F, TMS320F28027

Hi,


is it possible using InstaSpin for torque and velocity control but start the motor at very high torque using the Motor Hall sensors?

Regards Patrick

  • Hi Patrick,

    Yes, this is definitely possible,  You can use the Halls for position information at start-up and then the key SW will be transitioning to the rotor angle data produced from the FAST observer in InstaSPIN.  We currently do have example SW for this but it is on our list.  

    Jeff

     

    Did a reply answer your question? If yes, please click the "Verify Answer" button located at the bottom of that post.

    C2000 TI Wiki Pages
    TI Forum Sitemap

    ControlSUITE
    Motor Drive & Control (everything)

    CLA FAQs
    Workshop Material!

    InstaSPIN Wiki
    InstaSPIN
    FAST Software Encoder

    InstaSPIN-FOC
    InstaSPIN-MOTION
    InstaSPIN-BLDC

    InstaSPIN-FOC/MOTION User's Guide
    MotorWare 
    InstaSPIN Training

  • Hi Jeff,

    thank you, do you mean you have a example software for this? do you can send me or do you have a link? Can you explain how to do with MotorWare?

    Regards patrick
  • hall sensor start-up and transition to FAST sensorless will be included in the next MotorWare v16 release, scheduled for end of February.
  • Really look forward to the v16 release!
  • Hello,

    will the HALL Sensors used for the rotor angle estimation feed to the park transformation or a simple block commutation with lookup table is used for startup?

  • for HALL start-up the angle_pu is set to one of six states; 0, 60/360, 120/360, etc.and fed through the SVGEN block like the other proj_lab11x projects.

    but the duty cycles are also state controlled by the following logic

              switch(gHallState)
              {
                case 5:
                {
                  PWM_setOneShotTrip(hal.pwmHandle[PWM_Number_1]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_2]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_3]);

                  gPwmData.Tabc.value[0] = _IQ(0.0);
                  gPwmData.Tabc.value[1] = -gDuty;
                  gPwmData.Tabc.value[2] = gDuty;

                  break;
                }
                case 4:
                {
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_1]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_3]);
                  PWM_setOneShotTrip(hal.pwmHandle[PWM_Number_2]);

                  gPwmData.Tabc.value[0] = gDuty;
                  gPwmData.Tabc.value[1] = -gDuty;
                  gPwmData.Tabc.value[2] = _IQ(0.0);

                  break;
                }
                case 6:
                {
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_1]);
                  PWM_setOneShotTrip(hal.pwmHandle[PWM_Number_2]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_3]);

                  gPwmData.Tabc.value[0] = gDuty;
                  gPwmData.Tabc.value[1] = _IQ(0.0);
                  gPwmData.Tabc.value[2] = -gDuty;

                  break;
                }
                case 2:
                {
                  PWM_setOneShotTrip(hal.pwmHandle[PWM_Number_1]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_2]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_3]);

                  gPwmData.Tabc.value[0] = _IQ(0.0);
                  gPwmData.Tabc.value[1] = gDuty;
                  gPwmData.Tabc.value[2] = -gDuty;

                  break;
                }
                case 3:
                {
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_1]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_3]);
                  PWM_setOneShotTrip(hal.pwmHandle[PWM_Number_2]);

                  gPwmData.Tabc.value[0] = -gDuty;
                  gPwmData.Tabc.value[1] = gDuty;
                  gPwmData.Tabc.value[2] = _IQ(0.0);

                  break;
                }
                case 1:
                {
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_1]);
                  PWM_setOneShotTrip(hal.pwmHandle[PWM_Number_2]);
                  PWM_clearOneShotTrip(hal.pwmHandle[PWM_Number_3]);

                  gPwmData.Tabc.value[0] = -gDuty;
                  gPwmData.Tabc.value[1] = _IQ(0.0);
                  gPwmData.Tabc.value[2] = gDuty;

                  break;

  • Hi,

    there are any news for the v16 Release to test the new features?
  • working on it. hoping to release next week.

    Hall Start-up with Transition to FAST for DRV8301-69M-KIT

    2MTR examples for LAUNCHXL-F28069M + BOOSTXL-DRV8301 or BOOSTXL-DRV8305EVM

  • Hi,

    is a proj-lab11e example available for EVAL Kit DRV8305N & LAUNCHXL-F28027F ?

    Regards patrick

  • no, the LAUNCHPADS don't have an easy hall sensor interface so we just show the example on DRV8301-69M-KIT. You can port over to your own HW if you wish, it is straight forward.

    However, I've been using proj_lab11e the past couple of days and find it needs some improvements. We are going to do an update for MW 17 that improves the solution (and gives proper documentation).
  • ok thank you , but pls provide a example for the F2802xF, then it is easy connecting Hal sensors to free LAUNCHPAD Ports

  • Hello Chris,

    Is it possible to implement Hall Sensors in other labs too? I would like to add it in lab4, which I originally chose because it had torque control. I already suceeded reading the inputs (using a custom board based on a TMS320F28027) and I will be able to use the conversion from hallbldc. No problems there. But I don't know for sure how I can correctly pass that angle to the software (I'm unable to compare lab04 and 11e because of the missing ctrl). Do I need to call EST_setAngle_pu() and pass the [0-360] angle or some other method? And do I also have to make other adjustments (for example enable/disable ForceAngle)?

    I understand it might be tough (if not impossible), but I would realy like if you could make a summary of the things that need to be done to create a Hall startup in labs.
  • Coen,
    IMO lab11e does not work properly. We are working on creating a better version. The person who created it originally is no longer with TI.

    you can follow lab11e (there is no CTRL system, it is all inlined) to see how the hall angle was used. I don't agree with this logic, but you can see the use here:

    if(_IQabs(speed_pu) < _IQmpy(gBldcToFastSpd_low,gSpeed_krpm_to_pu_sf))
    {
    gFlagBldc = true;
    angle_pu = gHallAngle;
    }
    else
    {
    gFlagBldc = false;
    angle_pu = angle_est_pu;
    }
    gSpeed_pu = speed_pu;
    gAngle_pu = angle_pu;
  • Hello Chris,

    Any updates on when we can expect v17 with lab11e fixed to be released?
  • We are shooting for September for a v17 with many updates.
  • Will v17 include a lab 11e for the HVKIT?
  • 11e is being re-written, but no, it won't be released or tested for the HVKIT. You will be able to port it yourself though.

    also, we are trying to release this significant update by end of October.
  • I want to take lab 11e from the latest instaspin release and modify it so that I can use it on the HVKIT development kit. Can you provide any suggestions or guidelines for where to start and what needs to be modified for use with the HVKIT?

  • ipsumbox,

    Please create a new post for your question as we prefer not to work within old threads such as this one

    Sean