#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Dec 2013
    Posts
    8
    Rep Power
    0

    RUNNING LINEAR ACTUATOR without feed back


    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; } }
  2. #2
  3. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,996
    Rep Power
    481
    Your linear model might be good enough for your application. Still, better tracking is possible.
    Code:
       A   NB. A is a vector of hourly solar azimuth from north, starting at 6AM.  New York city, last day of 2013.
    108.01 117.1 126.98 138.1 150.78 164.99 180.19 195.38 209.56 222.2 233.29 243.15 252.23
    
    
       2-~/\A  NB. Successive differences showing non-linearity.
    9.09 9.88 11.12 12.68 14.21 15.2 15.19 14.18 12.64 11.09 9.86 9.08
    [code]Code tags[/code] are essential for python code and Makefiles!
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Dec 2013
    Posts
    8
    Rep Power
    0
    Originally Posted by b49P23TIvg
    Your linear model might be good enough for your application. Still, better tracking is possible.
    Code:
       A   NB. A is a vector of hourly solar azimuth from north, starting at 6AM.  New York city, last day of 2013.
    108.01 117.1 126.98 138.1 150.78 164.99 180.19 195.38 209.56 222.2 233.29 243.15 252.23
    
    
       2-~/\A  NB. Successive differences showing non-linearity.
    9.09 9.88 11.12 12.68 14.21 15.2 15.19 14.18 12.64 11.09 9.86 9.08
    Here angle based on assumption. For accuracy we are using NREL code with feedback sensor. Since i am assuming -45 deg(0mm) @ 7 AM , 0 degree(300mm) @ 12 pm and 45 degree (600mm) around 18pm. I need only formula to get actual angle :

    stroke 600mm and speed 3.2mm/sec
    time to retract= 600mm/3.2=187.5sec
    now i need to divide this time in 660 minutes. i.e 7am to 18 Pm
    how i can put in code.

    initial length =0mm after 5 min it has moved 10 mm
    how can i calculate actuator on time .so it moves 10 mm per every 5 minute
  6. #4
  7. Contributed User
    Devshed Specialist (4000 - 4499 posts)

    Join Date
    Jun 2005
    Posts
    4,417
    Rep Power
    1871
    What you seem to have missed from your massive cross posting (and more) is the resolution as well.

    > linear actuator details: 24v 3A,600mm stroke, actuator speed 3.2mm/sec, resolution1.89 pulse/mm.

    The speed is irrelevant, it can cover the whole 600mm in just over 3 minutes (at 3.2mm/sec). This is minuscule compared to the 11 hours that you want to run for.

    Like I said elsewhere,
    300mm * 1.89 pulse/mm => 567 pulses to travel 300mm
    567 pulses in 5 hours (=300 minutes, =18000 seconds) gives you one pulse every 31.75 seconds.

    Comments on this post

    • clifford agrees : That makes much more sense - it did seem an unlikely and rather crude actuator until you found that.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper

IMN logo majestic logo threadwatch logo seochat tools logo