Kodi ya Arduino na Video: Moduli ya Kihisi cha Moto kwa Arduino
Katika mafunzo haya, tutachunguza jinsi ya kutumia moduli ya kihisi cha moto na Arduino. Kihisi cha moto hugundua uwepo wa moto na kinaweza kuanzisha kengele au kiashiria kinapogundua. Kufikia mwisho wa mradi huu, utakuwa na mfumo unaofanya kazi unaojibu ugunduzi wa moto kwa tahadhari ya sauti na maoni ya kuona.


Moduli ya kihisi cha moto hufanya kazi kwa kutumia LED ya infrared kugundua moto. Moto unapogunduliwa, moduli hutoa ishara inayoweza kutumika kuamsha vipengele vingine, kama vile buzzer au LED. Mradi huu utahusisha kuunganisha kihisi cha moto kwenye Arduino na kuandika programu rahisi ya kushughulikia pembejeo na pato.
Kwa uelewa wazi zaidi wa msimbo na wiring, nakuhimiza uangalie video inayohusiana (katika video saa 00:00).
Vifaa Vimeelezwa
Vipengele vikuu katika mradi huu vinajumuisha moduli ya kihisi cha moto, bodi ya Arduino, na buzzer au LED kwa tahadhari. Kihisi cha moto kina pini nne: pini ya pato la dijiti (DO), pini ya pato la analogi (AO), pini ya nguvu (VCC), na pini ya ardhi (GND). Pini ya pato la dijiti hutuma ishara ya HIGH moto unapogunduliwa, wakati pato la analogi hutoa thamani tofauti kulingana na ukubwa wa moto.
Arduino husoma pato la dijiti kuamua kama kuna moto. Kihisi kinapogundua moto, Arduino inaweza kuamsha kengele au taa kwa kutumia pini ya pato. Usikivu wa ugunduzi wa moto unaweza kubadilishwa kwa kutumia potentiometer iliyojengewa ndani ya moduli.
Maelezo ya Datasheet
| Mtengenezaji | Generic |
|---|---|
| Nambari ya sehemu | LM393 |
| Voltage ya Logic/IO | 5 V |
| Voltage ya usambazaji | 2–36 V |
| Pato la sasa (kwa kila chaneli) | 20 mA |
| Kilele cha sasa (kwa kila chaneli) | 50 mA |
| Mwongozo wa mzunguko wa PWM | N/A |
| Vizingiti vya mantiki ya pembejeo | 0.8 V (chini), 2.0 V (juu) |
| Kushuka kwa voltage / RDS(on) / kueneza | 0.2 V |
| Mipaka ya joto | 125 °C |
| Kifurushi | TO-220 |
| Vidokezo / lahaja | Usikivu unaoweza kubadilishwa |
- Hakikisha usambazaji sahihi wa voltage kati ya 2 hadi 36 V kwa moduli.
- Weka LED ya infrared ya kihisi wazi kwa ugunduzi bora wa moto.
- Tumia heatsink ikiwa moduli inafanya kazi karibu na mipaka yake ya kilele cha sasa.
- Kuwa makini na wiring ili kuepuka mzunguko mfupi au miunganisho isiyo sahihi.
- Badilisha usikivu kwa kutumia potentiometer iliyojengewa ndani kwa matumizi tofauti.
- Thibitisha kwamba pato la kengele linaweza kushughulikia mzigo uliounganishwa (buzzer/LED).
Maagizo ya Wiring


