Stránka 1 z 1

Ultrazvukový snímač vzdálenosti

Napsal: 08 pro 2015, 20:21
od Anton
Chci měřit výšku hladiny v nádrži pomocí ultrazvukového snímače.
Vlastním snímač HC-SR04.
http://www.electrodragon.com/w/HC-SR04_Ultrasonic_sensor
Signál potřebuji dostat do kontroléru simatic S7-1200.
Na vstup snímače se přivede triggerovací pulz nejméně 10 us a v závislosti na vzdálenosti odešle výstupní pulz.
Jenže signál ze snímače nese informaci v podobě délky pulzu, jež je extrémně krátká. Distance = High level time * sound velocity (340M / S) / 2. Tohle nemá kontrolér šanci měřit natož s nějakou přesností.

Délku pulzu potřebuji převést na analogovou hodnotu. Napadlo mě periodicky triggerovat a výstupní signál převést na střední hodnotu nebo po dobu trvání výstupního pulzu nabíjet kondenzátor a změřit na jaké napětí se nabil. Stačí mi měřit rozsah 5 cm až 35 cm s rozlišením klidně jen 2 cm.

Máte prosím nějaké jednoduché návrhy jak to řešit a technicky provést?

Děkuji za pomoc

Napsal: 08 pro 2015, 20:53
od Ruprecht
S7-1200 neznám, ale podle popisu na webu mají CPU nějaké čítače 30kHz nebo 100kHz podle typu.
5cm odpovídá 290us, 35cm odpovídá 2ms délky log.1 z čidla. 30kHz čítač má rozlišení 33us, což odpovídá asi 0,5cm. Při 100kHz čítači je rozlišení 10us (tedy asi 2mm hladiny).
Při log.1 z čidla čítač spustím, při log.0 přečtu hodnotu a zastavím. Ale opravdu netuším, jak rychlá je reakce S7-1200 CPU při změně vstupu (interrupt?)...

Pokud jsou reakce S7 pomalé, řešil bych to úplně stejně čítačem/timerem ale v nějakém malém externím jednočipu

Napsal: 08 pro 2015, 23:08
od hafca
Kdybys neměl požadavek na výstup na simatic S7-1200, řešení by možná bylo hotové. Vyšlo v Elektoru 12/2014, je tam použité stejné čidlo, ale je to autonomní jednotka i s displejem. Je k tomu HEX i zdrojový kód.

Napsal: 09 pro 2015, 09:19
od ringojr
Nejlevnější a nejrychlejší řešit přes Arduino. Pro čtení čidla existují knihovny a funguje to spolehlivě(odzkoušeno). A výstup pak lze realizovat podle libosti - buď převod na analog pomocí PWM či udělat vlastní šířkově modulovaný výstup jen pomoní WAIT funkcí.