Arduino Lesson 17 – HC-SR04 Ultrasonic Sensor

උපාංග පිලිබද දැනුම

ඔබේ ඊළඟ ආර්ඩුයිනෝ ව්‍යාපෘතියට දුර මැනීමේ සංවේදකයක් අවශ්‍ය නම් ඒ සදහා HC-SR04 අතිධ්වනික තරංග මගින් දුර මැනීමේ සංවේදකයක් භාවිතයෙන් අඩි 13 ක් දුරින් ඇති වස්තූන්ගේ පරාසය නිර්ණය කර ගත හැකිය. එනම් මෙය වැඩ කරන්නේ වවුලා අතිධ්වනික තරංග යොදාගෙන ඔහුගේ ගමන් මාර්ගය සොයා ගන්නා ආකාරයටය. ඔබ රෝබෝවක් නිර්මාණය කරන්නේ නම් එය තාප්පයකට හෝ යම් බාධකයකට ගැටීම වළක්වා ගැනීමට නම් මෙම සංවේදකය භාවිතා කල හැකිය.

මෙය අඩු බලයකින් (බැටරි බලයෙන් ක්‍රියාත්මක වන උපාංග සඳහා සුදුසු) ක්‍රියාත්මක කළ හැකිය, මිල අඩුය, පහසුවෙන් ආර්ඩුයිනෝ, රස්බෙරි පයි වැනි බෝර්ඩ් සමග සම්බන්ධ කරගෙන වැඩ කළ හැකිය. ඔබ රොබෝ කෙනෙක් සාදන්නේ නම්  එහි රොබෝ ඇස් යුගලයක් මෙන් මෙය දැක ගත හැකිය.

අතිධ්වනි තරංග යනු කුමක්ද?

අතිධ්වනි තරංග යනු මිනිස් ශ්‍රවණ සීමාවට වඩා වැඩි සංඛ්‍යාත සහිත ඉහළ ශබ්ද තරංග වේ.

තත්පරයට 20 වතාවක් (a deep rumbling noise) සිට තත්පරයට 20,000 වතාවක් පමණ (a high-pitched whistling) කම්පනය වන ශබ්ද තරංග මිනිස් කනට ඇසෙයි.නමුත්, අතිධ්වනි තරංග වලට 20,000 Hz ට වඩා සංඛ්‍යාතයක් ඇති අතර එම මිනිසුන්ට ඇසිය නොහැක.

HC-SR04 දෘඩාංග ගැන දළ විශ්ලේෂණය

HC-SR04 Ultrasonic Sensor එකෙහි අතිධ්වනික සම්ප්‍රේෂක දෙකකින් සමන්විත වේ. එම එකකින් විද්‍යුත් සංඥා 40 KHz අතිධ්වනික ශබ්ද ස්පන්දන බවට පරිවර්තනය කරන සම්ප්‍රේෂකයක් ලෙස ක්‍රියා කරයි. එමගින් නිකුත් කරන සම්ප්‍රේෂක ස්පන්දන ලබා ගැනීම සඳහා ග්‍රාහකයා බලා සිටියි. එයට ස්පන්දනක් ලැබුනහොත් එය ස්පන්දනය ගමන් කළ දුර තීරණය කිරීම සඳහා තරංගයේ පළල භාවිතා කළ හැකි ප්‍රතිදාන(OUTPUT) ස්පන්දනයක් නිපදවයි.

මෙම සංවේදකය කුඩා වන අතර ඕනෑම රොබෝ නිර්මාණ ව්‍යාපෘතියකට භාවිතා කිරීමට පහසු වන අතර සෙන්ටිමීටර 2 සිට 400 දක්වා (එනම් අඟල් 1 සිට අඩි 13 ක් පමණ) දුර නිර්ණය කළ හැකිය. මෙහි අසන්න වශයෙන් 3mm නිරවද්‍යතාවයක් ඇත. එය වෝල්ට් 5v ක් මත ක්‍රියාත්මක වන බැවින් එය ආර්ඩුයිනෝ හෝ වෙනත් 5V තාර්කික මයික්‍රොකොන්ට්රෝලර් වෙත කෙලින්ම සම්බන්ධ කළ හැකිය. එහි  සම්පූර්ණ විශේෂතා විස්තරය පහත දැක්වේ.

