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

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2016:sr04-meas [2016/11/25 18:31]
Jaroslav Kvasnička
2016:sr04-meas [2016/11/30 20:26] (aktuální)
Jaroslav Kvasnička
Řádek 4: Řádek 4:
  
 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ů. 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 ===== ===== Hardware =====
 ==== HC-SR04 ==== ==== HC-SR04 ====
  
  
-Ultrazvukový modul 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.+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/​}} {{ :​2016:​hcsr04.jpg?​400 |https://​microcontrollerelectronics.com/​distance-sensing/​}}
 +    Obr.1 Modul HC-SR04
  
 ==== BOSCH BMP180 ==== ==== BOSCH BMP180 ====
Řádek 17: Řádek 18:
  
 {{ :​2016:​boschbmp180.jpg?​200 |http://​www.chinalctech.com/​index.php?​_m=mod_product&​_a=view&​p_id=686}} {{ :​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 ==== ==== FRDM-KL25Z ====
Řádek 22: Řádek 24:
  
 {{ :​2016:​xfrdm-kl25z_headers2.png.pagespeed.ic.altgnczqq9_1_.jpg?​800 |https://​developer.mbed.org/​platforms/​KL25Z/​}} {{ :​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.1480095079.txt.gz · Poslední úprava: 2016/11/25 18:31 autor: Jaroslav Kvasnička