I watched this video when I started working on my first FOC. now I designed and implemented a FOC on a Bldc from scratch. The results can be seen in my videos. Thank you, your video helped me so much!
Moreover, a BLDC has got a trapezoidal Back-EMF. For this reason, trapezoidal commutation is highly recommended. As far as i know, FO Control is mainly used in BLAC motors, AKA PMSMs because of the sinusoidal Back-EMF. The advantage is that applying Parke and Clarke transforms to these motors make the model non-dependant of these trigonometric functions as the dq coordinates rotate synchronized with the three sinusoidal phases required to control these kind of motors. Please, correct me if I am wrong
What if the field detection was performed in the analog domain? The system would be simple and placed in the engine for less interference and fast switching. Only power and a control signal would be supplied to the system.
I haven't seen a single real life motor, implementing a rotor like this simple bar magnet, that all explanations of park-clark transform use. How in the name of God does this work in an actual motor with multiple poles e.g. 12p9s? I can't picture this 90deg angle in real life where there are multiple magnets on the rotor.
Hi TI, thanks for this video. I am a student in EE and long time fan of TI's ICs. I am very grateful for the material you guys put out there and I have been trying to write some FOC program to run in an embedded system I'm building. The setup is a C2000 F280049 microcontroller and a DRV8353 motor driver. My application is for high speed turbine and so I am opting for the sensorless FOC. I was wondering if I could get some feedback on my approach since I can't post on the E2E forum ( I don't have a company email). So the way I get theta is by first finding the angular velocity. I create an ECAP event to measure the timing between two zero-cross of the current waveform. This gives me the sine's period and with (2pi/T) I find the speed in rad/s. I then multiply the speed with the time since the last known position of theta (this would be the last zero-cross, since i know that when the current is at zero on a phase, the rotor angle is perpendicular to that phase. Is this a decent approach? Also, i have a question regarding the timing of current measurements. The IC i use (DRV8353) has integrated low side current amplifier. It is my understanding that, for the current to be measured, the low side gate has to be active for the duration of the adc sampling. This however has nothing to do with the commutation vector and so it is unclear to me when to activate the low side pwm signal. It is worth saying that the adc is sampling upon EPWM end of period interrupt. Should i force all 3 phases' low side FET every time i want to measure the current or is there a better way to do this? Finally i just wanted to add that I really enjoy C2000 mcu's sharpness. Comparing the zero-cross timing on the oscilloscope and what the ECAP returns in software, i can tell that its spot on, down to the microsecond.
Hi Émile, thank you for your question! We recommend checking out these resources: FOC TIPL video: training.ti.com/field-oriented-control?context=1139747-1138777-1139742-1149236 Instaspin FOC: www.ti.com/tool/INSTASPINUNIVERSALGUI?keyMatch=&tisearch=search-everything&usecase=software
What they mean by "inverter" in this case is just a 6 transistor full bridge. For a 2 phase stepper motor, you need 2 H bridges as you normally would. And such a thing already exists, look at SimpleFOC.
Hi, after applying Clarke and Parke transforms, you end up having two coordinates. Called d-q coordinates. The d coordinate is allways aligned with the rotor's magnetic flux and the q coordinate at 90 degrees of it. If you set q to 0, then the torque is 0 because all the magnetic torque generated orthogonally to the rotor's magnetic flux is 0. As d is aligned with the rotor's magnetic flied, it will eventually stop mooving as q=0 and d!=0. On the other side, if you set d to 0 all the current is pushing the rotor's magnet orthogonally, generating maximum torque as id=0 and iq != 0
I watched this video when I started working on my first FOC. now I designed and implemented a FOC on a Bldc from scratch. The results can be seen in my videos.
Thank you, your video helped me so much!
Moreover, a BLDC has got a trapezoidal Back-EMF. For this reason, trapezoidal commutation is highly recommended. As far as i know, FO Control is mainly used in BLAC motors, AKA PMSMs because of the sinusoidal Back-EMF. The advantage is that applying Parke and Clarke transforms to these motors make the model non-dependant of these trigonometric functions as the dq coordinates rotate synchronized with the three sinusoidal phases required to control these kind of motors. Please, correct me if I am wrong
they rotate synchronized with the rotor
I think you are park transform is wrong in 7:48 in the video
I think so too. q should equal to alpha * sin(theta) + beta * COS(theta). Not sin for second term
@@vex123 If you want to maintain CCW+ it should be -alpha * sin(theta) + beta * cos(theta)?
Brilliant video sir, Thank you 🙏🏻
2:40 Advantage: High efficiency - Disadvantage: Not maximizing motor efficiency. Is this an error, or are there better techniques?
What if the field detection was performed in the analog domain? The system would be simple and placed in the engine for less interference and fast switching. Only power and a control signal would be supplied to the system.
I haven't seen a single real life motor, implementing a rotor like this simple bar magnet, that all explanations of park-clark transform use. How in the name of God does this work in an actual motor with multiple poles e.g. 12p9s? I can't picture this 90deg angle in real life where there are multiple magnets on the rotor.
Hi TI, thanks for this video. I am a student in EE and long time fan of TI's ICs. I am very grateful for the material you guys put out there and I have been trying to write some FOC program to run in an embedded system I'm building.
The setup is a C2000 F280049 microcontroller and a DRV8353 motor driver. My application is for high speed turbine and so I am opting for the sensorless FOC. I was wondering if I could get some feedback on my approach since I can't post on the E2E forum ( I don't have a company email).
So the way I get theta is by first finding the angular velocity. I create an ECAP event to measure the timing between two zero-cross of the current waveform. This gives me the sine's period and with (2pi/T) I find the speed in rad/s. I then multiply the speed with the time since the last known position of theta (this would be the last zero-cross, since i know that when the current is at zero on a phase, the rotor angle is perpendicular to that phase. Is this a decent approach?
Also, i have a question regarding the timing of current measurements. The IC i use (DRV8353) has integrated low side current amplifier. It is my understanding that, for the current to be measured, the low side gate has to be active for the duration of the adc sampling. This however has nothing to do with the commutation vector and so it is unclear to me when to activate the low side pwm signal. It is worth saying that the adc is sampling upon EPWM end of period interrupt. Should i force all 3 phases' low side FET every time i want to measure the current or is there a better way to do this?
Finally i just wanted to add that I really enjoy C2000 mcu's sharpness. Comparing the zero-cross timing on the oscilloscope and what the ECAP returns in software, i can tell that its spot on, down to the microsecond.
Hi Émile, thank you for your question! We recommend checking out these resources:
FOC TIPL video: training.ti.com/field-oriented-control?context=1139747-1138777-1139742-1149236
Instaspin FOC: www.ti.com/tool/INSTASPINUNIVERSALGUI?keyMatch=&tisearch=search-everything&usecase=software
Why do the PWM signals need to go through an inverter? I am trying to implement FOC for a stepper motor like the Nema-17.
What they mean by "inverter" in this case is just a 6 transistor full bridge. For a 2 phase stepper motor, you need 2 H bridges as you normally would. And such a thing already exists, look at SimpleFOC.
Why’s Id setting = 0?
Hi, after applying Clarke and Parke transforms, you end up having two coordinates. Called d-q coordinates. The d coordinate is allways aligned with the rotor's magnetic flux and the q coordinate at 90 degrees of it. If you set q to 0, then the torque is 0 because all the magnetic torque generated orthogonally to the rotor's magnetic flux is 0. As d is aligned with the rotor's magnetic flied, it will eventually stop mooving as q=0 and d!=0. On the other side, if you set d to 0 all the current is pushing the rotor's magnet orthogonally, generating maximum torque as id=0 and iq != 0
BTW, consider giving a look to a video posted by Mathlab talking about this type of control
@@arnaullort9180 thank you so much
I have a question. What is happen if Id*< 0 ?
@@quannguyet2653 Decreasing id below zero is field weakening. It helps motor spin faster