Problémy s ultrazvukovými senzory HC SR-04

Odpovědět
matoushybl

Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od matoushybl » 11 led 2014, 10:16

Zdravím,
mám na robotovi namontováno 5 ultrazvuků HC SR-04 a mám problém, že ultrazvuky chvíli ukazují přesnou hodnotu, poté na chvíli ukážou hodnotu o dost nižší a pak zase chvíli ukazují přesnou hodnotu. Ke zjišťování hodnot používám na arduinu knihovnu: http://blog.iteadstudio.com/arduino-lib ... e-hc-sr04/. Mohli byste mi prosím poradit čím by to mohlo být způsobeno?

Díky

Kód: Vybrat vše

void sendSensorData(bool pi) {
	byte toSend[18];
	int temp;
	toSend[0] = 13; //start byte
	temp = left.Ranging(CM);
	toSend[1] = getFirstByte(temp);
	toSend[2] = getSecondByte(temp);
	temp = right.Ranging(CM);
	toSend[3] = getFirstByte(temp);
	toSend[4] = getSecondByte(temp);
	temp = front.Ranging(CM);
	toSend[5] = getFirstByte(temp);
	toSend[6] = getSecondByte(temp);
	temp = back.Ranging(CM);
	toSend[7] = getFirstByte(temp);
	toSend[8] = getSecondByte(temp);
	toSend[9] = leftEncoderData[0];
	toSend[10] = leftEncoderData[1];
	toSend[11] = rightEncoderData[0];
	toSend[12] = rightEncoderData[1];
	temp = radar.getDistance();
	toSend[13] = getFirstByte(temp);
	toSend[14] = getSecondByte(temp);
	temp = roundf(getRobotHeading(compass, RADIANS)*10);
	toSend[15] = getFirstByte(temp);
	toSend[16] = getSecondByte(temp);
	toSend[17] = 10; //stop byte
	if (pi) {
		Serial.write(toSend, 18);
	} else {
		Bluetooth.write(toSend, 18);
	}
}
byte getFirstByte(int data) {
	return data & 0xFF;
}

byte getSecondByte(int data) {
	return data & 0xFF00;
}

petr-kubac
Příspěvky: 91
Registrován: 24 úno 2013, 15:43
Bydliště: Frydek - Mistek
Kontaktovat uživatele:

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od petr-kubac » 11 led 2014, 12:05

Jednak celá série SR je dosti uboze navržená - srovnává se amplituda zesíleného odrazu s napětím na vybíjejícím se kondenzátoru - které sice obě klesají, ale každá dle jiné rovnice.

Potom mezi stupni zesilovače nejsou kondenzátory - takže některé kusy, které mají operační zesilovače s větším stejnosměrným offsetem s tím mají problémy.

No ale hlavně - žádné čidlo nefunguje na 100% - stačí nerovnost na podlaze - třeba spára mezi parketami - která funguje jako koutový odražeč a signál od ní je i při nepatrné velikosti mnohem silnější než od toho co robotův páníček považuje za opravdovou překážku.

Úkolem vašeho softwaru pak je - se s tím vyrovnat. Nejjednodušeji tak, že robot zaznamenává kolik ujel od minulého měření - a pokud ujel třeba 10 cm (kterýmkoliv směrem) - pak je nemožné aby (kterýkoliv) sonar dával větší rozdíl ve vzdálenosti než oněch 10 cm. Proto ty, které dávají takový falešný signál se podle toho dají poznat a jejich měření se dá z dalšího rozhodování vyloučit.
"The best computer language is a solder" - "Nejlepší programovací jazyk je pájka" - Bob Pease
http://petr-kubac.blog.cz/

matoushybl

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od matoushybl » 11 led 2014, 14:59

Aha, budu se muset na to softwarové filtrování trochu zaměřit, problém je ale podle mě i někde jinde - děje se to u dvou senzorů zároveň. Sensory jsem testoval tak, že jsem robota uzavřel do kartonové krabice a výsledky zobrazoval na mobilu - dva sensory prostě z nějakého neznámého důvodu poklesly ze stabilní hodnoty najednou. Jsou přímo připojené na Arduino a napájeny z akumulátoru, takže by teoreticky k žádné chybě v zapojení dojít nemělo.

Existuje nějaká levná náhrada za ty SR senzory? Našel jsem jen US-020, ale bojím se, že to rušení tam bude stejně.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 899
Registrován: 16 úno 2013, 14:26

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od Dex » 11 led 2014, 18:35

Nedělejte si iluze, že dražší senzory budou 100% spolehlivé. Jsou lépe udělané a dělají i méně chyb ale spoléhat se jen na ně není dobrý nápad.
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

matoushybl

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od matoushybl » 11 led 2014, 19:07

S tím počítám, ale potřebuji nějak vyřešit to, že když je robot v absolutním klidu, tak že se dějí takové věci. Bohužel mě vůbec žádné řešení nenapadá.

Uživatelský avatar
jrt
Příspěvky: 1344
Registrován: 17 úno 2013, 17:13

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od jrt » 11 led 2014, 19:11

... děje se to u dvou senzorů zároveň
Ty senzory pracují společně? Pokud ano, neovlivňují se navzájem?
Zkuste nechat běžet každý samostatně, zda se závada projeví.
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

matoushybl

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od matoushybl » 11 led 2014, 19:41

Zkusil jsem upravit program tak aby měřil jen jeden a stále se to děje. Takto vypadá výstup: http://www.youtube.com/watch?v=GEKZcfMRzNE robot byl nasměrován prosti dřevěné desce

matoushybl

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od matoushybl » 12 led 2014, 22:09

Zdravím tak nakonec se ukázalo že problém byl v napájení a velkém odběru serv. Díky všem za pomoc.

Sent from my Galaxy Nexus using Tapatalk

Uživatelský avatar
jrt
Příspěvky: 1344
Registrován: 17 úno 2013, 17:13

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od jrt » 12 led 2014, 22:59

Díky za zprávu!
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

JuraS.
Příspěvky: 304
Registrován: 28 led 2015, 16:06

Re: Problémy s ultrazvukovými senzory HC SR-04

Příspěvek od JuraS. » 04 srp 2015, 10:07

Kvůli jednomu projektu jsem se díval jaké se prodávají čidla na měření vzdálenosti díky ultrazvuku. Je jich několik a některé se používají i v mašinách kde je to nutné aby měřili správně. Tak jsou mnohokráte dražší než HC SR-04. Například v tom, že se dají kalibrovat a pak podle toho spočítají odchylku danou třeba vlhkostí a teplotou vzduchu.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host