{"id":353,"date":"2015-10-23T09:57:17","date_gmt":"2015-10-23T13:57:17","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/?page_id=353"},"modified":"2016-05-06T21:06:28","modified_gmt":"2016-05-07T01:06:28","slug":"electro-mechanical","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/implementation\/electro-mechanical\/","title":{"rendered":"ELECTRO-MECHANICAL"},"content":{"rendered":"<h2>Microcontroller Subsystem<\/h2>\n<p>The microcontroller board that powers the Makergear M2 is the RAMBo 1.1B Controller Board. Rambo stands for RepRap Arduino-Mega Board. As shown in Figure<strong>.<\/strong> the Rambo board is an all-in-one electronics board that communicates with the printer interface software via USB and is used to control all components of the 3D printer.<\/p>\n<h3>Firmware<\/h3>\n<p>The board on our Makergear 2 is loaded with the Marlin Firmware, which is Arduino based and entirely open-source. The role of the Firmware is to interpret the G-code commands and control the printer\u2019s heaters and motions accordingly. The firmware has been extended to control a 4<sup>th<\/sup> degree of freedom which is the rotational axis. The rotational axis combined with above designed nozzle is used to avoid colliding with the COTs item and also improve the quality of print. To ensure that the print is as per the G-code the firmware incorporates the kinematics and inverse kinematics of the nozzle tip.<\/p>\n<h3>Modeling, analysis, and testing<\/h3>\n<h4>Electrical Connections<\/h4>\n<p>The rotational axis is controlled using a stepper motor through the RAMBo board. A hollow stepper motor has been used as described above. To align the rotational axis and assign a homing to the R-axis we use an encoder wheel assembly with and optical encoder. The optical encoder is connected to the limit switch port. Figure shows the Rambo board extended connections used by ADD_IN.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_766\" aria-describedby=\"caption-attachment-766\" style=\"width: 276px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/micro.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-766 size-full\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/micro.png\" alt=\"micro\" width=\"276\" height=\"171\" \/><\/a><figcaption id=\"caption-attachment-766\" class=\"wp-caption-text\">Microcontroller Connections<\/figcaption><\/figure>\n<h4>Kinematics and Inverse Kinematics<\/h4>\n<p>All the axes in the original firmware are moved synchronously with constant velocities. The x-axis and y-axis are moved in a straight line. This results in the extruder tip moving along a curve as shown in Figure. So, I worked out the inverse kinematics for the x and y location such that the extruder tip moves along the required straight line. The following are the equations for the inverse kinematics:<\/p>\n<figure id=\"attachment_765\" aria-describedby=\"caption-attachment-765\" style=\"width: 291px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/IK.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-765 size-full\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/IK.png\" alt=\"IK\" width=\"291\" height=\"243\" \/><\/a><figcaption id=\"caption-attachment-765\" class=\"wp-caption-text\">Red line is the motion of the extruder (xe, ye); blue line is the motion of the (x, y) stepper motors<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>Based on the above equations the velocities for the stepper motors are calculated so that the synchronous movement results in a straight line. The velocities of the stepper motor are defined as follows:<\/p>\n<p><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/dik.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-763 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/dik.png\" alt=\"dik\" width=\"469\" height=\"184\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/dik.png 469w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/dik-300x118.png 300w\" sizes=\"auto, (max-width: 469px) 100vw, 469px\" \/><\/a><\/p>\n<p>To implement the above equations a look up table was implemented which consists of the trigonometric values. These were stored as integer values scaled to an appropriate magnitude so that all the computations could be performed quickly in the interrupt service routine. The implementation had drift issues which were solved by increasing the resolution of the computations. Figure shows the initial drift and the correct prints after solving the drift issues.<\/p>\n<figure id=\"attachment_764\" aria-describedby=\"caption-attachment-764\" style=\"width: 485px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/drift.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-764 size-full\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/drift.png\" alt=\"drift\" width=\"485\" height=\"198\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/drift.png 485w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-content\/uploads\/sites\/7\/2015\/10\/drift-300x122.png 300w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/a><figcaption id=\"caption-attachment-764\" class=\"wp-caption-text\">Comparison between print before and after solving drift<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Microcontroller Subsystem The microcontroller board that powers the Makergear M2 is the RAMBo 1.1B Controller Board. Rambo stands for RepRap Arduino-Mega Board. As shown in Figure. the Rambo board is an all-in-one electronics board that communicates with the printer interface software via USB and is used to control all components of the 3D printer. Firmware&hellip;&nbsp;<a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/implementation\/electro-mechanical\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">ELECTRO-MECHANICAL<\/span><\/a><\/p>\n","protected":false},"author":30,"featured_media":0,"parent":103,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"template-fullwidth.php","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"class_list":["post-353","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/pages\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":11,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/pages\/353\/revisions"}],"predecessor-version":[{"id":767,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/pages\/353\/revisions\/767"}],"up":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/pages\/103"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamf\/wp-json\/wp\/v2\/media?parent=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}