Fotoelementa pievienošana arduino. Fotorezistora pievienošana arduino un darbs ar gaismas sensoru

Fotorezistori sniedz iespēju noteikt gaismas intensitāti.

Tie ir mazi, lēti, prasa maz enerģijas, ir viegli lietojami un praktiski neiznīcināmi.

Šī iemesla dēļ tos bieži izmanto rotaļlietās, sīkrīkos un sīkrīkos. Protams, DIY projekti, kuru pamatā ir Arduino, nevarēja ignorēt šos brīnišķīgos sensorus.

Fotorezistori būtībā ir rezistori, kas maina savu pretestību (mēra omos) atkarībā no tā, cik daudz gaismas sasniedz to sensoros elementus. Kā minēts iepriekš, tie ir ļoti lēti, tiem ir dažādi izmēri un specifikācijas, taču vairums no tiem nav īpaši precīzi. Katrs fotorezistors darbojas nedaudz savādāk nekā otrs, pat ja tie ir no vienas un tās pašas ražotāja partijas. Rādījumu atšķirības var būt līdz 50% vai vairāk! Tāpēc jums nevajadzētu paļauties uz mērījumu precizitāti. Tos galvenokārt izmanto, lai noteiktu kopējo apgaismojuma līmeni īpašos, “lokālos”, nevis “absolūtos” apstākļos.

Fotorezistori ir lieliska izvēle tādu problēmu risināšanai kā "apkārt ir tumšs vai gaišs", "vai sensora priekšā ir kaut kas (kas ierobežo gaismas plūsmu)", "kurai zonai ir maksimālais apgaismojuma līmenis".


Fotorezistoru vidējie tehniskie parametri

Tālāk norādītās specifikācijas attiecas uz fotorezistoriem no veikala Adafruit. Šiem fotorezistoriem ir līdzīgas īpašības kā PDV-P8001. Gandrīz visiem fotorezistoriem ir atšķirīgi tehniskie parametri, lai gan tie darbojas ļoti līdzīgi. Ja pārdevējs sniedz jums saiti uz jūsu fotorezistora datu lapu, pārbaudiet tos, nevis to, kas norādīts tālāk.

  • Izmērs: apaļš, 5 mm (0,2 collas) diametrā (citu fotorezistoru diametrs var būt līdz 12 mm / 0,4 collas!).
  • Cena: apmēram USD 1,00 veikalā Adafruit.
  • Pretestības diapazons: 200 kΩ (tumšs) līdz 10 kΩ (gaišs).
  • Jutības diapazons: sensori uztver viļņu garumus no 400 nm (violeta) līdz 600 nm (oranža).
  • Barošanas avots: jebkurš ar spriegumu līdz 100 V, izmantojiet vidējo strāvu aptuveni 1 mA (atkarībā no barošanas sprieguma).

Problēmas, izmantojot vairākus sensorus

Ja, pievienojot papildu sensorus, izrādās, ka temperatūra nav konsekventa, tas nozīmē, ka sensori pārklājas viens ar otru, nolasot informāciju no dažādām analogajām tapām. To var novērst, pievienojot divus rādījumus ar aizkavi un parādot pirmo.

Gaismas līmeņa mērīšana

Kā jau teicām iepriekš, fotorezistora pretestība mainās atkarībā no apgaismojuma līmeņa. Kad ir tumšs, rezistora pretestība palielinās līdz 10 megaohm. Palielinoties gaismas līmenim, pretestība samazinās. Zemāk esošajā grafikā parādīta aptuvenā sensora pretestība dažādos apgaismojuma apstākļos. Neaizmirstiet, ka katra atsevišķa fotorezistora īpašības nedaudz atšķirsies, šīs īpašības atspoguļo tikai vispārējo tendenci.


Lūdzu, ņemiet vērā, ka raksturlielums ir nelineārs, bet tam ir logaritmisks raksturs.

Fotorezistori neuztver visu gaismas viļņu diapazonu. Lielākajā daļā versiju tie ir jutīgi pret gaismas viļņiem diapazonā no 700 nm (sarkans) līdz 500 nm (zaļš).


Tas nozīmē, ka gaismas viļņa garuma diapazona norāde, kas atbilst zilai krāsai, nebūs tik efektīva kā zaļā/dzeltenā diapazona norāde!

Kas ir mērvienība "lukss"?

Lielākajā daļā datu lapu tiek izmantoti luksi (lx), lai norādītu pretestību noteiktā apgaismojuma līmenī. Bet kas tas ir - lx? Šī nav metode, ko mēs izmantojam, lai aprakstītu spilgtumu, tāpēc tā ir saistīta tieši ar sensoru. Zemāk ir atbilstības tabula, kas ņemta no Vikipēdijas.


Fotorezistora pārbaude

