blog.ijacek007.cz

Blog o všem trochu jinak.

Pro jeden projekt jsem potřeboval měřit hladinu vody a rozhodl jsem se že měření zrealizuji pomocí ultrazvuku. Objednal jsem si ultrazvukový modul jehož cena je okolo 200 Kč. Jakmile mi modul dorazil začal jsem s jeho zapojením, ale po složení a nahrání kódů do Arduina modul nefungoval. Po chvíli laborování jsem usoudil, že mi přišel vadný modul a tak jsem objednal ještě jeden. Jakmile dorazil druhy zjistil jsem, že ani ten není funkční a tak jsem hledal, co dělám špatně.


obrázek arduino ultrazvuk HC-SR04

Narazil jsem na zajímavý problém a to je napájecí napětí, které do Arduina pošlete. Modul Arduino je totiž možné napájet jen pomocí USB zařízení které má 5 voltů a pomocí tohoto rozhraní se Arduino zároveň i programuje. I když na stránkách arduino.cc se uvádí, jako doporučené napětí 9 voltu zůstával jsem u připojení pouze s USB kabelu, abych nemusel řešit další zdroj. Tento postup se ale ukázal jako špatný, protože byl právě příčinou, proč ultrazvukový modul nefungoval.

Ano je to divné ale skutečně pokud modul Arduina není napájen pomocí většího napětí některé další moduly nemusejí fungovat tak jak mají. Právě to byl důvod proč mi ultrazvukový modul nefungoval i když byly oba moduly naprosto v pořádku. Je tedy nutné při připojení dalších modulu zajistit napájení arduina alespoň 7 V.


obrázek arduino měření vzdálenosti

Pokud tedy zajistíte větší napájení pak již stačí použít na internetu dostupnou funkci NewPing, která ve spojení s tímto modulem vrací vzdálenost přímo v CM.

Zdrojový kód

// include the library code:
#include <NewPing.h>  // knihovna ultrazvuku

#define TRIGGER_PIN  2  // Arduino pin tied to trigger pin on ping sensor.
#define ECHO_PIN     3  // Arduino pin tied to echo pin on ping sensor.
#define MAX_DISTANCE 500 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

unsigned int pingSpeed = 50;  // How frequently are we going to send out a ping (in milliseconds). 50ms would be 20 times a second.
unsigned long pingTimer = 75; // Holds the next ping time, start at 75ms to give time for the Arduino pins to stabilize.

// initialize the library with the numbers of the interface pins

void setup() {
  // set up the LCD's number of columns and rows:
   Serial.begin(9600);
}

void loop() {

    if (millis() >= pingTimer) { // pingSpeed milliseconds since last ping, do another ping.
    pingTimer += pingSpeed;    // Set the next ping time.
   // Serial.print("Ping: ");
    int cm = sonar.ping_cm();  // Send out the ping, get the results in centimeters.
    Serial.print(cm);
    Serial.println(" cm");


  }
}

Program jednoduše zjistí pomocí čidla připojeného k digitálním vstupům / výstupům 2 a 3 vzdálenost od nejbližší překážky a vrátí hodnotu v centimetrech na sériový port.

Zajímavé odkazy

Forum Arduino.cc NewPing

Funkční zdrojový kod příkladu


Štítky článku programovani | stavebnice | zajimavosti |
Autor Ijacek.007 11.07.2012 zobrazeno 11 985x
Předchozí článek ARDUINO jako digitální záznamník teploty
Arduino MAX7219 8x8 Matrix LED Displej Další článek


gravatar

Vložit komentář

Nick *:
WWW:
Email * (nezobrazuje se ):
Gravatar:
Pamatuj si mě:
Komentář článku *:
Opiš následující text: *

* - vyžadované údaje. RSS kanál s komentáři

Přihlášení



Audioknihy

Jsme milovníci audio knížek, kterých aktuálně máme zakoupených 118. Poslech všech dohromady zabral přes 1747 hodin.

Z tohoto množství jsme si již stihli poslechnout téměř 41% tedy 48 audioknih.

Aktuálně poslouchaná audioknihakniha je Letopisy Narnie 1-7 - komplet

Poslední hodnocenou audioknihou je Inovátoři .

Nejlépe hodnocenou audioknihou je Zaklínač I. Poslední přání - komplet .

Reklama