<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Blog on James Huang</title>
    <link>https://www.jimmerlitter.com/categories/blog/</link>
    <description>Recent content in Blog on James Huang</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 26 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.jimmerlitter.com/categories/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Compounding Effects of Tolerances in a Cycloidal Gearbox</title>
      <link>https://www.jimmerlitter.com/posts/blog-003/</link>
      <pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://www.jimmerlitter.com/posts/blog-003/</guid>
      <description>Building my first cycloidal gearbox on a 3D printer, and learning the hard way how much tolerances matter: sawing roller pins by hand, hammering in bearings, and a mysterious 2 mm gap.</description>
      <content:encoded><![CDATA[<p>&ldquo;Tolerances are insane, especially if you&rsquo;re 3D printing&rdquo; is what someone told me when I said I was working on a cycloidal gearbox. I couldn&rsquo;t agree more. This was the first project where I was punished every time I didn&rsquo;t get my tolerances precise enough. Fusing 3D-printed pieces with metal was incredibly frustrating, and on a project where there were so many complex pieces, each mistake compounds.</p>
<p>I chose the cycloidal drive as my first gearbox because I was very interested in the motion. I still remember I came across a YouTube video that was alluding to getting higher torque gears without teeth. Needless to say, it was an unskippable title, and after watching it, I was determined to get my hands dirty with a 3D-printed design.</p>
<p>With limited hours of access in my local makerspace, this little gearbox actually took me nearly 2 weeks to even be done, and it&rsquo;s not even good yet. Here&rsquo;s why it took me so long:</p>
<p>I didn&rsquo;t start off CADing the whole thing. I copied tutorials online and their respective design files since I was a noob. I prioritized getting this done and just building, so I opted to bring what the tutorial gave me. This was a big mistake because there were some measurements I needed that were difficult to measure with calipers or rulers or anything. I also didn&rsquo;t have access to the actual 3D model, only the pure STL. Not owning the measurements cost me a lot of time doing trial and error. Sometimes the holes were too small and I had to add negatives in the slicer for every single hole; super duper tedious and annoying. Definitely, when I run a second iteration, I will model it from the ground up, but I also feel like I had to learn this lesson the hard way so I don&rsquo;t get lazy again. If it&rsquo;s any consolation, I was just trying to get this done before I had to leave the country.</p>
<p>A cycloidal drive is composed of the housing, roller pins, input and output shafts, eccentric shaft, and the cycloid disks. Take the roller pins, for example: each one has 2 bearings and some distance rings between each bearing, which are all held together by a metal pin. The precision of the pin caused me many problems. I didn&rsquo;t have access to any metal-cutting machines, so I had to saw each piece out of a larger rod. If the pins are even 0.5-1 mm off, they don&rsquo;t fit cleanly into the housing and lid. So while I was sawing the rod, I didn&rsquo;t realize that me accounting for 2 mm of headway each cut was still not good enough. Although a good workout, sawing also leaves uneven edges that don&rsquo;t fit easily into a bearing. I needed a serious hand massage after finally finishing filing all the pins flat, but the fit was still difficult and I still needed a hammer to persuade the bearings in. The hammer massage was well worth it though.</p>
<p>Tolerance issues seeped their way into the lid assembly as well. The eccentric shaft was easier, but the two bolts holding everything together were just a bit too long, which made it difficult to bolt everything else together since the gearbox couldn&rsquo;t be made flat.</p>
<p>The final assembly also took much persuasion, probably due to all the accumulating tolerance failures, and I still have no clue why there&rsquo;s a 2 mm gap between the lid and the housing. Distance rings kept falling off because they were fractions of a millimeter too big. The cycloidal disks were just big enough that they slipped slightly on their bearings, which caused them to get too close to the other disk.</p>
<p>What I constantly grappled with was how tight I wanted the fit to be. Too tight and I spend so long getting it to fit; too loose and I lose time anyway trying to get things to stay where they are. I suppose all that extra time should be spent printing an assortment of pieces in increasing size and pinpointing the exact size of the best piece possible in increments of fractions of a millimeter, maybe less. Therefore, with all I learned, it&rsquo;ll definitely be a lot easier in a second iteration. But I was definitely discouraged from doing so since I didn&rsquo;t want someone to snatch away the community 3D printer if I was away for 5 minutes doing some quick sizing. The hours were also pretty shit. Pictures will be on my GitHub.</p>
<p>I can&rsquo;t even imagine doing this at scale with thousands of parts and integrating with motors. There really are levels to this. But it&rsquo;s only a matter of time until I get there.</p>
<p>TLDR:</p>
<ol>
<li>Do a full CAD model of your project; don&rsquo;t be lazy.</li>
<li>Design around the parts that are the hardest to fit.</li>
<li>Run lots of trial pieces within a range of sizes with small changes to make sure components assemble properly.</li>
<li>Keep an engineering notebook of the changes in sizing for a piece; note what you settled on to make the second time way faster.</li>
</ol>
]]></content:encoded>
    </item>
    <item>
      <title>FOC</title>
      <link>https://www.jimmerlitter.com/posts/blog-002/</link>
      <pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://www.jimmerlitter.com/posts/blog-002/</guid>
      <description>A quick, chill rundown of field oriented control (FOC): current sensing, the Clarke and Park transforms, and closing the torque loop on a BLDC motor.</description>
      <content:encoded><![CDATA[<p>Field oriented control is one of the predominant ways to maximize torque out of your BLDC motor. Here&rsquo;s what I learned:</p>
<p>Inputs to the control loop are obtained from each inverter stage. The inverters set a voltage that the motor coils respond to, and the response is sensed by shunts placed below each inverter stage&rsquo;s lower leg. This results in 3 currents (Ia, Ib, Ic). The voltage across the shunts is measured and sent to the MCU to be discretized, transformed, and controlled.</p>
<p>In addition to gathering current inputs, a magnet was placed at the shaft of the motor, and a magnet encoder was placed nearby, which senses the magnet&rsquo;s orientation, corresponding to the mechanical angle of the rotor. Through a calibration routine, the encoder is able to track the mechanical angle and send it to the MCU. This mechanical angle then needs to be multiplied by the motor&rsquo;s pole pair count to get the electrical angle, which is what actually gets used in the Park transform. There are also sensorless motor controllers that use more advanced models to compute the angle without sensors or encoders.</p>
<p>The currents sensed from the shunts are AC values from the 3 phases present in the stator. As such, you can sum up all 3 currents to be 0. By knowing 2 currents, you can always figure out the third. The Clarke transform removes this redundant current so that we can deal with a reduced dimension and make calculation easier.</p>
<p>Coming out of the Clarke transform, we send the 2 AC values into the Park transform. Using the encoder output, we can shift the axis given in the Clarke transform by the movement of the rotor. This allows us to capture the rotation and synchronize the frame with the rotor. This essentially converts the AC values to DC, which are easier to deal with. We now have 2 currents: Iq and Id. Iq is proportional to the torque and needs to be optimized to hit the reference. Id needs to be minimized.</p>
<p>Before beginning the loop, you should already have an idea of how much current you want in the motor (<code>iq_reference</code>). If starting from rest, it will take time for the current to reach your desired level. That is why we use PI error correction to correct Iq towards the reference and Id towards 0.</p>
<p>Once we have performed error correction, we send the DC values into an inverse Park and then an inverse Clarke to redo all our transformations and send it to the power stage so that the motor can respond to our new PWMs. This basically repeats many times per second until our motor reaches the speed we desired. If using space vector PWM instead, the last inverse Clarke can be omitted.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Ramblings on Heat and Efficiency</title>
      <link>https://www.jimmerlitter.com/posts/blog-001/</link>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://www.jimmerlitter.com/posts/blog-001/</guid>
      <description>Breaking down every source of heat in a BLDC motor — copper, core, and mechanical losses — using the ODrive D5065 as a model, and building toward an efficiency map.</description>
      <content:encoded><![CDATA[<p>Today, I&rsquo;ll be showing all the sources of heat within a BLDC motor. We&rsquo;ll be using the ODrive D5065 motor as our model.</p>
<p>To start, there are 3 types of heat present in a motor at any time: core losses, copper losses, and mechanical losses.</p>
<p><img alt="Taxonomy of the three heat sources in a BLDC motor: iron, copper, and mechanical losses" loading="lazy" src="/posts/blog-001/figures/loss_taxonomy.png"></p>
<p>Starting with copper losses, you can have heat loss due to the motor demanding current from the electronic speed controller (ESC), which would represent DC current loss as described by $P = I^2 R$. Additionally, as a result of the motor requiring 3-phase power to work, we also have skin effect and proximity effect, the effects of which increase greatly at higher frequencies.</p>
<p>Core losses primarily occur within the stator. Heat is generated here by way of hysteresis loss, which is the heat generated from all the alternating magnetic waves present in a motor, and eddy current losses, which are small current loops created within the stator that cause heat.</p>
<p>Lastly, mechanical heat is the easiest to imagine. The rotor and shaft spin as one body; the stator is bonded to a stationary hub, and two bearings bridge the two. Nothing slides, but rolling contact isn&rsquo;t free: ball-race contact friction, grease shear, and seal drag all extract torque, and grease drag grows with speed. Separately, windage is the aerodynamic loss from air being dragged through the gap and around the spinning bell.</p>
<p>Our final goal here is to simulate and graph all these individual sources of heat and see how they change as we adjust torque and RPM. By plotting the combined influence of power losses, and calculating power output as a function of torque and speed with $P = T\omega$ where $\omega = \text{RPM} \cdot 2\pi / 60$, we can determine input power as a function of torque and speed with $P_{in} = P_{out} + P_{loss}$.</p>
<p>Ultimately, the goal is to take input power and output power graphs to determine the efficiency of the motor when driven at a particular operating point. This is helpful to visualize a particular motor&rsquo;s performance.</p>
<h2 id="assumptions">Assumptions</h2>
<p>There are still some heat sources I&rsquo;m not taking into consideration.</p>
<ul>
<li>Magnetic eddy currents are current loops that can occur within the permanent magnets on a rotor. I&rsquo;ll be modeling this heat in another post, but for now we&rsquo;ll assume its contribution is 0 across all parameters.</li>
<li>PWM rippling - due to the rapid switching from the ESC, small fluctuations of current occur when fed into the motor. This results in ripple current copper loss, and ripple-flux core loss.</li>
<li>Eddy current heating in the rotor itself</li>
<li>Magnet thermal feedback loop - increase in magnet heat leads to decrease in field flux density, which leads to lower iron loss and torque constant. Therefore, more copper losses for the same output torque. Then the loop begins when copper losses increase again.</li>
<li>Bearing loss - Real bearings have grease-viscosity temperature dependence.</li>
<li>Drive electronics heat - the MOSFETs that compose the ESC are also sources of heat loss.</li>
</ul>
<p>All these limitations will be tackled some day, but for now they will remain un-modeled.</p>
<h2 id="tools">Tools</h2>
<ul>
<li>FEMM - used to model geometry of motor and simulate core flux density, slot area, and mass</li>
<li>pyFEMM - used to script FEMM</li>
<li>Python - used to calculate heats and graphs</li>
</ul>
<h2 id="geometry">Geometry</h2>
<p>Here&rsquo;s a screenshot of the motor I modeled in FEMM with its flux density map. Max flux density is 1.845 T, which is very large. It&rsquo;s possible that the value came from a tooth tip or a corner mesh artifact. We used a 14P12S configuration with 8 turns per slot. 12AWG circular wire is used.</p>
<p><img alt="FEMM mesh and |B| flux density plot of the stator/rotor cross-section, peaking at 1.845 T" loading="lazy" src="/posts/blog-001/figures/femm-flux-density.png"></p>
<h2 id="copper-losses">Copper losses</h2>
<p>Copper losses are one of the more significant heat sources in a motor. This is because for each additional amp of current, heat scales with the square of current: double the current, quadruple the loss.</p>
<p>For a BLDC motor, this is a big issue because if you want to do anything useful you need high current to drive the motor hard. Motors are one of the more current-hungry electronic components out there.</p>
<p>Copper losses can be modeled as $P_{cu} = 3 I^2 R$, for the copper loss in all 3 phases. To create the graph, we&rsquo;re going to simulate running the motor at a particular torque and speed, then determine the power loss.</p>
<p><img alt="DC copper loss vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/dc_copper_loss.png"></p>
<p>The graph is a bunch of horizontal stacks. The magnitude doesn&rsquo;t change as you vary speed, it stays constant. Torque on the other hand changes has a large impact, and copper losses dramatically scales from 0 to 210 W. This is because torque depends on current to increase. You want more torque, you need a lot of current, and current incurs heat losses. Speed of rotation depends on voltage, which would not incur copper losses at DC.</p>
<p>AC copper losses can be thought of as the decrease of effective conduction area in a wire as frequency/RPM increases. This area decrease is due to skin and proximity effects.</p>
<p>Skin effect is a result of self-induced eddy currents within a wire&rsquo;s own body that go against the actual DC current. It directly opposes real current flow in the center so much so that the actual conducting area of the wire becomes shaped like an annulus.</p>
<p><img alt="Skin effect: self-induced eddy currents push current density toward the conductor&rsquo;s surface, shrinking the effective conducting area to an annulus" loading="lazy" src="/posts/blog-001/figures/skin-effect.jpg"></p>
<p>Resistance of a wire is inversely proportional to its area; by decreasing area, you increase resistance, thus increasing losses since current would be held constant. $R = \frac{\rho L}{A}$</p>
<p>A current in a smaller area will produce more heat than that same current in a larger area. The rate at which this area decreases can be calculated with skin depth, where $\delta = \sqrt{\rho / (\pi f \mu_0)}$ — the depth over which current density decays by $1/e$ due to the conductor&rsquo;s own AC field pushing current toward its surface.</p>
<p>Proximity effect is essentially the same phenomenon but from a neighboring wire instead. Induced eddy currents from neighboring coils oppose real current flow. Depending on the orientation of this external wire, the area can skew and shrink towards the left or right edge of the wire.</p>
<p><img alt="Proximity effect: induced eddy currents from a neighboring conductor push current density toward one edge of the wire" loading="lazy" src="/posts/blog-001/figures/proximity-effect.jpg"></p>
<p>The impact of all this effective shrinkage is accounted for in computing the Dowell ratio $R_{ac}/R_{dc}$, a dimensionless number. This is what we measure changing in our graph this time, instead of pure watts.</p>
<p><img alt="AC-to-DC resistance ratio (Dowell ratio) vs. frequency/RPM" loading="lazy" src="/posts/blog-001/figures/ac_ratio.png"></p>
<p>Vertical bands make sense here, Dowell ratio depends on frequency/RPM. If the Dowell ratio goes up that means the AC resistance goes up. If you wanted to actually get AC resistance, you multiply the Dowell ratio by the DC resistance. However, the ratio is so close to unity that the product of the ratio with any DC resistance is basically unchanged. In fact, AC resistance would only contribute a few percent of the total heat loss. It is nearly negligible.</p>
<h2 id="core-losses">Core losses</h2>
<p>Hysteresis losses and eddy current losses compose core losses in the stator.</p>
<p>Hysteresis loss is the heat generated when you repeatedly magnetize and demagnetize a metal. This can be seen in a hysteresis loop.</p>
<p><img alt="Hysteresis loop for soft vs. hard ferromagnetic material" loading="lazy" src="/posts/blog-001/figures/hysteresis-loop.jpg"></p>
<p>As you increase magnetizing force (x-axis), the field density increases (y-axis). Once you reach the corner, you&rsquo;ve reached saturation. If you follow the path of the graph counterclockwise, you can see that our magnetizing force has decreased to 0 but its flux density (B) is still high. To bring the magnet back to its original un-powered state, you have to reverse your magnetizing force in the opposite direction so that $B = 0T$ once again. The cost of doing this exerts heat because moving magnetic domains within a magnet to align and realign repeatedly causes a lot of magnetic friction. Faster switching of magnets equals more loss in the core. So hysteresis loss increases with speed as seen in $P_{hyst} = k_h \cdot f \cdot B_{pk}^{\alpha}$, where $B_{pk}$ is the 1.845 T peak flux density pulled from the FEMM sim above.</p>
<p>Eddy current losses in the stator are the reason stators are manufactured with thin silicon steel sheets with a varnish coating. Eddy currents are produced inside the stator, and they get stronger with frequency increase. By splitting stators into sheets, eddy currents are split into smaller components. Since power loss scales with current, decrease in current is greatly appreciated, as seen in $P_{eddy} = k_e \cdot f^2 \cdot B_{pk}^2$.</p>
<p><img alt="Core loss (hysteresis + eddy current) vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/core_loss.png"></p>
<h2 id="mechanical-loss">Mechanical loss</h2>
<p>Windage is the aerodynamic drag acting on the spinning rotor. This loss is very minuscule and only increases at top speeds. The relationship to speed is quadratic as seen in $P_{windage} = k_{windage} \cdot \omega^2$.</p>
<p>Bearing friction is modeled as a constant 0.2W. Friction completely dominates mechanical loss.</p>
<p><img alt="Mechanical loss (windage + bearing friction) vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/mech_loss.png"></p>
<h2 id="total-power-analysis-and-motor-efficiency">Total power analysis and motor efficiency</h2>
<p>Let&rsquo;s add up all the losses in power we have found.</p>
<p><img alt="Total power loss vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/total_loss.png"></p>
<p>Now, let&rsquo;s get the power output by multiplying torque and angular speed.</p>
<p><img alt="Output power vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/output_power.png"></p>
<p>Input power is then given by $P_{in} = P_{out} + P_{loss}$, so just sum the graphs.</p>
<p><img alt="Input power vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/input_power.png"></p>
<p>So we have the input power, we have the output power. Efficiency is simply the measure of the ratio between those two quantities. $\eta = P_{out}/P_{in} = \tau\omega/VI$. $\tau\omega$ are the output metrics and $VI$ are the input metrics. Together we get this.</p>
<p><img alt="Motor efficiency map vs. torque and speed" loading="lazy" src="/posts/blog-001/figures/efficiency_map_clean.png"></p>
<p>Looking at the graph our most efficient contour sits at ~85% at around 0.2 N·m, if you move to the right, you can drive your motor at higher RPM&rsquo;s without increasing torque. If you travel up instead, you are able to increase your torque by ~0.2 N·m for no sacrifice in efficiency either.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Taking a look at the legends for all these graphs, we can see that copper losses are the majority of heat, followed by core and mechanical. The other sources of heat we assumed to be zero are also very insignificant compared to copper losses. Taken from the graphs, we have a table of values as torque varies.</p>
<table>
	<thead>
			<tr>
					<th style="text-align: right">Torque [N·m]</th>
					<th style="text-align: right">$P_{cu}$ [W]</th>
					<th style="text-align: right">$P_{fe}$ [W]</th>
					<th style="text-align: right">$P_{mech}$ [W]</th>
					<th style="text-align: right">Winding temp [°C]</th>
					<th style="text-align: right">Efficiency</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: right">0.1</td>
					<td style="text-align: right">1.02</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">0.20</td>
					<td style="text-align: right">27</td>
					<td style="text-align: right">79.1%</td>
			</tr>
			<tr>
					<td style="text-align: right">0.2</td>
					<td style="text-align: right">4.10</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">0.20</td>
					<td style="text-align: right">28</td>
					<td style="text-align: right">84.6%</td>
			</tr>
			<tr>
					<td style="text-align: right">0.3</td>
					<td style="text-align: right">9.28</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">0.20</td>
					<td style="text-align: right">30</td>
					<td style="text-align: right">84.9%</td>
			</tr>
			<tr>
					<td style="text-align: right">0.4</td>
					<td style="text-align: right">16.63</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">0.20</td>
					<td style="text-align: right">32</td>
					<td style="text-align: right">83.7%</td>
			</tr>
			<tr>
					<td style="text-align: right">0.6</td>
					<td style="text-align: right">38.32</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">0.20</td>
					<td style="text-align: right">38</td>
					<td style="text-align: right">80.1%</td>
			</tr>
			<tr>
					<td style="text-align: right">0.8</td>
					<td style="text-align: right">70.50</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">0.20</td>
					<td style="text-align: right">47</td>
					<td style="text-align: right">75.8%</td>
			</tr>
	</tbody>
</table>
<p>Core and mechanical loss stay essentially fixed as torque increases (they track speed, not torque), so copper loss goes from a fifth of total heat at light load to over 90% of it near peak torque. That crossover is what makes copper the loss to optimize for once you push beyond light-duty operation.</p>
<p>Another table from our graphs, we vary speed here instead and hold torque constant at 0.3 N·m.</p>
<table>
	<thead>
			<tr>
					<th style="text-align: right">Speed [RPM]</th>
					<th style="text-align: right">$f_{\text{elec}}$ [Hz]</th>
					<th style="text-align: right">$P_{cu}$ [W]</th>
					<th style="text-align: right">$P_{fe}$ [W]</th>
					<th style="text-align: right">Winding temp [°C]</th>
					<th style="text-align: right">Efficiency</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: right">200</td>
					<td style="text-align: right">23</td>
					<td style="text-align: right">9.21</td>
					<td style="text-align: right">0.25</td>
					<td style="text-align: right">28</td>
					<td style="text-align: right">39.4%</td>
			</tr>
			<tr>
					<td style="text-align: right">1000</td>
					<td style="text-align: right">117</td>
					<td style="text-align: right">9.22</td>
					<td style="text-align: right">1.57</td>
					<td style="text-align: right">28</td>
					<td style="text-align: right">74.1%</td>
			</tr>
			<tr>
					<td style="text-align: right">2000</td>
					<td style="text-align: right">233</td>
					<td style="text-align: right">9.25</td>
					<td style="text-align: right">3.95</td>
					<td style="text-align: right">29</td>
					<td style="text-align: right">82.4%</td>
			</tr>
			<tr>
					<td style="text-align: right">2904</td>
					<td style="text-align: right">339</td>
					<td style="text-align: right">9.28</td>
					<td style="text-align: right">6.80</td>
					<td style="text-align: right">30</td>
					<td style="text-align: right">84.9%</td>
			</tr>
			<tr>
					<td style="text-align: right">4000</td>
					<td style="text-align: right">467</td>
					<td style="text-align: right">9.32</td>
					<td style="text-align: right">11.15</td>
					<td style="text-align: right">31</td>
					<td style="text-align: right">85.9%</td>
			</tr>
			<tr>
					<td style="text-align: right">5808</td>
					<td style="text-align: right">678</td>
					<td style="text-align: right">9.42</td>
					<td style="text-align: right">20.45</td>
					<td style="text-align: right">34</td>
					<td style="text-align: right">85.9%</td>
			</tr>
	</tbody>
</table>
<p>Copper loss barely moves with speed at fixed torque. Core loss is what climbs, from negligible to over 20W. 2x the copper loss by top speed. Efficiency rises fast as output power ramps up, peaks around 4000 RPM, then edges back down as core loss growth outpaces the gain in output power.</p>
<p>There&rsquo;s a myriad of techniques to minimize copper losses:</p>
<ul>
<li>Special stacking methods when winding stator</li>
<li>Use square wires to improve slot factor and minimize air gaps</li>
<li>Litz wiring</li>
</ul>
<p>Some more ways to decrease other heat and increase efficiency:</p>
<ul>
<li>Skewing magnets for smoother rotation</li>
<li>Splitting magnets in half and skewing</li>
<li>Backplate to concentrate magnetic fields inside motor</li>
<li>Better magnets like N52</li>
<li>Use FOC control for smoother torque</li>
<li>PWM tuning to reduce current rippling</li>
<li>Silicon content in the electrical steel is a tradeoff, not a knob: more silicon raises resistivity and cuts eddy loss, but lowers saturation flux density. High-silicon grades favor high-speed operation; lower-silicon grades favor torque density.</li>
</ul>
<h2 id="what-this-means-for-me">What this means for me</h2>
<p>I&rsquo;m working on a robotic actuator right now and there were too many factors when considering  buying a motor. Understanding how to do all these thermal simulations has been illuminating and I can now comfortably spec my needs.</p>
<p>You can check out my scripts and figures at my <a href="https://github.com/JimmerLitter/Motor-Loss-Study">Github</a></p>
<h2 id="sources">Sources</h2>
<ul>
<li><a href="https://docs.odriverobotics.com/v/latest/hardware/odrive-motors.html">ODrive D5065 datasheet</a></li>
<li><a href="https://things-in-motion.blogspot.com/2019/03/basic-bldc-pmsm-efficiency-and-power.html">BLDC/PMSM efficiency and power basics — Things in Motion</a></li>
<li><a href="https://www.hlaboratories.com/tools/bldc-winding">BLDC winding tool — H Laboratories</a></li>
<li><a href="https://ridleyengineering.com/design-center-ridley-engineering/49-circuit-designs/289-112-the-power-of-dowells-equations-and-curves.html">The Power of Dowell&rsquo;s Equations and Curves — Ridley Engineering</a></li>
<li><a href="https://www.machinedesign.com/mechanical-motion-systems/article/21251043/portescap-understanding-losses-in-bldc-motors">Understanding Losses in BLDC Motors — Machine Design (Portescap)</a></li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
