Embedded Matlab function for Microcontroller modelling with PWM
Show older comments
Hello!
I am modelling a solar tracking system in simulink, and i want to include an embedded matlab function with 'if' statements to represent a microcontroller. The inputs will be 2 values of voltage representing the LDR values, and within the matlab function i will compare the input values and create an output which will commmand a motor to rotate clockwise or counterclockwise. I have built the motor model in simulink, which will recieve an input voltage(coming from the microcontroller) and will output an angle of rotation. My question is what should be the output of the microcontroller? I think maybe the microcontroller could output a duty cycle of a PWM which will correspond to a voltage(maybe use a look up table) but i am not sure. I also want to include a PI controller but i am not sure were should be connected and what the error input should be. I want to model this operation as simple as possible because i am a beginner at electronics, and also the simulation time is very long,(10*3600s) so a complex system will make my simulation slow. Any response will be very helpful.
Thank you
8 Comments
Eleni.T
on 26 Jun 2020
Mohsen Aleenejad
on 29 Jun 2020
Hi Eleni.T,
The correct answer to this question really depends on your final design. What paramters are being controlled and what topology is driving the motor? (Type of the motor and Drive. Parameters: Position/Speed of the motor. Control algorithm: Speed Control/Torque and Direction Control, Current Limiting Circuit). If a general answer helps, then assume that you wanna control a dc motor position:

If you wanna increase the model accuracy and get closer to the real problem then:

The real world problem needs a very accurate system with more complexity.
Best
Mohsen
Eleni.T
on 29 Jun 2020
Eleni.T
on 30 Jun 2020
Mohsen Aleenejad
on 30 Jun 2020
Yes, your first assumption about the speed and position is correct, and you can move forward with that.
The second question, they are diffrent, Va is armature voltage and Vs is the dc voltage source connected to the input of the dc/dc converter: Va=d.Vs and is=d.Va, basically for the ideal cnverter with no lose P=Va.Ia or P=Vs.Is.
About the last question, I don't know what exactly we are talking about, these two voltages I mean. If (IF) one of them is a reference voltage and the other one is a measured voltage coming from a sensor, then yes we can create the position reference from their error:

However, if you get two measured voltages and by changing the position you can minimize (or make zero) the difference between these voltages, then you can use a method smilar to Perturb and Observe:

I have no past experience in this particular subject (2 voltage values of the light sensors), but I'm trying to give you some ideas.
Hope these solutions resolve your issue.
Good Luck
Mohsen
Mohsen Aleenejad
on 30 Jun 2020
DeltaV=V2-V1;
also in the * DeltaTheta calculator, you could say (elseif DeltaV(k)=DeltaV(k-1) then DeltaTheta=0).
Eleni.T
on 30 Jun 2020
Mohsen Aleenejad
on 30 Jun 2020
I am happy I could help.
Good Luck.
Accepted Answer
More Answers (0)
Communities
More Answers in the Power Electronics Control
Categories
Find more on Real-Time PID Autotuning in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