Vienkāršākais veids, kā pārbaudīt savu fotorezistoru, ir savienot multimetru pretestības mērīšanas režīmā ar diviem sensora kontaktiem un izsekot pretestības izmaiņām izejā, kad pārklājat sensoru ar plaukstu, izslēdzat gaismu telpā utt. Tā kā pretestība mainās lielos diapazonos, automātiskais režīms darbojas labi. Ja jums nav automātiskā režīma vai tas nedarbojas pareizi, izmēģiniet 1 MΩ un 1 kΩ diapazonus.



Fotorezistora savienojums

Tā kā fotorezistori būtībā ir pretestība, tiem nav polaritātes. Tas nozīmē, ka jūs varat savienot tos ar viņu kājām "kā vien jums patīk" un viņi strādās!


Fotorezistori ir patiešām nepretenciozi. Jūs varat tos pielodēt, uzstādīt uz maizes dēļa, izmantot saspraudes savienošanai. Vienīgais, kas jādara, ir pārāk bieži saliekt "kājas", jo tās var viegli nolūzt.


Fotorezistoru izmantošana

Analogā sprieguma nolasīšanas metode

Vienkāršākais lietošanas gadījums ir savienot vienu kāju ar strāvas avotu, bet otru ar zemējumu, izmantojot nolaižamo rezistoru. Pēc tam punkts starp nemainīgas vērtības rezistoru un mainīgo rezistoru - fotorezistoru - tiek savienots ar mikrokontrollera analogo ieeju. Zemāk esošajā attēlā parādīta Arduino elektroinstalācijas shēma.


Šajā piemērā ir pievienots 5 V barošanas avots, taču atcerieties, ka tikpat labi varat izmantot arī 3,3 V. Šajā gadījumā analogās sprieguma vērtības būs diapazonā no 0 līdz 5 V, tas ir, aptuveni vienādas ar barošanas spriegums.

Tas darbojas šādi: kad fotorezistora pretestība samazinās, fotorezistora un nolaižamā rezistora kopējā pretestība samazinās no 600 kOhm līdz 10 kOhm. Tas nozīmē, ka palielinās strāva caur abiem rezistoriem, kas izraisa sprieguma pieaugumu 10K rezistorā. Tas ir viss!


Šajā tabulā parādītas aptuvenās analogās sprieguma vērtības, pamatojoties uz apgaismojuma / pretestības līmeni ar 5 V barošanas spriegumu un 10 kΩ nolaižamo rezistoru.

Ja vēlaties izmantot sensoru spilgti apgaismotā vietā un izmantot 10K rezistoru, tas ātri izpūstas. Tas ir, tas gandrīz uzreiz sasniegs pieļaujamo sprieguma līmeni 5 V un nespēs atšķirt intensīvāku apgaismojumu. Šajā gadījumā jums vajadzētu aizstāt 10K rezistoru ar 1K rezistoru. Izmantojot šādu shēmu, rezistors nespēs noteikt tumsas līmeni, bet labāk ir noteikt augsta apgaismojuma nokrāsas. Kopumā jums vajadzētu spēlēt ar šo atkarībā no jūsu apstākļiem!

Varat arī izmantot "Axel Benz" formulu minimālās un maksimālās pretestības vērtības pamata mērījumiem ar multimetru un pēc tam noteikt rezistora pretestības vērtību, izmantojot: Novelciet pretestību = kvadrātsakne (Rmin * Rmax), kas sniedz daudz labāku rezultātu. rezultāts formā:


Augšējā tabulā parādītas aptuvenās analogā sprieguma vērtības, izmantojot 5 V sensoru ar 1 kΩ nolaižamo rezistoru.

Neaizmirstiet, ka mūsu metode nedod mums lineāru sprieguma atkarību no apgaismojuma! Turklāt katrs sensors atšķiras pēc tā īpašībām. Palielinoties gaismas līmenim, paaugstināsies analogais spriegums un samazināsies pretestība:

Vo = Vcc (R / (R + fotoelements))

Tas ir, spriegums ir apgriezti proporcionāls fotorezistora pretestībai, kas, savukārt, ir apgriezti proporcionāls apgaismojuma līmenim.

Vienkāršs fotorezistora izmantošanas piemērs

Šī skice ņem analogos rādījumus, lai noteiktu LED spilgtumu. Jo tumšāks tas ir, jo spilgtāk spīdēs LED! Atcerieties, ka, lai šis piemērs darbotos, gaismas diode ir jāpievieno PWM tapai. Šajā gadījumā tiek izmantota tapa 11.


Šajā piemērā tiek pieņemts, ka esat iepazinies ar Arduino programmēšanas pamatiem.

/ * vienkārša fotorezistoru pārbaudes skice.

Pievienojiet vienu fotorezistora kāju pie 5V, otru ar Analog 0 tapu.

Pēc tam pievienojiet 10K rezistoru starp analogo 0 un zemi.

Pievienojiet LED caur rezistoru starp tapu 11 un zemi. * /

int photocellPin = 0; // sensors un 10k nolaižamais rezistors savienots ar a0

int fotoelements Lasīšana; // nolasīt analogās vērtības no sensora dalītāja

int LEDpin = 11; // savienojiet sarkano gaismas diodi ar kontaktu 11 (PWM tapa)

