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.

MCT8315EVM: Holding constant speed over temperature

Part Number: MCT8315EVM
Other Parts Discussed in Thread: MCT8316A

Tool/software:

Hi MD team, 

Customer is testing out the MCT8315EVM. I don't have exact part number of the motor they are using with it, but it is quite small motor - drawing 160mA max steady state. They wanted to test how well the driver can hold a constant 2k RPM in thermal chamber. Their goal is to hold 2k RPM within 1% tolerance (thought I think there is room for negotiation there). They measured speed with external tool. 

Anyway, they ran profile from -10C to 50C and didn't have great results. At room temp the speed was ok, but during the extreme temps it couldn't hold 2kRPM, going much lower - almost like there wasn't closed loop control of motor speed. At >40C, the speed rapidly dropped - almost like part was overheating.

My questions for you: 

1. what are correct GUI settings/setup for the most accurate constant speed control? One improvement I recommended was using an external clock. 

2. Is this variation in speed expected? 

One other thought I have, does sensorless control likely have less control over constant speed due to motor characteristics? Will a sensored approach give better speed accuracy over temperature?

Thanks,

Tyler

  • Hi Tyler,

    The Speed loop accuracy is 3% across temperature range with internal oscillator and 1% with external accuracy.

    How much difference you are seeing when temperature is above 40C? 

    Are motor and Device both subjected to same temperature?

    When motor temperature changes resistance varies that may affect some current reduction and speed may reduce without regulating if it is voltage mode. MCT8316A  default is voltage mode, we can enable speed loop and verify the performance.

    Even if we use sensor speed loop is required to regulate speed.

    There are two types of BEMF sensing methods , One is Zero Cross and other is BEMF Integration method. Usually for low-speed Integration methods helps and high-speed comparator based zero cross checking is good.  If INEGRATION based is used try by changing to ZC based since the speed is higher.

    Can you confirm Pole Pair of the motor? I want to understand speed in electrical HZ for 2000 RPM.

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri,

    Answers to your questions:

    How many poles: 4

    How much difference are we seeing when the temperature is above 40C: The RPM drops about 400 RPM above 40C, but closed loop control wasn't on

    Are the motor and the device subject to the same temperature: Yes they are

    Customer update: I was able to repeat my oven experiment with closed loop control enabled and saw that my RPM was constant over the -10c to 50c range that I was cycling.I have been able to find that closed loop is not enabled in the default profiles that you can choose from when setting up a motor. I have figured out how to enable closed loop control and am starting to get our system tuned.

     New customer problem: I am running into an issue on the eval kit where it seems like either my changes are not actually being written to the eeprom or the TI micro on that eval board is writing over some of the eeprom at power up. What I’m noticing is that on power up the eeprom will be different from what it appeared to be last set to.

    Can you provide instruction to saving the settings to EEPROM ? Any complexities to watch for?

    Tyler

  • Hi Tyler,

    Thanks for providing the information. I will reply to this thread tomorrow

    Thanks and Best Regards

    Venkatadri S

  • Hi Tyler,

    For the new customer problem I want to check what is the MOTOR STATUS reading on the GUI?

    Motor should not be in Run state or HW BRAKE state.

    Please check this and let me know.

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri,

    Thanks. 

    What state should the MOTOR STATUS be in? FYI customer is hoping to use this device in standalone mode - where it would start running upon power up. 

    Tyler 

  • HI Tyler,

    MOTOR_STATUS should be MOTOR_IDLE.

    Can you ask customer to read all EEPROM and share the JSON , we will verify what is default loaded.

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri, 

    See attached for JSON file used for temp testing on MCT8351EVM. 

    Note that customer is targeting a constant speed of 2000 rpm. The temp range is -10c to 50c. Motor has 4 poles, max speed of 9450 rpm, and has a max operation current of 0.163 A at 24v.

    #1 goal is speed accuracy over temp range (2kRPM target). Kindly validate settings / setup to achieve this. 

    {
      "signature": "oneui-register-data",
      "data": [
        [
          {
            "idx": 0,
            "id": "isd_config",
            "value": "0x6F04C180"
          },
          {
            "idx": 1,
            "id": "motor_startup1",
            "value": "0x2F889192"
          },
          {
            "idx": 2,
            "id": "motor_startup2",
            "value": "0x111CE250"
          },
          {
            "idx": 3,
            "id": "closed_loop1",
            "value": "0x238E0200"
          },
          {
            "idx": 4,
            "id": "closed_loop2",
            "value": "0x2906E488"
          },
          {
            "idx": 5,
            "id": "closed_loop3",
            "value": "0x4CC40100"
          },
          {
            "idx": 6,
            "id": "closed_loop4",
            "value": "0x0008E340"
          },
          {
            "idx": 7,
            "id": "const_speed",
            "value": "0x0327D0E1"
          },
          {
            "idx": 8,
            "id": "const_pwr",
            "value": "0x13B040C0"
          },
          {
            "idx": 9,
            "id": "150_deg_two_ph_profile",
            "value": "0x36DB6DA6"
          },
          {
            "idx": 10,
            "id": "150_deg_three_ph_profile",
            "value": "0x36DB6D80"
          },
          {
            "idx": 11,
            "id": "trap_config1",
            "value": "0x054BA106"
          },
          {
            "idx": 12,
            "id": "trap_config2",
            "value": "0x52880000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "fault_config1",
            "value": "0x78F43025"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0x74C2B808"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gd_config1",
            "value": "0x1C440000"
          },
          {
            "idx": 1,
            "id": "gd_config2",
            "value": "0x14000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config1",
            "value": "0x2D720600"
          },
          {
            "idx": 1,
            "id": "pin_config2",
            "value": "0x080C0000"
          },
          {
            "idx": 2,
            "id": "device_config",
            "value": "0x7FFF0000"
          },
          {
            "idx": 3,
            "id": "peri_config",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "ana_trim3",
            "value": "0x4A004800"
          },
          {
            "idx": 1,
            "id": "ana_trim4",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "ana_trim5",
            "value": "0x0000001D"
          },
          {
            "idx": 3,
            "id": "ana_trim6",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "ana_trim7",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "ana_trim8",
            "value": "0x00004A61"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x009DC7DC"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0x536C003C"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_reserved1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "algo_reserved2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_reserved3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gate_driver_fault_status",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "controller_fault_status",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "sys_status1",
            "value": "0x00F10070"
          },
          {
            "idx": 1,
            "id": "sys_status2",
            "value": "0x60010000"
          },
          {
            "idx": 2,
            "id": "sys_status3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "device_ctrl",
            "value": "0x1B150000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": "0x00000000"
          }
        ]
      ]
    }

    Tyler

  • Hi Tyler,

    Thanks for sharing the JSON file. In the earlier discussion customer mentioned that speed regulation is working. Are they still facing issue?

    I also noticed that TBLANK time is 10us which is very large, they can measure on the OUTx node during floating state and apply as much required. 

    How is the transient, settling behavior of speed loop with the KP, KI programmed? Any oscillations? 

    Any update on the EEPROM write issue? 

    Thanks and Best Regards

    Venkatadri S

  • Hi - 

    They were able to get 2kRPM over temp within 3% with internal clock. So within datasheet spec. They plan to try external clock soon to validate 1%. But they are wondering what other techniques they can use to improve this further, if any. 

    Also they are curious about how the speed variation over a rotation (almost like jitter on a clock). Any notes on that part of the performance?

    What is recommended TBLANK setting? How does reducing this time affect performance?

    Customer hasn't tested transient/settling behavior yet, focusing on speed control loop. No reports of oscillations - but how do you define oscillations in motor control? They did notice variations in speed to become much worse at higher temperatures (but still within +/- 3%). Closed loop speed control is very good at lower temperature (less than 20C) (<0.5%). 

    EEPROM write issue still present. 

    Thanks,

    Tyler

  • Hi Tyler,

    Can I get more details about this the question "Also they are curious about how the speed variation over a rotation (almost like jitter on a clock). Any notes on that part of the performance?"  , is it speed jitter?  

    They need to measure ringing time on OUTx when switching. With oscilloscope high resolution mode measure ringing when PWM is ON, due to parasitic inductance there will be oscillation, provide TBLANK with some buffer.

    Please follow below mentioned procedure to ensure successful EEPROM write: 

    Expected device state is Motor Idle (Device not driving the motor) and device Not in Brake state

    1. Up on power up write 0x00008000 word value to register 0xE8 (DEVICE_CTRL). This enabled speed command OVERRIDE (Bit 15) .This word also ensures zero speed command is written so that Motor is in MOTOR IDLE state. In this state EEPROM writes will be successful.
    2. After step 1 start sending rest of the tuning registers via I2C. Maintain interbyte delay of 100us
    3. After all register data transfer to device via I2C completed, read back the data and verify
    4. Now issue EEPROM write command 0x8A500000 to the register 0xE6(ALGO_CTRL1)
    5. Wait for min 800ms
    6. Read back 0xE6 and ensure 0xE6 value is automatically cleared after successful EEPROM programming
    1. Do no power off or give Speed command or Apply Brake state until 0xE6 values have become zero.
    2. Once 0xE6 gets cleared power cycle the board and re check by reading the content

    Thanks and Best Regards

    Venkatadri S

  • Yes, speed jitter. They want to understand how constant the speed is through a single rotation - and any methods to improve that. They haven't confirmed any issue on their side yet - just looking to optimize.

    Would FOC control (as opposed to trapezoidal) have any benefits in terms of speed regulation or speed jitter ? Or similar performance?

    I've relayed other info back to customer and will advise. 

    Thanks,

    Tyler

  • Hi Tyler,

    There will not be torque ripple in FOC and we have specification of speed error of up to 2.5% under extreme temperature conditions with internal clock and up to 1% with external clock conditions.

    Thanks and Best Regards,

    Venkatadri S