මෙහෙයුම් වෝල්ටීයතාවය (Operating Voltage) DC 5V
මෙහෙයුම් ධාරාව (Operating Current) 15mA
මෙහෙයුම් සංඛ්‍යාතය (Operating Frequency) 40KHz
උපරිම පරාසය (Max Range) 4m
අවම පරාසය (Min Range) 2cm
පරාසයේ නිරවද්‍යතාවය (Ranging Accuracy) 3mm
මැනීමට හැකි කෝණය (Measuring Angle) 15 degree
අදාන ස්පන්දනය (Trigger Input Signal) 10µS TTL pulse
දිග, පලළ,  උස (Dimension) 45 x 20 x 15mm

HC-SR04 අතිධ්වනි තරංග සංවේදකයේ පින් පවතින ආකාරය

එහි පින් පවතින  ආකාරය දෙස බලමු.

 GND ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි GND සමග සම්බන්ධ කළ යුතුය.
 VCC යනු HC-SR04 අතිධ්වනික දුර සංවේදකය ආර්ඩුයිනෝ බෝර්ඩ් එකේ 5V පින් සම්බන්ධ කරන බල සැපයුම වේ.
Trig (Trigger) අතිධ්වනික ශබ්ද ස්පන්දන යැවීමට මෙම පින් භාවිතා කරයි.
Echo පරාවර්තනය වු signal එක ලැබුණු විට මෙම පින් මගින් ස්පන්දනය ඇති කරයි. ස්පන්දනයේ දිග සම්ප්‍රේෂිත signal එක අනාවරණය කර ගැනීමට ගතවන කාලයට සමානුපාතික වේ.

HC-SR04 අතිධ්වනි තරංග සංවේදකය  ක්‍රියා කරන්නේ කෙසේද?

අවම වශයෙන් 10 µS (මයික්‍රෝ තත්පර 10) ක ස්පන්දනයක් ප්‍රේරක පින් එකට යොදන විට ඉහත ක්‍රියාවලිය ආරම්භ වේ. ඊට ප්‍රතිචාරයක් ලෙස සංවේදකය(transmits) 40 KHz දී ස්පන්දන අටක් විහිදුවා යවයි. ස්පන්දන 8 කින් යුත් මෙම රටාව “ultrasonic signature” උපාංගයට විශේෂිත වන අතර එම සම්ප්‍රේෂක රටාව සංසරණ අතිධ්වනික ශබ්දයෙන් වෙන්කර හඳුනා ගැනීමට ග්‍රාහකයාට(receiver) හැකියාව ලැබේ.

අතිධ්වනික ස්පන්දන අට සම්ප්‍රේෂකයෙන් ඉවතට වාතය හරහා ගමන් කරයි. මේ අතර, ආරම්භය අවස්ථාවේ Echo පින් එක HIGH ලෙස ගොස් එම ස්පන්දන ලබා ගැනීමට සැරසෙයි.

එම ස්පන්දන නැවත පරාවර්තනය නොවන්නේ නම්, එම Echo signal එක 38 mS (මිලි තත්පර 38) පසු, කල් ඉකුත් වී නැවත LOW ලෙස පවත්වා ගනී. එනම් 38 mS ස්පන්දනයක් පෙන්නුම් කරන්නේ sensor එකෙහි පරාසය තුළ කිසිදු බාධාවක් නොමැති විටයි.

