analog in PWM out
analog in PWM out
Hallo
I’m a student of the fontys university. Per accident I fount your dsPIC toolbox. I was very impressed because we ware looking to make this library on ore own because we have some dsPIC boards at the UNI. The UNI what to change the les method. In the new method it is important that students can program a microcontroller (dsPIC) very fast whit a model made in simulink. So your toolbox is perfect. There is only on one thing I need to show sum profs at the UNI that is works. So I like to make a motor controller whit a analog input an a pwm output. But when I put in the PWM motor output I cant open the master block. Is there someone that can make a PWM output which change when the analog input change. I need this fast because I have a presentation at 8 January. Ant I like to show this. I think that when I can show a working model whit a analog in ant a pwm out the UNI will be very interested in this toolbox. I don’t think I can make it myself that fast. So is there someone who can help me?? It all neat to be run on a dsPIC30f6012
I’m a student of the fontys university. Per accident I fount your dsPIC toolbox. I was very impressed because we ware looking to make this library on ore own because we have some dsPIC boards at the UNI. The UNI what to change the les method. In the new method it is important that students can program a microcontroller (dsPIC) very fast whit a model made in simulink. So your toolbox is perfect. There is only on one thing I need to show sum profs at the UNI that is works. So I like to make a motor controller whit a analog input an a pwm output. But when I put in the PWM motor output I cant open the master block. Is there someone that can make a PWM output which change when the analog input change. I need this fast because I have a presentation at 8 January. Ant I like to show this. I think that when I can show a working model whit a analog in ant a pwm out the UNI will be very interested in this toolbox. I don’t think I can make it myself that fast. So is there someone who can help me?? It all neat to be run on a dsPIC30f6012
-
- Site Admin - Expert
- Posts: 616
- Joined: Wed Mar 07, 2007 11:23 pm
- Location: Bayonne- France
- Contact:
Re: analog in PWM out
Hi Fonty,

dsPIC30f6012 has no PWM motor peripheral.
To generate a PWM signal with a 30f6012, use the Output Compare (OC) block.
Therefore, place an ADC block, a gain and a OC block. It should works very easily! (Have a look on examples...)
Post your model if you get into trouble.
Lubin
Nice accidentfonty wrote:Per accident

