{"id":576,"date":"2017-01-18T09:53:11","date_gmt":"2017-01-18T09:53:11","guid":{"rendered":"http:\/\/pthat.com\/?page_id=576"},"modified":"2022-09-06T13:03:39","modified_gmt":"2022-09-06T12:03:39","slug":"motor-information","status":"publish","type":"page","link":"https:\/\/pthat.com\/index.php\/motor-information\/","title":{"rendered":"Motor Information"},"content":{"rendered":"<p>[et_pb_section admin_label=&#8221;Section&#8221; fullwidth=&#8221;on&#8221; specialty=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; custom_padding=&#8221;5px||5px|&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_fullwidth_header admin_label=&#8221;Fullwidth Header&#8221; title=&#8221;Motor Information&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;center&#8221; header_fullscreen=&#8221;off&#8221; header_scroll_down=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; content_orientation=&#8221;center&#8221; image_orientation=&#8221;center&#8221; custom_button_one=&#8221;off&#8221; button_one_letter_spacing=&#8221;0&#8243; button_one_use_icon=&#8221;default&#8221; button_one_icon_placement=&#8221;right&#8221; button_one_on_hover=&#8221;on&#8221; button_one_letter_spacing_hover=&#8221;0&#8243; custom_button_two=&#8221;off&#8221; button_two_letter_spacing=&#8221;0&#8243; button_two_use_icon=&#8221;default&#8221; button_two_icon_placement=&#8221;right&#8221; button_two_on_hover=&#8221;on&#8221; button_two_letter_spacing_hover=&#8221;0&#8243; title_font_size=&#8221;61px&#8221;] [\/et_pb_fullwidth_header][\/et_pb_section][et_pb_section admin_label=&#8221;Section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; custom_padding=&#8221;0px|0px|0px|0px&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; use_custom_gutter=&#8221;off&#8221; custom_padding=&#8221;0px|0px|0px|0px&#8221; padding_mobile=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; make_equal=&#8221;off&#8221; parallax_1=&#8221;off&#8221; parallax_method_1=&#8221;off&#8221; column_padding_mobile=&#8221;on&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221; custom_margin=&#8221;0px|0px|0px|0px&#8221; custom_padding=&#8221;0px|0px|0px|0px&#8221;]<\/p>\n<div>\n<p><span style=\"font-size: 14pt;\">Stepper\/Servo motors are used extensively in automation these days, some of the popular ones being CNC machine, 3D Printers and various Robotic applications.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Do not get Stepper\/Servo motors confused with DC brushed motors as they are controlled very differently.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Stepper\/Servo motors are controlled by sending pulses and changing the speed (frequency) to that pulse train to increase or decrease the speed. With DC motors you send a pulse that is usually at a fixed frequency and then you alter the width of the pulse to speed it up or shorten the pulse to slow it down.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">The PTHAT is designed to control Stepper\/Servo motors by sending very accurate and smooth pulse trains and is not designed for controlling DC motors.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Rather than repeat too much of what is already out their on the web, please check out this link <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stepper_motor\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/en.wikipedia.org\/wiki\/Stepper_motor<\/a> for detailed workings of the inside of a Stepper motor.<\/span><\/p>\n<\/div>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;Section&#8221; fullwidth=&#8221;on&#8221; specialty=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; custom_padding=&#8221;50px|100px||100px&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_fullwidth_code admin_label=&#8221;Fullwidth Code&#8221;]&lt;p&gt;\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_692 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_692 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_692 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_692 .wpsm_nav-tabs > li.active > a, #tab_container_692 .wpsm_nav-tabs > li.active > a:hover, #tab_container_692 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_692 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_692 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_692 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_692 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_692 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_692 .wpsm_nav-tabs > li > a:hover , #tab_container_692 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_692 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_692 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_692 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_692 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_692 .wpsm_nav-tabs > li{\r\n\tfloat:none !important;\r\n\t\tmargin-right:-1px !important;\r\n\t\t\t}\r\n\t#tab_container_692 .wpsm_nav-tabs{\r\n\tfloat:left !important;\r\n\tmargin:0px !important;\r\n\t}\r\n}\r\n\r\n#tab_container_692 .wpsm_nav-tabs > li {\r\n    \tmargin-bottom: 8px !important;\r\n\t\t\r\n}\r\n#tab_container_692 .wpsm_nav{\r\n\t}\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_692 .wpsm_nav-tabs > li {\r\n\t\t\t\tmargin-bottom: 8px !important;\r\n\t\tmargin-right:0px !important;\r\n\t\tmargin-left:0px !important;\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_692 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t\t\r\n\t\t\t#tab_container_692 .wpsm_nav-tabs > li {\r\n\t\t\t\t\t\t\t\t\t\t\t\tmargin-right: 8px !important;\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\t\t\t\t#tab_container_692 .wpsm_nav-tabs > li{\r\n\t\t\t\t\tfloat:none !important;\r\n\t\t\t\t}\r\n\t\t\t\t#tab_container_692 .wpsm_nav-tabs{\r\n\t\t\t\tfloat:left !important;\r\n\t\t\t\tmargin:0px !important;\r\n\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_692\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_692\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_692_1\" aria-controls=\"tabs_desc_692_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Stepper Drivers<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-chevron-circle-right\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_692_2\" aria-controls=\"tabs_desc_692_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Resolution\/Travel Distance<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-chevron-circle-right\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_692_3\" aria-controls=\"tabs_desc_692_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Speed<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-chevron-circle-right\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_692_4\" aria-controls=\"tabs_desc_692_4\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Ramping<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-chevron-circle-right\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_692_5\" aria-controls=\"tabs_desc_692_5\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Linear Interpolation<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-chevron-circle-right\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_692_6\" aria-controls=\"tabs_desc_692_6\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Scope Shots<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-chevron-circle-right\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_692\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_692_1\">\r\n\t\t\t\t\t\t\t\t <div data-post-id=\"581\" class=\"insert-page insert-page-581 \"><div class=\"et-l et-l--post\">\n\t\t\t<div class=\"et_builder_inner_content et_pb_gutters3\">\n\t\t[et_pb_section admin_label=&#8221;section&#8221; background_color=&#8221;#2ea3f2&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h1 style=\"font-size: 72px; font-weight: 300;\">Stepper\u00a0Drivers<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Stepper Motor Pulses<\/h2>\n<p><span style=\"font-size: 14pt;\">Most of the popular Stepper motors used are known as 1.8 degree, which is the resolution of 360 degrees divided by the steps of the motor for one revolution, or worked backwards\u00a0360\/1.8=200.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> So we have to send 200 pulses to get the motor to turn one whole revolution. If we sent 100 pulses then the motor would do half a revolution, which is 180 degrees.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Now even though 1.8 degree sounds a good resolution for simple projects, it becomes a bit restrictive when needing high resolution movements.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> But this is not a problem as modern Stepper drivers are known as Micro Step drivers and can increase the resolution from 200 pulses to ten\u2019s of thousands of pulses by some clever electronics.<\/span><\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Controlling a Stepper Motor with a Driver<\/h2>\n<p><span style=\"font-size: 14pt;\">Not only does the Stepper driver increase the pulses that are needed to do one revolution, but also make control of the motor very simple by offering a Pulse input pin and Direction pin as the interface. You simply\u00a0send a pulse on the Pulse input to make the motor step the degree resolution you have set on the driver. Then by either supplying 5 volts or 0 volts to the Direction pin will determine if the motor rotates forward or backwards.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Another thing the Stepper driver does is isolate the higher voltage that is needed to run the motor, away from the inputs that are usually TTL logic levels.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;row&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; use_custom_gutter=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; make_equal=&#8221;off&#8221; parallax_1=&#8221;off&#8221; parallax_method_1=&#8221;off&#8221; parallax_2=&#8221;off&#8221; parallax_method_2=&#8221;off&#8221; column_padding_mobile=&#8221;on&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Ease of use<\/h2>\n<p><span style=\"font-size: 14pt;\">Finally the Stepper driver restricts the current that is supplied to the motors, which is usually set using a simple set of switches on the driver.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">As you can see, once you have your motors wired up to the drivers and they are all configured, then the next stage is working out how you are going to send and control the pulses to get your motors moving. This is where the PTHAT comes into play as it takes a lot of the complicated stuff away from the developer.<\/span><\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2016\/12\/BothBoardsTogether-MotorWiring.jpg&#8221; url_new_window=&#8221;off&#8221; animation=&#8221;left&#8221; show_in_lightbox=&#8221;off&#8221; use_overlay=&#8221;off&#8221; sticky=&#8221;off&#8221; align=&#8221;left&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;60&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section]\t\t<\/div>\n\t<\/div>\n\t<\/div>\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_692_2\">\r\n\t\t\t\t\t\t\t\t<div data-post-id=\"601\" class=\"insert-page insert-page-601 \"><div class=\"et-l et-l--post\">\n\t\t\t<div class=\"et_builder_inner_content et_pb_gutters3\">\n\t\t[et_pb_section admin_label=&#8221;section&#8221; background_color=&#8221;#2ea3f2&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h1 style=\"font-size: 72px; font-weight: 300;\">Resolution\/Travel Distance<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Using Ballscrews<\/h2>\n<p><span style=\"font-size: 14pt;\">Lets go back to the resolution for the moment and see how that works out when introducing different mechanical elements.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> One of the most popular components used in CNC machines is the ballscrew that you connect to the motor.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">As we are talking about resolution here, the main thing we are interested in, is the pitch of the ballscrew. You can get many different pitches and popular ones are 4mm and 5mm. The pitch determines how far the ball nut will travel when turned one revolution. So if the pitch is 5mm, then when the ballscrew is rotated one full revolution the ball nut will travel 5mm.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> So based on this, we can now work out our best resolution of travel that is possible when combined with our Stepper driver.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> If we have our stepper driver set to Full Step (200 Pulses Per Rev) then we know that sending 200 pulses will turn the ballscrew one revolution and move the ball nut 5mm. By dividing the pitch down by the pulses, we can calculate that 5.0\/200 = 0.025mm resolution. If we send one pulse to the\u00a0Motor driver then the ball nut will move 0.025mm. Now we increase the Stepper driver to\u00a01\/8 Step (1600 Pulses Per Rev) and we get a much better resolution\u00a05.0\/1600 = 0.003125mm.<\/span><\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/roller_screw_ballscrew_large.jpg&#8221; url_new_window=&#8221;off&#8221; animation=&#8221;left&#8221; show_in_lightbox=&#8221;off&#8221; use_overlay=&#8221;off&#8221; sticky=&#8221;off&#8221; align=&#8221;left&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;row&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; use_custom_gutter=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; make_equal=&#8221;off&#8221; parallax_1=&#8221;off&#8221; parallax_method_1=&#8221;off&#8221; parallax_2=&#8221;off&#8221; parallax_method_2=&#8221;off&#8221; column_padding_mobile=&#8221;on&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Controlling a Stepper Motor with a Driver<\/h2>\n<p><span style=\"font-size: 14pt;\">Some drivers will let you go way much higher than the steps shown above in the example, but there does come a point where increasing the Pulses Per Rev is not really going to make a difference and most applications will not use above 1\/16 (3200 Pulses Per Rev).<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> For an example if you set a driver to a really high divide of say 20\u2019000 Pulses Per Rev and start sending some pulses you will notice that the motor will not move on every pulse and you indeed to need to send say 10 pulses before the motor moves to the desired position.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> Also the higher\u00a0the Micro step the less holding torque of the motor.<\/span><\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Conclusion<\/h2>\n<p><span style=\"font-size: 14pt;\">So if you need a better resolution then decrease the pitch of your ballscrew, like say a 2mm pitch which would give you 2.0\/1600= 0.00125mm resolution could be a better option for accuracy.<br \/>\nAs usual everything has it trade off\u2019s and by increasing the resolution you will need to make sure you have a controller that\u00a0 can send fast pulse trains, again this is\u00a0where the PTHAT comes into it\u2019s own and will be explained further down this page.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Most software out there likes you to specify the amount of pulses per unit of travel, so to find out how many pulses for 1mm when using a 5mm pitch ballscrew and 1\/8 step\u00a0would be 1600\/5.0= 320 pulses.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/pulleybelt.jpg&#8221; url_new_window=&#8221;off&#8221; animation=&#8221;left&#8221; show_in_lightbox=&#8221;off&#8221; use_overlay=&#8221;off&#8221; sticky=&#8221;off&#8221; align=&#8221;left&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Pulley and Belts<\/h2>\n<p><span style=\"font-size: 14pt;\">Now of course if you are not building a high torque CNC machine and you are moving a small mass, then you could use pulleys and belt as a drive system like 3D printers do.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Pulleys and belts will also divide the resolution, depending on what size pulleys you use and also the pitch of the belt.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> The popular choice for 3D printers is to use GT2 (2.0mm) belts and the less teeth on your pulleys is going to give you a better resolution.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Calculating the Resolution<\/h2>\n<p><span style=\"font-size: 14pt;\">So first off\u00a0lets\u00a0take usage of a 2.0mm belt and 16 tooth pulleys, using 1600 Pulses Per Rev it would give us 0.02mm resolution, which gives us 50\u00a0pulses for 1mm of travel.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">We can calculate the amount of pulses to travel 1mm\u00a0by multiplying the pitch of the belt by the tooth count on the pulley 2.0*16=32 and then taking the Pulse Per Rev and dividing it by the result 1600\/32=50. Then to get resolution just divide 1.0\/50=0.02mm.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">You have to be a little bit careful when choosing the amount of teeth on the pulley as you may end up with needing to send half a pulse to get your 1mm of travel and you cannot send half a pulse!.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> For example lets take a 14 tooth pulley and do the same maths. 2.0*14=28 then 1600\/28=57.14, as you can see you are not going to be able to send 0.14 of a pulse. So keep this in mind when calculating.<\/span><\/p>[\/et_pb_text][et_pb_cta admin_label=&#8221;Call To Action&#8221; button_url=&#8221;https:\/\/nathan7.eu\/stuff\/RepRapCalculator\/RepRapCalculator.html&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;View Link&#8221; use_background_color=&#8221;on&#8221; background_color=&#8221;rgba(255,255,255,0)&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221; custom_button=&#8221;off&#8221; button_letter_spacing=&#8221;0&#8243; button_use_icon=&#8221;default&#8221; button_icon_placement=&#8221;right&#8221; button_on_hover=&#8221;on&#8221; button_letter_spacing_hover=&#8221;0&#8243;]<h3>There are some handy online calculators such as this one that can make it easier.<\/h3>\n<p>&nbsp;<\/p>[\/et_pb_cta][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>The PTHAT Accuracy<\/h2>\n<p><span style=\"font-size: 14pt;\">The PTHAT uses a dedicated counter for each motor Axis and will\u00a0monitor the pulse trains and keep an eye on how many pulses are being sent out to each Axis. When the target pulse count has been reached, it automatically stops the motor or continues on with the next pulse count command sent, even at very high speeds in ensures no extra pulses creep in or get missed.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;60&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section]\t\t<\/div>\n\t<\/div>\n\t<\/div>\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_692_3\">\r\n\t\t\t\t\t\t\t\t<div data-post-id=\"629\" class=\"insert-page insert-page-629 \"><div class=\"et-l et-l--post\">\n\t\t\t<div class=\"et_builder_inner_content et_pb_gutters3\">\n\t\t[et_pb_section admin_label=&#8221;section&#8221; background_color=&#8221;#2ea3f2&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h1 style=\"font-size: 72px; font-weight: 300;\">Speed<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<p><span style=\"font-size: 14pt;\">Obviously altering the speed of the motors will increase or decrease the travel speed of the attached mechanics on your motors.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> I like to work in mm\/min (Millimetres Per Minute) where as others prefer mm\/sec\u00a0(Millimetres Per Second), but for this explanation I will stick to mm\/min which is how many millimetres are travelled in 1 minute.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">A\u00a0simple example is to have a motor with a ballscrew that has a 1mm pitch. If we require to travel a distance of 2000mm over a minute (2000mm\/min), we would run the motor at 2000RPM. Then as we increase the size of the ballscrew pitch we simply divide down the speed. So with a 5mm pitch ballscrew\u00a0we would only need to run it at \u00a0400 RPM.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> This why sometimes you see big CNC machines running at silly speeds, they are increasing their ballscrew pitch up to 20mm or higher and with strong motors and low speeds they can shift the gantry around with no problems. Obviously we are loosing resolution, so again workout what is important to you, speed or resolution and find middle ground.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">A thing to remember is that the calculations are fine if you are moving a single Axis in a straight line and not using Interpolation between 2 motors (Interpolation covered further down), but when you are running 2 Axis&#8217;s to say draw an angle then you have to calculate based on the Vector Travel distance.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4214\" src=\"https:\/\/pthat.com\/wp-content\/uploads\/2017\/02\/vectorspeed2.jpg\" alt=\"\" width=\"567\" height=\"455\" srcset=\"https:\/\/pthat.com\/wp-content\/uploads\/2017\/02\/vectorspeed2.jpg 567w, https:\/\/pthat.com\/wp-content\/uploads\/2017\/02\/vectorspeed2-300x241.jpg 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/p>\n<p><span style=\"font-size: 14pt;\">As you can see above if you ran both X and Y Axis&#8217;s at 1000mm\/min you would actually be doing a speed of 1414.2136mm\/min for your tool in the middle of the X\/Y frame. <\/span><\/p>\n<p><span style=\"font-size: 14pt;\">If you dropped the speed of the X-Axis and Y-Axis to 707.1068mm\/min then the Vector Speed would be 1000mm\/min as desired.<\/span><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4214\" src=\"https:\/\/pthat.com\/wp-content\/uploads\/2017\/02\/vectorspeed3.jpg\" alt=\"\" width=\"567\" height=\"455\" \/><\/p>\n<p><span style=\"font-size: 14pt;\">So keep this in mind when calculating your speeds.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243;][et_pb_row admin_label=&#8221;row&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; use_custom_gutter=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; make_equal=&#8221;off&#8221; parallax_1=&#8221;off&#8221; parallax_method_1=&#8221;off&#8221; parallax_2=&#8221;off&#8221; parallax_method_2=&#8221;off&#8221; column_padding_mobile=&#8221;on&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Sending out Pulses<\/h2>\n<p><span style=\"font-size: 14pt;\">So easy enough to work out running speeds but we are sending pulses here to run the motors and if we have our Stepper drivers at to 1600 pulses per revolution and a ballscrew with a 5mm pitch then we know that it is 5.0\/1600=320 pulses\u00a0to travel 1mm. To travel 2000mm we would need to send 2000*320=640\u2019000 pulses over exactly 1 minute.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">How to\u00a0send out our 640\u2019000 pulses in exactly a minute is to convert our RPM to frequency in Hz.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> 1Hz is equal to one cycle per second or in our case one Pulse per second.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> As there are 60 seconds in a minute then we can safely say that 1\/60=0.01666666666Hz is the speed of the cycle per minute.<\/span><\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Calculating the RPM<\/h2>\n<p><span style=\"font-size: 14pt;\">To calculate our target speed of 400 RPM we can do it a couple of ways.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> As we know that we need to send 640\u2019000 pulses in a minute then we can take our 640\u2019000 pulses and multiply it by\u00a0our result of cycles per minute\u00a0640000*0.01666666666=10666.66Hz.<\/span><br \/>\n<span style=\"font-size: 14pt;\"><br \/>\nOr we can take our Pulses Per Rev of 1600*0.01666666666=26.666666656 and\u00a0multiply the result by the required RPM required 400*26.666666656=10666.66Hz<\/span><br \/>\n<span style=\"font-size: 14pt;\"><br \/>\nThe frequency needed to get 400 RPM with a motor set to 1600 Pulses Per Rev, we would need to drive it at 10666.66Hz (10.66666kHz)<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Conclusion<\/h2>\n<p><span style=\"font-size: 14pt;\">As you can see by our example above we need our pulses to be spot on and a resolution of two decimal places.<br \/>\n<\/span><br \/>\n<span style=\"font-size: 14pt;\"> With the PTHAT are using Direct digital synthesizer processors (DDS) on each channel, which give a very accurate, clean\u00a0pulses and allows us to go to speeds that you will probably never need.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> Also having the resolution allows us to get better interpolation between each Axis as will be explained further down the page.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;60&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section]\t\t<\/div>\n\t<\/div>\n\t<\/div>\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_692_4\">\r\n\t\t\t\t\t\t\t\t<div data-post-id=\"631\" class=\"insert-page insert-page-631 \"><div class=\"et-l et-l--post\">\n\t\t\t<div class=\"et_builder_inner_content et_pb_gutters3\">\n\t\t[et_pb_section admin_label=&#8221;section&#8221; background_color=&#8221;#2ea3f2&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h1 style=\"font-size: 72px; font-weight: 300;\">Ramping<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Using Ramping<\/h2>\n<p><span style=\"font-size: 14pt;\">Stepper motors, unlike DC motors need to be ramped up\/down to speed and you cannot simply just start sending out high speed pulse trains without expecting to see the motors jam and stall. This is why you get some almost nice musical notes coming out of the motors when following toolpaths with tight curves or where a change of direction is needed while moving.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Here is a typical chart of ramping up a stepper motor.<\/span><\/p>[\/et_pb_text][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/pthatramping.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;row&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; use_custom_gutter=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; make_equal=&#8221;off&#8221; parallax_1=&#8221;off&#8221; parallax_method_1=&#8221;off&#8221; parallax_2=&#8221;off&#8221; parallax_method_2=&#8221;off&#8221; column_padding_mobile=&#8221;on&#8221;][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>PTHAT Ramping Routines<\/h2>\n<p><span style=\"font-size: 14pt;\">With the PTHAT we have built in very simple ramping routines that gives you a divisor of the target speed and also a timing marker that will be used to determine when the next divisor speed is triggered. This method works very well across the range of speeds and also if very slow ramping speeds are needed, the firmware will detect if there is enough time to complete the ramp over the distance. If there is not enough time, then it will automatically re-calculate and start ramping down.<\/span><\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Calculating the\u00a0Ramping Routines<\/h2>\n<p><span style=\"font-size: 14pt;\">If we have a target speed of 10000Hz and we set a divisor of 100 and a pause of 10ms then it would divide the 10000\/100 and ramp up\/down in increments of 100Hz. The ramp up\/down time would be 1000ms and the total time at target speed would be dependant on the amount of pulses that needed to be sent.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;10&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Conclusion<\/h2>\n<p><span style=\"font-size: 14pt;\">The PTHAT will automatically work out when ramping up would finish and when the start of ramping down starts. If a pause\/resume command is sent the PTHAT again will re-calculate the ramp up\/down needed to continue.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> Also with the PTHAT you can send a command with only a start ramp or only a finish ramp. This then allows the use of buffered commands that can change the speed on the fly and you only have to ramp down when changing direction.<\/span><\/p>[\/et_pb_text][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;60&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section]\t\t<\/div>\n\t<\/div>\n\t<\/div>\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_692_5\">\r\n\t\t\t\t\t\t\t\t<div data-post-id=\"636\" class=\"insert-page insert-page-636 \"><div class=\"et-l et-l--post\">\n\t\t\t<div class=\"et_builder_inner_content et_pb_gutters3\">\n\t\t[et_pb_section admin_label=&#8221;section&#8221; background_color=&#8221;#2ea3f2&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h1 style=\"font-size: 72px; font-weight: 300;\">Linear Interpolation<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Inter who? I hear you shout !<\/h2>\n<p><span style=\"font-size: 14pt;\">Interpolation with motors is to have all motors start and stop at the same time, no matter what the distance is, and even if the distance is different for each Axis.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">Simple I hear you shout again!, if we have one motor that needs to have 1000 pulses sent to it and the other motor needs 2000 pulses sent to it and we want them to start and stop at the same time. We simply send 1 pulse to motor1 and 2 pulses to motor2. Yep that will work but what if we need to send 1000 pulses to motor1 and 2222 pulses to motor2, can we really send 1 pulse to motor1 and 2.222 pulses to motor2?. No we cannot as we cannot sent 0.222 of a pulse and also saving up the\u00a00.222 pulses, till we get a full pulse and then sending it, also throws the motors out of sync at so many steps and it gets very complicated.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">So this is where again the PTHAT comes in handy as it will allow high resolution frequency pulse trains be produced via the on board DDS processors.<\/span><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Calculating Interpolation<\/h2>\n<p><span style=\"font-size: 14pt;\">Lets say we have motor1 that needs 1000 pulses and motor2 that needs 2222 pulses to reach the\u00a0target travel distance.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">As in other examples above we have ballscrews with a 5mm pitch and motor drivers set to 1600 Pulses Per Rev.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">We want to go at 100 RPM, so lets do the calculations on the biggest amount of pulses first\u00a0motor2.<br \/>\nWe take our Pulses Per Rev of 1600*0.01666666666=26.666666656 and\u00a0multiply the result by the RPM required 100*26.666666656=2666.66Hz.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> That is motor2\u00a0frequency calculated to 2666.66Hz, so it runs at 100 RPM.<\/span><br \/>\n<span style=\"font-size: 14pt;\"><br \/>\nNow for motor1 we first divide motor2 pulse by motor1 pulses\u00a02222\/1000=2.222 and\u00a0divide the\u00a0frequency of motor2 by the result\u00a02666.66\/2.222=1200.11Hz<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">The final result being, is that we:<br \/>\nRun motor2 at 2666.66Hz (100RPM)<br \/>\nRun motor1 at 1200.11Hz (45.45RPM)<br \/>\nNow motor1 and motor2 will start and stop at the same time and both would of done the target pulses.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">There are other ways of calculating these numbers and expressions to be used, but I want to try and break it down into easy steps for people to understand.<\/span><\/p>[\/et_pb_text][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;10&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Here is a scope shot of the PTHAT loaded with the values above and sent to the X and Y Axis motors.<\/h2>[\/et_pb_text][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope-interpolation3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;60&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section]\t\t<\/div>\n\t<\/div>\n\t<\/div>\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_692_6\">\r\n\t\t\t\t\t\t\t\t<div data-post-id=\"697\" class=\"insert-page insert-page-697 \"><div class=\"et-l et-l--post\">\n\t\t\t<div class=\"et_builder_inner_content et_pb_gutters3\">\n\t\t[et_pb_section admin_label=&#8221;section&#8221; background_color=&#8221;#2ea3f2&#8243; inner_shadow=&#8221;off&#8221; parallax=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h1 style=\"font-size: 72px; font-weight: 300;\">Scope Shots<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text admin_label=&#8221;Text&#8221; background_layout=&#8221;light&#8221; text_orientation=&#8221;left&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<h2>Find below some scope shots taken from the PTHAT with all four channels running.<\/h2>\n<p>&nbsp;<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section admin_label=&#8221;section&#8221; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; transparent_background=&#8221;off&#8221; background_color=&#8221;#f9f9f9&#8243; allow_player_pause=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;10&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope1-5Hz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope100Hz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope1000Hz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope10000Hz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope50000Hz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope100000Hz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_image admin_label=&#8221;Image&#8221; src=&#8221;https:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/scope1-2-4-8kHz3.jpg&#8221; show_in_lightbox=&#8221;off&#8221; url_new_window=&#8221;off&#8221; use_overlay=&#8221;off&#8221; animation=&#8221;fade_in&#8221; sticky=&#8221;off&#8221; align=&#8221;center&#8221; force_fullwidth=&#8221;off&#8221; always_center_on_mobile=&#8221;on&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;] [\/et_pb_image][et_pb_divider admin_label=&#8221;Divider&#8221; color=&#8221;#ffffff&#8221; show_divider=&#8221;off&#8221; height=&#8221;60&#8243; divider_style=&#8221;solid&#8221; divider_position=&#8221;top&#8221; hide_on_mobile=&#8221;on&#8221;] [\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section]\t\t<\/div>\n\t<\/div>\n\t<\/div>\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_692 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_692 a\"),jQuery(\"#tab-content_692\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t&lt;\/p&gt;[\/et_pb_fullwidth_code][\/et_pb_section][et_pb_section admin_label=&#8221;Section&#8221; global_module=&#8221;3990&#8243; fullwidth=&#8221;off&#8221; specialty=&#8221;off&#8221; transparent_background=&#8221;off&#8221; allow_player_pause=&#8221;off&#8221; inner_shadow=&#8221;off&#8221; parallax=&#8221;off&#8221; parallax_method=&#8221;off&#8221; padding_mobile=&#8221;off&#8221; make_fullwidth=&#8221;off&#8221; use_custom_width=&#8221;off&#8221; width_unit=&#8221;on&#8221; make_equal=&#8221;off&#8221; use_custom_gutter=&#8221;off&#8221;][et_pb_row global_parent=&#8221;3990&#8243; admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_text global_parent=&#8221;3990&#8243; admin_label=&#8221;Text&#8221; background_layout=&#8221;dark&#8221; text_orientation=&#8221;center&#8221; header_font_size=&#8221;75px&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<\/p>\n<h1>Closer look\u00a0at the PCB&#8217;s<\/h1>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row global_parent=&#8221;3990&#8243; admin_label=&#8221;Row&#8221;][et_pb_column type=&#8221;4_4&#8243;][et_pb_pricing_tables global_parent=&#8221;3990&#8243; admin_label=&#8221;Pricing Tables&#8221; show_bullet=&#8221;on&#8221; center_list_items=&#8221;off&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221; custom_button=&#8221;off&#8221; button_letter_spacing=&#8221;0&#8243; button_use_icon=&#8221;default&#8221; button_icon_placement=&#8221;right&#8221; button_on_hover=&#8221;on&#8221; button_letter_spacing_hover=&#8221;0&#8243; remove_featured_drop_shadow=&#8221;off&#8221;] [et_pb_pricing_table featured=&#8221;on&#8221; title=&#8221;PTHAT Full Package&#8221; currency=&#8221;\u00a3&#8221; per=&#8221;Ex VAT&#8221; sum=&#8221;85&#8243; button_url=&#8221;https:\/\/ukcnc.net\/index.php?route=product\/product&amp;path=69&amp;product_id=129&#8243; button_text=&#8221;Buy Now&#8221; header_font_select=&#8221;default&#8221; header_font=&#8221;||||&#8221; subheader_font_select=&#8221;default&#8221; subheader_font=&#8221;||||&#8221; currency_frequency_font_select=&#8221;default&#8221; currency_frequency_font=&#8221;||||&#8221; price_font_select=&#8221;default&#8221; price_font=&#8221;||||&#8221; body_font_select=&#8221;default&#8221; body_font=&#8221;||||&#8221; custom_button=&#8221;off&#8221; button_font_select=&#8221;default&#8221; button_font=&#8221;||||&#8221; button_use_icon=&#8221;default&#8221; button_icon_placement=&#8221;right&#8221; button_on_hover=&#8221;on&#8221;]<\/p>\n<p>+Single Channel Main Board. +Expansion Add on Board. +Increases the PTHAT to 4 channels. +Extra I\/O Functionality. +JTAG Programmer. +Set of Mounting Spacers and Bolts. +Save \u00a310 with this Package<\/p>\n<p>[\/et_pb_pricing_table] [\/et_pb_pricing_tables][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scope Shots Find below some scope shots taken from the PTHAT with all four channels running. &nbsp;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"<p><span style=\"font-size: 14pt;\">Stepper\/Servo motors are used extensively in automation these days, some of the popular ones being CNC machine, 3D Printers and various Robotic applications<\/span>.<\/p><p><span style=\"font-size: 14pt;\">Do not get Stepper\/Servo motors confused with DC brushed motors as they are controlled very differently.<\/span><\/p><p><span style=\"font-size: 14pt;\">Stepper\/Servo motors are controlled by sending pulses and changing the speed (frequency) to that pulse train to increase or decrease the\u00a0speed. With DC motors you send a pulse that is usually at a fixed frequency and then you alter the width of the pulse to speed it up or shorten the pulse to slow it down.<\/span><\/p><p><span style=\"font-size: 14pt;\">The PTHAT is designed to control Stepper\/Servo motors by sending very accurate and smooth pulse trains and is not designed for controlling DC motors.<\/span><\/p><p><span style=\"font-size: 14pt;\">Rather than repeat too much of what is already out their on the web, please check out this link <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stepper_motor\" target=\"_blank\">https:\/\/en.wikipedia.org\/wiki\/Stepper_motor<\/a> for detailed workings of the inside of a Stepper motor.<\/span><\/p><p><strong><span style=\"font-size: 18pt;\">Stepper Drivers<\/span><\/strong><\/p><p><span style=\"font-size: 14pt;\">Most of the popular Stepper motors used are known as 1.8 degree, which is the resolution of 360 degrees divided by the steps of the motor for one revolution, or worked backwards\u00a0360\/1.8=200.<br \/> So we have to send 200 pulses to get the motor to turn one whole revolution. If we sent 100 pulses then the motor would do half a revolution, which is 180 degrees.<\/span><\/p><p><span style=\"font-size: 14pt;\">Now even though 1.8 degree sounds a good resolution for simple projects, it becomes a bit restrictive when needing high resolution movements.<\/span><br \/> <span style=\"font-size: 14pt;\"> But this is not a problem as modern Stepper drivers are known as Micro Step drivers and can increase the resolution from 200 pulses to ten's of thousands of pulses by some clever electronics.<\/span><\/p><p><span style=\"font-size: 14pt;\">Not only does the Stepper driver increase the pulses that are needed to do one revolution, but also make control of the motor very simple by offering a Pulse input pin and Direction pin as the interface. You simply\u00a0send a pulse on the Pulse input to make the motor step the degree resolution you have set on the driver. Then by either supplying 5 volts or 0 volts to the Direction pin will determine if the motor rotates forward or backwards.<br \/> <\/span><br \/> <span style=\"font-size: 14pt;\"> Another thing the Stepper driver does is isolate the higher voltage that is needed to run the motor, away from the inputs that are usually TTL logic levels.<\/span><\/p><p><span style=\"font-size: 14pt;\">Finally the Stepper driver restricts the current that is supplied to the motors, which is usually set using a simple set of switches on the driver.<\/span><\/p><p><span style=\"font-size: 14pt;\">As you can see, once you have your motors wired up to the drivers and they are all configured, then the next stage is working out how you are going to send and control the pulses to get your motors moving. This is where the PTHAT comes into play as it takes a lot of the complicated stuff away from the developer.<\/span><\/p><p><span style=\"font-size: 18pt;\">Resolution\/ Travel Distance<\/span><\/p><p><span style=\"font-size: 14pt;\">Lets go back to the resolution for the moment and see how that works out when introducing different mechanical elements.<br \/> <\/span><span style=\"font-size: 14pt;\">One of the most popular components used in CNC machines is the ballscrew that you connect to the motor.<\/span><br \/> <span style=\"font-size: 14pt;\"><img class=\"alignnone size-medium wp-image-539\" src=\"http:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/roller_screw_ballscrew_large-300x199.jpg\" alt=\"\" width=\"300\" height=\"199\" \/><br \/> <\/span><\/p><p><span style=\"font-size: 14pt;\">As we are talking about resolution here, the main thing we are interested in, is the pitch of the ballscrew. You can get many different pitches and popular ones are 4mm and 5mm. The pitch determines how far the ball nut will travel when turned one revolution. So if the pitch is 5mm, then when the ballscrew is rotated one full revolution the ball nut will travel 5mm.<br \/> So based on this, we can now work out our best resolution of travel that is possible when combined with our Stepper driver.<br \/> If we have our stepper driver set to Full Step (200 Pulses Per Rev) then we know that sending 200 pulses will turn the ballscrew one revolution and move the ball nut 5mm. By dividing the pitch down by the pulses, we can calculate that 5.0\/200 = 0.025mm resolution. If we send one pulse to the\u00a0Motor driver then the ball nut will move 0.025mm. Now we increase the Stepper driver to\u00a01\/8 Step (1600 Pulses Per Rev) and we get a much better resolution\u00a05.0\/1600 = 0.003125mm.<\/span><\/p><p><span style=\"font-size: 14pt;\">Some drivers will let you go way much higher than the steps shown above in the example, but there does come a point where increasing the Pulses Per Rev is not really going to make a difference and most applications will not use above 1\/16 (3200 Pulses Per Rev).<br \/> For an example if you set a driver to a really high divide of say 20'000 Pulses Per Rev and start sending some pulses you will notice that the motor will not move on every pulse and you indeed to need to send say 10 pulses before the motor moves to the desired position.<br \/> Also the higher\u00a0the Micro step the less holding torque of the motor.<br \/> So if you need a better resolution then decrease the pitch of your ballscrew, like say a 2mm pitch which would give you 2.0\/1600= 0.00125mm resolution could be a better option for accuracy. As usual everything has it trade off's and by increasing the resolution you will need to make sure you have a controller that\u00a0 can send fast pulse trains, again this is\u00a0where the PTHAT comes into it's own and will be explained further down this page.<\/span><\/p><p><span style=\"font-size: 14pt;\">Most software out there likes you to specify the amount of pulses per unit of travel, so to find out how many pulses for 1mm when using a 5mm pitch ballscrew and 1\/8 step\u00a0would be 1600\/5.0= 320 pulses<\/span>.<\/p><p><span style=\"font-size: 14pt;\">Now of course if you are not building a high torque CNC machine and you are moving a small mass, then you could use pulleys and belt as a drive system like 3D printers do.<\/span><br \/> <img class=\"alignnone size-medium wp-image-541\" src=\"http:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/pulleybelt-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" \/><\/p><p><span style=\"font-size: 14pt;\">Pulleys and belts will also divide the resolution, depending on what size pulleys you use and also the pitch of the belt.<br \/> The popular choice for 3D printers is to use GT2 (2.0mm) belts and the less teeth on your pulleys is going to give you a better resolution.<\/span><\/p><p><span style=\"font-size: 14pt;\">So first off\u00a0lets\u00a0take usage of a 2.0mm belt and 16 tooth pulleys, using 1600 Pulses Per Rev it would give us 0.02mm resolution, which gives us 50\u00a0pulses for 1mm of travel.<\/span><\/p><p><span style=\"font-size: 14pt;\">We can calculate the amount of pulses to travel 1mm\u00a0by multiplying the pitch of the belt by the tooth count on the pulley 2.0*16=32 and then taking the Pulse Per Rev and dividing it by the result 1600\/32=50. Then to get resolution just divide 1.0\/50=0.02mm.<\/span><\/p><p><span style=\"font-size: 14pt;\">You have to be a little bit careful when choosing the amount of teeth on the pulley as you may end up with needing to send half a pulse to get your 1mm of travel and you cannot send half a pulse!.<\/span><br \/> <span style=\"font-size: 14pt;\"> For example lets take a 14 tooth pulley and do the same maths. 2.0*14=28 then 1600\/28=57.14, as you can see you are not going to be able to send 0.14 of a pulse. So keep this in mind when calculating.<\/span><\/p><p><span style=\"font-size: 14pt;\">There are some handy online calculators such as this one that can make it easier <a href=\"https:\/\/nathan7.eu\/stuff\/RepRapCalculator\/RepRapCalculator.html\" target=\"_blank\">https:\/\/nathan7.eu\/stuff\/RepRapCalculator\/RepRapCalculator.html<\/a><\/span><\/p><p><span style=\"font-size: 14pt;\">The PTHAT uses a dedicated counter for each motor Axis and will\u00a0monitor the pulse trains and keep an eye on how many pulses are being sent out to each Axis. When the target pulse count has been reached, it automatically stops the motor or continues on with the next pulse count command sent, even at very high speeds in ensures no extra pulses creep in or get missed.<\/span><\/p><p><span style=\"font-size: 18pt;\">Speed<\/span><\/p><p><span style=\"font-size: 14pt;\">Obviously altering the speed of the motors will increase or decrease the travel speed of the attached mechanics on your motors.<br \/> I like to work in mm\/min (Millimetres Per Minute) where as others prefer mm\/sec<\/span>\u00a0<span style=\"font-size: 14pt;\">(Millimetres Per Second), but for this explanation I will stick to mm\/min which is how many millimetres are travelled in 1 minute.<\/span><\/p><p><span style=\"font-size: 14pt;\">A\u00a0simple example is to have a motor with a ballscrew that has a 1mm pitch. If we require to travel a distance of 2000mm over a minute, we would run the motor at 2000RPM. Then as we increase the size of the ballscrew pitch we simply divide down the speed. So with a 5mm pitch ballscrew\u00a0we would only need to run it at \u00a0400 RPM.<\/span><br \/> <span style=\"font-size: 14pt;\"> This why sometimes you see big CNC machines running at silly speeds, they are increasing their ballscrew pitch up to 20mm or higher and with strong motors and low speeds they can shift the gantry around with no problems. Obviously we are loosing resolution, so again workout what is important to you, speed or resolution and find middle ground.<\/span><\/p><p><span style=\"font-size: 14pt;\">So easy enough to work out running speeds but we are sending pulses here to run the motors and if we have our Stepper drivers at to 1600 pulses per revolution and a ballscrew with a 5mm pitch then we know that it is 5.0\/1600=320 pulses\u00a0to travel 1mm. To travel 2000mm we would need to send 2000*320=640'000 pulses over exactly 1 minute.<\/span><\/p><p><span style=\"font-size: 14pt;\">How to\u00a0send out our 640'000 pulses in exactly a minute is to convert our RPM to frequency in Hz.<\/span><br \/> <span style=\"font-size: 14pt;\"> 1Hz is equal to one cycle per second or in our case one Pulse per second.<\/span><br \/> <span style=\"font-size: 14pt;\"> As there are 60 seconds in a minute then we can safely say that 1\/60=0.01666666666Hz is the speed of the cycle per minute.<\/span><\/p><p><span style=\"font-size: 14pt;\">To calculate our target speed of 400 RPM we can do it a couple of ways.<br \/> As we know that we need to send 640'000 pulses in a minute then we can take our 640'000 pulses and multiply it by\u00a0our result of cycles per minute\u00a0640000*0.01666666666=10666.66Hz.<br \/> Or we can take our Pulses Per Rev of 1600*0.01666666666=26.666666656 and\u00a0multiply the result by the required RPM required 400*26.666666656=10666.66Hz<br \/> The frequency needed t<\/span><span style=\"font-size: 14pt;\">o get 400 RPM with a motor set to 1600 Pulses Per Rev, we would need to drive it at 10666.66Hz (10.66666kHz)<\/span><\/p><p><span style=\"font-size: 14pt;\">As you can see by our example above we need our pulses to be spot on and a resolution of two decimal places.<br \/> With the PTHAT are using Direct digital synthesizer processors (DDS) on each channel, which give a very accurate, clean\u00a0pulses and allows us to go to speeds that you will probably never need.<br \/> Also having the resolution allows us to get better interpolation between each Axis as will be explained further down the page.<\/span><\/p><p><span style=\"font-size: 18pt;\"><br \/> Ramping<\/span><\/p><p><span style=\"font-size: 14pt;\">Stepper motors, unlike DC motors need to be ramped up\/down to speed and you cannot simply just start sending out high speed pulse trains without expecting to see the motors jam and stall. This is why you get some almost nice musical notes coming out of the motors when following toolpaths with tight curves or where a change of direction is needed while moving.<\/span><\/p><p><span style=\"font-size: 14pt;\">Here is a typical chart of ramping up a stepper motor.<\/span><br \/> <img class=\"alignnone size-full wp-image-571\" src=\"http:\/\/pthat.com\/wp-content\/uploads\/2017\/01\/pthatramping.jpg\" alt=\"\" width=\"850\" height=\"435\" \/><\/p><p><span style=\"font-size: 14pt;\">With the PTHAT we have built in very simple ramping routines that gives you a divisor of the target speed and also a timing marker that will be used to determine when the next divisor speed is triggered. This method works very well across the range of speeds and also if very slow ramping speeds are needed, the firmware will detect if there is enough time to complete the ramp over the distance. If there is not enough time, then it will automatically re-calculate and start ramping down.<\/span><\/p><p><span style=\"font-size: 14pt;\">If we have a target speed of 10000Hz and we set a divisor of 100 and a pause of 10ms then it would divide the 10000\/100 and ramp up\/down in increments of 100Hz. The ramp up\/down time would be 1000ms and the total time at target speed would be dependant on the amount of pulses that needed to be sent.<\/span><br \/> <span style=\"font-size: 14pt;\"> The PTHAT will automatically work out when ramping up would finish and when the start of ramping down starts. If a pause\/resume command is sent the PTHAT again will re-calculate the ramp up\/down needed to continue.<br \/> Also with the PTHAT you can send a command with only a start ramp or only a finish ramp. This then allows the use of buffered commands that can change the speed on the fly and you only have to ramp down when changing direction.<\/span><\/p><p><span style=\"font-size: 18pt;\"><br \/> Linear Interpolation<\/span><\/p><p><span style=\"font-size: 14pt;\">Inter who? I hear you shout !<\/span><\/p><p><span style=\"font-size: 14pt;\">Interpolation with motors is to have all motors start and stop at the same time, no matter what the distance is, and even if the distance is different for each Axis.<\/span><\/p><p><span style=\"font-size: 14pt;\">Simple I hear you shout again!, if we have one motor that needs to have 1000 pulses sent to it and the other motor needs 2000 pulses sent to it and we want them to start and stop at the same time. We simply send 1 pulse to motor1 and 2 pulses to motor2. Yep that will work but what if we need to send 1000 pulses to motor1 and 2222 pulses to motor2, can we really send 1 pulse to motor1 and 2.222 pulses to motor2?. No we cannot as we cannot sent 0.222 of a pulse and also saving up the\u00a00.222 pulses, till we get a full pulse and then sending it, also throws the motors out of sync at so many steps and it gets very complicated.<\/span><\/p><p><span style=\"font-size: 14pt;\">So this is where again the PTHAT comes in handy as it will allow high resolution frequency pulse trains be produced via the on board DDS processors.<\/span><\/p><p><span style=\"font-size: 14pt;\">Lets say we have motor1 that needs 1000 pulses and motor2 that needs 2222 pulses to reach the\u00a0target travel distance.<br \/> <\/span><br \/> <span style=\"font-size: 14pt;\"> As in other examples above we have ballscrews with a 5mm pitch and motor drivers set to 1600 Pulses Per Rev.<\/span><br \/> <span style=\"font-size: 14pt;\"><br \/> We want to go at 100 RPM, so lets do the calculations on the biggest amount of pulses first\u00a0motor2.\u00a0We take our Pulses Per Rev of 1600*0.01666666666=26.666666656 and\u00a0multiply the result by the RPM required 100*26.666666656=2666.66Hz.<br \/> That is motor2\u00a0frequency calculated to 2666.66Hz, so it runs at 100 RPM.<br \/> Now for motor1 we first divide motor2 pulse by motor1 pulses\u00a02222\/1000=2.222 and\u00a0divide the\u00a0frequency of motor2 by the result\u00a02666.66\/2.222=1200.11Hz<\/span><\/p><p><span style=\"font-size: 14pt;\">The final result being, is that we run motor2 at 2666.66Hz (100RPM) and motor1 at 1200.11Hz (45.45RPM)\u00a0then motor1 and motor2 will start and stop at the same time and both would of done the target pulses.<\/span><\/p><p><span style=\"font-size: 14pt;\">There are other ways of calculating these numbers and expressions to be used, but I want to try and break it down into easy steps for people to understand.<\/span><\/p>","_et_gb_content_width":"","footnotes":""},"class_list":["post-576","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/pages\/576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/comments?post=576"}],"version-history":[{"count":30,"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/pages\/576\/revisions"}],"predecessor-version":[{"id":5023,"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/pages\/576\/revisions\/5023"}],"wp:attachment":[{"href":"https:\/\/pthat.com\/index.php\/wp-json\/wp\/v2\/media?parent=576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}