RUNNING LINEAR ACTUATOR without feed back
 CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

# Thread: RUNNING LINEAR ACTUATOR without feed back

1. Junior Member
Join Date
Jan 2014
Posts
3

## RUNNING LINEAR ACTUATOR without feed back

Dear all,

I am trying to do single axis solar tracker with linear actuator /rtc/ UNO. I have already done with feedback sensor. Now Here i am trying to without feedback.
Linear actuator specification: 24v , 3.2mm/sec as speed , 600mm stoke.

Desired angle calculation: tracking start from 7am to 18PM, 11hours
Assumed degree: 7AM as -45 deg , 12.30 as 0 degree and 18 pm as 45 degree.
static float slope= 0.00227272727273;
static float intercept=- 102.272727273;
TS=(3600*hour)+(60*minute);
Desire_Degree=(TS*slope)+intercept;

Problem part : calculating actual angle/ calculation for Ton time and convert in to +/-45 degree format.
rate=distance/ time
Ton=600mm/660minute = 10/11 mm each minute
time * 3.2mm/sec = 10mm / 11
time= (25 / 88) sec/minute;
if i wanna run for 2 sec ->(2*88/25)= 7.04 i.e actuator must on for 7 minute;
angle= ((3 * position) / 20) - 45 and
or
position =((angle + 45) * 20) / 3
since position = 3.2 * time
angle =((96 * time) / 200) - 45.
How can i put time here.
can someone help me coding for calculating Ton time and solve above equation. below i posted my code . I need it has to be modified little bit. i need to implement ton time actuator here.

2. ## Re: RUNNING LINEAR ACTUATOR without feed back

Problem part : calculating actual angle/ calculation for Ton time and convert in to +/-45 degree format.
rate=distance/ time
Ton=600mm/660minute = 10/11 mm each minute
time * 3.2mm/sec = 10mm / 11
time= (25 / 88) sec/minute;
if i wanna run for 2 sec ->(2*88/25)= 7.04 i.e actuator must on for 7 minute;
I didnt double check your calculations but you switched actuator time and solar time .....

if Actuator run for 2 sec ->(2*88/25)= 7.04 i.e actuator moves 7 minutes (solar time);

3. Junior Member
Join Date
Jan 2014
Posts
3

## Re: RUNNING LINEAR ACTUATOR without feed back

Originally Posted by GremlinSA
I didnt double check your calculations but you switched actuator time and solar time .....

if Actuator run for 2 sec ->(2*88/25)= 7.04 i.e actuator moves 7 minutes (solar time);

Here i am assuming length as constant(Which is Wrong).I wanna keep actual degree variable such that if it cross Desire degree direction get reverse if actual degree is less it try to move forward. If Desire and actual degree are equal stop. Let me know changes made in below code.

Code:
```
#include"glob.h"
#include"rtc.h"
#include"config.h"
#include"actuator.h"

signed int Desire_Degree;
unsigned int TS;
static float slope= 0.00227272727273;
static float intercept=- 102.272727273;
static int length;
signed int Actual_Degree;

double Actual_postion;
static float ACT_SPEED=3.2;

static int Lmin=0;
static int Lmax=600;
static int Smin=-45;
static int Smax=45;
static float Slope_length;

signed int Intr_length;

void setup()
{
// h=7;
// m=30;
rtcSetup();
setupActuator();
Serial.begin(9600);
}
static int time_interval;

void loop()
{
getRTCDateTime();
//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 =(0.0151466666667*TS - 381.504);
Actual_Degree=((3 *length) / 20) - 45;
Actual_postion=((Actual_Degree + 45) * 20) / 3;
moveActuator();
if((Desire_Degree-Actual_Degree)>1)
{
Move_Forward();
if((Actual_postion-length)==0);
Move_Stop();
}else
{

Move_Reverse();
}

/*  Slope_length=(Smax - Smin) / (Lmax-Lmin);
Intr_length=Smin - ( Lmin * Slope_length);*/
// Actual_Degree=((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;
}
}

void setupActuator(){
// pin setting  for Motor Driver
}

void moveActuator(){

switch(DIR){
case FWD:
Move_Forward();
break;
case REV:
Move_Reverse();
break;
case STOP:
Move_Stop();
break;
}
}

void Move_Forward()
{
// pin setting  for forward

}

void Move_Reverse()
{
// pin setting  for reverse

}

void Move_Stop()

{
//pin setting for stop

}```

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•

Click Here to Expand Forum to Full Width

On-Demand Webinars (sponsored)