එම ස්පන්දන නැවත පරාවර්තනය වුවහොත් එම signal ලැබුණු විගසම Echo පින් එක LOW වේ. එම signal එක ලැබීමට ගතවන කාලය මත පදනම්ව එය මගින් ස්පන්දනයක් නිපදවන අතර එම තරංගයේ පළල 150 µS සිට 25 mS දක්වා වෙනස් වේ.

එම ලැබුණු ස්පන්දන තරංගයේ පළල පරාවර්තනය කළ වස්තුව තිබෙන දුර ගණනය කිරීමට යොදා ගනී. අපි පාසලේදී ඉගෙන ගත් සරල දුර-වේග-කාල සමීකරණය භාවිතා කර මෙය සකස් කළ හැකිය. ඔබට අමතක නම්, දුර, වේගය සහ කාල සමීකරණ මතක තබා ගැනීමට පහසු ක්‍රමයක් වන්නේ අකුරු ත්‍රිකෝණයකට දැමීමයි.

එය වඩාත් පැහැදිලි කිරීම සඳහා උදාහරණයක් ගනිමු. නොදන්නා දුරින් සංවේදකය ඉදිරිපිට අපට වස්තුවක් ඇතැයි සිතමු. අපට Echo පින් එකට ස්පන්දන තරංගය පැමිණිමට කාලය 500 µS ලැබුණි. දැන් අපි සංවේදකයෙන් වස්තුව කොතරම් දුරදැයි ගණනය කරමු. අපි පහත සමීකරණය භාවිතා කරමු.

Distance = Speed x Time

එනම් අපට ලැබුණු කාලය 500 µs හි අගය ලැබූ තරංග ගමන් කර ඇති වේගය අපි දනිමු. ඇත්තෙන්ම අපට ඇති වේගය කුමක්ද?  එනම් ශබ්දයේ වේගය, එහි අගය සාමන්‍යයෙන් 340 m/s වේ. නමුත් මෙහිදී  දුර ගණනය කිරීම සඳහා ශබ්දයේ වේගය cm/µs බවට පරිවර්තනය කළ යුතුය. එය ඉක්මනින් කර ගැනීම සදහා “speed of sound in centimeters per microsecond” ලෙස ටයිප් කර ගූගල් සෙවුමකින් කර ගත හැකිය. එහිදී කියැවෙන්නේ එය 0.034 cm/µs බවයි. ඔබට අවශ්‍ය නම් ගණනය කර ගත හැකිය.

Distance = 0.034 cm/µs x 500 µs

නමුත් මෙය සම්පුර්ණ  නොවේ. ස්පන්දනය මඟින් signal එක නිකුත් කර ආපසු ගෙන ඒමට ගතවන කාලය පෙන්නුම් කරන බව මතක තබා ගන්න, එවිට දුර ලබා ගැනීම සඳහා, ඔබේ ප්‍රතිඵලය දෙකෙන් බෙදිය යුතුය.

Distance = (0.034 cm/µs x 500 µs) / 2

Distance = 8.5 cm

ඉතින්, වස්තුව හා සංවේදකයෙන් අතර දුර සෙන්ටිමීටර 8.5 බව අපි සොයගත්තෙමු. මේ ආකාරයට අපට ඕනැම වස්තුවක් පවතින දුර ගනණය කර කර ගත හැකිය.

 

HC-SR04 සහ Arduino සමග සම්බන්ධ කිරීම.

අවශ්‍යය උපාංග

HC-SR04 අතිධ්වනික දුර නිර්ණය කිරීමේ සංවේදකය එක ක්‍රියා කරන ආකාරය පිළිබඳ පූර්ණ අවබෝධයක් ඔබට ඇති හෙයින්, දැන්  ආර්ඩුයිනෝ බෝර්ඩ් එක වෙත සම්බන්ධ කිරීම ආරම්භ කළ හැකිය.