int LEDspilgtums; //

spēkā neesošs iestatījums (neesošs) (

// mēs nosūtīsim atkļūdošanas informāciju seriālajam monitoram

Serial.begin (9600);

tukšuma cilpa (tukšums) (

Serial.println (fotošūnu lasīšana); // analogās vērtības no sensora

// LED iedegas spilgtāk, ja sensora gaismas līmenis samazinās

// tas nozīmē, ka mums ir jāapgriež nolasītās vērtības no 0-1023 uz 1023-0

fotoelementu lasīšana = 1023 - fotoelementu lasīšana;

// tagad mums ir jāpārvērš diapazons 0-1023 uz 0-255, jo tas ir analogWrite izmantotais diapazons

LEDspilgtums = karte (fotoelementu lasīšana, 0, 1023, 0, 255);

analogWrite (LEDpin, LEDbrightness);


Varat izmēģināt citus rezistorus atkarībā no gaismas līmeņa, kuru vēlaties izmērīt!

Vienkāršs kods analogās gaismas līmeņa mērījumiem

Skicē netiek veikti aprēķini, ir tikai vērtību attēlojums, kas tiek interpretēts kā apgaismojuma līmenis. Tas ir pietiekami daudziem projektiem.


/ * Vienkārša fotorezistora pārbaudes skice.

Pievienojiet vienu fotorezistora kāju pie 5V, otru ar Analog 0 tapu.

Pēc tam pievienojiet 10k rezistora tapu zemei, bet otro - analogajai tapai Analog 0 * /

int photocellPin = 0; // sensors un 10k nolaižamais rezistors savienots ar a0

int fotoelements Lasīšana; // dati nolasīti no analogās tapas

spēkā neesošs iestatījums (neesošs) (

// Nodod atkļūdošanas informāciju seriālajam monitoram

Serial.begin (9600);

tukšuma cilpa (tukšums) (

fotoelementu lasīšana = analogRead (fotoelementa taps);

Serial.print ("Analogs lasījums =");

Serial.print (fotošūnu lasīšana); // analogās vērtības

if (fotošūnu lasīšana

Serial.println ("- Dark");

) else if (fotošūnu lasīšana

Serial.println ("- Dim");

) else if (fotošūnu lasīšana

Serial.println ("- Light");

) else if (fotošūnu lasīšana

Serial.println ("- Bright");

Serial.println ("- Ļoti spilgti");

Šī pārbaude tika veikta istabā dienas laikā. Es pārklāju sensoru ar roku un pēc tam ar auduma gabalu.


Vērtību nolasīšana no fotorezistora, neizmantojot analogās tapas

Tā kā fotorezistori būtībā ir parastie rezistori, tos var izmantot pat tad, ja jūsu mikrokontrolleram nav analogo kontaktu (vai ja visas analogās tapas ir aizņemtas). Šīs metodes pamatā ir rezistoru un kondensatoru pamatīpašības. Ja paņemat kondensatoru, kas var pārnest potenciālu, un savienojat to ar strāvas avotu (piemēram, 5 V) caur rezistoru, sprieguma izmaiņas notiks pakāpeniski. Jo lielāka ir rezistora pretestība, jo lēnāk mainīsies spriegums.

Zemāk ir oscilogrammas daļa, kas raksturo to, kas tieši notiek ar digitālo tapu (dzeltenā krāsā). Zilā līnija parāda, kad pati Arduino skice sāk darboties un kad tā pabeidz darbu (apmēram 1,2 ms ilga sadaļa).


Ja mēs zīmējam vienkāršas analoģijas, tad kondensators darbojas kā grozs, un rezistors darbojas kā caurule. Būs nepieciešams ilgs laiks, lai grozu piepildītu ar tievo cauruli. Atkarībā no caurules biezuma groza piepildīšanas ātrums mainīsies.


Mūsu gadījumā "grozs" ir 0,1 μF keramikas rezistors. Varat eksperimentēt ar kondensatora kapacitāti. Un šis rādītājs tieši ietekmēs laiku. Ja vēlaties izmērīt gaismas līmeni, izmantojiet 1uF kondensatoru. Ja strādājat vājā apgaismojumā, varat izmantot 0,01 uF kondensatoru.

/ * vienkārša skice, lai pārbaudītu fotorezistora veiktspēju.

Pievienojiet vienu fotorezistora kāju strāvai, otru - pie 2.

Pēc tam pievienojiet vienu 0,1 uF kondensatora kāju pie kontakta 2, bet otru ar zemējumu * /

int photocellPin = 2; // fotorezistors, kas savienots ar 2. tapu

int fotoelements Lasīšana; // digitālās vērtības

int ledPin = 13; // varat izmantot iebūvēto LED

spēkā neesošs iestatījums (neesošs) (

// nosūtīt informāciju atkļūdošanai, lai tā tiktu parādīta seriālā monitora logā

Serial.begin (9600);

pinMode (ledPin, OUTPUT); // izmantot LED kā izvadi

tukšuma cilpa (tukšums) (

// lasīt rādījumus no sensora, izmantojot RCtime tehnoloģiju

fotoelementu nolasīšana = RCtime (fotoelementa taps);

if (fotošūnu lasīšana == 30000) (

// ja rādījumi sasniedz 30 000, tas nozīmē, ka esam sasnieguši robežvērtību

Serial.println ("Nekas nav savienots!");

Serial.print ("RCtime lasījums =");

Serial.println (fotošūnu lasīšana); // lasītu analogo datu plūsma

// jo gaišāks, jo biežāk mirgo LED!

digitalWrite (ledPin, HIGH);

kavēšanās (fotošūnu lasīšana);

digitalWrite (ledPin, LOW);

kavēšanās (fotošūnu lasīšana);

// izmantojiet digitālo tapu, lai izmērītu pretestību

// mēs to darām, pievadot strāvu kondensatoram un

// aprēķinot, cik ilgs laiks būs nepieciešams, lai sasniegtu Vcc / 2 (lielākajai daļai Arduinos tas ir 2,5 V)

int RCtime (int RCpin) (

int lasījums = 0; // sākas ar 0

// inicializējiet tapu kā izvadi un iestatiet to uz LOW (zeme)

pinMode (RCpin, OUTPUT);

digitalWrite (RCpin, LOW);

// Tagad iestatiet tapu kā ievadi un ...

pinMode (RCpin, INPUT);

while (digitalRead (RCpin) == LOW) (// saskaitiet laiku, kas nepieciešams, lai iegūtu HIGH vērtību

lasīšana ++; // laika palielinājums

ja (lasīšana == 30000) (

// ja nonākam līdz šim līmenim, pretestība ir tik liela

// ka visticamāk nekas nav saistīts!

pārtraukums; // iziet no cilpas

Arduino projektu video, izmantojot fotorezistorus

Motora apgriezienu skaita maiņa, izmantojot fotorezistoru:

Robots izseko kustības trajektoriju, izmantojot fotorezistoru:

Atstājiet savus komentārus, jautājumus un dalieties ar savu personīgo pieredzi zemāk. Diskusijā bieži dzimst jaunas idejas un projekti!

Fotorezistors
IMHO apdraudētās sugas. Pēdējo reizi es viņu redzēju bērnībā. Parasti tas ir tāds metāla apaļkoks ar stikla logu, kurā tādu var redzēt. Apgaismojot, tā pretestība krītas, kaut arī nenozīmīgi, trīs līdz četras reizes.

Fototranzistors
Pēdējā laikā ar tiem esmu saskāries pastāvīgi, neizsīkstošs fototranzistoru avots - piecu collu disketes. Pēdējo reizi es par netīrības cenu radio krāmu tirgū noliku apmēram 5 gabalus kabatlakatiņu no atklājumiem, tur tranzistori atrodas pretī atverēm disketes ierakstīšanas un rotācijas kontrolei. Vēl viens dubultā fototranzistors (vai varbūt fotodiode, kā tas būtu paveicies) atrodas parastā lodīšu pele.
Tas izskatās pēc parasta LED, tikai korpuss ir caurspīdīgs. Tomēr arī gaismas diodes ir vienādas, lai sajauktu, kurš no viņiem kuram nospļauj tikai vienu reizi. Bet tas nav svarīgi, partizānu var viegli aprēķināt ar parastu multimetru. Pietiek ieslēgt ommetru starp tā emitētāju un kolektoru (tam nav pamatnes) un uzspīdēt, jo tā pretestība sabruks vienkārši katastrofāli - no desmitiem kiloomu līdz dažiem omiem. Tas, kas man ir robota zobratu griešanās detektorā, maina pretestību no 100 kOhm līdz 30 omiem. Fototranzistors darbojas kā parasts - tur strāvu, bet kā vadības darbība ir nevis bāzes strāva, bet gaismas plūsma.

Fotodiode
Ārēji tas neatšķiras no fototranzistora vai parastas gaismas diodes caurspīdīgā korpusā. Kā arī dažreiz metāla korpusos ir senas fotodiodes. Parasti tās ir lāpstas ierīces, FD-cheto zīmoli. Tāds metāla cilindrs ar logu galā un no dupša izlīpuši vadi.

Atšķirībā no fototranzistora, tas var darboties divos dažādos režīmos. Fotoelementā un fotodiodē.
Pirmajā, fotogalvaniskajā, versijā fotodiode uzvedas kā saules baterija, tas ir, tā spīd uz to - spailēs ir radies vājš spriegums. To var stiprināt un pielietot =). Bet daudz vieglāk ir strādāt fotodiodes režīmā. Šeit mēs pieliekam fotodiodei apgriezto spriegumu. Tā kā tā ir fotogrāfija, bet diode, tad spriegums neies pretējā virzienā, kas nozīmē, ka tā pretestība būs tuvu pārrāvumam, bet, ja tas ir iedegts, tad diode sāks ļoti stipri griezties un tās pretestība strauji samazināsies. Un krasi, par pāris kārtām, kā fototranzistors.

Spektrs
Papildus ierīces veidam tai ir arī darba spektrs. Piemēram, infrasarkanajam spektram uzasināts fotodetektors (un tādu ir lielākā daļa) praktiski nereaģē uz zaļas vai zilas gaismas diodes gaismu. Tas slikti reaģē uz dienasgaismas spuldzi, bet labi reaģē uz kvēlspuldzi un sarkanu LED, un par infrasarkano nav ko teikt. Tāpēc nebrīnieties, ja jūsu fotosensors slikti reaģē uz gaismu, iespējams, esat pieļāvis kļūdu ar spektru.

Savienojums
Tagad ir pienācis laiks parādīt, kā to savienot ar mikrokontrolleru. Ar fotorezistoru viss skaidrs, te nav nekādu problēmu - ņem un piekabini kā pēc shēmas.
Fotodiode un fototransistors ir sarežģītāki. Ir nepieciešams noteikt, kur atrodas viņa anods / katods vai emitētājs / kolektors. Tas tiek darīts vienkārši. Jūs paņemat multimetru, ieslēdzat to diodes sastādīšanas režīmā un pieķeraties savam sensoram. Multimetrs šajā režīmā parāda sprieguma kritumu pāri diodei / tranzistoram, un sprieguma kritums šeit galvenokārt ir atkarīgs no tā pretestības U = I * R. Jūs paņemat un iededziet sensoru, sekojot rādījumiem. Ja skaitlis ir strauji samazinājies, tad jūs uzminējāt pareizi un sarkanais vads atrodas uz katoda / kolektora, bet melnais - uz anoda / emitera. Ja tas nav mainījies, nomainiet tapas. Ja tas nepalīdz, tad vai nu detektors ir beigts, vai arī jūs mēģināt saņemt atbildi no LED (starp citu, LED var kalpot arī kā gaismas detektori, bet tas nav tik vienkārši. Tomēr, kad man ir laikam es jums parādīšu šo tehnoloģisko perversiju).


Tagad par ķēdes darbu šeit viss ir elementāri. Aptumšotā stāvoklī fotodiode nepārlaiž strāvu pretējā virzienā, arī fototranzistors ir aizvērts, un fotorezistora pretestība ir ļoti augsta. Ieejas pretestība ir tuvu bezgalībai, kas nozīmē, ka ieejai būs pilns barošanas spriegums aka loģiskā vienība. Tagad ir vērts iedegt diodi / tranzistoru / rezistoru, jo pretestība strauji samazinās, un izeja izrādās cieši novietota uz zemes vai ļoti tuvu zemei. Jebkurā gadījumā pretestība būs daudz zemāka par 10kΩ rezistoru, kas nozīmē, ka spriegums pēkšņi pazudīs un būs kaut kur loģiskā nulles līmenī. AVR un PIC pat rezistoru nevajag likt, pietiek ar iekšējo pievilkšanos. Tātad DDRx = 0 PORTx = 1, un jūs būsiet laimīgs. Nu, pagrieziet to kā parastu pogu. Vienīgās grūtības var rasties ar fotorezistoru - tā pretestība nemazinās tik strauji, tāpēc var nesasniegt nulli. Bet šeit jūs varat spēlēties ar pievilkšanas rezistora izmēru un pārliecināties, ka pretestības izmaiņas ir pietiekamas, lai izietu loģikas līmeni.

Ja ir nepieciešams precīzi izmērīt apgaismojumu, nevis muļķīgi uztvert gaismu / tumsu, tad būs nepieciešams viss savienot ar ADC un padarīt pievilkšanas rezistoru mainīgu, lai pielāgotu parametrus.

Ir arī uzlabots fotosensoru veids - TSOP ir iebūvēts frekvenču detektors un pastiprinātājs, bet par to rakstīšu nedaudz vēlāk.

ZY
Man šeit ir daži parki, tāpēc vietne būs ļoti stulba ar atjauninājumu, es domāju, ka tas būs līdz mēneša beigām. Tad ceru atgriezties tajā pašā ritmā.

Šodien mēs izveidosim shēmas skici un prototipu Arduino izmantojot fotorezistoru. Šeit atrodas fotorezistors, esmu samontējis šādu izkārtojumu, tas izskatās kā Jaungada LED vītne no iepriekšējiem rakstiem.

Mums ir 8 gaismas diodes, tās ir uzstādītas tā, lai īsā kājiņa kreisajā pusē ir mīnus, garā kāja labajā pusē. Tātad tie visi ir uzstādīti, ķēdē tiek izmantots viens 10 kiloomu rezistors, es to paņēmu no komplekta Arduino komplekts, un tiek izmantotas 8 pretestības, kas savienotas ar gaismas diodes pozitīvo kontaktu 220 omi, tas ir savienots šādi.


Lietoti 8 melni vadi ir negatīvi, un zaļi 8 gabali - kontroles tapas no divpadsmitās līdz piektajai. Atkļūdošanas procesā ārkārtīgi melnais tika aizstāts ar zaļu, bet par to vēlāk.

Fotorezistors ir šeit, blakus 10 kiloomu rezistors, zilais džemperis iet uz mīnusu, oranžais ir savienots vienā galā ar viduspunktu, starp rezistoru un fotorezistoru, otrs gals pie plates Arduino, A0 (analogā tapa).

Sarkanais ir 5 volti, un ķēde darbosies caur šo sprieguma dalītāju, gaismas diodes iedegsies atkarībā no apgaismojuma līmeņa. Labos LED, konstrukcija diezgan ļodzīga. Atgriezīsimies pie modeļa, bet tagad sāksim rakstīt skici.

Izveidosim jaunu projektu un sāksim rakstīt, deklarēsim konstantes, vairākus gabalus, lai tas ir tips starpt, tas būs tapu skaits, jo ķēdē ir 8 gaismas diodes. Tas norādīs, cik LED tika izmantots ķēdē.

const int NbrLEDs = 8;

Izveidosim masīvu ar tapu numuriem, izmantosim 5 6 7 8 9 10 11 12 digitālos savienotājus, norādīsim pin numuru, uz kura ir noņemts apgaismojuma līmenis, deklarēsim fotorezistora mainīgo, sensora vērtību un arī apgaismojuma līmeni tā. ka mēs varam tos sadalīt ar tapām.

const int ledPins = (5, 6, 7, 8, 9, 10, 11, 12); const int photocellPin = A0; int sensorValue = 0; int ledLevel = 0;

Iestatīšanas apakšprogrammā mēs ierakstīsim cilpu, kurā, lai nepiešķirtu katru vērtību, kas iziet caur pinMode, mēs cilpu cauri visiem tapām, piešķirsim tām pinmode vērtības no masīva un piešķirsim OUTPUT vērtību katra tapa.

spēkā neesošs iestatījums () (for (int LED = 0; led< NbrLEDs; led++) { pinMode(ledPins, OUTPUT); } }

Principā jūs to nevarētu izdarīt, jūs varētu norādīt pinmode un pēc tam rakstīt pieci, tad 6 un tā tālāk, taču tas ir ļoti ilgs laiks, un šī ir mežonīga barbariska metode. Tāpēc cilpā mēs iziesim cauri visām tapām vienā piegājienā.

pinMode (5, OUTPUT); pinMode (6, OUTPUT);

Ciklā mēs iegūstam sensora vērtību, nolasot caur analogRead no tapas A0.

Tālāk sadalīsim sensora vērtību, izmantojot kartes funkciju, iegūstam sensora vērtību un, pamatojoties uz apgaismojuma līmeni, ar jutību 300 līdz maksimālajai vērtībai 1023 , tiks izplatīts pa 8 tapām, par kurām ir ziņots iepriekš.

Skatiet arī video Arduino fotorezistors un gaismas diodes - (video), saite tiks atvērta jaunā cilnē.

Tālāk mēs iziesim cauri visām tapām, tāpēc pievienojām iekavas, sākot ar pirmo LED, ja skaitītājs nav lielāks par 8, mēs pievienosim, un tad mēs pārbaudīsim ar nosacījumu, ka, ja LED numurs ir mazāks par apgaismojuma līmeni, mēs izmantosim visu iepriekšējo spriegumu šai LED, izmantojot konstanti HIGH.

Ja nē, mēs pierakstīsim tajā sprieguma trūkumu, un gaismas diode neiedegas.

tukšuma cilpa () (sensorValue = analogRead (photocellPin); ledLevel = karte (sensorValue, 300, 1023, 0, NbrLED); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Koda līdzināšana, izmantojot īsinājumtaustiņu Ctrl+T un tagad paskatīsimies, kas notiks, palaidiet to pārbaudei, saglabājiet skici.

Tātad skices apkopošana, tagad augšupielādējiet to uz Arduino... Atgriezīsimies pie diagrammas, šobrīd mainot apgaismojumu nedeg viens LED sliktā kontakta dēļ.


Tagad salabošu, neaiztiksim, ja izslēgšu apgaismojumu, tad visas gaismas diodes nodzisīs. Ja es apgaismoju fotorezistoru ar lukturīti, vienmērīgi pievienojot apgaismojumu, tad gandrīz visas gaismas diodes būs ieslēgtas, un, attiecīgi, es noņemu, samazinot apgaismojuma līmeni, LED skaits mainīsies.


Ja es ieslēdzu visas gaismas, gandrīz viss ir ieslēgts, kāda ir problēma ar šo LED. Patērēju diezgan daudz laika, te viss pareizi salikts, pat mīnuss tika pārsūtīts ar apzināti apkalpojamu zaļu vadu, bet nez kāpēc ir kaprīzs un nedeg.


Tagad atgriezīsimies pie skices un redzēsim, kas ir nepareizi. Piemērs tika ņemts no oficiālā avota, diskā uz Arduino tur ir tas pats kods.

Skicē apgaismojuma sadalījums iegūts no 300 pirms tam 1023 (maksimālā vērtība), mēģinājums mainīt sākotnējo slieksni uz 0 - nedod nekādus rezultātus.

Bet, ja mēs visu šo vērtību sadalīsim 8 daļās, tad noderēs kalkulators, izrādās, vai nu pretestība pie 10 kiloomiem dod kaut kādu kļūdu, jums ir jādala 1023 ar 8, mēs iegūstam praktiski 128 , ja pareizi uztver, tad 1024 dala ar 8, tas ir un ir 128.

Tagad no 1023 jāatņem 128, jāieliek šeit vērtība 895, tad pēc lietu loģikas visam jābūt kārtībā. Lejupielādēsim un redzēsim, kas mainās.

tukšuma cilpa () (sensorValue = analogRead (photocellPin); ledLevel = karte (sensorValue, 0, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Tagad visas gaismas diodes ir ieslēgtas, mēģināsim bloķēt apgaismojumu vai izslēgsim to ...

Sākuma vērtība joprojām ir jāatgriež 300, jo tā tiek piegādāta šīm pirmajām trim barošanas gaismas diodēm. Mainīsim skicē 0 uz 300, kā tas bija, tas tika darīts ne velti, ielādējiet skici un paskatīsimies, kas šoreiz mainās ...

tukšuma cilpa () (sensorValue = analogRead (photocellPin); ledLevel = karte (sensorValue, 300, 895, 0, NbrLED); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Tagad deg pirmais LED, ar minimālu apgaismojumu, ja visu ieslēdz, un tur man ir 1800 luksi, no diviem metriem LED lentes viss ir kā nākas.


Izslēdzot, fotorezistors uztver atlikušo apgaismojumu telpā, lustra ir ieslēgta, nevis pilnīga tumsa, un tā tiek iedarbināta. Bet, ja jūs apgaismojat ar lukturīti, vienmērīgi pieliekot gaismu fotorezistoram, ķēde darbojas pareizi.


Ja mēs pilnībā izslēgsim gaismu, mēs redzēsim, kas notiek pilnīgā tumsā. Kā redzat, pilnīgas gaismas trūkuma gadījumā fotorezistors reaģē pareizi, gaismas diodes iedegas pakāpeniski, palielinoties apgaismojumam. Kad gaisma ir ieslēgta, viss ir ieslēgts. Tāda ir skice ar life hack - pielāgojot fotorezistora jutību, lai atbilstu jūsu vajadzībām.


Mēs turpinām nodarbību sēriju “”. Šodien mēs savienojam fotorezistoru (fotoelementu) ar Arduino plati. Fotorezistori tiek izmantoti robotos kā gaismas sensori. Rakstā ir video instrukcija, programmas saraksts, savienojuma shēma un nepieciešamie komponenti.

Fotorezistors- rezistors, kura pretestība ir atkarīga no uz tā krītošās gaismas spilgtuma. Mūsu modelī LED ir ieslēgts tikai tad, ja gaismas spilgtums virs fotorezistora ir mazāks par noteiktu, šo spilgtumu var programmēt.

Fotorezistori tiek izmantoti robotikā kā gaismas sensori. Robotā iebūvētais fotorezistors ļauj noteikt apgaismojuma pakāpi, noteikt baltos vai melnos laukumus uz virsmas un atbilstoši tam pārvietoties pa līniju vai veikt citas darbības.

Video instrukcija Arduino modeļa montāžai ar fotorezistoru:

Lai saliktu modeli ar servo piedziņu, mums ir nepieciešams:

  • arduino dēlis
  • 6 vadi "tētis-tētis"
  • fotorezistors
  • Gaismas diode
  • 220 omu rezistors
  • 10k rezistors
  • Arduino IDE programma, kuru var lejupielādēt no Arduino vietnes.

Elektroinstalācijas shēma Arduino modelim ar fotorezistoru:

Arduino fotorezistora savienojuma shēma

Lai šis modelis darbotos, ir piemērota šāda programma (jūs varat vienkārši kopēt programmu uz Arduino IDE):

int led = 13; // mainīgais ar gaismas diodes tapas numuru
int ldr = 0; // un fotorezistors
void setup () // iestatīšanas procedūra
{
pinMode (LED, OUTPUT); // norāda, ka gaismas diode ir izeja
}
void loop () // cilpas procedūra
{
if (analogRead (ldr)< 800) digitalWrite(led, HIGH);
// ja apgaismojuma indekss ir mazāks par 800, ieslēdziet LED
cits digitalWrite (led, LOW); // pretējā gadījumā izslēdziet
}

Šādi izskatās saliktais Arduino modelis ar fotorezistoru:

Gatavs modelis fotorezistora pievienošanai Arduino

Ja gaismas diode nereaģē uz apgaismojuma izmaiņām, mēģiniet mainīt numuru 800 programmā, ja tas ir visu laiku ieslēgts - samaziniet, ja nedeg - palieliniet.

Nodarbību ieraksti:

  1. Pirmā nodarbība:
  2. Otrā nodarbība:
  3. Trešā nodarbība:
  4. Ceturtā nodarbība:
  5. Piektā nodarbība:
  6. Sestā nodarbība:
  7. Septītā nodarbība:
  8. Astotā nodarbība:
  9. Devītā nodarbība:

Visas vietnes "Izklaidējošā robotika" ziņas pēc atzīmes.

Mūsu YouTube kanāls kur tiek publicētas video pamācības.

Jauni raksti

● 13. projekts: fotorezistors. Mēs apstrādājam apgaismojumu, iedegot vai dzēšot gaismas diodes

Šajā eksperimentā mēs iepazīsimies ar analogo sensoru apgaismojuma mērīšanai - fotorezistoru (13.1. att.).

Nepieciešamās sastāvdaļas:

Parasti fotorezistoru izmanto apgaismojuma mērīšanai. Tumsā viņa pretestība ir diezgan liela. Kad gaisma skar fotorezistoru, pretestība samazinās proporcionāli apgaismojumam. Diagramma fotorezistora savienošanai ar Arduino ir parādīta attēlā. 13.2. Lai izmērītu apgaismojumu, ir jāsamontē sprieguma dalītājs, kurā augšdelms tiks attēlots ar fotorezistoru, apakšējo - ar parasts pietiekami lielas novērtējuma rezistors. Mēs izmantosim 10k rezistoru. Mēs savienojam dalītāja vidējo sviru ar Arduino analogo ieeju A0.

Rīsi. 13.2. Fotorezistora pieslēguma shēma Arduino

Uzrakstīsim analogo datu nolasīšanas un nosūtīšanas uz seriālo portu skici. Skices saturs ir parādīts sarakstā 13.1.

Int light; // mainīgais fotorezistora datu glabāšanai nederīga iestatīšana ()(Serial.begin (9600);) tukša cilpa ()(gaisma = analogRead (0); Serial.println (gaisma); aizkave (100);)
Savienojuma procedūra:

1. Mēs savienojam fotorezistoru saskaņā ar shēmu attēlā. 13.2.
2. Ielādējiet skici no saraksta 13.1 Arduino platē.
3. Ar roku regulējam fotorezistora apgaismojumu un novērojam mainīgo vērtību izvadi uz seriālo portu, atceramies rādījumus pie pilna telpas apgaismojuma un pie pilnīgas gaismas plūsmas pārklāšanās.

Tagad izveidosim gaismas indikatoru, izmantojot LED rindu ar 8 LED. Iedegto gaismas diožu skaits ir proporcionāls pašreizējam apgaismojumam. Mēs saliekam gaismas diodes saskaņā ar diagrammu attēlā. 13.3 izmantojot 220 omu ierobežojošos rezistorus.

Rīsi. 13.3. Fotorezistora un gaismas diožu pieslēguma shēma Arduino


Skices saturs pašreizējā apgaismojuma parādīšanai LED joslā ir parādīts sarakstā 13.2.

// Kontakts gaismas diožu pievienošanai const int LEDs = (3, 4, 5, 6, 7, 8, 9, 10); const int LIGHT = A0; // Pin A0 fotorezistora ievadei const int MIN_LIGHT = 200; // Apakšējais apgaismojuma slieksnis const int MAX_LIGHT = 900; // augšējais apgaismojuma slieksnis // Mainīgais fotorezistora datu glabāšanai int val = 0; nederīga iestatīšana (){ // Konfigurēt LED tapas kā izvadi for (int i = 0; i<8 ;i++) pinMode(leds[i],OUTPUT); } tukša cilpa ()(val = analogRead (GAISMA); // Izlasi fotorezistora rādījumus // Kartes () funkcijas izmantošana val = karte (val, MIN_LIGHT, MAX_LIGHT, 8, 0); // ierobežojam, lai nepārsniegtu robežas val = ierobežojums (val, 0, 8); // iedegt gaismas diožu skaitu proporcionāli apgaismojumam, // nodzēst pārējo for (int i = 1; i<9 ;i++) { if (i>= val) // iedegas gaismas diodes digitalWrite (LED, HIGH); cits // izslēdziet gaismas diodes digitalWrite (LED, LOW); ) kavēšanās (1000); // pauze pirms nākamā mērījuma }
Savienojuma procedūra:

1. Mēs savienojam fotorezistoru un gaismas diodes saskaņā ar shēmu attēlā. 13.3.
2. Ielādējiet skici no saraksta 13.2 Arduino platē.
3. Ar roku regulējam fotorezistora apgaismojumu un nosakām pašreizējo apgaismojuma līmeni pēc iedegto gaismas diožu skaita (13.3. att.).

Apgaismojuma apakšējo un augšējo robežu ņemam no iegaumētajām vērtībām, veicot eksperimentu ar iepriekšējo skici (13.1. saraksts). Mēs mērogojam starpapgaismojuma vērtību par 8 vērtībām (8 LED) un iedegam gaismas diožu skaitu proporcionāli vērtībai starp apakšējo un augšējo robežu.

Programmu saraksti