Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2016:sr04-meas

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
2016:sr04-meas [2016/11/25 17:43]
Jaroslav Kvasnička vytvořeno
2016:sr04-meas [2016/11/30 20:26] (aktuální)
Jaroslav Kvasnička
Řádek 1: Řádek 1:
 ====== Ultrazvukové měření vzdálenosti ====== ====== Ultrazvukové měření vzdálenosti ======
 +
 ===== Zadání ===== ===== Zadání =====
 +
 +Navrhněte zařízení pro měření vzdálenosti s modulem [[https://​cdn.sparkfun.com/​datasheets/​Sensors/​Proximity/​HCSR04.pdf|HC-SR04]]. Implementujte korekci [[https://​cs.wikipedia.org/​wiki/​Rychlost_zvuku|rychlosti zvuku]] v závoslosti na teplotě okolí s využitím vnitřního teplotního čidla mikrokontroléru. Dle potřeby doplňte číslicovou filtraci výsledků.
 +----
 +===== Hardware =====
 +==== HC-SR04 ====
 +
 +
 +Ultrazvukový modul [[https://​cdn.sparkfun.com/​datasheets/​Sensors/​Proximity/​HCSR04.pdf|HC-SR04]] umožňuje bezkontaktní měření vzdálenosti v rozsahu 2cm - 400cm s přesností dosahující 3mm. Modul obsahuje ultrazvukový vysílač, přijímač a řídící obvod. Spuštění měření se provádí převedením 10us řídícího pulzu. Modul automaticky vyšle osm 40kHz pulzů a následně detekuje odražené pulzy. Po detekci modul předá informaci o délce trvání návratu vyslaných pulzů v podobě vysoké úrovně o stejné délce trvání jako návrat pulzů na výstup. Z doby trvání a z rychlosti zvuku poté vypočítáme výslednou vzdálenost.
 +
 +{{ :​2016:​hcsr04.jpg?​400 |https://​microcontrollerelectronics.com/​distance-sensing/​}}
 +    Obr.1 Modul HC-SR04
 +
 +==== BOSCH BMP180 ====
 +Protože na použité vývojové desce chybí senzor teploty byl použit senzor externí. Pro tento účel byl použit modul se senzorem [[https://​www.bosch-sensortec.com/​bst/​products/​all_products/​bmp180|BOSCH BMP180]]. Tento modul dokáže měřit jak teplotu, tak i barometrický tlak. Měření barometrického tlaku se dá využít například k měření vertikálního stoupání. Naměřené údaje o teplotě a barometrickém tlaku jsou poté posílány přes I2C sběrnici. Tento modul dosahuje přesnosti až na 1°C.
 +
 +{{ :​2016:​boschbmp180.jpg?​200 |http://​www.chinalctech.com/​index.php?​_m=mod_product&​_a=view&​p_id=686}}
 +    Obr.2 Modul BOSCH BMP180
 +
 +==== FRDM-KL25Z ====
 +Jako řídící obvod byl použit vývojový kit [[http://​www.nxp.com/​products/​software-and-tools/​hardware-development-tools/​freedom-development-boards/​freedom-development-platform-for-kinetis-kl14-kl15-kl24-kl25-mcus:​FRDM-KL25Z?​fsrch=1&​sr=1&​pageNum=1|FRDM-KL25Z]] od firmy NXP, na kterém je osazen 32-bitový mikrokontrolér Kinetis MKL25Z128 od firmy Freescale Semiconductor. Takt tohoto mikrokontroléru je 48 MHz. Tento mikrokontrolér je také použit pro komunikaci s počítačem.
 +
 +{{ :​2016:​xfrdm-kl25z_headers2.png.pagespeed.ic.altgnczqq9_1_.jpg?​800 |https://​developer.mbed.org/​platforms/​KL25Z/​}}
 +    Obr. Vývojový kit FRDM-KL25Z
 +
 +----
 +===== Zapojení =====
 +Moduly byly pomocí vodičů připojeny k vývojové desce, včetně napájecích vodičů. Není tedy potřeba externí napájení. Toto zapojení bylo zvoleno kvůli využití hardwarové podpory komunikačního rozhraní I2C. Zapojení komunikačních vodičů je následující:​
 +
 +**HC-SR04 ​ <​=> ​ FRDM-KL25Z**\\
 +TRIG --------- PTA13 (PWM)\\
 +ECHO -------- PTD5 (PWM)\\
 +
 +**BOSCH BMP180 ​ <​=> ​ FRDM-KL25Z**\\
 +SCL --------------------- PTE1 (SLC I2C1)\\
 +SDA --------------------- PTE0 (SDA I2C1)\\
 +
 +
 +----
 +
 +===== Software =====
 +Program byl napsán ve vývojovém prostředí https://​developer.mbed.org/​. Toto prostředí bylo použito, protože je zde několik dostupných knihoven pro každý použitý modul.
 +
 +==== Funkce main ====
 +Ve funkci main dochází napřed k inicializaci proměnných potřebných. Poté dochází v nekonečné smyčce k postupnému čtené dat z obou modulů a následného výpočtu vzdálenosti a filtraci. Naměřená data se posílají skrz rozhraní USB do počítače.
 +
 +<code c>
 +int main(void) {
 + 
 +    BMP180 bmp180(PIN_SDA,​PIN_SCL); ​
 +    bmp180.Initialize(); ​
 +    ​
 +    HCSR04 ​ distance_sensor(TRIG_PIN,​ ECHO_PIN); ​
 +     
 +    float pressure; ​
 +    float temp; 
 +    float echo_time_us;​
 +    float distance; ​
 +    float dis_filter = 0.1; 
 +    float v; 
 +    float lamda = 0.9; 
 + 
 +    while(1)
 +    {
 +        bmp180.ReadData(&​temp,&​pressure);​ //čtení teploty a tlaku
 +
 +        echo_time_us = (float)distance_sensor.echo_duration();​ //​zjištění doby návratu pulzů v us
 +        ​
 +        v = 331.57+(0.607*temp);​ //výpočet rychlosti zvuku
 +
 +        distance = ((0.001*echo_time_us)*v)/​2;​ //výpočet vzdálenosti
 +        ​
 +        dis_filter = lamda*dis_filter+((1-lamda)*distance);​ //filtrace naměřených hodnot
 +        ​
 +        serial.printf("​Vzdalenost:​ %8.2f mm \r\n", dis_filter);​ //​odeslání do PC
 +
 +    }
 +}
 +</​code> ​
 +
 +==== Funkce echo_duration ====
 +Tato funkce slouží k obsluze modulu HC-SR04. Jelikož tento modul obsahuje vlastní řídící obvod je potřeba pouze přivést na vstup startovací pulz o délce 10us a poté změřit výstupní pulz. To lze udělat za použití vnitřního časovače.
 +
 +<code c>
 +long HCSR04::​echo_duration() {
 +        ​
 +    timer.reset(); ​ //​resetování timeru z předchozího měření
 +    trig=0; ​  // nulování Trig pinu 
 +    wait_us(2); //  wait 
 +    trig=1; ​  // ​ nastavení Trig pinu
 +    wait_us(10);​
 +    trig=0; ​ //  nulování Trig pinu 
 +    ​
 +    while(!echo);​ // čekání na start výstupního pulzu
 +    timer.start();​ //spusť timer
 +    while(echo);​ //čekej dokud neskončí výstupní pulz
 +    timer.stop();​ //zastav timer
 +    return timer.read_us();​ //vrať hodnotu timeru
 + 
 +}
 +</​code>​
 +
 +----
 +===== Ukázkové video =====
 +Na následujícím videu je vidět ukázka funkce proměření vzdálenosti.
 +
 +{{ youtube>​T5ICxR6A-3w?​medium }}
 +
 +
 +----
 +===== Závěr =====
 +
 +Cílem projektu bylo realizovat ultrazvukové měření vzdálenosti s pomocí vývojového kitu FRDM-KL25Z, modulu pro ultrazvukové měření vzdálenosti HC-SR04 a teplotního čidla BOSCH BMP180. Všechny body zadání se podařilo splnit a měření vzdálenosti ultrazvukem s korekcí rychlosti šíření zvuku pomocí teploty je plně funkční. Dalšími možnostmi rozvoje projektu jsou například napsaní obslužné aplikace pro počítač, či přidání zobrazovacího displeje. Zařízení by se tak obešlo bez použití PC.
 +
 + --- //​[[xkvasn07@stud.feec.vutbr.cz|Jaroslav Kvasnička]] 2016/11/25 20:29//
  
2016/sr04-meas.1480092186.txt.gz · Poslední úprava: 2016/11/25 17:43 autor: Jaroslav Kvasnička