Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 
Autor Zpráva
 Předmět příspěvku: tracker - kompass HMC5883L - arduino
PříspěvekNapsal: ned 06.11.2016 22:29 
Mazák
Mazák
Uživatelský avatar

Registrován: 8.10.2012
Příspěvky: 1539
Bydliště: Kladno
Cao,
nemáte prosím radu ?

mám tento kompas s arduinem, code dle webu. Čtení stupňů nějak funguje. Problém je , nastavím směr kompasu na sever tj 0°. otočím o 90 a na display je 120, otočím o -90 na display je 280, otočím o 180 a je to cca OK. žádnou kalibraci jsem nedělal, nevím ani jak. takto se chová samotný senzor i deska APM do které nahraji pouze čtení kompasu. Pokud nahraji plné APM tak to chodí naprosto přesně.

úheh se počítá pouze ze dvou os. nemělo by to být ze 3 ?


MagnetometerRaw raw = compass.ReadRawAxis();
MagnetometerScaled scaled = compass.ReadScaledAxis();

int MilliGauss_OnThe_XAxis = scaled.XAxis;// (or YAxis, or ZAxis)

// Calculate heading when the magnetometer is level, then correct for signs of axis.
float heading = atan2(scaled.YAxis, scaled.XAxis);

float declinationAngle = 0.0457;
heading += declinationAngle;

// Correct for when signs are reversed.
if(heading < 0)
heading += 2*PI;

// Check for wrap due to addition of declination.
if(heading > 2*PI)
heading -= 2*PI;

// Convert radians to degrees for readability.
float headingDegrees = heading * 180/M_PI;

// Output the data via the serial port.
Output(raw, scaled, heading, headingDegrees);


Naposledy upravil jaroslav.falcon dne úte 08.11.2016 8:55, celkově upraveno 1

Nahoru
 Profil  
 
 
 Předmět příspěvku: Re: kompass HMC5883L - arduino
PříspěvekNapsal: pon 07.11.2016 23:30 
Mazák
Mazák
Uživatelský avatar

Registrován: 14.7.2007
Příspěvky: 1130
Bydliště: Praha 6, ČR
Obrázky: 12
Ahoj, magnetometr (kompas) bez kalibrace už z principu nebude fungovat správně. Musíš udělat kalibrační kruh a vypočítat kalibrační konstanty a nebo implementovat automatickou kalibraci (náročnější). To, že se čtou jenom dvě osy je správně, ale před tím bys měl udělat transformaci (rotační matice) dat z magnetometru do vodorovna, tedy z akcelerometru zjistit natočení a podle této polhy transformovat magnetometr. APM bude pravděpodobně už nakalibrované přímo v programu. Ale aby byla kalibrace přesná, je nutno ji udělat ve finálním použití, tedy včetně všech kovových dílů okolo magnetometru. To co potřebuješ je kompletní úloha inerciální jednotky (IMU), zkus k tomu něco pohledat na webu, není to úplně snadné.

Třeba tady http://measure.feld.cvut.cz/cs/system/f ... locked.pdf bys moh najít nějaké info, ale číst se mi to nechce... :)

_________________
T-Rex 600N Spirit, Tx Aurora.


Nahoru
 Profil Soukromé album  
 
 Předmět příspěvku: Re: kompass HMC5883L - arduino
PříspěvekNapsal: úte 08.11.2016 8:54 
Mazák
Mazák
Uživatelský avatar

Registrován: 8.10.2012
Příspěvky: 1539
Bydliště: Kladno
myslel jsem si to po mích experimentech. Chtěl jsem to do trackeru ghetto station. V tomto případě se s tím dále zabývat nebudu a jednoduší je zadat uhel ručně z mobilu, nebo ho načtu z koptéry, která má dané algoritmy implementovány.

Další varianta je implementovat tracker přímo na APM .

Díky za info.


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 17:04 
Mazák
Mazák
Uživatelský avatar

Registrován: 19.11.2013
Příspěvky: 3515
Bydliště: Olomouc, ČR
Já myslím, že by šlo využívat jenom dvě osy pro výpočet azimutu ale bude tam jedno omezení. Problém je v tom, že magnetická siločára u nás není horizontální ale má blíž k vertikále, inklinace je kolem 65 stupňů. Musel bys zaručit aby kompas byl na trackeru vždy přesně vodorovně a musel bys to ověřovat bublinkou vodováhy. Při náklonech by se otáčel. Při náklonu 25 stupňů k jihu by se točil jak holub na báni a nevěděl by směr, při překročení 25 stupňů by se otočil opačně. (90-65=25).


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 17:11 
Mazák
Mazák
Uživatelský avatar

