{"id":13932,"date":"2021-10-05T08:37:23","date_gmt":"2021-10-05T12:37:23","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/?p=13932"},"modified":"2021-10-05T10:12:39","modified_gmt":"2021-10-05T14:12:39","slug":"double-transducer-rotational-speed-magnetic-field-strength","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/double-transducer-rotational-speed-magnetic-field-strength\/","title":{"rendered":"Double Transducer: Rotational Speed -&gt; Magnetic Field Strength"},"content":{"rendered":"<p>Alice&#8217;s Board<\/p>\n<div id=\"attachment_13985\" style=\"width: 2355px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-13985\" loading=\"lazy\" class=\"wp-image-13985 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-scaled.jpg\" alt=\"\" width=\"2345\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-scaled.jpg 2345w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-275x300.jpg 275w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-938x1024.jpg 938w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-768x838.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-1407x1536.jpg 1407w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-1876x2048.jpg 1876w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-973x1062.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0041-3-508x555.jpg 508w\" sizes=\"(max-width: 2345px) 100vw, 2345px\" \/><p id=\"caption-attachment-13985\" class=\"wp-caption-text\">Overall photo<\/p><\/div>\n<div style=\"width: 620px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-13932-1\" width=\"620\" height=\"349\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/rotational-magnetic_Alice.mp4?_=1\" \/><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/rotational-magnetic_Alice.mp4\">https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/rotational-magnetic_Alice.mp4<\/a><\/video><\/div>\n<p>Video of working machine: when rotational speed is at its highest, the propeller spins fast and presses down on the force sensor a lot, which translates to the maximum rotation of servo motors bringing the magnet all the way to the right edge of the board.<\/p>\n<p>Detail photos of parts<\/p>\n<div id=\"attachment_13987\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-13987\" loading=\"lazy\" class=\"wp-image-13987 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-300x200.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-973x649.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0048-508x339.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-13987\" class=\"wp-caption-text\">Servo motors holding the magnet (our output)<\/p><\/div>\n<div id=\"attachment_13994\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-13994\" loading=\"lazy\" class=\"size-full wp-image-13994\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-scaled.jpg\" alt=\"\" width=\"2560\" height=\"2311\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-300x271.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-1024x924.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-768x693.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-1536x1387.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-2048x1849.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-973x878.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/DSC_0053-2-508x459.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-13994\" class=\"wp-caption-text\">Propeller connected to a DC motor, standing upright with force sensor at the bottom of the propeller arm (our middle step)<\/p><\/div>\n<p>Noel&#8217;s Board<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-14122\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258.jpg\" alt=\"\" width=\"1881\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258.jpg 1881w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-220x300.jpg 220w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-752x1024.jpg 752w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-768x1045.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-1129x1536.jpg 1129w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-1505x2048.jpg 1505w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-973x1324.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082723-scaled-e1633437242258-508x691.jpg 508w\" sizes=\"(max-width: 1881px) 100vw, 1881px\" \/><\/p>\n<p>Video<\/p>\n<div style=\"width: 620px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-13932-2\" width=\"620\" height=\"349\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/Noels-Video.mp4?_=2\" \/><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/Noels-Video.mp4\">https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/Noels-Video.mp4<\/a><\/video><\/div>\n<p>The encoder constantly samples rotational speed and determines the voltage passed on to the motor. The greater force translates across the FSR and is translated into servo position. Jittery human input produces similarly jittery magnet position.<\/p>\n<p>Detail photos of parts<\/p>\n<div id=\"attachment_14123\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-14123\" loading=\"lazy\" class=\"size-full wp-image-14123\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-300x225.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-1024x768.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-768x576.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-1536x1152.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-2048x1536.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-973x730.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082752-508x381.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-14123\" class=\"wp-caption-text\">Our solution to the servo-encoder interface between projects, featuring hot glue and luck<\/p><\/div>\n<div id=\"attachment_14124\" style=\"width: 1930px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-14124\" loading=\"lazy\" class=\"size-full wp-image-14124\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/MVIMG_20211005_082745-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><p id=\"caption-attachment-14124\" class=\"wp-caption-text\">The DRV8833, the chip that allows us to drive the DC motor with more than on and off<\/p><\/div>\n<p>Narrative Description:<\/p>\n<p><span style=\"font-weight: 400\">Our input is rotational speed. That is measured by how fast the knob (rotary encoder) gets turned at the left of our boards. This rotational speed is then used to calculate how fast we turn our DC motor, which is connected to a propeller. The propeller sits upright in the middle of our board and it is built in a way so that depending on the spinning speed, the propeller arm tilts in differing amounts to press onto the square force sensor resistor at the bottom. Based on the force reading, degree of rotation for the servo motors are determined. The servos are holding a piece of magnet and greater rotation equals to further distance of the magnet to the next team&#8217;s board. With different distances, we create different strengths of magnetic field which is our output.\u00a0<\/span><\/p>\n<p>Progress Images:<\/p>\n<div id=\"attachment_14109\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-14109\" loading=\"lazy\" class=\"wp-image-14109 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-300x225.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-1024x768.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-768x576.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-1536x1152.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-2048x1536.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-973x730.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/early-508x381.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-14109\" class=\"wp-caption-text\">An early mock up of the motor wiring. Using a motor with an encoder and voltage regulator board. Replaced by simple motor and motor driver.<\/p><\/div>\n<div id=\"attachment_14009\" style=\"width: 1327px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-14009\" loading=\"lazy\" class=\"size-full wp-image-14008\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-rotated.jpg\" alt=\"\" width=\"1317\" height=\"1756\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-rotated.jpg 1317w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210916_110511forcesensor-508x677.jpg 508w\" sizes=\"(max-width: 1317px) 100vw, 1317px\" \/><p id=\"caption-attachment-14009\" class=\"wp-caption-text\">Force Sensor Testing: wiring up the fsr to see how it reads by making it print in Serial Monitor<img loading=\"lazy\" class=\"wp-image-14009 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631.jpg\" alt=\"\" width=\"1773\" height=\"1134\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631.jpg 1773w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631-300x192.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631-1024x655.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631-768x491.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631-1536x982.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631-973x622.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/20210923_113826servos-rotated-e1633389544631-508x325.jpg 508w\" sizes=\"(max-width: 1773px) 100vw, 1773px\" \/> Testing out the positions of servo motors. This was a critical step as we changed from our original design of using rubber bands arms sliding the magnet along a track to using a rigid arm.<\/p><\/div>\n<div id=\"attachment_14108\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-14108\" loading=\"lazy\" class=\"wp-image-14108 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-300x225.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-1024x768.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-768x576.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-1536x1152.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-2048x1536.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-973x730.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/bad-motor-scaled-e1633431885808-508x381.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-14108\" class=\"wp-caption-text\">One of the final troubleshooting phases. After re-seating every cable and testing every sensor, an incompatible power supply was the culprit.<\/p><\/div>\n<p>Discussion:<\/p>\n<p>The development of this project was a rollercoaster. Initial ambitions were blinding and made issues very easy to overlook, and there were several that we did. We made two simple backups and spent all of our creative power on integrating a windmill. We easily overlooked issues like creating linear motion with servos, balancing and connecting a propeller, and the interface between encoder and previous project&#8217;s servo. Our imagined outcome was not adherent to all the real physical limitations, and this would be apparent when we tried to share ideas. Solidworks,\u00a0 hand drawings, and real physical progress ultimately bridged the gap between the imagined and the real.<\/p>\n<p>Through our build we were constantly reminded of the many tools that had already been developed before us. In an attempt to use as powerful a motor as we could find, we showed our lack of intuition for thrust and knowledge of available parts. Thanks to our professor, online resources, and physical testing, we derived something efficient and conceivable. These resources were invaluable, as neither of us had any idea a DRV8833 (dual motor driver carrier) was an available tool. Peers also helped ideation, and the learning environment was a significant help in understanding what we could accomplish. Miniature breadboards and switching to square FSRs were two results of the vibrant learning environment.<\/p>\n<p>One of the most frustrating steps was connecting libraries and pre-existing code with our own. From completely unresponsive to mapped and tuned scaling, the troubleshooting often involved scrapping entire drafts and scouring for relevant sample code. Here it was obvious that we were &#8220;standing on the shoulders of giants.&#8221; With documentation from the course webpage and from online users with valuable experience with each part, we had plenty of comments to read and build our understanding of how we could connect each sensor and output device. Despite the plethora of technical documentation, we still sometimes found ourselves adjusting parameters through trial and error. In combining available resources and first hand experience, we were able to develop the system we imagined.<\/p>\n<p>Functional Block Diagram:<\/p>\n<p><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/schematic-1-1.svg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-14120\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/schematic-1-1.svg\" alt=\"\" width=\"1227\" height=\"811\" \/><\/a><\/p>\n<p>Schematic:<\/p>\n<p><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/Schematic-1.svg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-14118\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-content\/uploads\/2021\/10\/Schematic-1.svg\" alt=\"\" width=\"1601\" height=\"1001\" \/><\/a><\/p>\n<p>Code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\">\/*Project Title: Double Transducer: Rotational Speed -&gt; Magnetic Field Strength\r\n  Team Members: Noel Barnes, Yuqi (Alice) Zhou\r\n  Description: Arduino takes in input from a rotary encode to calculate the rotational speed. \r\n             This speed is then mapped into a speed that's feed into the DC motor to drive a propeller.\r\n             FSR then picks up a force reading from the tilt of the Propeller arm.\r\n             The force reading is then mapped to a rotation degree for the servo motor. \r\n             Servo motors are moved based on the rotation to move the magentic forward. \r\n  Pin mapping:\r\n    Arduino pin | role   | description\r\n    ------------|--------|-------------\r\n    A0            input     FSR for force sensing\r\n    2             input     rotary encoder pin A\r\n    3             input     rotary encoder pin B\r\n    5             input     drv8833 A2 IN\r\n    6             input     drv8833 A1 IN \r\n    10            output    servo motor #1\r\n    11            output    servo motor #2 \r\n    SCL                     SCL of LCD\r\n    SDA                     SDA of LCD\r\n\r\n  Rotoray Encoder Code adapted from https:\/\/dronebotworkshop.com\/rotary-encoders-arduino\/#Arduino_Motor_Encoder_Sketch DroneBot Workshop 2019\r\n  DC motor code adapted from https:\/\/courses.ideate.cmu.edu\/16-223\/f2016\/text\/lib\/WheelDrive.html#wheeldrive-doxygen\r\n*\/\r\n\r\n#include &lt;Servo.h&gt;\r\n#include &lt;Wire.h&gt;\r\n#include &lt;LiquidCrystal_I2C.h&gt;\r\n\r\nLiquidCrystal_I2C screen(0x27, 16, 2);\r\n\r\n\/\/ Motor encoder output pulse per rotation (change as required)\r\n#define ENC_COUNT_REV 374\r\n\r\n\/\/ Encoder output to Arduino Interrupt pin\r\n#define ENC_IN 3\r\n\r\n\/\/ Pulse count from encoder\r\nvolatile long encoderValue = 0;\r\n\r\n\/\/ interval for measurements of rotational speed\r\nint interval = 100;\r\nconst int quaterSec = 250;\r\nunsigned long timer = 0;\r\nlong previousMillis = 0;\r\nlong currentMillis = 0;\r\n\r\nint rpm = 0;\r\nint rpmDisplay; \/\/ RPM display for the LCD screen\r\nint motorRPM; \/\/ DC motor speed\r\nint dcDisplay; \/\/ DC motor speed display for LCD screen\r\n\r\n\/\/make a servo object\r\nServo lilMotor;\r\nServo secMotor;\r\nconst int LILMOTORPIN = 11; \/\/ Servo Motor to pin 11\r\nconst int SECMOTORPIN = 10; \/\/ Servo Motor to pin 10\r\n\r\nint force; \/\/ the analog reading from the FSR \r\nint forceDisplay; \/\/ force display for the LDC screen\r\nint fsrPin = 0;     \/\/ the FSR and 10K pulldown are connected to a0\r\n\r\nint rotation; \/\/ rotation degree for lilMotor\r\nint rotationTwo; \/\/ rotation degree for secMotor\r\nint rotationDisplay; \/\/ servo motor rotation display for LDC screen\r\n\r\n#define A1PIN 6\r\n#define A2PIN 5\r\n\r\nvoid setup() {\r\n  \/\/ Set encoder as input with internal pullup\r\n  pinMode(ENC_IN, INPUT_PULLUP);\r\n  \/\/ Attach interrupt\r\n  attachInterrupt(digitalPinToInterrupt(ENC_IN), updateEncoder, RISING);\r\n  \/\/ Setup initial values for timer\r\n  previousMillis = millis();\r\n\r\n  \/\/ initialize DC motor\r\n  pinMode(A1PIN, OUTPUT);\r\n  pinMode(A2PIN, OUTPUT);\r\n  digitalWrite(A1PIN, LOW);\r\n  digitalWrite(A2PIN, LOW);\r\n\r\n  \/\/ tell Arduino where the servo motors are plugged in\r\n  lilMotor.attach(LILMOTORPIN);\r\n  secMotor.attach(SECMOTORPIN);\r\n  \/\/ initialize the screen (only need to do this once)\r\n  screen.init();\r\n  \/\/ turn on the backlight to start\r\n  screen.backlight();\r\n\r\n  \/\/ lcd display template\r\n  screen.home();\r\n  screen.print(\"i:\");\r\n  screen.setCursor(6, 0);\r\n  screen.print(\"m:\");\r\n  screen.setCursor(12, 1);\r\n  screen.print(\"o:\");\r\n\r\n}\r\n\r\nvoid loop() {\r\n  \/\/ Update RPM value\r\n  currentMillis = millis();\r\n  if (currentMillis - previousMillis &gt; interval) {\r\n    previousMillis = currentMillis;\r\n    \/\/ Calculate RPM\r\n    rpm = (float)(encoderValue * 60 \/ ENC_COUNT_REV);\r\n    \/\/follow the range of 20-60 for rotational speed\r\n    if (rpm &gt; 60) {\r\n      rpm = 60;\r\n    }\r\n    if (rpm &lt; 20) {\r\n      rpm = 20;\r\n    }\r\n    encoderValue = 0;\r\n  }\r\n  \/\/rotational speed display\r\n  if (millis() - timer &gt;= quaterSec) {\r\n    screen.setCursor(2, 0);\r\n    rpmDisplay = map(rpm, 20, 60, 0, 99);\r\n    screen.print(rpmDisplay);\r\n  }\r\n\r\n  \/\/ run DC motor with RPM \r\n  motorRPM = map(rpm, 20 , 60, 80, 255); \/\/normalize rotational speed to input as DC motor speed\r\n  digitalWrite(A1PIN, LOW);\r\n  analogWrite(A2PIN, motorRPM);\r\n  delay(2);\r\n  \r\n  \/\/ DC motor speed display\r\n  if (millis() - timer &gt;= quaterSec) {\r\n    screen.setCursor(8, 0);\r\n    dcDisplay = map(motorRPM, 80, 255, 0, 99); \/\/ normalized for display\r\n    screen.print(dcDisplay);\r\n  }\r\n\r\n\r\n  \/\/ force reading\r\n  force = analogRead(fsrPin);\r\n  \/\/ limit to a force range that's appropriate for the propeller arm setup\r\n   if (force &gt; 400) {\r\n      force = 400;\r\n    }\r\n    if (force &lt; 50) {\r\n      force = 50;\r\n    }\r\n    \r\n  \/\/ force sensor display\r\n  if (millis() - timer &gt;= quaterSec) {\r\n    forceDisplay = map(force, 50, 400, 0, 99); \/\/ normalized force for display\r\n    screen.setCursor(8, 1);\r\n    screen.print(forceDisplay);\r\n  }\r\n\r\n  \/\/ calculate rotation for the two servo motors\r\n  rotation = map(force, 50, 400, 10, 170); \/\/ map force reading to motor rotation degree\r\n  rotationTwo = 180 - rotation;\r\n  \r\n  \/\/ servo motor rotation degree display\r\n  if (millis() - timer &gt;= quaterSec) {\r\n    rotationDisplay = map(rotation, 10, 170, 0, 99); \/\/ normalized rotation degree for display\r\n    screen.setCursor(14, 1);\r\n    screen.print(rotationDisplay);\r\n    timer = millis();\r\n  }\r\n\r\n  \/\/ rotate the servo motors\r\n  lilMotor.write(rotation);\r\n  secMotor.write(rotationTwo);\r\n\r\n}\r\n\r\nvoid updateEncoder()\r\n{\r\n  \/\/ Increment value for each pulse from encoder\r\n  encoderValue++;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alice&#8217;s Board Video of working machine: when rotational speed is at its highest, the propeller spins fast and presses down on the force sensor a lot, which translates&#8230;<\/p>\n","protected":false},"author":198,"featured_media":13985,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[86],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/posts\/13932"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/users\/198"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/comments?post=13932"}],"version-history":[{"count":16,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/posts\/13932\/revisions"}],"predecessor-version":[{"id":14104,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/posts\/13932\/revisions\/14104"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/media\/13985"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/media?parent=13932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/categories?post=13932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2021\/work\/wp-json\/wp\/v2\/tags?post=13932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}