Jump to content

Component: DC Motor (Mechatronics): Difference between revisions

From Flowcode Help
No edit summary
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder""
 
(16 intermediate revisions by 3 users not shown)
Line 15: Line 15:
DC Motor that can be driven in one or both directions using digital output pins, PWM or HBRIDGE peripherals.
DC Motor that can be driven in one or both directions using digital output pins, PWM or HBRIDGE peripherals.


==Component Source Code==
==Version information==


Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_DCMotor_2d.fcfx FC_Comp_Source_DCMotor_2d.fcfx]
Library Version, Component Version, Date, Author, Info
2, 1.2, 13-11-24, BR, Altered property tooltips to make them more meaningful


==Detailed description==
==Detailed description==
Line 33: Line 34:




''No detailed description exists yet for this component''


==Examples==




Line 41: Line 40:




''No detailed description exists yet for this component''


==Examples==






Simple example showing how to drive the motor component by only using Enable and two port pins.


{{Fcfile|DC_Motor_pin_control.fcfx|DC Motor pin control}}


==Macro reference==


===Break===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''Break'''
|-
| colspan="2" | Actively drives both ends of the motor by setting the pins according to the 'Brake Pattern' property. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


DALI Slave Example, listens for DALI messages and checks that the group is correct before attempting to process the request and if required reply to the master.
{{Fcfile|DALI_Slave.fcfx|DALI Slave Example1}}


 
===Coast===
For a DALI Master example see: [[Component: DALI Master (Comms: System)]]
{| class="mtx-class-macrotable wikitable"
 
==Macro reference==
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Coast'''
| width="90%" class="mtx-class-macrohead" | '''Coast'''
|-
|-
| colspan="2" | Turn off power to the motor by setting the pins according to the 'Coast Pattern' property. 
| colspan="2" | Turn off power to the motor by setting the pins according to the 'Coast Pattern' property. 
Line 70: Line 80:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===Disable===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Break'''
| width="90%" class="mtx-class-macrohead" | '''Disable'''
|-
|-
| colspan="2" | Actively drives both ends of the motor by setting the pins according to the 'Brake Pattern' property. 
| colspan="2" | Disable the motor output 
|-
|-
|-
|-
Line 83: Line 94:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===Enable===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Disable'''
| width="90%" class="mtx-class-macrohead" | '''Enable'''
|-
|-
| colspan="2" | Disable the motor output 
| colspan="2" | Enables the motor output 
|-
|-
|-
|-
Line 96: Line 108:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===Forwards===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Forwards'''
| width="90%" class="mtx-class-macrohead" | '''Forwards'''
|-
|-
| colspan="2" | Set the motor turning in the forwards direction by setting the pins according to the 'Forwards Pattern' property. 
| colspan="2" | Set the motor turning in the forwards direction by setting the pins according to the 'Forwards Pattern' property. 
Line 114: Line 127:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===GetSimAngle===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Enable'''
| width="90%" class="mtx-class-macrohead" | '''GetSimAngle'''
|-
|-
| colspan="2" | Enables the motor output 
| colspan="2" | Gets the angle of the simulated motor shaft in degrees. 
|-
|-
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-f32-icon.png]] - FLOAT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===Reverse===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Reverse'''
| width="90%" class="mtx-class-macrohead" | '''Reverse'''
|-
|-
| colspan="2" | Set the motor turning in the reverse direction by setting the pins according to the 'Reverse Pattern' property. 
| colspan="2" | Set the motor turning in the reverse direction by setting the pins according to the 'Reverse Pattern' property. 
Line 143: Line 158:
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetSimAngle'''
|-
| colspan="2" | Gets the angle of the simulated motor shaft in degrees. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-f32-icon.png]] - FLOAT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




==Property reference==
==Property reference==