Registrován: 8.10.2012
Příspěvky: 1539
Bydliště: Kladno
to právě není pravda, ten magnetometr není lineární, prostě jeho otočení fyzické neodpovídá magnetickému a v různých místech se to liší. třeba ve směru server-jinch je to +-3st ale v ve směru vychod-západ je to treba +-20st takže to ho otočíš fyzicky o 90 a on ukáže třeba jen o 60.


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 17:47 
Mazák
Mazák
Uživatelský avatar

Registrován: 19.11.2013
Příspěvky: 3515
Bydliště: Olomouc, ČR
Musí se zkalibrovat, ale klasická kalibrace potřebuje akcelerometry aby kompas věděl jak je otočený ve 3 osách. Ale mám takové hodinky které akcelerometry nemají a kalibruji je ve 2 osách otáčením naplacato na stole. Ale netvrdím, že to bude fungovat s tím tvým kompasem.


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 20:12 
Mazák
Mazák
Uživatelský avatar

Registrován: 8.10.2012
Příspěvky: 1539
Bydliště: Kladno
ja mam take hodinky a o proti mobilu jsou nepřesné. Mel jsem i SW s kalibraci jak řikáš, ale to spočítá nějaký offset. Myslím, že kdyš máš ten offset tak dobrý, ale pokud to není lineární tak musíš mít tu rotační matici. Takto si to aspoň myslím na základě selského rozumu, ale na inerci na to selský rozum nestačí :-) Kdysi jsem se na to dívál a ta matematika je docela hustá.


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 20:17 
Mazák
Mazák
Uživatelský avatar

Registrován: 8.10.2012
Příspěvky: 1539
Bydliště: Kladno
jestě mne napadlo rotovat s tím po 1st a odečítat hodnotu. nebo po uhlů, které dá servo jako min . tím bych znal změnu úhlu a naměřenou hodnotu a z toho bych udělal matici. Problém je, že to servo se otočí jen o 180st anavíc si nejsem jist zda by to byla správná cesta.


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 20:26 
Mazák
Mazák
Uživatelský avatar

Registrován: 19.11.2013
Příspěvky: 3515
Bydliště: Olomouc, ČR
Tam jde o to, že ty osy jsou sice přesně kolmé ale z výroby nemají nikdy stejnou citlivost. Tak se musí kalibrací srovnat. A do toho ještě kecají okolní železa.


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 21:08 
Mazák
Mazák
Uživatelský avatar

Registrován: 8.10.2012
Příspěvky: 1539
Bydliště: Kladno
to by znamenalo, že ta nelinearita je pouze na "stole" a po kalibraci OK, ale ja mam tu nelinearitu i na zahradě. Jestě tedy zkusím udělat externí na kablík a dám ho dál od trackeru. Ted jsem to měla si 10cm .


Nahoru
 Profil  
 
PříspěvekNapsal: úte 08.11.2016 22:57 
Mazák
Mazák
Uživatelský avatar

Registrován: 14.7.2007
Příspěvky: 1130
Bydliště: Praha 6, ČR
Obrázky: 12
Jestli chces jednoduchou kalibraci, tak si vycti hodnoty X a Y pro alespon 8 ruznych orientaci (rovnomerne) a vykresli si to do grafu, dostanes neco jako na obrazku v priloze (modra barva). To co potrebujes je na obrazku cervenou barvou, takze si snadno spocitas kolik pricist do te konkretni osy. Citlivos obou os se lisi jenom malo, to pro zacatek neni potreba resit. Vytahovat magnetometr dal od elektroniky neni spatny napad, ale bude to fungovat i pobliz.


Přílohy:
mag.png
mag.png
[ 93.47 KiB | Zobrazeno 4437 krát ]


_________________
T-Rex 600N Spirit, Tx Aurora.
Nahoru
 Profil Soukromé album  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 

 


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  

 

  Powered by phpBB® Forum Software © phpBB Group  Český překlad – phpBB.cz 

 

NAVRCHOLU.cz