HF-TMC51x0 Driver (TMC5130 & TMC5160) 0.1.0-dev
Hardware Agnostic C++ Driver for the TMC51x0 (TMC5130 & TMC5160)
Loading...
Searching...
No Matches
tmc51x0_units.hpp
Go to the documentation of this file.
1
6#pragma once
7#include <cmath>
8#include <cstdint>
9
10namespace tmc51x0 {
11
21constexpr float StepsToMm(int32_t steps, float steps_per_rev,
22 float lead_screw_pitch_mm) noexcept {
23 if (steps_per_rev == 0.0F) {
24 return 0.0F;
25 }
26 return (static_cast<float>(steps) / steps_per_rev) * lead_screw_pitch_mm;
27}
28
36constexpr int32_t MmToSteps(float mm, float steps_per_rev,
37 float lead_screw_pitch_mm) noexcept {
38 if (lead_screw_pitch_mm == 0.0F || steps_per_rev == 0.0F) {
39 return 0;
40 }
41 return static_cast<int32_t>(
42 std::round((mm / lead_screw_pitch_mm) * steps_per_rev));
43}
44
51constexpr float StepsToDegrees(int32_t steps, float steps_per_rev) noexcept {
52 if (steps_per_rev == 0.0F) {
53 return 0.0F;
54 }
55 return (static_cast<float>(steps) / steps_per_rev) * 360.0F;
56}
57
64constexpr int32_t DegreesToSteps(float degrees, float steps_per_rev) noexcept {
65 if (steps_per_rev == 0.0F) {
66 return 0;
67 }
68 return static_cast<int32_t>(std::round((degrees / 360.0F) * steps_per_rev));
69}
70
77constexpr float RpmToStepsPerSec(float rpm, float steps_per_rev) noexcept {
78 return (rpm / 60.0F) * steps_per_rev;
79}
80
87constexpr float StepsPerSecToRpm(float steps_per_sec,
88 float steps_per_rev) noexcept {
89 if (steps_per_rev == 0.0F) {
90 return 0.0F;
91 }
92 return (steps_per_sec / steps_per_rev) * 60.0F;
93}
94
102constexpr float MmPerSecToStepsPerSec(float mm_per_sec, float steps_per_rev,
103 float lead_screw_pitch_mm) noexcept {
104 if (lead_screw_pitch_mm == 0.0F || steps_per_rev == 0.0F) {
105 return 0.0F;
106 }
107 return (mm_per_sec / lead_screw_pitch_mm) * steps_per_rev;
108}
109
117constexpr float StepsPerSecToMmPerSec(float steps_per_sec, float steps_per_rev,
118 float lead_screw_pitch_mm) noexcept {
119 if (steps_per_rev == 0.0F) {
120 return 0.0F;
121 }
122 return (steps_per_sec / steps_per_rev) * lead_screw_pitch_mm;
123}
124
132constexpr float AccelerationMmToSteps(float accel_mm_per_sec2,
133 float steps_per_rev,
134 float lead_screw_pitch_mm) noexcept {
135 if (lead_screw_pitch_mm == 0.0F || steps_per_rev == 0.0F) {
136 return 0.0F;
137 }
138 return (accel_mm_per_sec2 / lead_screw_pitch_mm) * steps_per_rev;
139}
140
148constexpr float AccelerationStepsToMm(float accel_steps_per_sec2,
149 float steps_per_rev,
150 float lead_screw_pitch_mm) noexcept {
151 if (steps_per_rev == 0.0F) {
152 return 0.0F;
153 }
154 return (accel_steps_per_sec2 / steps_per_rev) * lead_screw_pitch_mm;
155}
156
164constexpr int32_t BeltTeethToSteps(uint32_t teeth, float steps_per_rev,
165 uint16_t belt_pulley_teeth) noexcept {
166 if (belt_pulley_teeth == 0 || steps_per_rev == 0.0F) {
167 return 0;
168 }
169 return static_cast<int32_t>(std::round(
170 (static_cast<float>(teeth) / static_cast<float>(belt_pulley_teeth)) *
171 steps_per_rev));
172}
173
181constexpr float StepsToBeltTeeth(int32_t steps, float steps_per_rev,
182 uint16_t belt_pulley_teeth) noexcept {
183 if (steps_per_rev == 0.0F) {
184 return 0.0F;
185 }
186 return (static_cast<float>(steps) / steps_per_rev) *
187 static_cast<float>(belt_pulley_teeth);
188}
189
190} // namespace tmc51x0
Definition tmc51x0_register_defs.cpp:10
constexpr float StepsToMm(int32_t steps, float steps_per_rev, float lead_screw_pitch_mm) noexcept
Convert steps to millimeters.
Definition tmc51x0_units.hpp:21
constexpr float StepsPerSecToRpm(float steps_per_sec, float steps_per_rev) noexcept
Convert steps per second to RPM.
Definition tmc51x0_units.hpp:87
constexpr float AccelerationMmToSteps(float accel_mm_per_sec2, float steps_per_rev, float lead_screw_pitch_mm) noexcept
Convert acceleration from mm/s² to steps/s²
Definition tmc51x0_units.hpp:132
constexpr float AccelerationStepsToMm(float accel_steps_per_sec2, float steps_per_rev, float lead_screw_pitch_mm) noexcept
Convert acceleration from steps/s² to mm/s²
Definition tmc51x0_units.hpp:148
constexpr int32_t MmToSteps(float mm, float steps_per_rev, float lead_screw_pitch_mm) noexcept
Convert millimeters to steps.
Definition tmc51x0_units.hpp:36
constexpr float MmPerSecToStepsPerSec(float mm_per_sec, float steps_per_rev, float lead_screw_pitch_mm) noexcept
Convert millimeters per second to steps per second.
Definition tmc51x0_units.hpp:102
constexpr float StepsToBeltTeeth(int32_t steps, float steps_per_rev, uint16_t belt_pulley_teeth) noexcept
Convert steps to belt drive distance (teeth)
Definition tmc51x0_units.hpp:181
constexpr float StepsPerSecToMmPerSec(float steps_per_sec, float steps_per_rev, float lead_screw_pitch_mm) noexcept
Convert steps per second to millimeters per second.
Definition tmc51x0_units.hpp:117
constexpr int32_t BeltTeethToSteps(uint32_t teeth, float steps_per_rev, uint16_t belt_pulley_teeth) noexcept
Convert belt drive distance (teeth) to steps.
Definition tmc51x0_units.hpp:164
constexpr float StepsToDegrees(int32_t steps, float steps_per_rev) noexcept
Convert steps to degrees.
Definition tmc51x0_units.hpp:51
constexpr float RpmToStepsPerSec(float rpm, float steps_per_rev) noexcept
Convert RPM to steps per second.
Definition tmc51x0_units.hpp:77
constexpr int32_t DegreesToSteps(float degrees, float steps_per_rev) noexcept
Convert degrees to steps.
Definition tmc51x0_units.hpp:64