HC-SR04 අතිධ්වනික දුර නිර්ණය කිරීමේ සංවේදකය ආර්ඩුයිනෝ බෝර්ඩ් එක සමඟ සම්බන්ධ කිරීම ඉතා පහසුය. මුලිනන්ම ඔබේ බ්‍රෙඩ්බෝර්ඩ් එකට සංවේදකය සවි කරන්න. ආර්ඩුයිනෝ හි 5v පින් එකට VCC පින් සම්බන්ධ කර ආර්ඩුයිනෝ හි GND පින් එකට සංවේදකයේ GND පින් සම්බන්ධ කරන්න.

එය පහත රුපසටහනේ ආකාරයට සිදු කරන්න.

Hardware connection

Wiring HC-SR04 Ultrasonic Sensor to Arduino UNO – Normal Mode

දැන් අපි අපගේ අතිධ්වනික දුර නිර්ණය කිරීමේ සංවේදකය සම්බන්ධ කර ඇති බැවින් අපි එයට ගැලපෙන කුඩා ප්‍රෝග්‍රෑම් එකක් නිර්මාණය කරමු.

Sketch 15.1  NewPing Library එක භවිතා කිරීම.

අතිධ්වනික සංවේදකය ක්‍රියාත්මක කිරීම සහ එයට ලැබුණු signal වල ස්පන්දන අනුව කාල නිර්ණය කිරීම අතින් මැනීම වෙනුවට අපි විශේෂ ආර්ඩුයිනෝ library එකක් භාවිතා කරමු. මේ සදහා library බොහොමයක් තිබේ, වඩාත්ම බහුලව භාවිතා වන්නේ  “NewPing” library යි.

පළමුව library එක ඩවුන්ලෝඩ් කරගැනීම සදහා Bitbucket repo වෙත පිවිසීමෙන් හෝ, zip ෆයිල් එකක් බාගත කිරීම මගින් සිදු කරගත හැකිය. ඒ සඳහා පහත ලින්ක් එක භාවිතා කරන්න.

Bitbucket repo : https://bitbucket.org/teckel12/arduino-new-ping/downloads/
Download Zip file : https://bitbucket.org/teckel12/arduino-new-ping/downloads/NewPing_v1.9.1.zip

එය ඔබගේ ආර්ඩුයිනෝ සොෆ්ට්වෙයාර් එකට ස්ථාපනය කිරීම සඳහා, Arduino IDE විවෘත කර, Sketch> Includ Library> ZIP library ක්ලික් කරන්න, ඉන්පසු ඔබ බාගත කළ NewPing ZIP ගොනුව තෝරන්න. ඔබට  library ක් ස්ථාපනය කිරීම පිළිබඳ වැඩි විස්තර අවශ්‍ය නම්, “how to install  Arduino  library” ගූගල් සෙවුමක් දාන්න.

කලින් පෙන්වා දුන් ආකාරයට වඩා NewPing library එක නිරවද්‍යතාවය වැඩි වන ආකාරයට කේත වැඩි දියුණු කර ෆන්ෂන් නිර්මාණය කර තිබේ. එය එකවර අතිධ්වනික සංවේදක 15 ක් දක්වා සහය දක්වයි. ඒ වගේම OUTPUT ලෙස  සෙන්ටිමීටර හෝ අඟල් ලෙස යම් කාල සීමාවක් තුළ කෙලින්ම ලබා ගත හැකිය.

NewPing library භාවිතා කිරීම නිර්මාණය කරන ලද සරල ප්‍රෝග්‍රෑම් එකක් පහත දැක්වේ.

// This uses Serial Monitor to display Range Finder distance readings

// Include NewPing Library
#include "NewPing.h"

// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10
#define TRIGGER_PIN 9
#define ECHO_PIN 10

// Maximum distance we want to ping for (in centimeters).
#define MAX_DISTANCE 400	

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

void setup() 
{
    Serial.begin(9600);
}

