Finding relation between current and force

A project log for Robotic Flexor

A passive linear actuator based on a simple solenoid to recreate the flex motion of biological muscles.

josh collinsjosh collins 07/15/2021 at 05:350 Comments

NOTE: This is actually wrong! and I explain why in my next log.


Going along with my hanging spring analogy from last time, I can see that the net force between the inductor, and gravity would equal 0.

That means that the magnetic force would equal out the force of gravity. I can find the force of a solenoid by multiplying the magnetic energy by the cross sectional Area A. Since the flux density B changes, I had to combine part of B containing the core and part of B with an air core. It turns out that after writing both B's in terms of the length of the gap, the unknowns cancel out, and the position of the core becomes negligible. I then plug B back in to find the magnetic force. now that I know how to find the magnetic force, I can use that to find the required current to hold a position, or to accelerate the core upwards.

Solving for the force / acceleration:

 Python code to find holding current:

import math as m

gravity = 9.8
#permeability of free space
mu_0 = 4*m.pi*10**(-7)
#mu_r means realitive permeability to free space
# mu_r_ElectricalSteel = mu_0*4000
# mu_r_PureIron = mu_0*200000
# mu_r_Iron = mu_0*5000
# mu_r_CarbonSteel = mu_0*100

#NOTE: I tuned this number to get the calculation to match
mu_r_unknown = mu_0*12

coreMu = mu_r_unknown
coreMass = 0.000785 #Kilograms
length = .035 #Meters
numLoops = 110
coreRadius = .00165 #Meters
crossSectionalArea = m.pi*(coreRadius**2)

#Using formula to find current that can keep net acceleration at 0
def getHoldingCurrent(opposingForce):    #NpA is just newton per amp because it's the force divided by current    NpA = ((numLoops*(mu_0+coreMu))**2)*crossSectionalArea / (2*(length**2)*mu_0)    return opposingForce/NpA

print( getHoldingCurrent(coreMass * gravity) )


Testing calculations: