Dear all,

Problem Statement:

I have linear actuator running with 3.2mm/sec , 600mm stroke,

should run from morning 7AM and 18 PM . i.e 11 hour for solar tracking application. I assumed Desired angle on -45 deg to 45 deg from 7am to 18 PM .how i can calculate actuator on time?calculate Actuator actual poS?? Is equation are right??

11hr*60minute/hour = 660minutes

so turn on the actuator once a minute for (25 / 88) seconds per minute.

Here's the math:

600mm/660minute = 10/11 mm each minute

actuator move 3.2mm/second

time * 3.2mm/sec = 10mm / 11

time = (10 / (11 * 3.2)) (get rid of decimal by multiplying top and bottom by ten) = (100 / 352) (divide top and bottom by four to reduce fraction) = (25 / 88) seconds per minute

This is less than a third of a second per minute. IT must be better off selecting a time to run the actuator and calculate the how often to run the actuator.

Then:

2 * (88 / 25) = (176 / 25) minutes

actuator for two seconds every 7.04 minutes (7 minutes, 2.4 seconds).

Just change the "2" above to figure out how frequently you should run the actuator if you want it on for a different number of seconds.

Here's the other equations relating the various variables to each other.

angle= ((3 * position) / 20) - 45

or

position =((angle + 45) * 20) / 3

position = ((20 * angle) / 3)+ 300

since position = 3.2 * time (in seconds)

angle =((3 * 3.2 * time) / 20) - 45

using only integers:

angle =((96 * time) / 200) - 45

Code:double Desire_Degree; unsigned int TS; static float slope= 0.00227272727273; static float intercept=- 102.272727273; static int length; double Actual_Degree; static int h; static int m; double Actual_postion; static float ACT_SPEED=3.2; void setup() { h=7; m=30; Serial.begin(9600); } static int time_interval; void loop() { calc_min(); //Desire degree calculation if(h<23) { TS=(3600*h)+(60*m); Desire_Degree=(TS*slope)+intercept; //Actual anngle calculation time_interval=(10)/(11*ACT_SPEED)*(25/88); // length=(TS*3.2); length =(0.0151466666667*TS - 381.504); Actual_Degree=((3 *length) / 20) - 45; Actual_postion=((Actual_Degree + 45) * 20) / 3; // actual_deg=((3*length)/200)-45; Serial.print("HH-MM: "); Serial.print(h);Serial.print(":");Serial.println(m); Serial.print("Desired Degree:"); Serial.println(Desire_Degree); Serial.print("Actual Degree:"); Serial.println(Actual_Degree); Serial.print("length:"); Serial.println(length); Serial.print("Actual pos:"); Serial.println(Actual_postion); Serial.println("................................."); } delay(1000); } void calc_min() { if(m<60) { m=m+5; }else if(m==60) { m=0;h=h+1; } }

agrees : That makes much more sense - it did seem an unlikely and rather crude actuator until you found that.