void loop() 
{
    // Send ping, get distance in cm
    distance = sonar.ping_cm();
    
    // Send results to Serial Monitor
    Serial.print("Distance = ");
    
    if (distance >= 400 || distance <= 2) 
    {
        Serial.println("Out of range");
    }
    else 
    {
        Serial.print(distance);
        Serial.println(" cm");
    }
    delay(500);
}

Output on Serial Monitor

Code එක පිලිබදව පැහැදිලි කිරීම:

ඉහත ප්‍රෝග්‍රෑම් එක ඉතා සරල වන අතර එය හොඳින් ක්‍රියාත්මක වන නමුත් එයට  නිර්ණය කර  ගත හැකි අවම අගය ඇත්තේ සෙන්ටිමීටරයක් දක්වා පමණි. ඔබට දශම අගයන් සමග දුර නිර්ණය කිරීමට අවශ්‍ය නම් දුර මනින ආකාරය (distance mode) වෙනුවට කාල පරාසය මනින ආකාරය (duration mode) තුළ NewPing library එකේ ෆන්ශන්  භාවිතා කළ හැකිය. මේ සදහා ඔබ මෙම කෝඩ් ලයින් නැවත ලිවිය යුතුය.

// Send ping, get distance in cm
distance = sonar.ping_cm();

මේ සදහා ඔබ පහත පේලි සමග කෝඩ් ලයින් නැවත ලිවිය යුතුය.

duration = sonar.ping();
distance = (duration / 2) * 0.0343;

ඔබගේ HC-SR04 සංවේදකයෙහි නිරවද්‍යතාවය ඊළඟ මට්ටමට වැඩි දියුණු කිරීම සඳහා, NewPing library ඇති “පුනරාවර්තන(iterations)” භාවිතා කළ හැකිය. පුනරාවර්තනය කිරීම යනු එක් වරකට වඩා වැඩි වාර ගනණක් එකම දෙය සිදු කරගෙන යාමයි, iterations මගින් සිදු කරන්නේ එයයි. එය එකක් වෙනුවට කාල පරාසයක් තුළ මිනුම් කිහිපක් සිදු කර, අවලංගු කියවීම් ඉවත දමා ඉතිරි ඒවායේ සාමාන්‍ය අගය ගනණය කරයි. පහත දැක්වෙන්නේ කියවීම් 5 ක් සිදූ කරන ආකාරය වන අතර ඔබට අවශ්‍ය තරම් ප්‍රමාණයක් යෙදිය හැකිය.

int iterations = 5;
duration = sonar.ping_median(iterations);

 

සම්බන්ධතා රහිත දුර සෙවුම (Contactless Distance Finder)

දැන් අපි සරල අතිධ්වනික සංවේදකයක් භාවිතා කර සම්බන්ධතා රහිත දුර සෙවුමක් බවට පත් කරන්නේ කෙසේද යන්න නිරූපණය කිරීම සඳහා උපාංගයක් නිර්මාණය කරමු. මෙම ව්‍යාපෘතියෙදී අපි 16 × 2 අක්ෂර LCD දර්ශකයක් භාවිතා කර තිරස් තීරුවක් පෙන්වීම සඳහා වස්තුවට ඇති දුර ප්‍රස්තාරිකව පහළ රේඛාවේ අගය සමඟ නිරූපණය කරමු.

ඔබට 16 × 2 අක්ෂර LCD දර්ශක හුරු නැතිනම්, 12 වන පරිච්චේදය වෙත යොමුවෙන්න.

අවශ්‍යය උපාංග

ඊළඟට, පහත දැක්වෙන පරිදි අපි LCD දර්ශයකය සමඟ සම්බන්ධතා නිර්මාණය කරගත යුතුය.

Hardware connection

HC-SR04 Ultrasonic Sensor සහ 16×2 LCD Display  එක  Arduino UNO බොර්ඩ් එකට සම්බන්ධ කරන ආකරය