Ili kuunganisha moduli ya kihisi cha moto kwenye Arduino, anza kwa kuunganisha pini ya VCC ya kihisi cha moto kwenye pini ya 5V ya Arduino. Kisha, unganisha pini ya GND ya kihisi kwenye moja ya pini za GND za Arduino. Pini ya pato la dijiti (DO) kutoka kwa kihisi cha moto inapaswa kuunganishwa kwenye pini ya dijiti 2 ya Arduino, ambayo tutaiita FLAME katika msimbo. Hatimaye, unganisha kifaa cha tahadhari, kama vile buzzer, kwenye pini ya dijiti 8 ya Arduino, inayoitwa ALARM.
Hakikisha kwamba miunganisho yote ni salama, kwani miunganisho iliyolegea inaweza kusababisha tabia isiyo thabiti. Ikiwa unataka kutumia pato la analogi, unganisha pini ya pato la analogi (AO) kwenye pini ya analogi ya Arduino, kama vile A0, lakini hii ni hiari kwa utendaji wa msingi. Katika video, mbinu mbadala za wiring pia zinajadiliwa (katika video saa 02:30).
Mifano ya Msimbo na Maelezo
Kipande cha msimbo kifuatacho huanzisha kihisi cha moto na kuweka mfuatiliaji wa serial:
#define FLAME 2 // unganisha pini ya DO ya kihisi kwenye pini hii
#define ALARM 8 // pini 8 kwa Alarm
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT); // fafanua pini ya pembejeo ya FLAME
pinMode(ALARM, OUTPUT); // fafanua pini ya pato ya ALARM
}
Hapa, tunafafanua pini za kihisi cha moto na kengele, na kuanzisha mawasiliano ya serial kwa 9600 baud. Hii inaturuhusu kuchapisha ujumbe kwenye mfuatiliaji wa serial kwa ajili ya utatuzi.
Ifuatayo, tunasoma kihisi cha moto katika kitanzi kikuu:
void loop() {
int fire = digitalRead(FLAME); // soma kihisi cha FLAME
if(fire == HIGH) {
digitalWrite(ALARM, HIGH); // washa buzzer
Serial.println("Fire! Fire!");
} else {
digitalWrite(ALARM, LOW); // zima buzzer
Serial.println("Peace");
}
delay(200);
}
Sehemu hii ya msimbo hukagua hali ya kihisi cha moto. Ikiwa inagundua moto (HIGH), inawasha kengele na kuchapisha "Fire! Fire!" kwenye mfuatiliaji wa serial. Ikiwa hakuna moto (LOW), inazima kengele na kuchapisha "Peace". Kitanzi kinajumuisha kuchelewa kwa milisekunde 200, ambacho kinaweza kubadilishwa ili kubadilisha usikivu wa ugunduzi.
Maonyesho / Nini cha Kutarajia
Mfumo unapowashwa, mfuatiliaji wa serial utaonyesha "Robojax.com Fire Module Test" ikifuatiwa na "Peace" hadi moto ugunduliwe. Moto ukigunduliwa, buzzer italia, na LED itawaka, ikionyesha hali ya moto. Unaweza kujaribu usikivu wa kihisi kwa kubadilisha potentiometer kwenye moduli. Kuwa makini na matokeo ya uwongo, kama vile yale yanayosababishwa na ishara za infrared kutoka kwa remote control (katika video saa 04:15).
Vidokezo vya Muda wa Video
- 00:00 - Utangulizi wa moduli ya kihisi cha moto
- 02:30 - Maagizo ya wiring
- 04:15 - Maonyesho ya ugunduzi wa moto
/*
* This is code for a Flame Sensor module for Arduino.
* Watch the video https://youtu.be/OZkZIP3KlHQ
* Other Arduino libraries and videos https://robojax.com
* *
Flame Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on January 18, 2018 at 22:21 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*
*/
/*
What does it do?
When the infrared diode sees the flame, it sends the digital output DO to
also, the level of flame is represented with the analog output.
*/
// 4 Infrared Obstacle code for Robojax.com
#define FLAME 2 // connect DO pin of sensor to this pin
#define ALARM 8 // pin 8 for Alarm
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Fire Module Test");
pinMode(FLAME, INPUT);//define FLAME input pin
pinMode(ALARM, OUTPUT);//define ALARM output pin
// Flame sensor code for Robojax.com
}
void loop() {
// Flame sensor code for Robojax.com
int fire = digitalRead(FLAME);// read FLAME sensor
if( fire == HIGH)
{
digitalWrite(ALARM,HIGH);// set the buzzer ON
Serial.println("Fire! Fire!");
}else{
digitalWrite(ALARM,LOW); // Set the buzzer OFF
Serial.println("Peace");
// Flame sensor code for Robojax.com
}
delay(200);
}
Resurser och referenser
-
Extern.LM393 datasheet (PDF)ti.com
Filer📁
Inga filer tillgängliga.