<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Eric's Projects]]></title><description><![CDATA[Eric's Projects]]></description><link>https://elayne.me/</link><image><url>https://elayne.me/favicon.png</url><title>Eric&apos;s Projects</title><link>https://elayne.me/</link></image><generator>Ghost 4.42</generator><lastBuildDate>Sun, 05 Apr 2026 23:38:15 GMT</lastBuildDate><atom:link href="https://elayne.me/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Single Axis Blade Drive]]></title><description><![CDATA[<p>Derived from the dual axis Blade Drive, the single axis variant has the same form factor and codebase but uses a higher power single motor power stage. This drive aims for up to 40A continuous operation at up to ~50-60V maximum supply. </p><hr><figure class="kg-card kg-image-card"><img src="https://elayne.me/content/images/2022/04/BladeDrive_bottom.png" class="kg-image" alt loading="lazy" width="2000" height="1333" srcset="https://elayne.me/content/images/size/w600/2022/04/BladeDrive_bottom.png 600w, https://elayne.me/content/images/size/w1000/2022/04/BladeDrive_bottom.png 1000w, https://elayne.me/content/images/size/w1600/2022/04/BladeDrive_bottom.png 1600w, https://elayne.me/content/images/size/w2400/2022/04/BladeDrive_bottom.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>The power stage is controlled by a DRV8323RS</p>]]></description><link>https://elayne.me/single-axis-blade-drive/</link><guid isPermaLink="false">624718cd57b6c905726c17d2</guid><dc:creator><![CDATA[Eric Layne]]></dc:creator><pubDate>Fri, 01 Apr 2022 18:50:23 GMT</pubDate><media:content url="https://elayne.me/content/images/2022/04/10C04AC9-FD76-4A19-9E03-F52B21EE4E66.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://elayne.me/content/images/2022/04/10C04AC9-FD76-4A19-9E03-F52B21EE4E66.jpeg" alt="Single Axis Blade Drive"><p>Derived from the dual axis Blade Drive, the single axis variant has the same form factor and codebase but uses a higher power single motor power stage. This drive aims for up to 40A continuous operation at up to ~50-60V maximum supply. </p><hr><figure class="kg-card kg-image-card"><img src="https://elayne.me/content/images/2022/04/BladeDrive_bottom.png" class="kg-image" alt="Single Axis Blade Drive" loading="lazy" width="2000" height="1333" srcset="https://elayne.me/content/images/size/w600/2022/04/BladeDrive_bottom.png 600w, https://elayne.me/content/images/size/w1000/2022/04/BladeDrive_bottom.png 1000w, https://elayne.me/content/images/size/w1600/2022/04/BladeDrive_bottom.png 1600w, https://elayne.me/content/images/size/w2400/2022/04/BladeDrive_bottom.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>The power stage is controlled by a DRV8323RS gate driver (U2: Top Center), which &#xA0;has a variety of configurable gate drive parameters and fault monitoring in addition to a separate die within the IC package for a buck regulator which can be &#xA0;used to power the blade drive itself, or the same VDD_IN connection on the edge connector can be used to power the STM32. The mosfets controlled by the gate driver are CSD88599Q5DC (Q1, Q2, Q3: Lower Left) which are 60V 40A N channel &quot;power blocks&quot; which internally contain the high and low side mosfets in a single package that aims to make routing more ideal to lower impedance and improve heat dissipation. In addition to a package that has large pads for heat sinking to the PCB, these mosfets have an exposed metal surface on top to improve thermal transfer to a heat sink.</p><p>This blade drive has two new features merged in from the dual axis Blade Drive. Specifically, a CAN transceiver and the USB Isolator ICs.</p><p>The CAN transceiver TCAN330D (U8: Lower Right) adds support for communicating on a CAN (Controller Area Network) Bus to control the blade drive through a more robust electrical protocol. The firmware development to support CAN is a work in progress as of writing this post, but CAN message IDs have been started to be assigned for what various items we want to expose to the CAN bus. The current work in progress documentation for CAN ID assignment can be found <a href="https://gitlab.elayne.me/eric/blade-drive/-/blob/master/FW/Docs/CAN.md">here</a>.</p><p>Additionally, the USB Isolator ISOUSB111 (U7: Top Right) was added to isolate the USB from the power ground of the blade drive, and as USB is not intended to be used there are dual solder pads to bypass the USB Isolation IC (either due to cost or availability of the IC vs the need of the feature).</p><hr><p>Assembly and test of the board is delayed currently due to IC availability, though the firmware is ready to begin debugging the integration with the new DRV8323 once the board can be fully assembled.</p><hr><p>For other applications, once the single axis board is working; the PCB layout could potentially be redone in order to fit into a more &quot;typical&quot; ESC footprint and used with the same, or higher power mosfets for applications like combat robots&apos; drive systems.</p>]]></content:encoded></item><item><title><![CDATA[Blade Drive v1]]></title><description><![CDATA[<p>The project was developed as a way to have small swappable motor drives that are capable of low to medium power systems. Ideally (with enough cooling) is capable of driving a robot in the weight range of 1 to 5lb. The board has support for dual axes to run two</p>]]></description><link>https://elayne.me/blade-drive-v1-2/</link><guid isPermaLink="false">61720a9c2386da05aab0afc1</guid><dc:creator><![CDATA[Eric Layne]]></dc:creator><pubDate>Fri, 22 Oct 2021 01:49:07 GMT</pubDate><media:content url="https://elayne.me/content/images/2021/10/C783A4FE-C749-406F-A841-621146ACAEB4.png" medium="image"/><content:encoded><![CDATA[<img src="https://elayne.me/content/images/2021/10/C783A4FE-C749-406F-A841-621146ACAEB4.png" alt="Blade Drive v1"><p>The project was developed as a way to have small swappable motor drives that are capable of low to medium power systems. Ideally (with enough cooling) is capable of driving a robot in the weight range of 1 to 5lb. The board has support for dual axes to run two motors from a single Blade Drive.</p><p>The project is based on the open source ODrive project firmware (<a href="https://github.com/madcowswe/ODrive">https://github.com/madcowswe/ODrive</a>), with a custom implemention and communication scheme; in addition to several alterations to support the different hardware and status LEDs.</p><p>The hardware interfaces with the main system over an edge connector; including the power supply, motor phases, encoder, and communication/control signals.</p><p>The board is controlled by an STM32 which handles all of the motor control tasks, while handling SPI communication between itself and the main system.</p><p>The motor drivers are using a DRV8316 developed by Texas Instruments. It has integrated phase mosfets/current sense resistor, current sense amplifiers on each phase, and various controllable parameters influencing the switching behavior. The IC supports up to 8A and 35V, able to supply each motor with nearly 300W of continuous power (limited by cooling and a low kv motor to utilize the full 35V &#xA0;input range).</p><p>The board has a total of seven addressable status LEDs, one which is used to indicate board/system level status or errors. Three LEDs are used per axis to indicate the status or errors of the power stage, the motion controller, and the overall axis.</p><p>The board footprint is 30mm x 93mm; with all components populated the maximum depth of the board is 7.6mm. The edge connector that goes on the main system board has a depth of 9mm, meaning that the limiting factor for tiling multiple Blade Drives side by side is the edge connector &#xA0;depth (and routing of signals). <br>One use case is for a small CNC motion system (3D printer scale), you can have several Blade Drives side by side, with a relatively low space requirement. With the benefit of replaceable motor drivers that can just be swapped in or out whenever needed.</p><p>The design of the PCB focused heavily on best routing to avoid signal interference between the analog signals (such as the current sense amplifiers or temperature sensor) and the switching digital signals going to the DRV8316 devices. Traces were kept perpendicular when on top of each other across the copper layers. In addition, one of the four copper layers is a dedicated ground net with no traces braking it up. The ground plane was also separated into an analog and digital ground, where the two meet at one point on the dedicated ground layer.<br>All of these precautions should help to reduce noise in the current sense lines, helping to have a more accurate measurement of the per phase currents which improves control efficiency and potentially allows for faster switching speeds.<br>In addition to PCB design to improve phase current sense signal quality, each line has a dedicated RC filter to further reduce noise going into the STM32 ADC.</p><p>The board is shown below, note the actual board will have an ENIG surface finish and the exposed copper will be gold colored unlike in the preview:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://elayne.me/content/images/2021/10/Render_top-2.png" class="kg-image" alt="Blade Drive v1" loading="lazy" width="2000" height="683" srcset="https://elayne.me/content/images/size/w600/2021/10/Render_top-2.png 600w, https://elayne.me/content/images/size/w1000/2021/10/Render_top-2.png 1000w, https://elayne.me/content/images/size/w1600/2021/10/Render_top-2.png 1600w, https://elayne.me/content/images/size/w2400/2021/10/Render_top-2.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Top view of Blade Drive</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://elayne.me/content/images/2021/10/Render_Bottom-2.png" class="kg-image" alt="Blade Drive v1" loading="lazy" width="2000" height="673" srcset="https://elayne.me/content/images/size/w600/2021/10/Render_Bottom-2.png 600w, https://elayne.me/content/images/size/w1000/2021/10/Render_Bottom-2.png 1000w, https://elayne.me/content/images/size/w1600/2021/10/Render_Bottom-2.png 1600w, https://elayne.me/content/images/size/w2400/2021/10/Render_Bottom-2.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>Bottom view of Blade Drive</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[BattleDriver+ HW V1.0]]></title><description><![CDATA[Higher current variant of the BattleDriver ESC with encoder support based on the oDrive project.]]></description><link>https://elayne.me/battledriver-hw/</link><guid isPermaLink="false">5f5b0e5babada505913a153b</guid><category><![CDATA[BattleDriver]]></category><category><![CDATA[HW]]></category><category><![CDATA[FOC]]></category><category><![CDATA[Motor Driver]]></category><category><![CDATA[ODrive]]></category><category><![CDATA[PCB]]></category><dc:creator><![CDATA[Eric Layne]]></dc:creator><pubDate>Fri, 11 Sep 2020 06:31:18 GMT</pubDate><media:content url="https://elayne.me/content/images/2020/09/BattleDriver-.png" medium="image"/><content:encoded><![CDATA[<img src="https://elayne.me/content/images/2020/09/BattleDriver-.png" alt="BattleDriver+ HW V1.0"><p>This design is based off the original <a href="https://elayne.me/battledriver-hw-v1-0/">BattleDriver HW V1.0</a>, and has 12 mosfets for powering the motor, as compared to the previous 6 mosfets. The increase in mosfets have made the board a bit larger, at 70mm x 51mm, instead of 45mm x 70mm. In addition to the larger footprint, the board will be slightly thicker, as the BattleDriver+ has dual radial electrolytic capacitors (1mF at 35v) on the bottom to provide additional bypass capacitance for the mosfets. This board will be 23mm thick at the thickest portion, as compared to 14mm on the original BattleDriver. These additional radial capacitors can be removed to reduce the thickness of the board, down to the same as the original BattleDriver if the extra capacitance is not needed.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/09/BattleDriver-_top.png" width="2000" height="1333" loading="lazy" alt="BattleDriver+ HW V1.0" srcset="https://elayne.me/content/images/size/w600/2020/09/BattleDriver-_top.png 600w, https://elayne.me/content/images/size/w1000/2020/09/BattleDriver-_top.png 1000w, https://elayne.me/content/images/size/w1600/2020/09/BattleDriver-_top.png 1600w, https://elayne.me/content/images/size/w2400/2020/09/BattleDriver-_top.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/09/BattleDriver-_bot.png" width="2000" height="1333" loading="lazy" alt="BattleDriver+ HW V1.0" srcset="https://elayne.me/content/images/size/w600/2020/09/BattleDriver-_bot.png 600w, https://elayne.me/content/images/size/w1000/2020/09/BattleDriver-_bot.png 1000w, https://elayne.me/content/images/size/w1600/2020/09/BattleDriver-_bot.png 1600w, https://elayne.me/content/images/size/w2400/2020/09/BattleDriver-_bot.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>The layout of the board is designed with thermals and current capacity in mind. The mosfet layout is such that heat sinks can be easily placed to cover either each phase separately, or to cover high/low side mosfets individually. Further, each mosfet has at least 9 thermal vias to carry heat to the bottom of the board to improve unassisted heat dissipation. </p><p>The power section of the board should be able to handle very high currents, as all mosfets have a significant amount of vias, as well as very wide traces (7.5mm) to carry the current. Beyond this, both the PGND and PVDD traces have exposed copper to allow a bare solid core (~12AWG) wire to be soldered directly to the power rails to further aid in carrying current to each phase.</p><p>Similarly to the original BattleDriver, this board has a dedicated stackup and separated ground nets in an attempt to reduce switching noise throughout the board (and especially in the analog current sense circuits).</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/09/1-1.png" width="2000" height="1564" loading="lazy" alt="BattleDriver+ HW V1.0" srcset="https://elayne.me/content/images/size/w600/2020/09/1-1.png 600w, https://elayne.me/content/images/size/w1000/2020/09/1-1.png 1000w, https://elayne.me/content/images/size/w1600/2020/09/1-1.png 1600w, https://elayne.me/content/images/size/w2400/2020/09/1-1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/09/2-1.png" width="2000" height="1564" loading="lazy" alt="BattleDriver+ HW V1.0" srcset="https://elayne.me/content/images/size/w600/2020/09/2-1.png 600w, https://elayne.me/content/images/size/w1000/2020/09/2-1.png 1000w, https://elayne.me/content/images/size/w1600/2020/09/2-1.png 1600w, https://elayne.me/content/images/size/w2400/2020/09/2-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/09/15-1.png" width="2000" height="1564" loading="lazy" alt="BattleDriver+ HW V1.0" srcset="https://elayne.me/content/images/size/w600/2020/09/15-1.png 600w, https://elayne.me/content/images/size/w1000/2020/09/15-1.png 1000w, https://elayne.me/content/images/size/w1600/2020/09/15-1.png 1600w, https://elayne.me/content/images/size/w2400/2020/09/15-1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/09/16-1.png" width="2000" height="1564" loading="lazy" alt="BattleDriver+ HW V1.0" srcset="https://elayne.me/content/images/size/w600/2020/09/16-1.png 600w, https://elayne.me/content/images/size/w1000/2020/09/16-1.png 1000w, https://elayne.me/content/images/size/w1600/2020/09/16-1.png 1600w, https://elayne.me/content/images/size/w2400/2020/09/16-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>PCB Layers: 1 - Red; 2 - Yellow; 3 - Orange; 4 - Blue</figcaption></figure><p>Layer 1 and 4 contain the high current traces, as well as the connections for most passive components, like those required for the DRV8301 and STM32.</p><p>Layer 2 is where the majority of the switching signals are contained, including the SPI communication between the DRV8301 and STM32, USB data lines, and the STM32 gate control signals/DRV8301 gate outputs.</p><p>Layer 3 contains all the sensitive analog wires (current/temperature sense), as well as DC (5V, 3.3v analog VREF, and main 3.3v power) power distribution; the ground fill is the analog ground net, which is shorted to GND at the analog VREF regulator. </p><p>The files for this project can be found on my gitlab, currently it is a branch of the main BattleDriver project and can be found at: <a href="https://gitlab.elayne.me/eric/battle-driver/-/tree/BattleDriver+">https://gitlab.elayne.me/eric/battle-driver/-/tree/BattleDriver+</a></p>]]></content:encoded></item><item><title><![CDATA[BattleDriver HW V1.0 Design]]></title><description><![CDATA[Initial Hardware Design for BattleDriver ESC]]></description><link>https://elayne.me/battledriver-hw-v1-0/</link><guid isPermaLink="false">5f34ac5d33264715d5b67eb6</guid><category><![CDATA[BattleDriver]]></category><category><![CDATA[PCB]]></category><category><![CDATA[HW]]></category><category><![CDATA[FOC]]></category><category><![CDATA[ODrive]]></category><category><![CDATA[Motor Driver]]></category><dc:creator><![CDATA[Eric Layne]]></dc:creator><pubDate>Thu, 13 Aug 2020 03:18:43 GMT</pubDate><media:content url="https://elayne.me/content/images/2020/08/slim_BLDC_Driver-3.png" medium="image"/><content:encoded><![CDATA[<img src="https://elayne.me/content/images/2020/08/slim_BLDC_Driver-3.png" alt="BattleDriver HW V1.0 Design"><p>This project is designed around the open source project ODrive HW and SW (<a href="https://github.com/madcowswe/ODrive">https://github.com/madcowswe/ODrive</a>). The original project&apos;s HW can drive 2 BLDC motors and control them using FOC supported by an ABI encoder. This variation cuts down on the size of the board, and supports only a single BLDC motor with the same method of driving them.</p><p>At the core of the project is an STM32F405RGT6 microcontroller, which controls the switching mosfets (CSD17576Q5B) using a DRV8301 driver which includes a switching buck regulator to provide power for all the control circuitry.</p><p>The PCB was designed in Autodesk Eagle, closely following the v3.5 schematic of the ODrive HW. This design has only 1000uF of bypass capacitance across the power rails to the switching mosfets as compared to the 3760uF on the base ODrive for dual motors plus AUX mosfet (for a brake resistor).</p><p>The hardware is capable of 30v with the base components, but switching to alternative mosfets and capacitors allows up to 60v operation (albeit at the cost of bulk capacitance, which means the board may require additional bypass external to the board).</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/08/BattleDriver_Top-1.png" width="1277" height="1925" loading="lazy" alt="BattleDriver HW V1.0 Design" srcset="https://elayne.me/content/images/size/w600/2020/08/BattleDriver_Top-1.png 600w, https://elayne.me/content/images/size/w1000/2020/08/BattleDriver_Top-1.png 1000w, https://elayne.me/content/images/2020/08/BattleDriver_Top-1.png 1277w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://elayne.me/content/images/2020/08/BattleDriver_Bottom-1.png" width="1279" height="1928" loading="lazy" alt="BattleDriver HW V1.0 Design" srcset="https://elayne.me/content/images/size/w600/2020/08/BattleDriver_Bottom-1.png 600w, https://elayne.me/content/images/size/w1000/2020/08/BattleDriver_Bottom-1.png 1000w, https://elayne.me/content/images/2020/08/BattleDriver_Bottom-1.png 1279w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>BattleDriver Rev 1.0</figcaption></figure><p></p><p>Currently, I am working on figuring out layout for a board with doubled up mosfets, to support even higher currents or rather reduce the steady state temperature of the board by allowing for greater heat dissipation (either through simply additional mosfet packages, or better yet additional heat sinks).</p><p>In the next few weeks I will be having the 4 layer PCBs manufactured (at JLCPCB), and start assembly to determine what amount of functionality the board has before continuing development on the dual mosfet version. </p><p>To see the eagle files, they&apos;re available on my gitlab: <a href="https://gitlab.elayne.me/eric/custom-bldc-driver/"><a href="https://gitlab.elayne.me/eric/battle-driver/">https://gitlab.elayne.me/eric/battle-driver/</a></a></p>]]></content:encoded></item></channel></rss>