ප්‍රෝග්‍රෑම් එක අප්ලෝඩ් කර සංවේදකය සමඟ ක්‍රියාත්මක කිරීමට පෙර, අපි LCDBarGraph නමින් ඇති library එක ඉන්ස්ටෝල් කළ යුතුය. මෙම library එක LCD තිරයයෙහි තිරස් තීරු ඇඳීමට උපකාරී වේ, එහිදී තීරුවේ දිග සපයා ඇති අගයන්ට සමානුපාතික වේ.

Arduino Playground වෙත පිවිසීමෙන් පළමුව library එක ඩවුන්ලෝඩ් කරගන්න, නැතහොත් zip ෆයිල් එකක් ලෙස බාගත කිරීම සඳහා මෙම පහත ලින්ක් එක භාවිතා කරන්න.

Arduino Playground : https://playground.arduino.cc/Code/LcdBarGraph/
Download Zip file : https://github.com/prampec/LcdBarGraph/archive/1.5.zip

library එක ඔබගේ ආර්ඩුයිනෝ සොෆ්ට්වෙයාර් එකට ස්ථාපනය කළ පසු, පහත දැක්වෙන ප්‍රෝග්‍රෑම්  එක උත්සාහ කරන්න.

// includes the LiquidCrystal Library
#include <LiquidCrystal.h> 

// includes the LcdBarGraph Library
#include <LcdBarGraph.h>

// Maximum distance we want to ping for (in centimeters).
#define max_distance 200

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

LcdBarGraph lbg(&lcd, 16, 0, 1); // Creates an LCD Bargraph object.

const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;

void setup() 
{
    lcd.begin(16,2); // Initializes the interface to the LCD screen
    
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
}

void loop() 
{
    // Write a pulse to the HC-SR04 Trigger Pin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // Measure the response from the HC-SR04 Echo Pin
    duration = pulseIn(echoPin, HIGH);
    
    // Determine distance from duration
    // Use 343 metres per second as speed of sound
    distance= duration*0.034/2;
    
    // Prints "Distance: <value>" on the first line of the LCD
    lcd.setCursor(0,0);
    lcd.print("Distance: "); 
    lcd.print(distance);
    lcd.print(" cm");

    // Draws bargraph on the second line of the LCD
    lcd.setCursor(0,1);
    lbg.drawValue(distance, max_distance);
    delay(500);
}

එවිට ප්‍රතිදානය පෙනෙන්නේ මේ ආකාරයට ය.

16 × 2 අක්ෂර LCD පුවරුව මත තීරු ප්‍රතිදානය

Code එක පැහැදිලි කිරීම :

සුපුරුදු පරිදි පළමුව ඔබ LiquidCrystal library එක සැකසිය යුතුය. මෙයින් පසු ඔබට දැන් නිර්මාණය කරන ලද LiquidCrystal උදාහරණය සමඟ LcdBarGraph නිදසුනේ ආකරයට නිර්මාණය කළ හැකිය. ඔබ LiquidCrystal හි යොමු කිරීම LcdBarGraph හි constructor එක  වෙත යැවිය යුතුය.

LcdBarGraph හි constructor එක තවත් පරාමිති තුනක් ගනී. දෙවැන්න නම් LCD හි ඇති අක්ෂර තීරු ගණන (මෙහිදි නම් 16 යි). තීරුව නිසිලෙස ස්ථානගත කිරීමට අවසාන පරාමිතීන් දෙක අත්‍යවශ්‍ය වේ.

LcdBarGraph lbg(&lcd, 16, 0, 1); // creating bar graph instance

දැන් සංවේදකයෙන් ඇති දුර ගණනය කළ පසු, අපට තීරුව ප්‍රදර්ශනය කිරීම සඳහා drawValue (value, maxValue) ෆන්ෂන් එක භාවිතා කළ හැකිය. මෙය 0 සහ maxValue අතර අගයක් සහිත තීරුවක් නිර්මාණය කරයි.

