In this video, we’re going to implement the field-oriented control algorithm on the embedded microcontroller.
We’ll spin this brushless PMSM motor which we’ll control using the Texas Instruments Launchpad processor and
DRV8305 inverter module. We will use the same model that we used to run simulations.
On the right-hand side, we see the different sample rates we have in our model.
The current loop is running at 50 microseconds and the speed loop is running ten times slower.
Then we also have the serial receive subsystem that gets the data from the host model running at 10 Hz.
Now, we’ll go to the hardware tab and click on the settings.
We see that we have configured the model to generate code for the Texas Instruments F28379D processor
and we’re using Embedded Coder to generate code.
If we look under the current control subsystem, we see that this model contains algorithmic blocks from Motor Control Blockset
such as Park and Clarke blocks and also the driver blocks from C2000 support package.
When we generate code from this model, Embedded Coder generates both the algorithmic and driver code.
All the code is then automatically compiled, and target application is downloaded to the processor.
Let’s go ahead and do this by pressing “build, deploy and start” button.
This starts the code generation process.
We can see the progress in the diagnostic viewer.
We see that the code is being generated and a project is automatically created in the Code Composer Studio IDE.
By clicking here, we can open the project and debug from the IDE.
We can now see that the application has been downloaded to the target and we’re ready to spin our motor.
Now that we programmed the microcontroller, let’s open the host model which runs on my laptop.
This model lets us set the desired speed for the motor shaft using this knob where we specify speed reference in rpm.
Through this on/off switch, it also lets us specify when the motor should start spinning.
The model receives signals such as speed and currents listed here over serial port from the target application
and we plot per-unit, normalized values in this scope. To start the execution on the host, we go to the simulation tab and press run.
We see the measurements in the scope on the right. Let’s start spinning the motor by turning the switch on.
We see how the motor speed starts tracking the reference.
Let’s try setting the reference speed to a set of different values and observe the motor response.
We go up to 0.8 of the motor baseline speed. And now let’s try a step change from 0.8 of the base line speed to a much lower speed value.
And here’s another step change to higher speed. After checking the performance of speed tracking, let’s look at the currents.
From this menu, we choose Id current. To better see the current waveform,
let’s open scope settings and change the time span to 0.1 second. We see that Id current is kept at zero.
Next, let’s look at Iq. Finally, we can take a look at the phase a and b currents.
In this video we showed how you can use Motor Control Blockset and Embedded Coder to generate code
that is running at 20 kHz on the target microcontroller and controlling a brushless PMSM motor. This concludes the demo.