{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
| width="90%" class="mtx-class-macrohead" | '''Properties'''  
|-
|-
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Control Type
| width="90%" class="mtx-class-propfolder" | Control Type
|-
|-
|-
|-
Line 175: Line 175:
| width="90%" | Control Method
| width="90%" | Control Method
|-
|-
| colspan="2" | Controls how the motor is controlled. On/Off requires output pins PWM requires a hardware PWM channel H-Bridge requires a hardware H-Bridge channel 
| colspan="2" | Controls how the motor is controlled. On/Off requires basic output pins, motor is full speed or stopped. PWM requires a hardware PWM channel and allows the motor speed to be controlled. H-Bridge requires a hardware H-Bridge channel and allows the motor speed to be controlled. 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | Bridge Type
| width="90%" | Bridge Type
|-
|-
| colspan="2" |  
| colspan="2" | Half Bridge - Motor can only be controlled in one direction. Full Bridge - Motor can be controlled in both directions. 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
Line 187: Line 187:
| colspan="2" | Decides how the motor outputs are enabled. 
| colspan="2" | Decides how the motor outputs are enabled. 
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Connections
| width="90%" class="mtx-class-propfolder" | Connections
|-
|-
|-
|-
Line 221: Line 221:
| colspan="2" | States of pins A and B required to stop the motor. 
| colspan="2" | States of pins A and B required to stop the motor. 
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation Settings
| width="90%" class="mtx-class-propfolder" | Software PWM Settings
|-
|-
| width="10%" align="center" | [[File:Fc9-type-2-icon.png]]
| width="90%" | Label Colour
|-
| colspan="2" |  
|-
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]]
| width="90%" | Speed
|-
| colspan="2" | Speed of the motor when turned on. Positive speed -> Counter-clockwsie Negative speed -> Clockwise  
|}==Macro reference==
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Coast'''
|-
| colspan="2" | Turn off power to the motor by setting the pins according to the 'Coast Pattern' property. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Break'''
|-
| colspan="2" | Actively drives both ends of the motor by setting the pins according to the 'Brake Pattern' property. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Disable'''
|-
| colspan="2" | Disable the motor output 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Forwards'''
|-
| colspan="2" | Set the motor turning in the forwards direction by setting the pins according to the 'Forwards Pattern' property. 
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Duty
|-
| colspan="2" | Sets the motor power for PWM or H-Bridge outputs 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Enable'''
|-
| colspan="2" | Enables the motor output 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Reverse'''
|-
| colspan="2" | Set the motor turning in the reverse direction by setting the pins according to the 'Reverse Pattern' property. 
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Duty
|-
| colspan="2" | Sets the motor power for PWM or H-Bridge outputs 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetSimAngle'''
|-
| colspan="2" | Gets the angle of the simulated motor shaft in degrees. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-f32-icon.png]] - FLOAT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
 
 
==Property reference==
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Control Type
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | Control Method
| width="90%" | Timer
|-
|-
| colspan="2" | Controls how the motor is controlled. On/Off requires output pins PWM requires a hardware PWM channel H-Bridge requires a hardware H-Bridge channel 
| colspan="2" | Timer Peripheral to use to monitor the passage of time. 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | Bridge Type
| width="90%" | Prescaler
|-
|-
| colspan="2" |  
| colspan="2" | Scaler applied to the timer, Small scalers allow for finer resolution but will limit the max time and also put more load on the microcontroller. Recommended to use as large a setting as possible which still provides enough accuracy.  
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
| width="90%" | Enable Method
| width="90%" | Resolution
|-
|-
| colspan="2" | Decides how the motor outputs are enabled. 
| colspan="2" | Number of discrete values that the duty can have. e.g. 16 would allow duty values of 0-15 Recommend keeping this value low to avoid excessive amounts of interrupts. 
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Connections
| width="90%" | Frequency (Hz)
|-
|-
| colspan="2" | The frequency of the PWM output in Hz. Recommend keeping this low as possible to avoid having excessive amounts of interrupts. 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-5-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
| width="90%" | PinA
| width="90%" | Required Interrupt Rate (Hz)
|-
|-
| colspan="2" | First control pin - set 'pattern' properties below to set the pin's function. 
| colspan="2" | The calculated required rate of interrupts 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-5-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]]
| width="90%" | PinB
| width="90%" | Accuracy
|-
|-
| colspan="2" | Second control pin - set 'pattern' properties below to set the pin's function. 
| colspan="2" | How close we can get to the required timings with the selected timer and prescaler 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | Forwards Pattern
| width="90%" | Off Time Setting
|-
|-
| colspan="2" | The state of pins A and B required to drive the motor in a forwards direction. 
| colspan="2" | Decides what to do when output PWM output is low. 
|-
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" | Reverse Pattern
| width="90%" class="mtx-class-propfolder" | Simulation Settings
|-
| colspan="2" | States of pins A and B required to drive the motor in a reverse direction. 
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | Coast Pattern
|-
| colspan="2" | States of pins A and B required to stop the motor. 
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | Brake Pattern
|-
| colspan="2" | States of pins A and B required to stop the motor. 
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation Settings
|-
|-
|-
|-
Line 414: Line 274:
| colspan="2" | Speed of the motor when turned on. Positive speed -> Counter-clockwsie Negative speed -> Clockwise  
| colspan="2" | Speed of the motor when turned on. Positive speed -> Counter-clockwsie Negative speed -> Clockwise  
|}
|}
==Component Source Code==
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_DCMotor_2d.fcfx FC_Comp_Source_DCMotor_2d.fcfx]
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_DCMotor_2d.fcfx FC_Comp_Source_DCMotor_2d.fcfx]

Latest revision as of 14:37, 13 July 2026

Author Matrix TSL
Version 1.2
Category Mechatronics


DC Motor component

DC Motor that can be driven in one or both directions using digital output pins, PWM or HBRIDGE peripherals.

Version information

Library Version, Component Version, Date, Author, Info
2, 1.2, 13-11-24, BR, Altered property tooltips to make them more meaningful

Detailed description

No detailed description exists yet for this component

Examples

Simple example showing how to drive the motor component by only using Enable and two port pins.

DC Motor pin control

Macro reference

Break

Break
Actively drives both ends of the motor by setting the pins according to the 'Brake Pattern' property. 
- VOID Return


Coast

Coast
Turn off power to the motor by setting the pins according to the 'Coast Pattern' property. 
- VOID Return


Disable

Disable
Disable the motor output 
- VOID Return


Enable

Enable
Enables the motor output 
- VOID Return


Forwards

Forwards
Set the motor turning in the forwards direction by setting the pins according to the 'Forwards Pattern' property. 
- UINT Duty
Sets the motor power for PWM or H-Bridge outputs 
- VOID Return


GetSimAngle

GetSimAngle
Gets the angle of the simulated motor shaft in degrees. 
- FLOAT Return


Reverse

Reverse
Set the motor turning in the reverse direction by setting the pins according to the 'Reverse Pattern' property. 
- UINT Duty
Sets the motor power for PWM or H-Bridge outputs 
- VOID Return


Property reference

Properties
Control Type
Control Method
Controls how the motor is controlled. On/Off requires basic output pins, motor is full speed or stopped. PWM requires a hardware PWM channel and allows the motor speed to be controlled. H-Bridge requires a hardware H-Bridge channel and allows the motor speed to be controlled. 
Bridge Type
Half Bridge - Motor can only be controlled in one direction. Full Bridge - Motor can be controlled in both directions. 
Enable Method
Decides how the motor outputs are enabled. 
Connections
PinA
First control pin - set 'pattern' properties below to set the pin's function. 
PinB
Second control pin - set 'pattern' properties below to set the pin's function. 
Forwards Pattern
The state of pins A and B required to drive the motor in a forwards direction. 
Reverse Pattern
States of pins A and B required to drive the motor in a reverse direction. 
Coast Pattern
States of pins A and B required to stop the motor. 
Brake Pattern
States of pins A and B required to stop the motor. 
Software PWM Settings
Timer
Timer Peripheral to use to monitor the passage of time. 
Prescaler
Scaler applied to the timer, Small scalers allow for finer resolution but will limit the max time and also put more load on the microcontroller. Recommended to use as large a setting as possible which still provides enough accuracy.  
Resolution
Number of discrete values that the duty can have. e.g. 16 would allow duty values of 0-15 Recommend keeping this value low to avoid excessive amounts of interrupts. 
Frequency (Hz)
The frequency of the PWM output in Hz. Recommend keeping this low as possible to avoid having excessive amounts of interrupts. 
Required Interrupt Rate (Hz)
The calculated required rate of interrupts 
Accuracy
How close we can get to the required timings with the selected timer and prescaler 
Off Time Setting
Decides what to do when output PWM output is low. 
Simulation Settings
Label Colour
 
Speed
Speed of the motor when turned on. Positive speed -> Counter-clockwsie Negative speed -> Clockwise  

Component Source Code

Please click here to download the component source project: FC_Comp_Source_DCMotor_2d.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_DCMotor_2d.fcfx