lcd.begin(16,2); // initializing LCD screen

අපි ඉහත කේතය LCD දර්ශකයේ හි කාර්යයන් ආරම්භ කිරීමට යොදාගනී.  මෙහිදී අප භාවිත කරන දර්ශකයේ එකෙහි වර්ගය ලබාදිය යුතුය. 16,2 ලෙස ලබාදී ඇත්තේ එයයි.

අනෙකුත් දුර සෙවීමේ කේත පෙර සඳහන් කර පරිදිම වේ.

lcd.setCursor(0,0);
lcd.print("Distance: ");

ඉහත setCursor() කේතය මගින් LCD තිරයේ දත්ත පෙන්වීම ආරම්භ කල යුතු ස්ථානය තීරණය කරයි.

එසේම  print() කේතය මගින් LCD දර්ශකයේ හි පෙන්විය යුතු දත්ත ලබාදීම සිදුකරයි. LCD දර්ශක භාවිතය පිලිබඳ වැඩිදුර තොරතුරු සඳහා 12 පරිච්චේදය වෙත නැවත යොමුවෙන්න.

 

වයර් 3ක් මගින් HC-SR04 සම්බන්ධ කිරීම.

3-වයර් ආකාරය යනු ඔබට අවශ්‍ය වන්නේ පින් දෙකක් වෙනුවට තනි ආර්ඩුයිනෝ ඩිජිටල් I/O පින් එකකට එක් සම්බන්ධතාවයක් පමණි. මේ සම්බන්ධව ඔබ නොදන්නේ නම්, අතිධ්වනික සංවේදක බොහෝමයක් එහි ක්‍රියාත්මක වන්නේ 3-වයර් ආකාරයේදී පමණක් වන අතර එය parallax ping sensor. ආකාරයට ක්‍රියාත්මක වේ.

parallax ping sensor : https://www.parallax.com/product/28015

3-වයර් ආකාරයේදී තනි I/O පින් ආදානය(Input) සහ ප්‍රතිදානය(Output) ලෙස භාවිතා කරයි. ආදානය සහ ප්‍රතිදානය යන දෙකම එක විට භාවිතා  නොකරන නිසා මෙය කළ හැකිය. මෙහිදී එක් I/O පින් එකක් පමණක් අවශ්‍ය වන නිසා අපගේ ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි පින් එකක් ඉතිරි කර ගෙන එය වෙනත් දෙයක් සඳහා භාවිතා කළ හැකිය. සීමිත I/O පින් ඇති ATtiny85 වැනි චිපයක් භාවිතා කරන විටද එය ප්‍රයෝජනවත් වේ.

3-වයර් ආකාරය භාවිතයෙන් HC-SR04 සංවේදකය ආර්ඩුයිනෝ බෝර්ඩ් එක සමග සම්බන්ධ කළ හැකි ආකාරය පහත දක්වා තිබේ.

Hardware connection

Wiring HC-SR04 Ultrasonic Sensor to Arduino UNO – 3 Wire Mode

ඉහත රුපසටහනේ පරිදි trigger එක සහ echo එක යන දෙකම ආර්ඩුයිනෝ බෝර්ඩ් එකෙහි ඩිජිටල් PWM පින් #9 හා සම්බන්ධ කරන්න. සටහනේ ඔබ කළ යුතු එකම වෙනස වන්නේ trigger සහ echo පින් අගයන් දෙකම සඳහා එකම ඩිජිටල් PWM පින් එකක් භවිතා කිරීමයි. ප්‍රෝග්‍රෑම් එකේ ඉතිරි කොටස ඉහත උදාහරණයේ කේත හා සමාන වේ.

#define TRIGGER_PIN 9 // Trigger and Echo both on pin 9
#define ECHO_PIN 9

සීමාවන් මොනවාද?