dsPIC30f6012 has no PWM motor peripheral.
To generate a PWM signal with a 30f6012, use the Output Compare (OC) block.
Therefore, place an ADC block, a gain and a OC block. It should works very easily! (Have a look on examples...)
Post your model if you get into trouble.
Lubin
Re: analog in PWM out
Hallo Lubin
I just found some time to make a simulink model and it built whiteout errors so it could be working. The problem is that I’m at home at this moment and I cant test it. So I hope you maybe can tell me I understand it right.
I have a: ADC Input connected whit a gain (1) the gain is connected whit a data type conversion that is connected whit UC5_up from the Output Compare. Than I have a constant (5) connected whit the OC5_periode.
Is it right when I say that the output compare compares the ADC input whit the constant en generate a PWM out this? So when the input is 5 the PWM is100% when the input is 2.5 the PWM is 50% and when the input is 0 the PWM is 0??
Than my last question. Is it possible to make a simulation model of this model. Can I scoop the output of the OC block sum way?? So I can simulate without my microcontroller board??
I just found some time to make a simulink model and it built whiteout errors so it could be working. The problem is that I’m at home at this moment and I cant test it. So I hope you maybe can tell me I understand it right.
I have a: ADC Input connected whit a gain (1) the gain is connected whit a data type conversion that is connected whit UC5_up from the Output Compare. Than I have a constant (5) connected whit the OC5_periode.
Is it right when I say that the output compare compares the ADC input whit the constant en generate a PWM out this? So when the input is 5 the PWM is100% when the input is 2.5 the PWM is 50% and when the input is 0 the PWM is 0??
Than my last question. Is it possible to make a simulation model of this model. Can I scoop the output of the OC block sum way?? So I can simulate without my microcontroller board??
-
- Site Admin - Expert
- Posts: 616
- Joined: Wed Mar 07, 2007 11:23 pm
- Location: Bayonne- France
- Contact:
Re: analog in PWM out
Hi Fonty,
It is however not very usefull to do such a peripheral simulation. Thus, simulation of the embedded calculation and feedback controller is very usefull and this is of course possible with simulink...
It would be easier to help if you could upload your model on the forum.
The blockset will define the variable OC5max and ANmax in the workspace (check your workspace)
The gain between ADC and OC must be : OC5max / ANmax
The constant connected to the OC5_periode should have the value OC5max.
It should work as is. However, If OC5max/ANmax is not an integer and if you want very precise calculation, you should considere add 2 converter before and after the gain block. The one before would convert value into double to do floating point multiplication, and the one afte would convert the result to uint16 value.
That's it
dsPIC peripheral can't be simulated. It is not possible to simulate dsPIC peripheral because it would necessitate a simulation time step equal to the dsPIC Mips and this would not be efficient !fonty wrote:So I can simulate without my microcontroller board??
It is however not very usefull to do such a peripheral simulation. Thus, simulation of the embedded calculation and feedback controller is very usefull and this is of course possible with simulink...
It would be easier to help if you could upload your model on the forum.
The blockset will define the variable OC5max and ANmax in the workspace (check your workspace)
The gain between ADC and OC must be : OC5max / ANmax
The constant connected to the OC5_periode should have the value OC5max.
It should work as is. However, If OC5max/ANmax is not an integer and if you want very precise calculation, you should considere add 2 converter before and after the gain block. The one before would convert value into double to do floating point multiplication, and the one afte would convert the result to uint16 value.
That's it
Re: analog in PWM out
thanks for helping me so fast. I have changest the gain in OC5max/ANmax and the constant in OC5max. and it built successful so I hope it will work tomorrow when Iload it in the controller..
I like to upload my model at this forum but I don’t know how to do that.
I like to upload my model at this forum but I don’t know how to do that.
-
- Site Admin - Expert
- Posts: 616
- Joined: Wed Mar 07, 2007 11:23 pm
- Location: Bayonne- France
- Contact:
Re: analog in PWM out
upload the model tomorrow if you get in trouble.
uplaod is just by the option tab at the bottom of the reply page, below the save-Preview-submit button
uplaod is just by the option tab at the bottom of the reply page, below the save-Preview-submit button
Re: analog in PWM out
This is the model so far I will test it tomorrow.
-
- Site Admin - Expert
- Posts: 616
- Joined: Wed Mar 07, 2007 11:23 pm
- Location: Bayonne- France
- Contact:
Re: analog in PWM out
Will not work :
in your model, the output of the ADC is an integer.
OC5max/ANmax value will be defined as integer because of the inherited datatype option choosen. But in your case, real value of OC5max/ANmax is 0.0488 ; converted into integer, result is 0.
You multiply by 0.
solution :
turn your calculation into double (download the model attached)
or use a PWM with a duty cycle larger than 0,2ms (that's quite short becaue of the slow quartz (giving 1 MIPS) Check also that with such a quartz, the Quartz configuration should not be the XT instead of HS !)
Lubin
in your model, the output of the ADC is an integer.
OC5max/ANmax value will be defined as integer because of the inherited datatype option choosen. But in your case, real value of OC5max/ANmax is 0.0488 ; converted into integer, result is 0.
You multiply by 0.
solution :
turn your calculation into double (download the model attached)
or use a PWM with a duty cycle larger than 0,2ms (that's quite short becaue of the slow quartz (giving 1 MIPS) Check also that with such a quartz, the Quartz configuration should not be the XT instead of HS !)
Lubin
- Attachments
-
- example1b.mdl
- Corrections
- (24.91 KiB) Downloaded 1296 times
Re: analog in PWM out
Thanks for helping Lubin. I changest the duty cycle and the Quartz configuration. After bilding en programming the controller it works well. After showing it in my presentation everyone was very enthusiast about it.
Re: analog in PWM out
hallo lubin
Hallo I try to rebuild the model we make earlier. But it doesn’t work I check all the configurations but I cant find the problem. Can you tell me where I can find the problem??
This is the error I get
Error building Real-Time Workshop target for block diagram 'tutorial'. MATLAB error message:
Error using ==> genMakefileAndBuild at 1138
Error(s) encountered while building model "tutorial".
Hallo I try to rebuild the model we make earlier. But it doesn’t work I check all the configurations but I cant find the problem. Can you tell me where I can find the problem??
This is the error I get
Error building Real-Time Workshop target for block diagram 'tutorial'. MATLAB error message:
Error using ==> genMakefileAndBuild at 1138
Error(s) encountered while building model "tutorial".
- Attachments
-
- tutorial.mdl
- rebult of the old model
- (26.9 KiB) Downloaded 1295 times
-
- Site Admin - Expert
- Posts: 616
- Joined: Wed Mar 07, 2007 11:23 pm
- Location: Bayonne- France
- Contact:
Re: analog in PWM out
try the following :
add the block "Configure Model for dsPIC Target" in your model and dbl click on that block !
If it does not work, report the complete error message
Lubin
add the block "Configure Model for dsPIC Target" in your model and dbl click on that block !
If it does not work, report the complete error message
Lubin
Re: analog in PWM out
I add the block configuration block and I dbl clickt on it but I still get the error.
I add also the model
this is the error that I get
Model error tutorial Simulink Error building Real-Time Workshop target for block diagram 'tutorial'. MATLAB error message:Error using ==> genMakefileAndBuild at 1138Error(s) encountered while building model "tutorial".
Error building Real-Time Workshop target for block diagram 'tutorial'. MATLAB error message:
Error using ==> genMakefileAndBuild at 1138
Error(s) encountered while building model "tutorial".
I add also the model
this is the error that I get
Model error tutorial Simulink Error building Real-Time Workshop target for block diagram 'tutorial'. MATLAB error message:Error using ==> genMakefileAndBuild at 1138Error(s) encountered while building model "tutorial".
Error building Real-Time Workshop target for block diagram 'tutorial'. MATLAB error message:
Error using ==> genMakefileAndBuild at 1138
Error(s) encountered while building model "tutorial".
- Attachments
-
- example1b.mdl
- work well
- (26.58 KiB) Downloaded 1306 times
-
- tutorial.mdl
- don’t work
- (26.9 KiB) Downloaded 1222 times
-
- Site Admin - Expert
- Posts: 616
- Joined: Wed Mar 07, 2007 11:23 pm
- Location: Bayonne- France
- Contact:
Re: analog in PWM out
Hi Fonty,
I did not see the "Configuration Model for dsPIC" block on your model !
There is definitly a problem in your first problem, briefly :
the LDPICTYPE line in the simulink Configuration Parameters is :
C:\PROGRA~1\MICROC~1\MPLABC~2\lib\libpic30-coff.a C:\PROGRA~1\MICROC~1\MPLABC~2\lib\dsPIC30F\libpPIC24Fxxx-coff.a C:\PROGRA~1\MICROC~1\MPLABC~2\lib\libc-coff.a C:\PROGRA~1\MICROC~1\MPLABC~2\lib\libm-coff.a
The 24f has nothing to do there, This problem is corrected with the block I mention earlier.
If it does not work, make sure you are using a blockset up to date.
I did not see the "Configuration Model for dsPIC" block on your model !
There is definitly a problem in your first problem, briefly :
the LDPICTYPE line in the simulink Configuration Parameters is :
C:\PROGRA~1\MICROC~1\MPLABC~2\lib\libpic30-coff.a C:\PROGRA~1\MICROC~1\MPLABC~2\lib\dsPIC30F\libpPIC24Fxxx-coff.a C:\PROGRA~1\MICROC~1\MPLABC~2\lib\libc-coff.a C:\PROGRA~1\MICROC~1\MPLABC~2\lib\libm-coff.a
The 24f has nothing to do there, This problem is corrected with the block I mention earlier.
If it does not work, make sure you are using a blockset up to date.
- Attachments
-
- tutorial.mdl
- working thanks to the Configuration Model for dsPIC block that solve the problem !
- (25.19 KiB) Downloaded 1241 times
Re: analog in PWM out
I’m sorry I add the wrong block
Re: analog in PWM out
Hello Lubin,
When I use the original model as above and I use a function generator instead of a potentiometer it works well. But when I insert a filter (in this model I use your filter form the explorer16) the system works during 30 to 60 seconds. I tried several kind of filters.
I connected the AN and OC pin with a scope to see what is happening. In the beginning I see the square wave from the OC, but then the voltage drops down and there is no signal any more.
Casparus
When I use the original model as above and I use a function generator instead of a potentiometer it works well. But when I insert a filter (in this model I use your filter form the explorer16) the system works during 30 to 60 seconds. I tried several kind of filters.
I connected the AN and OC pin with a scope to see what is happening. In the beginning I see the square wave from the OC, but then the voltage drops down and there is no signal any more.
Casparus
- Attachments
-
- ADCLP145PWM.mdl
- (28.7 KiB) Downloaded 1282 times
Who is online
Users browsing this forum: No registered users and 13 guests