> with(plots):

> with (linalg):

KMZ51

>

XY-EBENE

Das sind die beiden Bahnen der Vektoren, die die Sensoren x,y bei einer Drehung um 90° in waagrerechter Position erzeugen.

Der Sensor x zeigt dabei am Anfang genau nach norden (x=10) . Sensor y liefert dann den Wert 0.

Beide Vektoren liegen immer 90° zueinmander.

> plot( {[cos(alpha*Pi/180)*cos(alpha*Pi/180)*10 , sin(alpha*Pi/180)*cos(alpha*Pi/180)*10, alpha =0...90], [-sin(alpha*Pi/180)*sin(alpha*Pi/180)*10 , cos(alpha*Pi/180)*sin(alpha*Pi/180)*10, alpha =0...90]},x=-10..10,y=-10..10);

[Maple Plot]

Animation der Drehung von 0..90°.

Rechts Sensor x, Links Sensor y.

10 = Magnetfeldstärke in XY Ebene, genauergesagt in X Richtung

> animate( {[cos(alpha*Pi/180*u)*cos(alpha*Pi/180*u)*10 , sin(alpha*Pi/180*u)*cos(alpha*Pi/180*u)*10, alpha =0..90], [-sin(alpha*Pi/180*u)*sin(alpha*Pi/180*u)*10 , cos(alpha*Pi/180*u)*sin(alpha*Pi/180*u)*10, alpha =0..90 ] }, u=0..1,frames=60,numpoints=100);

[Maple Plot]

>

>

>

XZ-EBENE

Neigen des Sensors um die y Achse.

Bsp. Sensoren in waagrerechter Position

X-Komponente = 10

Z-Komponente = 30

Beta = 0°

Kippt man nun beide Senosoren um 90°, so ändern sich deren Größen. (Siehe auch teil-Animation unten)

> plot({[ ((10* cos(beta)+30*sin(beta))*cos(beta)) , -(( 10 * cos(beta)+30*sin(beta))*sin(beta)),beta=0..Pi/2 ] , [(( -30* cos(beta)-10*sin(beta))*sin(beta)) , ((-30*cos(beta)-10*sin(beta))*cos(beta)),beta=0..Pi/2 ]});

[Maple Plot]

>

>

In waagrerechter Position ist x =10 und z=30. Gekippt ändert sich die beiden Werte x, z folgendermassen.

> animate({[ (( 10* cos(beta*u)+30*sin(beta*u))*cos(beta*u)),-(( 10 *cos(beta*u)+30*sin(beta*u))*sin(beta*u)),beta=0..Pi/8], [ (( -30* cos(beta*u)-10*sin(beta*u))*sin(beta*u)),((-30 *cos(beta*u)-10*sin(beta*u))*cos(beta*u)),beta=0..Pi/8] } ,u=0..1,frames=60,numpoints=100);

[Maple Plot]

>

>

>

>

Test mit einem Magnetfeld von x=10 und z=30 auf ebene Unterlage.

Verdreht (um y-Achse) um Pi/8 (22.5°) messen die Beiden Sensoren (x,z) 20,71 und 31,54.

Daraus müssen nun durch das Programm die urspünglichen Größen x=10 und z=30 erechnet werden. (siehe unten)

> F:=beta->sqrt(((( 10* cos(beta)+30*sin(beta))*cos(beta)))^2+((( 10 *cos(beta)+30*sin(beta))*sin(beta)))^2);

> G:=beta->sqrt((( -30* cos(beta)-10*sin(beta))*sin(beta))^2+((-30 *cos(beta)-10*sin(beta))*cos(beta))^2);

F := proc (beta) options operator, arrow; sqrt((10*...

G := proc (beta) options operator, arrow; sqrt((-30...

Test-Messwerte aus beiden Hall Sensoren KMZ51-x, KMZ51-z, und ADXL202

> evalf(F(Pi/8));evalf(G(Pi/8));beta=Pi/8;

>

20.71929830

31.54322030

beta = 1/8*Pi

>

> eq1:=(beta,xx)->(x* cos(beta) + y*sin(beta) = xx);

> eq2:=(beta,yy)->(x* sin(beta) + y*cos(beta) = yy);

eq1 := proc (beta, xx) options operator, arrow; x*c...

eq2 := proc (beta, yy) options operator, arrow; x*s...

>

> evalf(eq1(Pi/8,20.71929830));

.9238795325*x+.3826834325*y = 20.71929830

> evalf(eq2(Pi/8,31.54322030));

.3826834325*x+.9238795325*y = 31.54322030

Gleichungssystem lösen

> solve({ evalf(eq1(Pi/8,20.71929830)) , evalf(eq2(Pi/8,31.54322030)) },{x,y});

{x = 10., y = 30.}

Ergebins ok!!

>

>

>

>