නිරවද්‍යතාවය සහ සමස්ත ප්‍රයෝජනය අනුව, HC-SR04 අතිධ්වනික දුර නිර්ණය කිරීමේ සංවේදකය ඇත්තෙන්ම විශිෂ්ටයි, විශේෂයෙන් අනෙකුත් අඩු වියදම් දුර හඳුනාගැනීමේ සංවේදක සමඟ සසඳන විට. HC-SR04 සංවේදකය “සියල්ල” මැනිය හැකි බව මින් අදහස් නොවේ. පහත දැක්වෙන රූප සටහන් මඟින් HC-SR04 මගින් දුර මැනීම සඳහා නිර්මාණය කර නොහැකි අවස්ථා කිහිපයක් පෙන්වයි.

a) සංවේදකය සහ වස්තුව / බාධකය අතර දුර අඩි 13 ට වඩා වැඩි අවස්ථා වල භාවිතා කළ නොහැක.

b) වස්තුවට එහි පරාවර්තක පෘෂ්ඨය අතර නොගැඹුරු කෝණයකින් ඇති බැවින් ශබ්දය සංවේදකය දෙසට නැවත පරාවර්තනය නොවේ.

c) සංවේදකය වෙත ප්‍රමාණවත් තරම් ශබ්දය පරාවර්තනය කිරීමට අවශ්‍ය ප්‍රමණයට වඩා වස්තුව ඉතා කුඩාය. ඊට අමතරව, ඔබගේ උපාංගයේ ඔබේ HC-SR04 සංවේදකය වස්තුවට වඩා පහලින් සවිකර තිබේ නම්, බිමෙන් ඉවතට පරාවර්තනය වන ශබ්දය ඔබට හඳුනාගත හැකිය.

d) සංවේදකය සමඟ විවිධ අත්හදාබැලීම් සිදුකිරිමේදී, මෘදු, අක්‍රමවත් පෘෂ්ඨ සහිත (පිරවූ සතුන් වැනි) සමහර වස්තූන් ශබ්දය පරාවර්තනය කරනවාට වඩා අවශෝෂණය කරන බවත්, එබැවින් HC-SR04 සංවේදකය හඳුනා ගැනීමට අපහසුයි.

දුර මැනීම සඳහා උෂ්ණත්වයේ බලපෑම

අනවසරයෙන් යම් ප්‍රදේශයකට ඇතුළු වීම හෝ සමීප අනතුරු ඇඟවීම් වැනි අපගේ බොහෝ ව්‍යාපෘති සඳහා HC-SR04 සාධාරණ ලෙස නිවැරදි වුවද, නමුත් එළිමහනේ හෝ අසාමාන්‍ය ලෙස උණුසුම් හෝ සිසිල් පරිසරයක භාවිතා කිරීමේදී අවශ්‍ය උපාංගයක් සැලසුම් කිරීමට අවශ්‍ය විය හැකිය. මෙම තත්වය යටතේ, මෙහිදී වාතයේදී ශබ්දයේ වේගය උෂ්ණත්වය, වායු පීඩනය සහ ආර්ද්‍රතාවය සමඟ වෙනස් වන බව සැලකිල්ලට ගැනීමට ඔබට  සිදුවේ.

අපගේ HC-SR04 දුර ගණනය කිරීම සඳහා ශබ්දයේ වේගය අපගේ කියවීම් වලට බලපායි. උෂ්ණත්වය (° C) සහ ආර්ද්‍රතාවය දැනටමත් දන්නා නම්, පහත සූත්‍රය මගින් එය වඩාත් නිවැරදිව ගනණය කර ගත හැකිය.

Speed of sound m/s = 331.4 + (0.606 * Temp) + (0.0124 * Humidity)

Speed of sound ශබ්ධයේ වේගය
Temp උෂ්ණත්වය
Humidity ආර්ද්‍රතාවය

Leave a Reply

Your email address will not be published. Required fields are marked *

Index