Senzor de mișcare pentru automatizarea iluminatului Arduino și fotorezistor. Fotorezistor și LED-uri pe Arduino

Articole noi

● Proiectul 13: Fotorezistor. Procesăm iluminarea prin aprinderea sau stingerea LED-urilor

În acest experiment, vom face cunoștință cu un senzor analogic pentru măsurarea iluminării - un fotorezistor (Fig.13.1).

Componente necesare:

O utilizare obișnuită a unui fotorezistor este măsurarea iluminării. În întuneric, rezistența lui este destul de grozavă. Când lumina lovește fotorezistorul, rezistența scade proporțional cu iluminarea. Diagrama pentru conectarea fotorezistorului la Arduino este prezentată în Fig. 13.2. Pentru a măsura iluminarea, este necesar să asamblați un divizor de tensiune, în care brațul superior va fi reprezentat de un fotorezistor, cel inferior - de un rezistor obișnuit cu o capacitate suficient de mare. Vom folosi un rezistor de 10k. Conectăm brațul mediu al divizorului la intrarea analogică A0 a Arduino.

Orez. 13.2. Schema de conectare a fotorezistorului la Arduino

Să scriem o schiță de citire a datelor analogice și trimiterea lor la portul serial. Conținutul schiței este prezentat în Listarea 13.1.

Int light; // variabilă pentru stocarea datelor fotorezistorului configurare nulă ()(Serial.begin (9600);) bucla nulă ()(lumină = analogRead (0); Serial.println (lumină); întârziere (100);)
Procedura de conectare:

1. Conectăm fotorezistorul conform schemei din fig. 13.2.
2. Încărcați schița din Listarea 13.1 pe placa Arduino.
3. Reglăm iluminarea fotorezistorului cu mâna și observăm ieșirea către portul serial al valorilor schimbătoare, ne amintim de citirile la iluminarea completă a camerei și la blocarea completă a fluxului luminos.

Acum să creăm un indicator luminos folosind un rând LED de 8 LED-uri. Numărul de LED-uri aprinse este proporțional cu iluminarea curentă. Asamblăm LED-urile conform schemei din Fig. 13.3 folosind rezistențe de limitare de 220 ohmi.

Orez. 13.3. Schema de conectare a fotorezistorului și a LED-urilor către Arduino


Conținutul schiței pentru afișarea iluminării curente pe bara LED este prezentat în Listarea 13.2.

// Contact pentru conectarea LED-urilor leduri const int = (3, 4, 5, 6, 7, 8, 9, 10); const int LUMINĂ = A0; // Pinul A0 pentru intrarea fotorezistorului const int MIN_LIGHT = 200; // Prag inferior de iluminare const int MAX_LIGHT = 900; // pragul superior de iluminare // Variabilă pentru stocarea datelor fotorezistorului int val = 0; configurare nulă (){ // Configurați pinii LED ca ieșire pentru (int i = 0; i<8 ;i++) pinMode(leds[i],OUTPUT); } bucla nulă ()(val = analogRead (LIGHT); // Citiți lecturile fotorezistorului // Utilizarea funcției map () val = hartă (val, MIN_LIGHT, MAX_LIGHT, 8, 0); // restricționăm astfel încât să nu depășească limitele val = constrângere (val, 0, 8); // aprindeți numărul de LED-uri proporțional cu iluminarea, // stinge restul pentru (int i = 1; i<9 ;i++) { if (i>= val) // aprinde ledurile digitalWrite (leduri, HIGH); altceva // opriți LED-urile digitalWrite (leduri, LOW); ) întârziere (1000); // pauză înainte de următoarea măsurare }
Procedura de conectare:

1. Conectăm fotorezistorul și LED-urile conform schemei din fig. 13.3.
2. Încărcați schița din Listarea 13.2 în placa Arduino.
3. Reglăm iluminarea fotorezistorului cu mâna și determinăm nivelul curent de iluminare prin numărul de LED-uri aprinse (Fig. 13.3).

Luăm limitele inferioare și superioare de iluminare din valorile memorate atunci când efectuăm experimentul pe schița anterioară (Listarea 13.1). Scalăm valoarea iluminării intermediare cu 8 valori (8 LED-uri) și aprindem numărul de LED-uri proporțional cu valoarea dintre limitele inferioară și superioară.

Listări de programe

Senzorii de lumină (iluminare), construiți pe baza fotorezistoarelor, sunt destul de des folosiți în proiecte reale Arduino. Sunt relativ simple, nu sunt scumpe și sunt ușor de găsit și cumpărat de la orice magazin online.

Fotorezistorul Arduino vă permite să controlați nivelul de iluminare și să răspundeți la schimbarea acestuia. În acest articol, vom analiza ce este un fotorezistor, cum funcționează un senzor de lumină bazat pe acesta, cum să conectați corect un senzor la plăcile Arduino.

Fotorezistorul, după cum sugerează și numele, are mult de-a face cu rezistențele care se găsesc adesea în aproape orice circuit electronic. Principala caracteristică a unui rezistor convențional este valoarea rezistenței sale. Tensiunea și curentul depind de aceasta, cu ajutorul unui rezistor stabilim modurile de operare necesare ale altor componente. De regulă, valoarea rezistenței unui rezistor în aceleași condiții de funcționare practic nu se modifică.

Spre deosebire de un rezistor convențional, acesta își poate schimba rezistența în funcție de nivelul de lumină ambientală. Aceasta înseamnă că parametrii din circuitul electronic se vor schimba constant, în primul rând suntem interesați de tensiunea care cade peste fotorezistor. Fixând aceste modificări de tensiune pe pinii analogici ai Arduino, putem schimba logica circuitului, creând astfel dispozitive care se adaptează la condițiile externe.

Fotorezistoarele sunt utilizate în mod activ într-o mare varietate de sisteme. Cea mai obișnuită aplicație este iluminatul stradal. Dacă cade noaptea în oraș sau devine tulbure, atunci luminile se aprind automat. Puteți realiza un bec economic pentru casă dintr-un fotorezistor, care nu se aprinde conform unui program, ci în funcție de iluminat. Pe baza senzorului de lumină, puteți realiza chiar și un sistem de securitate care va fi declanșat imediat după deschiderea și iluminarea unui dulap închis sau seif. Ca întotdeauna, scopul oricărui senzor Arduino este limitat doar de imaginația noastră.

Ce fotorezistoare pot fi cumpărate în magazinele online

Cea mai populară și accesibilă opțiune de senzori de pe piață este modelele de producție în masă ale companiilor chineze, clone de produse VT. Pentru a începe cu fotorezistoarele, cea mai simplă opțiune este destul de potrivită.

Un jucător arduino pentru începători poate fi sfătuit să cumpere un modul foto gata pregătit, care arată astfel:

Acest modul are deja toate elementele necesare pentru o conexiune simplă a fotorezistorului la placa arduino. În unele module, este implementat un circuit cu un comparator și sunt disponibile o ieșire digitală și un trimmer pentru control.

Un radioamator rus poate fi sfătuit să apeleze la un senzor rus FR. Disponibil pentru vânzare FR1-3, FR1-4 etc. - au fost produse în vremurile uniunii. Dar, în ciuda acestui fapt, FR1-3 este un detaliu mai precis. De aici rezultă diferența de preț.Pentru FR-uri nu cer mai mult de 400 de ruble. FR1-3 va costa mai mult de o mie de ruble bucata.

Marcarea modernă a modelelor produse în Rusia este destul de simplă. Primele două litere sunt PhotoResistor, numerele de după liniuță indică numărul de dezvoltare. FR-765 - fotorezistor, dezvoltare 765. De obicei marcat direct pe corpul piesei

Pentru senzorul VT, domeniul de rezistență este indicat în diagrama de marcare. De exemplu:

  • VT83N1 - 12-100kOhm (12K - aprins, 100K - în întuneric)
  • VT93N2 - 48-500kOhm (48K - aprins, 100K - în întuneric).

Uneori, vânzătorul furnizează un document special de la producător pentru a clarifica informații despre modele. Pe lângă parametrii de lucru, acuratețea piesei este indicată și acolo. Pentru toate modelele, gama de sensibilitate este localizată în partea vizibilă a spectrului. Colectare senzor de lumina trebuie să înțelegeți că acuratețea funcționării este un concept condiționat. Chiar și pentru modelele de la un producător, un lot, o achiziție, acesta poate diferi cu 50% sau mai mult.

La fabrică, piesele sunt reglate pe o lungime de undă de la roșu la verde. În același timp, majoritatea „vede” radiația infraroșie. Detaliile extrem de precise pot capta chiar și lumina ultravioletă.

Avantajele și dezavantajele senzorului

Principalul dezavantaj al fotorezistoarelor este sensibilitatea lor la spectru. În funcție de tipul de lumină incidentă, rezistența poate varia cu mai multe ordine de mărime. Dezavantajele includ, de asemenea, viteza redusă de reacție la schimbările de iluminare. Dacă lumina clipește, senzorul nu are timp să răspundă. Dacă frecvența schimbării este destul de ridicată, rezistorul nu va mai „vedea” că iluminarea se schimbă.

Avantajele includ simplitatea și accesibilitatea. Schimbarea directă a rezistenței în funcție de lumina care cade pe ea face posibilă simplificarea schemei de cablare electrică. Fotorezistorul în sine este foarte ieftin, face parte din numeroase kituri și constructori Arduino, prin urmare este disponibil pentru aproape orice jucător novice Arduino.

În proiecte arduino fotorezistorul este folosit ca senzor de lumină. Primind informații de la acesta, placa poate porni sau opri releele, porni motoarele, trimite mesaje. Bineînțeles, în acest caz, trebuie să conectăm corect senzorul.

Diagrama pentru conectarea senzorului de lumină la Arduino este destul de simplă. Dacă folosim un fotorezistor, atunci în diagrama de conexiune senzorul este implementat ca divizor de tensiune. Un braț se schimbă odată cu nivelul de iluminare, al doilea furnizează tensiune la intrarea analogică. Într-un microcircuit al controlerului, această tensiune este convertită în date digitale printr-un ADC. pentru că rezistența senzorului atunci când lumina îl lovește scade, apoi valoarea tensiunii care cade pe el va scădea.

În funcție de brațul divizorului în care am introdus fotorezistorul, se va aplica o tensiune crescută sau scăzută la intrarea analogică. În cazul în care un picior al fotorezistorului este conectat la masă, atunci valoarea maximă a tensiunii va corespunde întunericului (rezistența fotorezistorului este maximă, aproape toată tensiunea cade peste el), iar valoarea minimă va corespunde unei iluminări bune (rezistența este aproape de zero, tensiunea este minimă). Dacă conectăm brațul fotorezistorului la sursa de alimentare, atunci comportamentul va fi opus.

Instalarea plăcii în sine nu ar trebui să fie dificilă. Deoarece fotorezistorul nu are polaritate, îl puteți conecta de fiecare parte, îl puteți lipi pe placa, îl puteți conecta cu fire folosind o placă de circuit sau puteți utiliza cleme obișnuite (crocodili) pentru conectare. Sursa de alimentare din circuit este arduino în sine. Fotorezistor conectat cu un picior la sol, celălalt este conectat la ADC-ul plăcii (în exemplul nostru, AO). Conectăm un rezistor de 10 kOhm la același picior. Bineînțeles, puteți conecta fotorezistorul nu numai la pinul analogic A0, ci și la oricare altul.

Câteva cuvinte despre rezistorul suplimentar de 10 K. Are două funcții în circuitul nostru: să limiteze curentul din circuit și să formeze tensiunea dorită în circuit cu un divizor. Limitarea curentului este necesară într-o situație în care un fotorezistor complet iluminat își reduce brusc rezistența. Și modelarea tensiunii este pentru valori previzibile la portul analogic. De fapt, pentru o funcționare normală cu fotorezistoarele noastre, este suficientă o rezistență de 1K.

Prin schimbarea valorii rezistenței, putem „deplasa” nivelul de sensibilitate pe laturile „întunecate” și „luminoase”. Deci, 10 K vor da o schimbare rapidă a apariției luminii. În cazul 1K, senzorul de lumină va detecta mai precis nivelurile de lumină ridicate.

Dacă utilizați un modul senzor de lumină gata făcut, atunci conexiunea va fi și mai ușoară. Conectăm ieșirea modulului VCC la conectorul de 5V de pe placă, GND la masă. Conectăm pinii rămași la conectorii arduino.

Dacă există o ieșire digitală pe placă, atunci o trimitem la pinii digitali. Dacă analog - atunci analog. În primul caz, vom primi un semnal de declanșare - depășind nivelul de iluminare (pragul de declanșare poate fi ajustat folosind un rezistor de reglare). De la pinii analogici, vom putea primi o valoare de tensiune proporțională cu nivelul real de iluminare.

Am conectat circuitul cu fotorezistorul la arduino, ne-am asigurat că totul a fost făcut corect. Acum rămâne să programăm controlerul.

Este destul de ușor să schițați un senzor de lumină. Trebuie doar să eliminăm valoarea tensiunii curente de pe pinul analogic la care este conectat senzorul. Acest lucru se face folosind funcția analogRead () cunoscută de noi toți. Apoi putem efectua unele acțiuni, în funcție de nivelul de lumină.

Să scriem o schiță pentru un senzor de lumină care pornește sau oprește un LED conectat după cum urmează.

Algoritmul de lucru este după cum urmează:

  • Determinați nivelul semnalului de la pinul analogic.
  • Comparăm nivelul cu valoarea pragului. Valoarea maximă va corespunde întunericului, valoarea minimă va corespunde iluminării maxime. Vom alege valoarea pragului egală cu 300.
  • Dacă nivelul este mai mic decât pragul, este întuneric, trebuie să porniți LED-ul.
  • În caz contrar, opriți LED-ul.

#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); if ( val< 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

#define PIN_LED 13

#define PIN_PHOTO_SENSOR A0

configurare nulă () (

Serial. începe (9600);

bucla void () (

Serial. println (val);

dacă (val< 300 ) {

digitalWrite (PIN_LED, LOW);

) altceva (

digitalWrite (PIN_LED, HIGH);

Acoperind fotorezistorul (cu mâinile noastre sau cu un obiect opac), putem observa pornirea și oprirea LED-ului. Prin modificarea parametrului prag din cod, putem forța becul să fie pornit / oprit la diferite niveluri de iluminare.

Când montați, încercați să poziționați fotorezistorul și LED-ul cât mai departe posibil, astfel încât mai puțină lumină din LED-ul luminos să atingă senzorul de lumină.

Senzor de lumină și schimbare lină a luminozității luminii de fundal

Puteți modifica proiectul astfel încât, în funcție de nivelul de iluminare, să se schimbe luminozitatea LED-ului. Vom adăuga următoarele modificări algoritmului:

  • Vom schimba luminozitatea becului prin PWM, trimitând valori de la 0 la 255 la pinul cu LED folosind analogWrite ().
  • Pentru a converti valoarea digitală a nivelului de lumină de la senzorul de lumină (de la 0 la 1023) în gama PWM a luminozității LED-urilor (de la 0 la 255), vom folosi funcția map ().

Exemplu de schiță:

#define PIN_LED 10 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); int ledPower = hartă (val, 0, 1023, 0, 255); // Conversia valorii rezultate într-un nivel de semnal PWM. Cu cât este mai mică valoarea iluminării, cu atât mai puțină energie trebuie să o furnizăm LED-ului prin PWM. analogWrite (PIN_LED, ledPower ); // Schimbați luminozitatea)

#define PIN_LED 10

#define PIN_PHOTO_SENSOR A0

configurare nulă () (

Serial. începe (9600);

pinMode (PIN_LED, OUTPUT);

bucla void () (

int val = analogRead (PIN_PHOTO_SENSOR);

Serial. println (val);

int ledPower = hartă (val, 0, 1023, 0, 255); // Conversia valorii primite la nivelul semnalului PWM. Cu cât valoarea iluminării este mai mică, cu atât mai puțină energie trebuie să o furnizăm LED-ului prin PWM.

analogWrite (PIN_LED, ledPower); // Schimbați luminozitatea

În cazul unei alte metode de conectare, în care semnalul de la portul analogic este proporțional cu gradul de iluminare, va fi necesară „inversarea” suplimentară a valorii, scăzând-o din maxim:

int val = 1023 - analogRead (PIN_PHOTO_RESISTOR);

Senzorii de lumină (iluminare), construiți pe baza fotorezistoarelor, sunt destul de des folosiți în proiecte reale Arduino. Sunt relativ simple, nu sunt scumpe și sunt ușor de găsit și cumpărat de la orice magazin online. Fotorezistorul arduino vă permite să controlați nivelul de iluminare și să reacționați la schimbarea acestuia. În acest articol, vom analiza ce este un fotorezistor, cum funcționează un senzor de lumină bazat pe acesta, cum să conectați corect un senzor la plăcile Arduino.

Fotorezistorul, după cum sugerează și numele, are mult de-a face cu rezistențele care se găsesc adesea în aproape orice circuit electronic. Principala caracteristică a unui rezistor convențional este valoarea rezistenței sale. Tensiunea și curentul depind de aceasta, cu ajutorul unui rezistor stabilim modurile de operare necesare ale altor componente. De regulă, valoarea rezistenței unui rezistor în aceleași condiții de funcționare practic nu se modifică.

Spre deosebire de un rezistor convențional, fotorezistorîși poate modifica rezistența în funcție de nivelul de lumină ambientală. Aceasta înseamnă că parametrii din circuitul electronic se vor schimba constant, în primul rând suntem interesați de tensiunea care cade peste fotorezistor. Fixând aceste modificări de tensiune pe pinii analogici ai Arduino, putem schimba logica funcționării circuitului, creând astfel un dispozitiv care se adaptează la condițiile externe.

Fotorezistoarele sunt utilizate în mod activ într-o mare varietate de sisteme. Cea mai obișnuită aplicație este iluminatul stradal. Dacă cade noaptea în oraș sau devine tulbure, luminile se aprind automat. Puteți realiza un bec economic pentru casă dintr-un fotorezistor, care nu se aprinde conform unui program, ci în funcție de iluminat. Pe baza senzorului de lumină, puteți realiza chiar și un sistem de securitate care va fi declanșat imediat după deschiderea și iluminarea unui dulap sau a unui seif închis. Ca întotdeauna, domeniul de aplicare al oricăror senzori Arduino este limitat doar de imaginația noastră.

Ce fotorezistoare pot fi cumpărate în magazinele online

Cea mai populară și accesibilă opțiune de senzori de pe piață este modelele de producție în masă ale companiilor chineze, clone de produse VT. Acolo nu este întotdeauna posibil să se spargă cine și ce anume este produs de acest furnizor sau de acel furnizor, dar cea mai simplă opțiune este destul de potrivită pentru a începe să lucrați cu fotorezistoare.

Un jucător arduino pentru începători poate fi sfătuit să cumpere un modul foto gata pregătit, care arată astfel:


Acest modul are deja toate elementele necesare pentru o conexiune simplă a fotorezistorului la placa arduino. În unele module, este implementat un circuit cu un comparator și sunt disponibile o ieșire digitală și un trimmer pentru control.

Un radioamator rus poate fi sfătuit să apeleze la un senzor rus FR. Disponibil pentru vânzare FR1-3, FR1-4 etc. - au fost produse în vremurile uniunii. Dar, în ciuda acestui fapt, FR1-3 este un detaliu mai precis. Din aceasta rezultă că diferența de preț nu depășește 400 de ruble. FR1-3 va costa mai mult de o mie de ruble bucata.

Marcare fotorezistor

Marcarea modernă a modelelor produse în Rusia este destul de simplă. Primele două litere sunt PhotoResistor, numerele de după liniuță indică numărul de dezvoltare. FR-765 - fotorezistor, dezvoltare 765. De obicei marcat direct pe corpul piesei

Pentru senzorul VT, domeniul de rezistență este indicat în diagrama de marcare. De exemplu:

  • VT83N1 - 12-100kOhm (12K - aprins, 100K - în întuneric)
  • VT93N2 - 48-500kOhm (48K - aprins, 100K - în întuneric).

Uneori, vânzătorul furnizează un document special de la producător pentru a clarifica informații despre modele. Pe lângă parametrii de lucru, acuratețea piesei este indicată și acolo. Pentru toate modelele, gama de sensibilitate este localizată în partea vizibilă a spectrului. Colectare senzor de lumina trebuie să înțelegeți că acuratețea funcționării este un concept condiționat. Chiar și pentru modelele de la un producător, un lot, o achiziție, acesta poate diferi cu 50% sau mai mult.

La fabrică, piesele sunt reglate pe o lungime de undă de la roșu la verde. În același timp, majoritatea „vede” radiația infraroșie. Detaliile extrem de precise pot capta chiar și lumina ultravioletă.

Avantajele și dezavantajele senzorului

Principalul dezavantaj al fotorezistoarelor este sensibilitatea lor la spectru. În funcție de tipul de lumină incidentă, rezistența poate varia cu mai multe ordine de mărime. Dezavantajele includ, de asemenea, viteza redusă de reacție la schimbările de iluminare. Dacă lumina clipește, senzorul nu are timp să răspundă. Dacă frecvența schimbării este destul de ridicată, rezistorul nu va mai „vedea” că iluminarea se schimbă.

Avantajele includ simplitatea și accesibilitatea. Schimbarea directă a rezistenței în funcție de lumina care cade pe ea face posibilă simplificarea schemei de cablare electrică. Fotorezistorul în sine este foarte ieftin, face parte din numeroase kituri și constructori Arduino, prin urmare este disponibil pentru aproape orice jucător novice Arduino.

Conectarea fotorezistorului la arduino

În proiecte arduino fotorezistorul este folosit ca senzor de lumină. Primind informații de la acesta, placa poate porni sau opri releele, porni motoarele, trimite mesaje. Bineînțeles, în acest caz, trebuie să conectăm corect senzorul.

Diagrama de conectare a senzorului de lumină la arduino este destul de simplă. Dacă folosim un fotorezistor, atunci în diagrama de conexiune senzorul este implementat ca divizor de tensiune. Un braț se schimbă odată cu nivelul de iluminare, al doilea furnizează tensiune la intrarea analogică. Într-un microcircuit al controlerului, această tensiune este convertită în date digitale printr-un ADC. pentru că rezistența senzorului atunci când lumina îl lovește scade, apoi valoarea tensiunii care cade pe el va scădea.

În funcție de brațul divizorului în care am introdus fotorezistorul, se va aplica o tensiune crescută sau scăzută la intrarea analogică. În cazul în care un picior al fotorezistorului este conectat la masă, atunci valoarea maximă a tensiunii va corespunde întunericului (rezistența fotorezistorului este maximă, aproape toată tensiunea cade peste el), iar valoarea minimă va corespunde unei iluminări bune (rezistența este aproape de zero, tensiunea este minimă). Dacă conectăm brațul fotorezistorului la sursa de alimentare, atunci comportamentul va fi opus.

Instalarea plăcii în sine nu ar trebui să fie dificilă. Deoarece fotorezistorul nu are polaritate, îl puteți conecta de fiecare parte, îl puteți lipi pe placa, îl puteți conecta cu fire folosind o placă de circuit sau puteți utiliza cleme obișnuite (crocodili) pentru conectare. Sursa de alimentare din circuit este arduino în sine. Fotorezistor conectat cu un picior la sol, celălalt este conectat la ADC-ul plăcii (în exemplul nostru - AO). Conectăm un rezistor de 10 kOhm la același picior. Bineînțeles, puteți conecta fotorezistorul nu numai la pinul analogic A0, ci și la oricare altul.

Câteva cuvinte despre rezistorul suplimentar de 10 K. Are două funcții în circuitul nostru: să limiteze curentul din circuit și să formeze tensiunea dorită în circuit cu un divizor. Limitarea curentului este necesară într-o situație în care un fotorezistor complet iluminat își reduce brusc rezistența. Și modelarea tensiunii este pentru valori previzibile la portul analogic. De fapt, pentru o funcționare normală cu fotorezistoarele noastre, este suficientă o rezistență de 1K.

Prin schimbarea valorii rezistorului, putem „deplasa” nivelul de sensibilitate pe laturile „întunecate” și „luminoase”. Deci, 10 K vor da o schimbare rapidă a apariției luminii. În cazul 1K, senzorul de lumină va detecta mai precis nivelurile de lumină ridicate.

Dacă utilizați un modul senzor de lumină gata făcut, atunci conexiunea va fi și mai ușoară. Conectăm ieșirea modulului VCC la conectorul de 5V de pe placă, GND la masă. Conectăm pinii rămași la conectorii arduino.

Dacă există o ieșire digitală pe placă, atunci o trimitem la pinii digitali. Dacă analog - atunci analog. În primul caz, vom primi un semnal de declanșare - depășind nivelul de iluminare (pragul de declanșare poate fi ajustat folosind un rezistor de reglare). De la pinii analogici, vom putea primi o valoare de tensiune proporțională cu nivelul real de iluminare.

Un exemplu de schiță a unui senzor de lumină pe un fotorezistor

Am conectat circuitul cu fotorezistorul la arduino, ne-am asigurat că totul a fost făcut corect. Acum rămâne să programăm controlerul.

Este destul de ușor să schițați un senzor de lumină. Trebuie doar să eliminăm valoarea tensiunii curente de pe pinul analogic la care este conectat senzorul. Acest lucru se face folosind funcția analogRead () cunoscută de noi toți. Apoi putem efectua unele acțiuni, în funcție de nivelul de lumină.

Să scriem o schiță pentru un senzor de lumină care pornește sau oprește un LED conectat după cum urmează.

Algoritmul de lucru este după cum urmează:

  • Determinați nivelul semnalului de la pinul analogic.
  • Comparăm nivelul cu valoarea pragului. Valoarea maximă va corespunde întunericului, valoarea minimă va corespunde iluminării maxime. Vom alege valoarea pragului egală cu 300.
  • Dacă nivelul este mai mic decât pragul, este întuneric, trebuie să porniți LED-ul.
  • În caz contrar, opriți LED-ul.
#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); if ( val< 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

Acoperind fotorezistorul (cu mâinile noastre sau cu un obiect opac), putem observa pornirea și oprirea LED-ului. Prin modificarea parametrului prag din cod, putem forța becul să fie pornit / oprit la diferite niveluri de iluminare.

Când montați, încercați să poziționați fotorezistorul și LED-ul cât mai departe posibil, astfel încât mai puțină lumină din LED-ul luminos să atingă senzorul de lumină.

Senzor de lumină și schimbare lină a luminozității luminii de fundal

Puteți modifica proiectul astfel încât, în funcție de nivelul de iluminare, să se schimbe luminozitatea LED-ului. Vom adăuga următoarele modificări algoritmului:

  • Vom schimba luminozitatea becului prin PWM, trimitând valori de la 0 la 255 la pinul cu LED folosind analogWrite ().
  • Pentru a converti valoarea digitală a nivelului de lumină de la senzorul de lumină (de la 0 la 1023) în gama PWM a luminozității LED-urilor (de la 0 la 255), vom folosi funcția map ().

Exemplu de schiță:

#define PIN_LED 10 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); int ledPower = hartă (val, 0, 1023, 0, 255); // Conversia valorii rezultate într-un nivel de semnal PWM. Cu cât este mai mică valoarea iluminării, cu atât mai puțină energie trebuie să furnizăm LED-ului prin PWM. analogWrite (PIN_LED, ledPower ); // Schimbați luminozitatea)

În cazul unei alte metode de conectare, în care semnalul de la portul analogic este proporțional cu gradul de iluminare, va fi necesară „inversarea” suplimentară a valorii, scăzând-o din maxim:

Int val = 1023 - analogRead (PIN_PHOTO_RESISTOR);

Circuit senzor de lumină pe fotorezistor și releu

Exemple de schiță pentru lucrul cu un releu sunt date în articolul despre programarea unui releu în arduino. În acest caz, nu este nevoie să facem gesturi complexe: după determinarea „întunericului”, pornim pur și simplu releul, dăm valoarea corespunzătoare pinului său.

#define PIN_RELAY 10 #define PIN_PHOTO_SENSOR A0 void setup () (pinMode (PIN_RELAY, OUTPUT); digitalWrite (PIN_RELAY, HIGH);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); if (val< 300) { // Светло, выключаем реле digitalWrite(PIN_RELAY, HIGH); } else { // Темновато, включаем лампочку digitalWrite(PIN_RELAY, LOW); } }

Concluzie

Proiectele care utilizează un senzor de lumină bazat pe un fotorezistor sunt destul de simple și eficiente. Puteți implementa multe proiecte interesante, în timp ce costul echipamentelor nu va fi mare. Fotorezistorul este conectat conform circuitului divizor de tensiune cu rezistență suplimentară. Senzorul este conectat la un port analogic pentru a măsura diferite valori ale nivelului de lumină sau la unul digital dacă ne pasă doar de faptul întunericului. În schiță, citim pur și simplu datele din portul analog (sau digital) și decidem cum să reacționăm la schimbări. Să sperăm că acum „ochi” atât de simpli vor apărea în proiectele tale.

În lecția anterioară, ai învățat cum funcționează un potențiometru, a cărui rezistență se schimbă în funcție de rotația mânerului - tija. În acest tutorial, veți afla despre un fotorezistor, care își schimbă rezistența în funcție de cât de multă lumină atinge elementul său senzitiv.

Arduino nu poate interpreta rezistența în sine, deoarece se ocupă de tensiune, deci acest circuit folosește un divizor de tensiune. Divizorul constă de obicei din două rezistențe, în cazul nostru unul dintre care va fi fotorezistorul nostru, iar tensiunea de citire a Arduino este luată din punctul mediu dintre ele, alimentată la intrarea analogică Arduino (pinul 0). Divizorul va emite tensiune înaltă atunci când fotorezistorul primește multă lumină și scăzut atunci când fotorezistorul primește puțină lumină (întuneric).

În acest tutorial, veți avea nevoie de:

1. Arduino UNO - 1 buc.

2. LED - 1 buc.

3. Rezistor 10 Kom. - 1 BUC.

4. Rezistor de la 200 la 560 ohmi. - 1 BUC.

5. Fotorezistor

6. Conectarea firelor.

Arduino și Photoresistor. Schema de conexiune pentru lecția numărul 6

Descărcați lecția cu o schiță și o descriere detaliată a lecției:

Kitul de experiment ArduinoKit
Descărcați codul programului pentru experimentul nr. 6:

Vizualizarea lecției create pe schema de aspect:

Ca urmare, ar trebui să vedeți LED a cărui luminozitate va fi crește sau scadeîn funcție de câtă lumină lovește fotorezistorul. Dacă nu-și schimbă luminozitatea, asigură-te că tu corect asamblate sistem. Și asigurați-vă că codul programului este încărcat la bordul Arduino.

Noroc tuturor! Așteptăm comentariile dvs. despre ARDUINO LECȚIA 6 - FOTORESISTOR.

Pentru următorul nostru proiect, vom folosi un fotorezistor. Și vom lua în considerare punerea în aplicare a unei lumini de noapte în dormitor, care se va aprinde automat când este întuneric și se va stinge când devine lumină.

Rezistența fotorezistorului depinde de lumina care intră în el. Folosind un fotorezistor împreună cu un rezistor convențional de 4.7k ohm, obținem un divizor de tensiune în care tensiunea care trece prin fotorezistor se schimbă, în funcție de nivelul de iluminare.

Tensiunea de la divizor, o aplicăm la intrarea Arduino ADC. Acolo comparăm valoarea primită cu un anumit prag și aprindem sau oprim lampa.

Diagrama schematică a divizorului este prezentată mai jos. Când iluminarea crește, rezistența fotorezistorului scade și, în consecință, crește tensiunea la ieșirea divizorului (și la intrarea ADC). Când iluminarea scade, este adevărat opusul.

Fotografia de mai jos prezintă circuitul asamblat pe un panou. Tensiunile 0V și 5V sunt preluate de la Arduino. Leg A0 este utilizat ca intrare ADC.

O schiță Arduino este prezentată mai jos. În acest tutorial, pornim și oprim LED-ul, care este încorporat în placa Arduino. O lumină LED mai strălucitoare, vă puteți conecta la piciorul 13 (printr-un rezistor de ~ 220 ohmi). Dacă veți conecta o sarcină mai puternică, cum ar fi o lampă incandescentă, atunci aceasta ar trebui conectată printr-un releu sau tiristor.

Există secțiuni comentate în codul programului, acestea sunt utilizate pentru depanare. Va fi posibil să controlați valoarea ADC (de la 0 la 1024). De asemenea, trebuie să schimbați valoarea de 500 (prag de pornire și oprire) din cod pe cea pe care o veți selecta empiric schimbând iluminarea.

/ * ** Lumina de noapte ** ** www.hobbytronics.co.uk * / int sensorPin = A0; // setați piciorul de intrare ADC nesemnat int sensorValue = 0; // valoarea digitală a configurării golului fotorezistorului () (pinMode (13, OUTPUT); Serial.begin (9600); // porniți ieșirea de date seriale (pentru testare)) bucla voidă () (sensorValue = analogRead (sensorPin); / / citiți valoarea din fotorezistor dacă (senzorValoare<500) digitalWrite(13, HIGH); // включаем else digitalWrite(13, LOW); // выключаем // Для отладки раскомментируйте нижеследующие строки //Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024) //Serial.println(""); // возврат каретки //delay(500); }