Archive for September, 2011

Swash plate actuated by three servos

These lasts weeks, I work a little on the first idea that makes me renew with DIY electronics. I won’t currently tell what it is all about, I’m not ready for that now. But I want to share what giving me a headache for now. The idea is to make a plane tilt and lift, following the movement of three servo actuators. The following video of the cardboard prototype demonstrate the mechanism.

Recently I replace the mechanical part with a RC helicopter swash plate. It’s much more efficient for this prototype.

The swash plate

Servos, linkages and swash plate

The body and the servos linked to the Arduino

I tried to do the formula myself, but I’m really rusted in trigonometry. A friend’s coworker give me great help. He wrote the formula I needed to make the motor move like I imagine.

I wanted the servo motors to be actuated from a given angle of inclination, the direction of this inclination and an offset in height. There is the formula. It needs some adjustment for the offset. I still don’t really understand how to calculate it. I want the height to be relative to the ray of the swash plate.

void calculateHeights( double phi, double theta, double H, double R, double &L1, double &L2, double &L3 )
{
	const double phi1 =   0*pi/180;
	const double phi2 = 120*pi/180;
	const double phi3 = 240*pi/180;

	double x1 = R*cos(phi1);
	double y1 = R*sin(phi1);

	double x2 = R*cos(phi2);
	double y2 = R*sin(phi2);

	double x3 = R*cos(phi3);
	double y3 = R*sin(phi3);

	double nx = cos(theta)*sin(phi);
	double ny = sin(theta)*sin(phi);
	double nz = cos(phi);

	double D = nz*H;

	L1 = ( D - nx*x1 - ny*y1 ) / nz;
	L2 = ( D - nx*x2 - ny*y2 ) / nz;
	L3 = ( D - nx*x3 - ny*y3 ) / nz;
}

This is it for now. I’ll work on the function and get back with it. If you understand more than me, any help is welcome!

Internet to Serial Proxy for the USB Arduino and others...