How to change PWM Frequency?
- roland
-
Topic Author
- Offline
- Premium Member
-
Less
More
- Posts: 138
- Thank you received: 63
28 Jan 2021 09:21 #196911
by roland
How to change PWM Frequency? was created by roland
Attachments:
Please Log in or Create an account to join the conversation.
- PCW
-
- Offline
- Moderator
-
Less
More
- Posts: 18544
- Thank you received: 5092
28 Jan 2021 16:59 #196965
by PCW
Replied by PCW on topic How to change PWM Frequency?
Yes, HM2 PWM frequency is a parameter not a pin so it cannot be linked to a signal
If its just changed occasionally you can use a script with setp
What is the application? maybe PWM is not the best solution.
If its just changed occasionally you can use a script with setp
What is the application? maybe PWM is not the best solution.
Please Log in or Create an account to join the conversation.
- roland
-
Topic Author
- Offline
- Premium Member
-
Less
More
- Posts: 138
- Thank you received: 63
28 Jan 2021 17:42 #196978
by roland
Replied by roland on topic How to change PWM Frequency?
A solenoid valve regulates the flow. The valve is opened 10 times per second for a short time.
So far I do this with pwmgen.
PWM Frequency = 10 Hz
Value 0,062 results in a pulse width of 6.2 ms
...
Value 0.014 results in a pulse width of 1.4 ms
Up to here everything is fine.
At Value < 0.014 the pulse width becomes < 1.4 ms.
But a smaller pulse width than 1.4 ms cannot switch the valve.
To be able to work with value < 0.014, the frequency must be reduced here.
So far I do this with pwmgen.
PWM Frequency = 10 Hz
Value 0,062 results in a pulse width of 6.2 ms
...
Value 0.014 results in a pulse width of 1.4 ms
Up to here everything is fine.
At Value < 0.014 the pulse width becomes < 1.4 ms.
But a smaller pulse width than 1.4 ms cannot switch the valve.
To be able to work with value < 0.014, the frequency must be reduced here.
Please Log in or Create an account to join the conversation.
- PCW
-
- Offline
- Moderator
-
Less
More
- Posts: 18544
- Thank you received: 5092
28 Jan 2021 18:02 - 28 Jan 2021 18:05 #196980
by PCW
Replied by PCW on topic How to change PWM Frequency?
At that low a frequency you are probably better of using software PWM
perhaps siggen and oneshot, or it may be that the software PWM
will work with pwmgen.0.dither-pwm set true (and a 500 Hz thread so
the minimum pulse width is never less than 2 ms)
Another option is using the rcpwmgen (made for RC servos) this has
a rate pin and a .01 to 1KHz PWM rate
man hostmot2
perhaps siggen and oneshot, or it may be that the software PWM
will work with pwmgen.0.dither-pwm set true (and a 500 Hz thread so
the minimum pulse width is never less than 2 ms)
Another option is using the rcpwmgen (made for RC servos) this has
a rate pin and a .01 to 1KHz PWM rate
man hostmot2
Last edit: 28 Jan 2021 18:05 by PCW.
Please Log in or Create an account to join the conversation.
- roland
-
Topic Author
- Offline
- Premium Member
-
Less
More
- Posts: 138
- Thank you received: 63
28 Jan 2021 19:06 #196984
by roland
Replied by roland on topic How to change PWM Frequency?
oneshot and siggen I have tested. That works. The problem is that the pulse width is always a multiple of 1 ms. This is too inaccurate.
Is a new bit file necessary for rcpwmgen?
Attached is my current .vhd file. What must be changed here?
Is a new bit file necessary for rcpwmgen?
Attached is my current .vhd file. What must be changed here?
Attachments:
Please Log in or Create an account to join the conversation.
- PCW
-
- Offline
- Moderator
-
Less
More
- Posts: 18544
- Thank you received: 5092
28 Jan 2021 19:24 #196985
by PCW
Replied by PCW on topic How to change PWM Frequency?
Basically just the module and the pin name, but I just realized a limitation of the rcpwmgen
that may make it an issue, the maximum pulse width is ~10 ms, what is you maximum pulse width?
that may make it an issue, the maximum pulse width is ~10 ms, what is you maximum pulse width?
Please Log in or Create an account to join the conversation.
- roland
-
Topic Author
- Offline
- Premium Member
-
Less
More
- Posts: 138
- Thank you received: 63
28 Jan 2021 19:31 #196988
by roland
Replied by roland on topic How to change PWM Frequency?
maximum pulse width is 6.2 ms
Please Log in or Create an account to join the conversation.
- PCW
-
- Offline
- Moderator
-
Less
More
- Posts: 18544
- Thank you received: 5092
28 Jan 2021 19:47 #196990
by PCW
Replied by PCW on topic How to change PWM Frequency?
OK then it should work,
The new module line would be:
(RCPWMTag, x"00", ClockLowTag, x"01", RCPWMWidthAddr&PadT, RCPWMNumRegs, x"00", RCPWMMPBitMask),
and the new pin line would be:
IOPortTag & x"00" & RCPWMTag & RCPWMOutPin,
The new module line would be:
(RCPWMTag, x"00", ClockLowTag, x"01", RCPWMWidthAddr&PadT, RCPWMNumRegs, x"00", RCPWMMPBitMask),
and the new pin line would be:
IOPortTag & x"00" & RCPWMTag & RCPWMOutPin,
Please Log in or Create an account to join the conversation.
- roland
-
Topic Author
- Offline
- Premium Member
-
Less
More
- Posts: 138
- Thank you received: 63
28 Jan 2021 20:52 #196992
by roland
Replied by roland on topic How to change PWM Frequency?
I was not able to generate the bitfile.
I get this error message:
Can you support me a bit more?
I get this error message:
ERROR:HDLCompiler:69 - "/home/ise/xilinx/7i92/PIN_7I76_7I85SD_RCPWM_SERVO_34.vhd" Line 82: <rcpwmtag> is not declared.
ERROR:HDLCompiler:69 - "/home/ise/xilinx/7i92/PIN_7I76_7I85SD_RCPWM_SERVO_34.vhd" Line 120: <rcpwmtag> is not declared.
ERROR:HDLCompiler:854 - "/home/ise/xilinx/7i92/PIN_7I76_7I85SD_RCPWM_SERVO_34.vhd" Line 72: Unit <pin_7i76_7i85sd_rcpwm_servo_34> ignored due to previous errors.
Can you support me a bit more?
Attachments:
Please Log in or Create an account to join the conversation.
- PCW
-
- Offline
- Moderator
-
Less
More
- Posts: 18544
- Thank you received: 5092
28 Jan 2021 21:57 #196995
by PCW
Replied by PCW on topic How to change PWM Frequency?
Sounds like you don't have the latest source
constant RCPWMTag : std_logic_vector(7 downto 0) := x"2C";
constant RCPWMOutPin : std_logic_vector(7 downto 0) := x"81";
are in the current IDROMConst.vhd
constant RCPWMTag : std_logic_vector(7 downto 0) := x"2C";
constant RCPWMOutPin : std_logic_vector(7 downto 0) := x"81";
are in the current IDROMConst.vhd
The following user(s) said Thank You: roland
Please Log in or Create an account to join the conversation.
Time to create page: 0.088 seconds