Pages: 1 2 [3] 4   Go Down
Author Topic: Gyro Frage // Raupenbot  (Read 3335 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Viel Spass und Erfolg damit !

2.5 to 3.3VDC supply range
« Last Edit: October 21, 2010, 03:59:12 am by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nur für die Versorgung oder muss ich die Datenports auch auf 3.3V downen?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube hier steht die Antwort unter Reply Nr. 6:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267295038

In dem Beitrag stehen auch noch andere interessante Dinge !
« Last Edit: October 21, 2010, 09:59:56 am by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

also ich hab es jetzt geschafft den Kompass zum laufen zu bringen mit dem Code in dem thread den du verlinkt hast.
Nur werde ich aus den Werten irgenwie nicht schlau  :-?

es ändert sich immer alles egal in welche Richtung ich den Kompass drehe, oder wenn ich ihn hoch und runter hebe.

Code:
MagnetX: -255 MagnetY: 390 MagnetZ: -176
 MagnetX: -254 MagnetY: 385 MagnetZ: -177
 MagnetX: -258 MagnetY: 386 MagnetZ: -175
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sieht so aus als ob Schwanckungen in der Messung vorhanden sind. Passiert dies auch wenn der Kompass 10 Sekunden lang unbewegt herumliegt ?

Der Kompass muss so weit wie möglich von den Motoren des Panzers entfernt eingebaut werden. Da dort Magnete eingebaut sind. Sonst hält der Kompass die Magnete der Motoren für das Erdmagnetfeld.
« Last Edit: October 21, 2010, 04:34:20 pm by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

also die Schwankungen sind so in dem bereich +/- 15-20
Aber warum ändern sich die Werte aller Achsen?

Hier mal ein Snap

Kompass liegt plan und zeigt nach rechts dann kommen diese Werte
Code:
x:431 y:-175 z:177
x:433 y:-178 z:177
x:436 y:-179 z:174
x:441 y:-172 z:180
x:438 y:-174 z:178
x:436 y:-177 z:181
x:435 y:-181 z:178
x:431 y:-178 z:175
x:436 y:-179 z:177
x:432 y:-174 z:177
x:433 y:-177 z:171
x:437 y:-179 z:178
x:437 y:-174 z:174
x:438 y:-159 z:179

Und das hier wenn ich ihn wieder plan auf dem Tisch aber jetzt um 45°
gedreht nach rechts (unten).

Code:
x:16 y:293 z:436
x:20 y:292 z:436
x:23 y:287 z:438
x:29 y:287 z:441
x:17 y:297 z:443
x:21 y:294 z:441
x:20 y:298 z:434
x:19 y:288 z:439
x:26 y:296 z:439
x:22 y:297 z:438
x:24 y:297 z:437
x:20 y:299 z:430
x:19 y:291 z:441
x:25 y:293 z:432
x:19 y:286 z:440
x:24 y:292 z:438
x:17 y:292 z:438
x:28 y:288 z:443
x:23 y:287 z:446
x:27 y:287 z:443

Wie berechne ich jetzt aus den Werten die Gradzahl der Drehung?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe mich im Internet mal ein bischen umgeschaut und folgenden gefunden.

HMC5843 Magnetometer Library for Arduino :
http://eclecti.cc/hardware/hmc5843-magnetometer-library-for-arduino
« Last Edit: October 21, 2010, 05:06:58 pm by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

jep habe ich auch smiley-wink
Daher sind die Werte des letzen Posts, aber die sind fast gleich ...
Hast du ne idee wie ich die Gradzahl aus den Zahlen berechnen kann?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

HMC5843 angle calculation:
http://forum.sparkfun.com/viewtopic.php?f=14&t=22252&start=0
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hmm irgendwie klappt das nicht ... evt ist es auch die Uhrzeit smiley-wink

ich hab das mal probiert mit den Werten aus dem dem Beitrag
aber die Werte sind komplett anders, selbst die div. klappt nicht

Code:
 double winkel, arc;
  x=-298;
  y=143;
  arc = y/x;
  //Serial.print(arc);
  //Serial.print(" : ");
  arc = atan(-0.48);
  //Serial.println(arc);

arc hat im ersten print immer 0.00 dadurch auch arc im 2. print 0.00
aber selbst wenn ich die atan funktion mit dem wert aus dem Forum füttere kommt nicht der Wert raus der kommen sollte.

?? :-/

Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Im ersten müsste -0,479865772 rauskommen.

Im zweiten hingegen -0,447410876.

Das sagt zumindest der Taschenrechner !

Hier gibt es allerdings auch noch einen Sketch zum Sensor:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?action=print;num=1267295038
« Last Edit: October 21, 2010, 07:17:51 pm by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es gibt nicht nur ein Datasheet zum HMC5843:
http://www.sparkfun.com/datasheets/Sensors/Magneto/HMC5843.pdf

Sondern auch ein DesignGuide:
http://www.mikrocontroller.net/attachment/49847/DesignGuide5843revB.pdf

Da stehen auf Seite 13 unter 'Heading Computation' auch die nötigen Formeln drin !
« Last Edit: October 22, 2010, 03:03:19 am by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich hab das jetzt mal basic berechnet ..

http://www.wolframalpha.com/input/?i=arctan%28143%2F-298%29

kommt genau das raus wie auch auf dem sprakforum link also 25,63

das wäre ja schon mal der erste schritt, wie code ich das den?

dann wenn ich den Wert nehme und 450-25,63 mod

http://www.wolframalpha.com/input/?i=425.63+modulo+360

sollte es doch richtig sein oder ?
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
double x, y, arc1, arc2, degree;
x=-298;
y=143;
arc1 = y/x;
arc2 = atan(arc1);
degree = (450 - arc2) % 360;

X und Y dürfen nicht vom Typ Integer sein !
The division operation is conducted using the data type of the operands, so, for example, 9 / 4 gives 2 since 9 and 4 are ints.
Du musst für X und Y die Datentypen double oder float nehmen sonst kommt bei der obigen Division NULL heraus !
arc1, arc2 und degree sollten ebenfalls den selben Datentypen wie X und Y haben.
« Last Edit: October 22, 2010, 07:01:27 am by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

jetzt bringt er mir ne Fehlermeldung
x1,y1,z1 sind nötig da HMC.getValues nur int nimmt.

hier der Code
Code:
void loop()
{
  double winkel, arc1, arc2, x1, y1, z1, arc3;
  int x,y,z;
  delay(1000); // There will be new values every 100ms
  //HMC.getValues(&x,&y,&z);
  x=-298;
  y=143;
  x1=x;
  y1=y;
  z1=z;

  arc1 = y1/x1;
  Serial.print(arc1);
  Serial.print(" arc2: ");
  arc2 = atan(arc1);
  Serial.print(arc2);
  Serial.print(" winkel: ");
  winkel = (450 - arc2) % 360;
  Serial.println(winkel);
}

und hier der Fehler, markiert dabei die Zeile
winkel = (450 - arc2) % 360;
Code:
error: invalid operands of types 'double' and 'int' to binary 'operator%'

Logged

Pages: 1 2 [3] 4   Go Up
Jump to: