{"id":298,"date":"2024-01-02T04:38:07","date_gmt":"2024-01-02T04:38:07","guid":{"rendered":"https:\/\/neilfoxman.com\/?page_id=298"},"modified":"2026-01-02T20:35:06","modified_gmt":"2026-01-02T20:35:06","slug":"about-me","status":"publish","type":"page","link":"https:\/\/neilfoxman.com\/?page_id=298","title":{"rendered":"Portfolio"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Simplexity_Projects\"><\/span>Simplexity Projects<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Below is a collection of some of the projects I have had the opportunity to work on while at <a href=\"https:\/\/www.simplexitypd.com\/\">Simplexity Product Development<\/a>. The descriptions below are simplified and generalized to remove client sensitive details, and potential intellectual property has been removed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Molecular_Diagnostics_R_D_Tool_Control_PCB\"><\/span>Molecular Diagnostics R&amp;D Tool Control PCB<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200890fd9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200890fd9\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"617\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-11.png\" alt=\"\" class=\"wp-image-1150\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-11.png 1024w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-11-300x181.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-11-768x463.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Image from <a href=\"https:\/\/www.simplexitypd.com\/engineering-case-studies\/library-preparation-system-bread-board\">Simplexity<\/a><\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p><strong>Technical Skills Employed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Electrical Engineering &#8211; PCB Schematic and Layout<\/li>\n\n\n\n<li>Fluidic\/Pneumatic System Design<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>A client needed an R&amp;D tool that performed various microfluidic, thermal, and motion operations as a Library Preparation Breadboard.  Full details on the product are available <a href=\"https:\/\/www.simplexitypd.com\/engineering-case-studies\/library-preparation-system-bread-board\">on the Simplexity Website<\/a>. The electronics were controlled through a PCB stack that had a <a href=\"https:\/\/www.st.com\/en\/evaluation-tools\/stm32-nucleo-boards.html\">STMicroelectronics Nucleo board<\/a> as the main microcontroller to allow rapid development. I designed the schematics and layout for the main shield PCB to interface with electronic peripherals.  Some notable interfaces on this shield were:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Various Valve Drivers (inductive load) to employ Spike-and-Hold capabilities on valves<\/li>\n\n\n\n<li>An H-Bridge based motor driver<\/li>\n\n\n\n<li>4-20 mA DAC and ADC for precision vacuum control<\/li>\n\n\n\n<li>Various optical\/digital sensors<\/li>\n<\/ul>\n\n\n\n<p>Additionally, I designed the system electrical schematics, cable designs, and contributed heavily to the fluidics, pneumatics, and vacuum design and routing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Thermal_Control_Subsystem\"><\/span>Thermal Control Subsystem<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200891acc&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200891acc\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"645\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-9-1024x645.png\" alt=\"\" class=\"wp-image-1143\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-9-1024x645.png 1024w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-9-300x189.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-9-768x484.png 768w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-9.png 1110w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p><strong>Technical Skills Employed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mechanical Engineering<\/li>\n\n\n\n<li>Electrical Engineering<\/li>\n\n\n\n<li>Thermal Control Design<\/li>\n\n\n\n<li>Fluidic\/Pneumatic System Design<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>A molecular diagnostics client required precision temperature control of a flowcell inside a larger R&amp;D tool. The application required rapid temperature changes, minimal temperature overshoot, high temperature precision, and high thermal uniformity across the flowcell, all while maintaining fluidic connections with the flowcell. I designed the TEC system that could achieve these goals including design of the mechanical parts and assembly, electrical system design, coolant system, and control hardware\/tuning.<\/p>\n\n\n\n<p>I discuss this project as well as some more technical background on Thermoelectric Coolers (TECs) in a previous blog post I wrote: <a href=\"https:\/\/www.simplexitypd.com\/blog\/understanding-thermoelectric-coolers\/\">Understanding Thermoelectric Coolers: Cooling Tech Simplified<\/a>.<\/p>\n\n\n\n<p>Satisfying the precision requirements took significant analysis and testing.  I created a custom peltier element model and designed the thermal system using <a href=\"https:\/\/openmodelica.org\/\">Modelica<\/a> to get a preliminary idea of the thermal performance when ramping.  Thermal resistance between the TECs and the plates was minimized by lapping the plate surfaces and testing various high performance thermal interface materials.<\/p>\n\n\n\n<p>To speed up testing, I wrote a python script that interfaced directly with the thermal controller and measured temperature using external RTD sensors.  This allowed verification testing to be accelerated, more repeatable, and autonomous.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"AI_Robotic_Arm\"><\/span>AI Robotic Arm<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200892367&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200892367\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"597\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-10.png\" alt=\"\" class=\"wp-image-1145\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-10.png 868w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-10-300x206.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-10-768x528.png 768w\" sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Images from <a href=\"https:\/\/www.aivot.com\/scenarios\">Aivot<\/a><\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p><strong>Technical Skills Employed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mechanical Engineering<\/li>\n\n\n\n<li>Electrical Engineering<\/li>\n\n\n\n<li>Motion Control Design<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p><a href=\"https:\/\/aivot.com\/\">Aivot<\/a> develops AI enhanced robotic solutions to intelligently automate labor. The robotic system consists of numerous sensors and electronics paired with robotic arms to learn to how to perform tasks from human demonstrations. A full case study of this project is available <a href=\"https:\/\/www.simplexitypd.com\/engineering-case-studies\/aivot-ai-robot\">on the Simplexity Website<\/a>, and I was responsible for designing the vertical lift mechanism, the electronics box wiring and cables, and performed the initial motion bring-up for an early prototype.<\/p>\n\n\n\n<p>Due to the high number of electronics and actuators, this project required thorough design from the parent electrical architecture documentation down to the individual cable and E-Box wiring schematics.  The cables and E-Box were specifically designed to reduce the electrical noise generated from the high motor currents while also allowing enough flexibility for the arms to achieve a large region of motion.<\/p>\n\n\n\n<p>The motors also required individual bring up for each axis of motion.  This entailed configuring the motor controller with proper safety limits, coupling the motor motion to magnetic encoders, and PID tuning to achieve desirable motion profiles under maximum load conditions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ceiling_Mounted_Asset_Tracking_Device\"><\/span>Ceiling Mounted Asset Tracking Device<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200892abf&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200892abf\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"350\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-6.png\" alt=\"\" class=\"wp-image-1121\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-6.png 702w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-6-300x150.png 300w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Rendering from <a href=\"https:\/\/venturebeat.com\/commerce\/radar-raises-16-million-to-automate-retailers-inventory-management-with-rfid-and-computer-vision\/\">VentureBeat<\/a><\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p><strong>Technical Skills Employed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mechanical Engineering<\/li>\n\n\n\n<li>Thermal Analysis<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>I designed the mechanical parts for an original prototype for <a href=\"https:\/\/goradar.com\/\">Radar<\/a>. Radar develops precision asset tracking systems using RFID and computer vision and needed a mechanical enclosure for ceiling-mounted electronics that were in development.<\/p>\n\n\n\n<p>One of the principal challenges for this project was devising a method to exhaust the heat generated by the control boards in a sealed volume without using fans.  To achieve this, the control boards were mounted using thermally conductive standoffs, thermal interface material, and a slight interference fit to ensure good thermal contact to the Aluminum Base plate. I then submitted multiple base plate designs for thermal simulation so we could further ensure that the heat would be exhausted in worst case conditions.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d32008931a4&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d32008931a4\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"982\" height=\"276\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-8.png\" alt=\"\" class=\"wp-image-1123\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-8.png 982w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-8-300x84.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-8-768x216.png 768w\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Additionally, there was a desire to reduce the COGS of the overall product.  Some mounting brackets were designed as injection molded parts with common features to reduce part count while other mounting brackets were designed in sheet metal to reduce production costs.  The Aluminum base was also designed so that it would be cheap to prototype using CNC machining, but the design could be easily modified at a later date when volumes demand the part to be die cast.  The overall part count was reduced by merging distinct parts and cable routing features to simplify assembly\/production.<\/p>\n\n\n\n<p>I also designed the exterior of the enclosure so that it would be installable in a number of different environments, and the cosmetic cover was designed with a high degree of collaboration with an Industrial Design team.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pogo_Actuator\"><\/span>Pogo Actuator<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p><strong>Technical Skills Employed<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mechanical Engineering<\/li>\n\n\n\n<li>Motion System Design<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>A Molecular Diagnostics client was developing a microfluidics cartridge, and I worked as a mechanical engineer to develop part of the instrument that forms an electrical interface with the cartridge.  A simplified Front View of the &#8220;Pogo Subsystem&#8221; is shown below in the &#8220;Unclamped State&#8221;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200893b0d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200893b0d\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"429\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-4.png\" alt=\"\" class=\"wp-image-1119\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-4.png 947w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-4-300x136.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-4-768x348.png 768w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>and the image below shows the &#8220;Clamped State&#8221;.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200894182&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200894182\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"427\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-5.png\" alt=\"\" class=\"wp-image-1120\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-5.png 834w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-5-300x154.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2024\/06\/image-5-768x393.png 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>Due to severe space constraints, the Pogo Subsystem needed to be roughly 2D as depicted above.  The workflow was:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Load cartridge (into the screen) like a tape into a VHS player (Yes, I still remember those) so that it sits on the reaction block (pink).<\/li>\n\n\n\n<li>The instrument motor drives a series of cluster gears that then rotates a lead screw.<\/li>\n\n\n\n<li>The rotating lead screw pulls down the Yoke (brown) which compresses both the springs above the pogo block (purple) and the pogo probes against the cartridge.<\/li>\n\n\n\n<li>The control board (green) now has electrical contact to the cartridge via the pogo probes.<\/li>\n<\/ol>\n\n\n\n<p>Design of this system faced a number of challenges.  Firstly, due to the number of pogo probes needed, the output force of this subsystem needed to be on the order of 150-200 lbf to guarantee electrical contact. Don&#8217;t get your hand caught in there!  This required Finite Element Analysis to verify the Yoke could support the forces without significant bowing.  Additionally, there were initially challenges in getting the desired force without the motor stalling. A detailed load path analysis in the drive train highlighted unforeseen friction, and the issue was eventually resolved using a thrust bearing at the bottom surface of the lead screw.<\/p>\n\n\n\n<p>Another aspect of the design was that the reaction block essentially set the cartridge reference plane or &#8220;datum&#8221; for other subsystems.  As a result, the reaction block was designed to maintain a tight tolerance between the floor and reaction surface, and it also had other precision locating features that other subsystems could use.<\/p>\n\n\n\n<p>Finally, the wide aspect ratio of the yoke was prone to binding, so careful consideration was needed so that it could slide over the guide rails with low friction and without over-defining the assembly. The chosen design path was to use custom designed hole and slot bushings that were pressed into the yoke and detailed assembly documentation to avoid over-defining the lead screw axis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Personal_Projects\"><\/span>Personal Projects<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Music_Light_Tower\"><\/span>Music Light Tower<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Between 2015 and 2025 I had the opportunity to go to various music festivals with some friends. As many people use &#8220;totems&#8221; or light towers to help find each other in the crowds at these events, I eventually wanted to build one for myself.<\/p>\n\n\n\n<p>In all cases below, the project focused on expanding my learnings, so all hardware was designed from scratch and made by hand i.e. custom designed PCBA (with many hours of hand soldering), electronics housings, light wiring, and tower design.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">2023 &#8211; Fully Analog EL Lighting<\/span><\/strong><\/p>\n\n\n\n<p>For the first attempt at this light tower I wanted to challenge myself and make an Electroluminescent driver which outputs a roughly 100 V, 2 kHz signal to excite EL light cord.<\/p>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p>Key specifications:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>2 kHz signal generated using a phase shift oscillator<\/li>\n\n\n\n<li>100 V rail generated using ZXSC410E6TA Boost Controller<\/li>\n\n\n\n<li>Analog design: high output impedance gain stage followed by low output impedance Class B amplifier<\/li>\n<\/ul>\n<\/div>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200894c6f&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200894c6f\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"579\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-1024x579.png\" alt=\"\" class=\"wp-image-2120\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-1024x579.png 1024w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-300x169.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-768x434.png 768w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image.png 1455w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>I simulated the circuit using LTSpice and designed the PCBA using Altium. Although the circuit worked on paper, I encountered a critical error after build: The BJT used at the boost controller required more current than the controller could provide. The quick fix was to use a spare MOSFET, but the voltage ceiling on that MOSFET turned out to be 50 V which turned out not to be enough to excite the EL wire.<\/p>\n\n\n\n<p>This issue was not resolved in time to make it usable for any festivals, but the phase shift oscillator and amplifier stages worked as expected!<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">2024 &#8211; Introduce Sound Response<\/span><\/strong><\/p>\n\n\n\n<p>A bit disillusioned by the EL circuit but still aiming to avoid using an MCU, I transitioned the architecture to drive LEDs instead. Additionally, a new key goal was added: to adjust the light automatically to music Intensity.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d320089521a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d320089521a\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"649\" height=\"203\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-1-edited.png\" alt=\"\" class=\"wp-image-2122\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-1-edited.png 649w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-1-edited-300x94.png 300w\" sizes=\"auto, (max-width: 649px) 100vw, 649px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d32008957c1&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d32008957c1\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"460\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-2-1024x460.png\" alt=\"\" class=\"wp-image-2123\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-2-1024x460.png 1024w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-2-300x135.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-2-768x345.png 768w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-2-1536x690.png 1536w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-2.png 1779w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p>Key specifications:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adjustable HPF filter frequency and gain applied to microphone signal<\/li>\n\n\n\n<li>Uses Asynchronous Delta-Sigma-Like ADC design using integrator circuit, 555 Timer, and inverter.<\/li>\n\n\n\n<li>Drives LEDs in parallel, one color.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>This design worked! However, when using this totem at the 2024 LIB festival, some notable annoyances were observed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The light would be very sensitive to strong transients (beats) and shine very brightly and quickly creating a strobing effect<\/li>\n\n\n\n<li>If the cutoff frequency was modified in either direction to try to reduce strobing, the light modulation effect became hard to see<\/li>\n<\/ul>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">2025 &#8211; The Real Deal (v3.0 and v3.1)<\/span><\/strong><\/p>\n\n\n\n<p>Emboldened by the previous totem but now hungry for more customizable features, I again shifted the architecture significantly. It finally felt like the right time to use a microcontroller.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d3200896064&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d3200896064\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"639\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-3-1024x639.png\" alt=\"\" class=\"wp-image-2124\" srcset=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-3-1024x639.png 1024w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-3-300x187.png 300w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-3-768x479.png 768w, https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/image-3.png 1299w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<div class=\"wp-block-group has-base-2-background-color has-background has-heading-font-family is-vertical is-layout-flex wp-container-core-group-is-layout-9ae43232 wp-block-group-is-layout-flex\" style=\"border-width:1px;border-radius:10px;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<p>Key specifications:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Light patterns using Addressable LEDs and custom timer design<\/li>\n\n\n\n<li>LED PCBA designed to allow 6 parallel channels of LEDs at top of tower<\/li>\n\n\n\n<li>3D printed housing for Custom Controller PCBA<\/li>\n\n\n\n<li>4 Knobs available for on-the-fly adjustments<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>I developed the firmware using a ST NUCLEO-F302R8 development board. This allowed me to test the LED driver code and various light setups before integrating the F302R8 MCU and committing to a custom PCBA. Although various addressable LED libraries exist, I did not find any that immediately worked for this MCU, so I decided to make my own LED driver by using one of the available MCU timers.<\/p>\n\n\n\n<p>The firmware uses a simple four-state state machine that cycles through the following progression based on events triggered by hardware interrupts:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Set timer and ADC to Mic Recording Mode<\/li>\n\n\n\n<li>Record Mic for a set time (roughly 60 kHz achieved).<\/li>\n\n\n\n<li>Process recorded mic data and calculate LED pattern. Prepare timer to write to LEDs.<\/li>\n\n\n\n<li>Write string to Addressable LEDs<\/li>\n<\/ol>\n\n\n\n<p>Transients\/beats were detected using a discrete time high pass filter (HPF) on the microphone signal. When a threshold was crossed, a pattern would be started so that white light would travel down from LED to LED starting at the top of the light tower.<\/p>\n\n\n\n<p>An envelope filter was also used to generate a sound intensity signal. The intensity would then be used to drive the overall color-changing background brightness of the LEDs.<\/p>\n\n\n\n<p>The electrical design is less interesting for this iteration as most of the design complexity was moved into the firmware. I added a HPF between the mic signal and the MCU ADC so that the signal was generally centered in the available range, and an RC anti-aliasing filter is present right at the ADC input, but otherwise all the remaining filtering and processing is done in discrete time.<\/p>\n\n\n\n<p>A second board was also designed so that it could fan-out the LED signal into 6 parallel channels. This allowed the tower to achieve the effect that the lights are &#8220;raining&#8221; down from the top.<\/p>\n\n\n\n<p>This design iteration was also the first to feature a custom mechanical housing for the PCBA. This helped hide\/protect some of the exposed wiring and provided some  marginal protection from the elements. This design was made in OnShape (new for me) and 3D printed using MJF with threaded inserts for cost effectiveness.<\/p>\n\n\n\n<p>Shout out to Clint Smith who owned the mechanical tower design and build while I was drowning in troubleshooting!<\/p>\n\n\n\n<p>Some brief videos that captured the final (until the next rev) device is shown below.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1440 \/ 1080;\" width=\"1440\" controls src=\"https:\/\/neilfoxman.com\/wp-content\/uploads\/2026\/01\/202505_LIB_Totem.mp4\"><\/video><\/figure>\n\n\n\n<p>Although not (yet) well maintained, the files for this project are available on Github: <a href=\"https:\/\/github.com\/neilfoxman\/mic_totem\/tree\/main\">https:\/\/github.com\/neilfoxman\/mic_totem\/tree\/main<\/a><\/p>\n\n\n\n<p>The next iteration will target the following improvements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use power, not just HPF signal to determine beat detection<\/li>\n\n\n\n<li>Improve granularity\/sensitivity for intensity signal<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"neilfoxman_%C2%B7_GitHub\"><\/span><a href=\"https:\/\/github.com\/neilfoxman\">neilfoxman \u00b7 GitHub<\/a><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Verious Github repos: A smattering of personal software projects at various degrees of completion.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Simplexity Projects Below is a collection of some of the projects I have had the opportunity to work on while at Simplexity Product Development. The descriptions below are simplified and generalized to remove client sensitive details, and potential intellectual property has been removed. Molecular Diagnostics R&amp;D Tool Control PCB Technical Skills Employed A client needed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-298","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/neilfoxman.com\/index.php?rest_route=\/wp\/v2\/pages\/298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/neilfoxman.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/neilfoxman.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/neilfoxman.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/neilfoxman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=298"}],"version-history":[{"count":11,"href":"https:\/\/neilfoxman.com\/index.php?rest_route=\/wp\/v2\/pages\/298\/revisions"}],"predecessor-version":[{"id":2127,"href":"https:\/\/neilfoxman.com\/index.php?rest_route=\/wp\/v2\/pages\/298\/revisions\/2127"}],"wp:attachment":[{"href":"https:\/\/neilfoxman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}