Constant Force vs Ideal Spring to Return a Squiggle Motor's Carriage Summary Using only steady state considerations with no air resistance, two systems of storing energy are compared in combination with a Squiggle Motor, namely the SQL-RV-1.8. Gravity is used to represent a constant force energy storage and is compared to an ideal Newtonian spring. It is shown that for a practical case with ball bearings, the constant force method wastes less energy. Even though it loses more to friction in the storage system, the gravity solution in providing a constant force, wastes less energy to friction within the Squiggle Motor's self-locking screw, in another part of the system. However since its losses are proportional to the force it must output, the constant force storage system wastes more energy when a larger force is needed as with a slide bearing. The System Figure 1: Squiggle Motor & System A Squiggle Motor and system by New Scale Technologies is shown in Figure 1. In the forward direction, the squiggle motor must overcome friction as well as force energy into a storage component, which powers the motion in the reverse direction. Forward πΉπππ‘ππππ€π = πΉπππππ‘πππ + πΉπ π‘πππππ In this analysis, let there be no air resistance, so this friction can be considered Newtonian and constant, equal to the weight of its carriage times a coefficient of friction. πΉπππππ‘πππ = π ∗ π ∗ π1 Note that the system in Figure 1 utilizes compression springs to return the carriage pushed by the motor. A coil spring of this type applies a force proportional to the distance it is compressed. To apply a more constant force, consider using a mass on a cable. These two system components are shown in Figure 2 where a red arrow indicates the direction in which a force is applied in order to store energy in these components. Figure 2: Components to Be Compared For gravity, the force to store energy is the weight lifted plus some friction in the pulley element, proportional to the tension in the cable, which for lifting at a constant speed will be the average of the weight and force to store. πΉπ π‘πππππ = ππππβπ‘ + (πΉπ π‘πππππ + ππππβπ‘) ∗ πΉπ π‘πππππ ππ 2 ππ ππππβπ‘ (1 + 2 ) = ππ (1 − 2 ) For the spring, the force to store energy is dependent on the current position of the carriage, x. The zero of this x axis is the edge of the carriage's movement when there can be no less energy stored in the spring. The spring constant k is the spring rate. πΉπ π‘πππππ = π ∗ π₯ + πΉπππππππ Reverse In the reverse direction, when the storage element is powering the movement of the carriage, and the screw is simply retreating and controlling the motion, the motor and screw resist the motion using its self-locking properties. Figure 3: A Screw Analogy Since it is self-locking, when an axial force is applied, it will hinder rotation, regardless of the direction. For example, consider the self locking screw in Figure 3. It has a force F applied axially. A larger F creates greater friction which causes the torque T required to unscrew to be larger as well, even though the force F is attempting to push the screw to the right, the same direction as the unscrewing torque. Note that due to the way the motor is used as a linear actuator, the friction with the screw in the forward direction is already accounted for in the motor curves shown below in Figure 4. Figure 4: Motor Performance Curves Since there are no curves for a reverse load, the equivalent forward force, Feq, that causes the same load on the motor as the reverse force, F, is calculated. In the diagrams in Figure 5, the two scenarios are considered. The red represents the motor's nut and the green the screw. The angle ο± is the arctangent of the screw pitch divided by the pitch circumference. Fm is the force of the motor at the pitch radius, the torque on the nut divided by the pitch radius, and is the same for both scenarios to make them equivalent. Rm is a reaction force that keeps the nut from being forced out, and is not the same in both cases. Figure 5 The force applied laterally to the screw is split to its components, but since the concern is the load on the nut, only these interaction forces are shown; the green wedges are not complete free body diagrams. The red wedges representing the nut are complete free body diagrams. The frictional forces are kinetic since the screw is moving downward. Here summing forces in the horizontal directions, assuming no acceleration for steady state, and equating the two Fm produces that πΉππ = πΉ π cos(π) − sin(π) + π2 cos(π) + ππ2 sinβ‘(π) π cos(π) + sin(π) + π2 cos(π) − ππ2 sin(π) If ο=ο2 this simplifies to πΉππ = πΉ 2π2 cos(π) − (1 − π22 )sinβ‘(π) 2π2 cos(π) + (1 − π22 ) sin(π) Having arrived at the conversion, which turns the force on the screw into a load against the motor, πΉπππ‘πππππ£ 2π2 cos(π) − (1 − π22 )sinβ‘(π) = (πΉ − πΉπππππ‘πππ ) 2π2 cos(π) + (1 − π22 ) sin(π) πππ‘π’ππ For gravity, the force returned is the weight lifted minus the friction in the pulley element, proportional to the tension in the cable, which for returning at a constant speed will be average of the weight and the friction of the carriage. πΉπππ‘π’ππ = ππππβπ‘ − (ππππβπ‘ + πΉπππππ‘πππ ) ∗ ππ ππ ππ = β‘ππππβπ‘ (1 − ) − πΉπππππ‘πππ 2 2 2 For the spring, the force returned is the same as the force to store. πΉπππ‘π’ππ = πΉπ π‘πππππ = π ∗ π₯ + πΉπππππππ Overall The overall equations for load on the motor for the spring are thus: Spring πΉπππ‘ππππ€π = πππ1 + ππ₯ + πΉπππππππ πΉπππ‘πππππ£ 2π2 cos(π) − (1 − π22 ) sin(π) = (ππ₯ + πΉπππππππ − πππ1 ) 2π2 cos(π) + (1 − π22 ) sin(π) The overall equations for load on the motor for gravity are thus: Gravity πΉπππ‘ππππ€π πΉπππ‘πππππ£ ππ ππππβπ‘ (1 + 2 ) = πππ1 + ππ (1 − 2 ) ππ ππ 2π2 cos(π) − (1 − π22 ) sin(π) = (1 − ) − πππ (1 + )) (ππππβπ‘ 1 2 2 2π2 cos(π) + (1 − π22 ) sin(π) Having the loads to look up the speeds on Figure 4 then converts this to motion. The speed is the rate of change of x relative to time, and can be integrated numerically to obtain x. Parameters Forced Minimums For a given situation, there is a minimum Weight or Fpreload required since the energy storage elements must be able to move the carriage to that x=0 position where no less energy can be stored in the element. For this, the Freturn must overcome the static friction of the carriage. If the static friction is approximated as the kinetic friction times a constant C, Ffriction: πΆπΉπππππ‘πππ = π ∗ 0 + πΉπππππππ = πΉπππππππ ππππππππππ = πΆπΉπππππ‘πππ = πΆπππ1 πΆπΉπππππ‘πππ ππ 1− 2 ππ ππ = ππππβπ‘ (1 − ) − πΆπΉπππππ‘πππ = ππππβπ‘ ππ 2 2 1+ 2 ππππβπ‘πππ ππ ππ 1+ 2 2 = πΆπΉπππππ‘πππ ππ = πΆπππ1 ππ 1− 2 1− 2 1+ Other Parameters for Testing The parameters vary based on the components used below are some parameters that will be used along with the reasons for them. g=9.81 m/s2 Gravity close enough to earth's surface .16 π = atan (.529∗2π) = 2.75595° New Scale CAD Model1 m=.065 kg (Mass obtained from 3D modeling of items that need be moved) ππ = .3 plastic-metal2 π1 as stated below in Table 1.2 π2 = 0.8 Steel-Steel3 with this kinetic approximated as static from source k=.01 N/mm=10N/m closest available4 to .5gram/mm=.495N/m New Scale Recommended Fpreload = Preloadmin as stated in Forced Minimums with C as stated below in Table 1. Weight=Weightmin as stated in Forced Minimums with C as stated below in Table 1. Table 1: Ball and Slide Bearing Parameters π1 C 1 Ball Bearings .002 2 Slide Bearings 0.2 1.2 http://www.newscaletech.com/downloads_registered/SQL-RV-1.8-6-12.STEP http://www.tribology-abc.com/abc/cof.htm 3 http://www.tribology-abc.com/abc/screwlub.htm 4 http://www.leespring.com/compression_spec.asp?springType=C&forWhat=Search 2 Results Simple linear/Euler approximated simulations are performed with constant time step of dt=.0001 sec, the stated parameters and the typical load to speed relation in Figure 4, running the system from x=0 to x=.006m and back. Figure 6: Ball Bearing Case Figure 7: Slide Bearing Case Table 2: Work done by Motor Ball Bearing Slide Bearing Gravity 0.00004428 J 0.00262 J Spring 0.00038659 J 0.00219 J The orders of magnitude of the work done by the motor are clearly different, reflecting the difference in orders of magnitude of the coefficients of friction. Conclusions Since the losses induced by the additional friction are directly dependent on the force required, gravity out performs the spring in the situation where a the force required is small and any additional force provided is wasted. For the Squiggle motor, or on any other system where a self-locking screw is interfaced similarly, the additional returning force of the spring a detriment, putting load on the motor. In the cases that require a larger force however, a larger weight becomes the more detrimental, creating more friction against the cable than a spring would have in the self-locking screw. Appendix An Additional Case Unconventional Spring: Assume it operates as an ideal spring, only with a custom k value equal to 0.5g/mm as recommended by New Scale Technologies: Figure 8: With Slide Bearings Figure 9: With Ball Bearings Speed Curve Fit used 3.3V typ case curvefit 70 60 50 40 30 20 10 y = 0.01162880x3 - 0.34213897x2 - 0.69805841x + 59.43689955 R² = 0.99996546 0 0 2 4 6 8 10 12 14 Figure 10 MATLAB code used Speed.m: function [ x ] = Speed(F) %disp(F); if(F<3) x=18; return; end if(F>55) x=0; return; end pol=[0.01162880, -0.34213897, -0.69805841, 59.43689955]; pol(4)=pol(4)-F; q=roots(pol); q2=q(q<=20); x=q2(q2>=0); if(length(x)>1) disp(x); x=x(1); end end gravvspring.m with parameters highlighted: clear; clc; format compact; close all; dt=.0001; %(sec) Euler Integration timestep TotalCarriageMass=0.065;%m mass of carriage (kg) Carriagefric=0.002; %mu-1 coefficient of friction on carriage CarFricF=TotalCarriageMass*9.81*Carriagefric; xlim=6/1000; %meters C=2; %Static to kinetic friction ratio for slides %Conversions for performance curve use gramTOnewton=@(x) x*9.81/1000; newtonTOgram=@(x) x*1000/9.81; 16 18 mmpsTOmps=@(x) x/1000; mpsTOmmps=@(x) x*1000; %Typ squiggle motor @3.3V Performance Curves ForceFit=[0.01162880, -0.34213897, -0.69805841, 59.43689955]; Force=@(x) polyval(ForceFit,x); %screw ScrewFric=0.8; %mu-2 ScrewPit=.16/1000; %pitch m ScrewPitR=.529/1000; %m ScrewAngl=atan(ScrewPit/(2*pi*ScrewPitR)); %rad ConversionRat=(2*ScrewFric*cos(ScrewAngl)-(1ScrewFric*ScrewFric)*sin(ScrewAngl))/(2*ScrewFric*cos(ScrewAngl)+(1ScrewFric*ScrewFric)*sin(ScrewAngl)); Fequiv=@(F)F*ConversionRat; %gravity model Gravpullfric=0.30; %mu-g Weight=C*CarFricF*(1+Gravpullfric/2)/(1-Gravpullfric/2); %Min weight Newtons Loadgfwd=@(x)CarFricF+Weight*(1+Gravpullfric/2)/(1-Gravpullfric/2); %Load fwd in newtons Loadgrev=@(x)Fequiv(Weight*(1-Gravpullfric/2)-CarFricF*(1+Gravpullfric/2)); %Load rev in newtons %springd model springk=10;%0.5*9.81; %0.5g/mm recommended by newscale 10N/m min from leespring preload0=C*CarFricF; %Min Fpreload Loadsfwd=@(x)CarFricF+springk*x+preload0; %Load fwd in newtons Loadsrev=@(x)Fequiv(springk*x+preload0-CarFricF); %Load rev in newtons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Gravcalcs xg=[0]; tg=[0]; i=1; Eg=0; while(xg(i)<xlim) Lgg(i)=newtonTOgram(Loadgfwd(xg(i))); Lg(i)=newtonTOgram(Loadgfwd(xg(i))); if(Lg(i)>65)fprintf('STALL%n'); end Sg(i)=Speed(Lg(i)); Lg(i)=gramTOnewton(Lg(i)); SMg(i)=Sg(i); Sg(i)=mmpsTOmps(Sg(i)); Eg=Eg+Lg(i)*Sg(i)*dt; xg(i+1)=xg(i)+Sg(i)*dt; tg(i+1)=tg(i)+dt; i=i+1; end while(xg(i)<2*xlim) Lgg(i)=newtonTOgram(Loadgrev(2*xlim-xg(i))); Lg(i)=newtonTOgram(Loadgrev(2*xlim-xg(i))); %if(Lg(i)>65)fprintf('STALL%n'); end Sg(i)=Speed(Lg(i)); Lg(i)=gramTOnewton(Lg(i)); SMg(i)=Sg(i); Sg(i)=mmpsTOmps(Sg(i)); Eg=Eg+Lg(i)*Sg(i)*dt; xg(i+1)=xg(i)+Sg(i)*dt; tg(i+1)=tg(i)+dt; i=i+1; end Lgg(i)=newtonTOgram(Loadgrev(xg(i))); Lg(i)=newtonTOgram(Loadgrev(xg(i))); Sg(i)=Speed(Lg(i)); SMg(i)=Sg(i); Lg(i)=gramTOnewton(Lg(i)); Sg(i)=mmpsTOmps(Sg(i)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% springcalcs xs=[0]; ts=[0]; i=1; Es=0; while(xs(i)<xlim) Lsg(i)=newtonTOgram(Loadsfwd(xs(i))); Ls(i)=newtonTOgram(Loadsfwd(xs(i))); if(Ls(i)>65)fprintf('STALL%n'); break; end Ss(i)=Speed(Ls(i)); Ls(i)=gramTOnewton(Ls(i)); SMs(i)=Ss(i); Ss(i)=mmpsTOmps(Ss(i)); Es=Es+Ls(i)*Ss(i)*dt; xs(i+1)=xs(i)+Ss(i)*dt; ts(i+1)=ts(i)+dt; i=i+1; end while(xs(i)<2*xlim) Lsg(i)=newtonTOgram(Loadsrev(2*xlim-xs(i))); Ls(i)=newtonTOgram(Loadsrev(2*xlim-xs(i))); if(Ls(i)>65)fprintf('STALL%n'); break; end Ss(i)=Speed(Ls(i)); Ls(i)=gramTOnewton(Ls(i)); SMs(i)=Ss(i); Ss(i)=mmpsTOmps(Ss(i)); Es=Es+Ls(i)*Ss(i)*dt; xs(i+1)=xs(i)+Ss(i)*dt; ts(i+1)=ts(i)+dt; i=i+1; end Ls(i)=newtonTOgram(Loadsrev(2*xlim-xs(i))); Ss(i)=Speed(Ls(i)); Ls(i)=gramTOnewton(Ls(i)); SMs(i)=Ss(i); Ss(i)=mmpsTOmps(Ss(i)); plot(xg,Lg,xs,Ls); xlabel('dist moved from start (m)'); ylabel('load opposing motor (N)'); legend('Gravity','Spring'); fprintf('Work done by motor against friction and energy storing load in system:\nGravity %.8f J\nSpring %.8f J\n',Eg,Es);