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 »

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: 96
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 »

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 »

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: 1519
Registrován: 16 úno 2013, 14:26

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

Příspěvek od Dex »

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
matoushybl

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

Příspěvek od matoushybl »

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: 1921
Registrován: 17 úno 2013, 17:13

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

Příspěvek od jrt »

... 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
matoushybl

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

Příspěvek od matoushybl »

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 »

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: 1921
Registrován: 17 úno 2013, 17:13

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

Příspěvek od jrt »

Díky za zprávu!
jrt
JuraS.
Příspěvky: 318
Registrován: 28 led 2015, 16:06

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

Příspěvek od JuraS. »

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