Bi-directional Non backdrivable Roller Clutch Modelling in Simscape/Simulink

4 次查看(过去 30 天)
Hello,
I am trying to create a bi-directional non backdrivable roller clutch that behaves in the following way:
  • The input of the clutch can rotate the output in both directions (bi directional) and transmits torque from the input to the output.
  • The output of the clutch cannot rotate the input of the clutch in any direction. It is locked and therefore non backdrivabe. No torque is transferred from the output to the input.
  • The locked state of the clutch is friction based. if the load on the output becomes too big (T_load > T_fric), the mechanism fails and the output drives the input, thus also transferring torque from output to input. The friction torque that prevents the output shaft of backdriving the input shaft is created between the output shaft and the ring surounding the clutch.
In short: a mechanism that can transfer torque from input to output, but not the other way round, except when the load on the output becomes too large.
I have tried two different ways of modelling this behavior.
First, i used the Simscape driveline logic controlled clutch component to model this behavior. When the clutch is locked, torque is transferred from input to output, but also the other way round. Unlocking the clutch will prevent the transfer of torque from output to input, but this also means the output can spin freely. This does not give the wanted behavior. I would need some kind of hard stop to prevent the output from spinning freely, but I do not know how to implement that correctly when the clutch is disconnected, but I was not able to model it that way.
My second approach involves using a revolute joint and a set of logic blocks. I use the option to give the Mode of the Revolute joint as an input to be able to lock the revolute joint. This prevents any toruqe to be transferred from output to input. A second revolute joint directly connected to the 'Clutch' revolute joint is then used to measure the total torque build up on the output shaft. When the torque load is too big and the clutch (joint) switches to normal mode. Now there is no way of measuring the torque load that is applied, or i will create an algebraic loop.
I have also considered to write a custom simscape component block, but i am not sure this is the way to go.
Does anybody have some tips/hints on how to build this type of roller clutch model or show me a similar problem?
Best regards,
Jasper

回答(1 个)

Kwon
Kwon 2025-8-1
Hi Jasper,
Attached is a model inspired by the first approach you mentioned. Here is a screenshot of it:
The left logic-controlled clutch is the main clutch of interest, while the right logic-controlled clutch engages when the left clutch disengages. This achieves a zero-speed condition at the output upon the main clutch’s disengagement.
I suspect that algebraic loops may arise when the logic becomes more complex. In that case, a transfer function block may be used within the loop: https://blogs.mathworks.com/simulink/2015/07/18/why-you-should-never-break-an-algebraic-loop-with-with-a-memory-block/
Best,
Kwon

类别

Help CenterFile Exchange 中查找有关 Brakes and Detents 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by