Arduino straatlantaarn fotoweerstand. Arduino fotoresistor aansluiting. Lichtsensor voor arduino. Specificaties BH1750FVI Digitale Verlichtingsmodule voor Arduino

Automatisering van de verlichtingsvoorziening in een appartement, in een huis of op straat wordt bereikt door het gebruik van een fotorelais. Als het correct is geconfigureerd, gaat het licht aan bij het vallen van de avond en gaat het uit bij daglicht. Moderne apparaten bevatten een instelling waardoor u de werking afhankelijk van de verlichting kunt instellen. Ze vormen een integraal onderdeel van het "smart home"-systeem, dat een aanzienlijk deel van de verantwoordelijkheden van de eigenaren overneemt. Het fotorelaiscircuit bevat voornamelijk een weerstand die van weerstand verandert onder invloed van licht. Het is eenvoudig te monteren en met uw eigen handen aan te passen.

Operatie principe

Het aansluitschema van het fotorelais omvat een sensor, een versterker en de PR1-fotogeleider verandert de weerstand onder invloed van licht. In dit geval verandert de grootte van de elektrische stroom die er doorheen gaat. Het signaal wordt versterkt door een samengestelde transistor VT1, VT2 (Darlington-circuit) en gaat van daaruit naar de actuator, die K1 is.

In het donker is de weerstand van de fotosensor enkele mΩ. Onder invloed van licht neemt het af tot enkele kΩ. In dit geval openen transistors VT1, VT2 en schakelen relais K1 in, die het belastingscircuit via het contact K1.1 regelen. De VD1-diode geeft de zelfinductiestroom niet door wanneer het relais is uitgeschakeld.

Ondanks zijn eenvoud heeft het fotorelaiscircuit een hoge gevoeligheid. Om het op het gewenste niveau in te stellen, wordt de weerstand R1 gebruikt.

De voedingsspanning wordt geselecteerd volgens de parameters van het relais en is 5-15 V. De wikkelstroom is niet groter dan 50 mA. Als u het moet verhogen, kunt u krachtigere transistors en relais gebruiken. De gevoeligheid van het fotorelais neemt toe met toenemende voedingsspanning.

In plaats van een fotoresistor kunt u een fotodiode installeren. Als een sensor met verhoogde gevoeligheid nodig is, worden fototransistorcircuits gebruikt. Het gebruik ervan is aan te raden om elektriciteit te besparen, aangezien de minimale responslimiet van een conventioneel apparaat 5 lux is, wanneer de omringende objecten nog steeds te onderscheiden zijn. De drempel van 2 lx komt overeen met diepe schemering, waarna na 10 minuten de duisternis invalt.

Het is raadzaam om een ​​fotorelais te gebruiken, zelfs bij handmatige bediening van de verlichting, omdat u kunt vergeten het licht uit te doen en de sensor er zelf voor "zorgt". Het is eenvoudig te installeren en de prijs is redelijk betaalbaar.

Fotocel kenmerken

De keuze voor een fotorelais wordt bepaald door de volgende factoren:

  • fotocel gevoeligheid;
  • voedingsspanning;
  • schakelvermogen;
  • externe omgeving.

Gevoeligheid wordt gekenmerkt als de verhouding van de gegenereerde fotostroom tot de waarde van de externe lichtstroom en wordt gemeten in μA / lm. Het hangt af van de frequentie (spectraal) en de lichtintensiteit (integraal). Om de verlichting in het dagelijks leven te regelen, is de laatste eigenschap belangrijk, afhankelijk van de totale lichtstroom.

De nominale spanning vindt u op de behuizing van het apparaat of in het bijbehorende document. Apparaten van buitenlandse productie kunnen verschillende voedingsspanningsnormen hebben.

De belasting van de contacten hangt af van het vermogen van de lampen waarop het fotorelais is aangesloten. Verlichtingsfotorelaiscircuits kunnen zorgen voor het direct inschakelen van lampen via de sensorcontacten of via starters wanneer de belasting groot is.

Buiten bevindt de schemerschakelaar zich onder een verzegeld transparant deksel. Het beschermt tegen vocht en neerslag. Bij het werken in een koude periode wordt verwarming toegepast.

In de fabriek gemaakte modellen

Voorheen werd het fotorelaiscircuit met de hand geassembleerd. Nu is dit niet nodig, aangezien apparaten goedkoper zijn geworden en de functionaliteit is uitgebreid. Ze worden niet alleen gebruikt voor externe of interne verlichting, maar ook voor de besturing van bewateringsinstallaties, ventilatiesystemen, enz.

1. Fotorelais FR-2

Geprefabriceerde modellen worden veel gebruikt in automatiseringsapparatuur zoals straatverlichting. Vaak zie je lichten die overdag vergeten zijn uit te doen. Door de aanwezigheid van fotosensoren is handmatige bediening van de verlichting niet nodig.

Het industriële fotorelais FR-2 circuit wordt gebruikt voor automatische besturing van straatverlichting. Relais K1 is er ook. De FSK-G1 fotoweerstand met weerstanden R4 en R5 is verbonden met de basis van de transistor VT1.

Stroom wordt geleverd door een enkelfasige 220 V. Wanneer de verlichting laag is, heeft de FSK-G1-weerstand een grote waarde en is het signaal op basis van VT1 niet voldoende om deze te openen. Dienovereenkomstig is ook de transistor VT2 gesloten. Relais K1 is bekrachtigd en de werkcontacten zijn gesloten, waardoor de lichten aan blijven.

Wanneer de verlichting toeneemt tot de bedrijfsdrempel, neemt de weerstand van de fotoweerstand af en vervolgens wordt relais K1 uitgeschakeld, waardoor het voedingscircuit van de lamp wordt geopend.

2. Soorten fotorelais

De keuze aan modellen is groot genoeg om de juiste te kunnen kiezen:

  • met een externe sensor die zich buiten de productbehuizing bevindt, waarop 2 draden zijn aangesloten;
  • deluxe 2 - een apparaat met een hoge betrouwbaarheid en kwaliteitsniveau;
  • fotorelais met 12 V voeding en belasting niet hoger;
  • module met timer, gemonteerd op een DIN-rail;
  • IEK-apparaten van een binnenlandse fabrikant met hoge kwaliteit en functionaliteit;
  • AZ 112 - automatische machine met hoge gevoeligheid;
  • ABB, LPX zijn betrouwbare fabrikanten van apparaten van Europese kwaliteit.

Methoden voor het aansluiten van een fotorelais

Voordat u een sensor aanschaft, moet u het door de lampen verbruikte vermogen berekenen en een marge van 20% nemen. Met een aanzienlijke belasting zorgt het straatfotorelaiscircuit voor een extra installatie van een elektromagnetische starter, waarvan de wikkeling moet worden ingeschakeld via de contacten van het fotorelais, en de belasting moet worden geschakeld met vermogenscontacten.

Voor thuis wordt deze methode zelden gebruikt.

Voorafgaand aan de installatie wordt de voedingsspanning ~ 220 V gecontroleerd.De aansluiting vindt plaats via een stroomonderbreker. De fotosensor is zo geïnstalleerd dat het licht van de zaklamp er niet op valt.

Het apparaat gebruikt klemmen voor het aansluiten van draden, wat de installatie vergemakkelijkt. Als ze ontbreken, wordt een aansluitdoos gebruikt.

Door het gebruik van microprocessors heeft het circuit voor het verbinden van het fotorelais met andere elementen nieuwe functies gekregen. Een timer en een bewegingssensor werden toegevoegd aan het algoritme van acties.

Het is handig als de lampen automatisch aangaan als een persoon langs een trap of langs een tuinpad loopt. Bovendien vindt de activering alleen in het donker plaats. Door het gebruik van de timer reageert het fotorelais niet op koplampen van passerende auto's.

Het eenvoudigste bedradingsschema voor een timer met een bewegingssensor is sequentieel. Voor dure modellen zijn speciale programmeerbare circuits ontwikkeld die rekening houden met verschillende bedrijfsomstandigheden.

Fotorelais voor straatverlichting

Om het fotorelais aan te sluiten, wordt het circuit op zijn lichaam aangebracht. Het is te vinden in de documentatie bij het apparaat.

Er komen drie draden uit het apparaat.

  1. Nulgeleider - gebruikelijk voor lampen en fotorelais (rood).
  2. Fase - aangesloten op de apparaatingang (bruin).
  3. Potentiaalgeleider voor het leveren van spanning van het fotorelais naar de lampen (blauw).

Het apparaat werkt volgens het principe van het onderbreken of inschakelen van een fase. De kleurcodering kan per fabrikant verschillen. Als er een aardgeleider in het netwerk zit, is deze niet aangesloten op het apparaat.

In modellen met een ingebouwde sensor, die zich in een transparante behuizing bevindt, is het werk van straatverlichting autonoom. Je hoeft hem alleen van stroom te voorzien.

Varianten met het verwijderen van de sensor worden gebruikt in het geval dat het handig is om de elektronische vulling van het fotorelais in een bedieningspaneel met andere apparaten te plaatsen. Dan is er geen stand-alone installatie, stroomkabels trekken en onderhoud op hoogte nodig. De elektronische unit wordt in de kamer geplaatst en de sensor wordt eruit gehaald.

Kenmerken van een fotorelais voor straatverlichting: schema

Bij het installeren van een fotorelais op straat moet met enkele factoren rekening worden gehouden.

  1. De aanwezigheid van de voedingsspanning en de overeenkomst tussen de vermogens van de contacten en de belasting.
  2. Installatie van apparaten in de buurt van brandbare materialen en in een agressieve omgeving is niet toegestaan.
  3. De basis van het apparaat is aan de onderkant geplaatst.
  4. Er mogen zich geen slingerende voorwerpen voor de sensor bevinden, zoals boomtakken.

De bedrading loopt via de aansluitdoos voor buiten. Het is bevestigd naast het fotorelais.

Selectie fotorelais

  1. Door de mogelijkheid om de responsdrempel aan te passen, kunt u de gevoeligheid van de sensor aanpassen aan het seizoen of bij bewolkt weer. Het resultaat is energiebesparing.
  2. Bij het installeren van een fotorelais met ingebouwd gevoelig element is een minimum aan arbeid nodig. Dit vereist geen speciale vaardigheden.
  3. Het timerrelais is goed geprogrammeerd voor zijn behoeften en werkt in de ingestelde modus. U kunt het apparaat configureren om 's nachts uit te schakelen. Indicatie op de behuizing van het apparaat en drukknopbediening maken een eenvoudige aanpassing mogelijk.

Conclusie

Door het gebruik van een fotorelais kunt u automatisch de periode regelen waarin de lampen worden ingeschakeld. Nu is de behoefte aan het beroep van lantaarnopsteker verdwenen. Het fotorelaiscircuit doet 's avonds zonder menselijke tussenkomst de lichten op straat aan en 's ochtends uit. De apparaten kunnen het verlichtingssysteem besturen, wat de hulpbron vergroot en de bediening vergemakkelijkt.

De ingebouwde ADC van de microcontroller, die in het vorige deel van de review is besproken, stelt je in staat om eenvoudig verschillende analoge sensoren op het Arduino-bord aan te sluiten, die de gemeten fysieke parameters omzetten in elektrische spanning.

Een voorbeeld van de eenvoudigste analoge sensor is een variabele weerstand die is aangesloten op een bord, zoals weergegeven in Fig. 1. Het kan van elk type zijn, bijvoorbeeld SP3-33-32 (Fig. 2). De weerstandswaarde in het diagram wordt ruwweg aangegeven en kan lager of hoger zijn. Houd er echter rekening mee dat hoe lager de weerstand van de variabele weerstand, hoe meer stroom deze verbruikt van de voeding van de microcontroller. En wanneer de weerstand van de signaalbron (in dit geval de variabele weerstand) meer dan 10 kOhm is, werkt de ADC van de microcontroller met grote fouten. Houd er rekening mee dat de weerstand van de variabele weerstand als signaalbron afhankelijk is van de positie van de schuifregelaar. Het is gelijk aan nul in zijn uiterste posities en maximum (gelijk aan een kwart van de nominale weerstand) in de middelste positie.

Rijst. 1. Bedradingsschema van een variabele weerstand naar het bord:

Rijst. 2. SP3-33-32

Het is handig om een ​​variabele weerstand te gebruiken wanneer u de parameter soepel moet wijzigen, en niet in stappen (discreet). Beschouw als voorbeeld het werk in de tabel. 1 programma dat de helderheid van de LED verandert afhankelijk van de positie van de schuifregelaar met variabele weerstand. De regel U = U/4 is nodig in het programma om een ​​tien-bits binair getal dat door de ADC wordt geretourneerd, om te zetten in een acht-bits getal, dat door de functie analogWrite () als de tweede operand wordt geaccepteerd. In het onderhavige geval wordt dit gedaan door het oorspronkelijke getal te delen door vier, wat overeenkomt met het weggooien van de twee minst significante binaire cijfers.

Tafel 1.

Een variabele weerstand van een geschikt ontwerp kan dienen als een draaihoek- of lineaire verplaatsingssensor. Evenzo kan het worden aangesloten op vele radio-elementen: fotoweerstanden, thermistors, fotodiodes, fototransistoren. Kortom, apparaten waarvan de elektrische weerstand afhangt van bepaalde omgevingsfactoren.

In afb. 3 toont het aansluitschema van de fotoresistor naar de Arduino. Wanneer de verlichting verandert, verandert de elektrische weerstand en daarmee de spanning op de analoge ingang van het Arduino-bord. De FSK-1 fotoresistor die in het diagram wordt aangegeven, kan worden vervangen door een andere, bijvoorbeeld SF2-1.

Rijst. 3. Bedradingsschema van fotoresistor naar Arduino

Tafel 2 toont een programma dat van een Arduino-bord met daarop een fotoresistor de eenvoudigste lichtmeter maakt. Tijdens het werken meet het periodiek de spanningsval over de weerstand die in serie is geschakeld met de fotoweerstand, en verzendt het resultaat in willekeurige eenheden via de seriële poort naar de computer. Ze worden weergegeven op het scherm van de Arduino-foutopsporingsterminal, zoals weergegeven in Fig. 4. Zoals je kunt zien, is de gemeten spanning op een gegeven moment sterk gedaald. Dit gebeurde toen een fel verlichte fotodiode werd verduisterd door een ondoorzichtig scherm.

Tafel 2.

Rijst. 4. De afbeelding op het scherm van de Arduino-foutopsporingsterminal

Om verlichtingswaarden in lux (standaard SI-eenheden) te verkrijgen, moet u de verkregen resultaten vermenigvuldigen met een correctiefactor, maar u moet deze experimenteel en afzonderlijk voor elke fotoweerstand kiezen. Hiervoor is een voorbeeldige lichtmeter nodig.

Een fototransistor of fotodiode (Figuur 5) wordt op een vergelijkbare manier op de Arduino aangesloten. Met behulp van verschillende lichtgevoelige apparaten is het mogelijk om het eenvoudigste zichtsysteem voor een robot te bouwen. Het is ook mogelijk om op een nieuw technisch niveau veel klassieke ontwerpen te implementeren die bekend zijn bij een brede kring van radioamateurs - een cybernetisch model van een mot of een model van een tank die naar het licht beweegt.

Rijst. 5. Bedradingsschema van fotodiode naar Arduino

Net als de fotoweerstand is een thermistor aangesloten op de Arduino (Fig. 6), die zijn elektrische weerstand verandert afhankelijk van de temperatuur. In plaats van de MMT-4-thermistor die in het diagram wordt aangegeven, waarvan het belangrijkste voordeel een verzegelde behuizing is, kunt u bijna elke andere gebruiken, bijvoorbeeld MMT-1 of geïmporteerd.

Rijst. 6. Bedradingsschema voor thermistor naar Arduino

Na een goede kalibratie kan een dergelijk apparaat worden gebruikt om de temperatuur te meten in allerlei weerstations, thermostaten en soortgelijke constructies in huis.

Het is bekend dat bijna alle LED's niet alleen als lichtbron kunnen dienen, maar ook als ontvangers - fotodiodes. Het feit is dat het kristal van de LED zich in een transparante behuizing bevindt en daarom is de p-n-overgang beschikbaar voor licht van externe bronnen. Bovendien heeft het lichaam van de LED in de regel de vorm van een lens die externe straling op dit kruispunt focust. Onder zijn invloed verandert bijvoorbeeld de sperweerstand van de pn-overgang.

Door de LED op het Arduino-bord aan te sluiten volgens het schema in Fig. 7 kan één en dezelfde LED zowel voor het beoogde doel als als fotosensor worden gebruikt. Een programma dat deze modus illustreert wordt getoond in Tabel. 3. Het idee is dat eerst een sperspanning wordt aangelegd op de pn-overgang van de LED, waardoor de capaciteit wordt opgeladen. De LED-kathode wordt dan geïsoleerd en configureert als ingang de Arduino-pin waarop deze is aangesloten. Daarna meet het programma de duur van de ontlading van de capaciteit van de pn-overgang van de LED door zijn eigen tegenstroom, afhankelijk van de externe verlichting, tot het niveau van logisch nul.

Rijst. 7. Schema voor het aansluiten van de LED op het Arduino-bord

tafel 3

In het bovenstaande programma wordt de variabele t beschreven als unsigned int - een unsigned integer. Een variabele van dit type gebruikt, in tegenstelling tot een gewone int, die waarden van -32768 tot +32767 aanneemt, zijn meest significante bit niet om het teken op te slaan en kan waarden aannemen van 0 tot 65535.

Het programma berekent de ontlaadtijd in de tussentijd (digitalRead (K)! = 0) t ++ lus. Deze cyclus wordt uitgevoerd, waarbij telkens de waarde van t met één wordt verhoogd, totdat de toestand tussen haakjes waar is, dat wil zeggen totdat de spanning aan de kathode van de LED daalt tot een logisch laag niveau.

Soms is het nodig dat de robot niet alleen informatie ontvangt over de verlichting van het oppervlak waarop hij beweegt, maar ook de kleur ervan kan bepalen. Er is een kleurensensor van het onderliggende oppervlak geïmplementeerd, die deze afwisselend verlicht met LED's van verschillende gloedkleuren en de niveaus van signalen die erdoor worden gereflecteerd onder verschillende verlichting met behulp van een fotodiode vergelijkt. Het aansluitschema van de elementen van de kleurensensor met het Arduino-bord wordt getoond in Fig. 8, en het programma dat het bedient, staat in de tabel. 4.

Rijst. 8. Aansluitschema van de elementen van de kleurensensor met het Arduino-bord

Tabel 4

De procedure voor het meten van de signalen die door de fotodiode worden ontvangen onder verschillende verlichting van het oppervlak van de signalen, wordt vele malen herhaald en de verkregen resultaten worden verzameld om willekeurige fouten uit te sluiten. Vervolgens selecteert het programma de grootste van de geaccumuleerde waarden. Dit maakt het mogelijk om de kleur van het oppervlak ruwweg te beoordelen. Voor een nauwkeurigere bepaling van de kleur is het noodzakelijk om de verwerking van de resultaten te compliceren, waarbij niet alleen rekening wordt gehouden met de grootste, maar ook met de verhouding met de kleinere. Het is ook noodzakelijk om rekening te houden met de werkelijke helderheid van LED's met verschillende gloedkleuren, evenals met de spectrale kenmerken van de toegepaste fotodiode.

Een voorbeeld van het ontwerp van een kleurensensor bestaande uit vier LED's en een fotodiode wordt getoond in Fig. 9. De optische assen van de LED's en de fotodiode moeten op één punt op het onderzochte oppervlak samenkomen en de apparaten zelf moeten zo dicht mogelijk bij het oppervlak worden geplaatst om het effect van extern licht te minimaliseren.

Rijst. 9. Een voorbeeld van het ontwerp van een kleurensensor van vier LED's en een fotodiode

De gemonteerde sensor vereist een zorgvuldige individuele kalibratie op oppervlakken van verschillende kleuren. Het komt neer op een selectie van coëfficiënten waarmee de meetresultaten die onder verschillende lichtomstandigheden zijn verkregen, vóór vergelijking moeten worden vermenigvuldigd. Een robot die is uitgerust met zo'n sensor kan worden geleerd om interessante bewegingsalgoritmen uit te voeren. Hij zal bijvoorbeeld in staat zijn om zich door het werkveld van dezelfde kleur te bewegen, zonder de grenzen van de "verboden" zones te schenden, geschilderd in een andere kleur.

Een voorbeeld van het aansluiten van een fotoresistor om een ​​LED aan te sturen

Dit voorbeeld demonstreert het aansluiten van een fotoweerstand om een ​​LED te besturen om een ​​analoog van een nachtlampje te creëren. De weerstand van de fotoweerstand hangt af van de intensiteit van het licht dat erop valt, dus wanneer de verlichting afneemt, zal de LED fel oplichten en uitgaan bij fel licht.

Vereiste componenten

  • Broodplank;
  • Weerstand aan 220 ohm;
  • Weerstand aan 10 kΩ;
  • Fotoweerstand met nominale weerstand 200kohm;
  • Een rode LED;
  • Jumper draden;

Schema

Aansluiten 9 de digitale pin van Arduino met een van de pinnen 220 ohm-de weerstand, sluit de andere klem van deze weerstand aan op de anode van de LED (lange poot), en de kathode van de LED op aarde (contact GND op het Arduino-bord). Contact 5V sluit het Arduino-bord aan op een van de pinnen van de fotoresistor en sluit de andere pin aan op 0 -de analoge pin van Arduino en met een van de pinnen 10kohm th weerstand, verbind de andere terminal van de weerstand met aarde (contact GND op het Arduino-bord).

Een resistieve spanningsdeler bestaat uit twee weerstanden; de uitgangsspanning is afhankelijk van de weerstandsverhouding. In dit voorbeeld is een van de weerstanden variabel (fotoweerstand, voor een nominale weerstand van 200kohm, dat wil zeggen, in volledige duisternis zal de weerstand van de fotoweerstand gelijk zijn aan de nominale waarde, en bij fel licht zal deze tot bijna nul dalen), zodat we een spanningsverandering kunnen krijgen. Een andere weerstand bepaalt de gevoeligheid. Als je een trimmerweerstand gebruikt, kun je een instelbare gevoeligheid maken.

De schaal en nauwkeurigheid van de metingen hangen af ​​van waar de fotoweerstand zich bevindt en de waarde van de constante weerstand in het spanningsdelercircuit. Wijzig het schema en kijk door de poortmonitor (hiervoor kunt u de code downloaden uit de sectie "Code voor het aanpassen van parameters" hieronder) hoe de meetwaarden veranderen.

In de poortmonitor in het eerste en tweede geval zul je zien dat je niet het volledige bereik aan waarden krijgt (van 0 tot 1023), omdat de weerstand van de fotoresistor nooit nul zal zijn. Maar u kunt de minimale (MIN_LIGHT) en maximale (MAX_LIGHT) verlichtingswaarden bepalen (de waarden zijn afhankelijk van de lichtomstandigheden, de waarde van de constante weerstand en de kenmerken van de fotoweerstand), om onze te bouwen " nachtlichtje".

Code

Upload de onderstaande schets naar je Arduino-bord.

    #define RLED 9 // Verbind de rode LED met de 9e digitale pin met PWM-ondersteuning

  1. int-waarde = 0; // Variabele voor het opslaan van de gelezen waarde van de sensor

  2. ongeldige instelling ()

    pinMode (RLED, UITGANG); // Stel pin 9 in als uitgang

  3. lege lus ()

    val = analoog lezen (LICHT); // lees de waarde van de analoge ingang

    val = kaart (val, MIN_LIGHT, MAX_LIGHT, 255, 0); // transformeer het bereik van leeswaarden

    val = beperking (val, 0, 255); // "definieer" het bereik van geldige waarden

    analoogWrite (RLED, val); // bedien de LED

  • Opmerking: In dit voorbeeld is een fotoresistor met een nominale weerstand van 200kohm... Als u een fotoresistor met een andere classificatie heeft, moet u mogelijk de minimale (MIN_LIGHT) en maximale (MAX_LIGHT) verlichtingswaarden wijzigen.

Parametercorrectiecode:

Als u een fotoresistor met een andere classificatie heeft, moet u mogelijk de minimale (MIN_LIGHT) en maximale (MAX_LIGHT) verlichtingswaarden corrigeren. Voeg hiervoor twee regels code toe (gemarkeerd in kleur). En bepaal de minimale (MIN_LIGHT) en maximale (MAX_LIGHT) waarden van de verlichting door met uw hand de toegang tot licht voor de fotoresistor te blokkeren (en vice versa) en de veranderingen in de waarden te observeren met behulp van de seriële monitor. Na correctie kunt u commentaar geven op de toegevoegde regels code.

    #define RLED 9 // Verbind de rode LED met de 9e digitale pin met PWM-ondersteuning

    #define LIGHT 0 // Sluit de fotoweerstand aan op de 0e analoge pin

    #define MIN_LIGHT 200 // Minimale verlichtingswaarde

    #define MAX_LIGHT 900 // Maximale verlichtingswaarde

Vandaag maken we een schets en een prototype van het circuit op Arduino met behulp van een fotoresistor. Hier bevindt zich een fotoresistor, ik heb zo'n lay-out samengesteld, het lijkt op een nieuwjaars-LED-slinger uit eerdere artikelen.

We hebben 8 LED's, ze zijn zo geïnstalleerd dat het korte been aan de linkerkant een min is, het lange been aan de rechterkant is een plus. Dus ze zijn allemaal geïnstalleerd, het circuit gebruikt één weerstand van 10 kilo-ohm, ik heb het uit de set gehaald Arduino-kit, en 8 weerstanden aangesloten op het positieve contact van de LED met 220 ohm worden gebruikt, zo wordt het aangesloten.


Gebruikte 8 zwarte draden zijn negatief en groene 8 stuks - controlepinnen van de twaalfde tot de vijfde. Tijdens het debuggen werd het extreme zwart vervangen door groen, maar daarover later meer.

De fotoresistor is hier, ernaast is een weerstand van 10 kilohm, de blauwe jumper gaat naar min, de oranje is aan het ene uiteinde verbonden met het middelpunt, tussen de weerstand en de fotoresistor, het andere uiteinde met het bord Arduino, in A0 (analoge pin).

Rood is 5 Volt, en het circuit zal werken via deze spanningsdeler, de LED's zullen oplichten, afhankelijk van het verlichtingsniveau. Ik zal de LED's repareren, de constructie is nogal wiebelig. Laten we teruggaan naar het model, maar laten we nu beginnen met het schrijven van een schets.

Laten we een nieuw project maken en beginnen met schrijven, constanten declareren, verschillende stukken, laat het een type zijn int, dit zal het aantal pinnen zijn, aangezien er 8 LED's in het circuit zitten. Dit geeft aan hoeveel LED's er in het circuit zijn gebruikt.

const int NbrLEDs = 8;

Laten we een array maken met pinnummers, gebruik 5 6 7 8 9 10 11 12 digitale connectoren, geef het pinnummer aan waarop het verlichtingsniveau is gefilmd, declareer een variabele voor de fotoweerstand, de sensorwaarde, en declareer ook het verlichtingsniveau zo dat we ze door spelden kunnen breken.

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

In de setup-subroutine zullen we een lus schrijven waarin, om niet elke waarde die uitgaat via pinMode toe te wijzen, we alle pinnen doorlopen, ze waarden toewijzen in de pinmodus van de array en een OUTPUT-waarde toewijzen aan elke pin .

void setup () (for (int led = 0; led)< NbrLEDs; led++) { pinMode(ledPins, OUTPUT); } }

In principe zou je dit niet kunnen doen, je zou pinmode kunnen specificeren en dan vijf schrijven, dan 6, enzovoort, maar dit is erg lang en dit is een wilde barbaarse methode. Daarom gaan we in de lus, in één keer, door alle pinnen.

pinMode (5, UITGANG); pinMode (6, UITGANG);

In de lus krijgen we de waarde van de sensor door analogRead van pin A0 te lezen.

Laten we vervolgens de sensorwaarde opsplitsen, met behulp van de kaartfunctie, we krijgen de sensorwaarde en op basis van het verlichtingsniveau, met een gevoeligheid van 300 tot de maximale waarde 1023 , worden verdeeld over 8 pinnen, die hierboven zijn aangekondigd.

Zie ook de video Photoresistor en LED's op Arduino - (video), de link opent in een nieuw tabblad.

Verderop in de lus zullen we alle pinnen doorlopen, dus we hebben haakjes toegevoegd, te beginnen met de eerste LED, als de teller niet meer dan 8 is, zullen we toevoegen, en dan zullen we controleren op voorwaarde dat als het LED-nummer lager is dan het verlichtingsniveau, zullen we alle voorgaande spanningen op deze LED toepassen via de HIGH-constante.

Zo niet, dan noteren we de afwezigheid van spanning erin en gaat de LED niet branden.

void loop () (sensorValue = analogRead (photocellPin); ledLevel = map (sensorValue, 300, 1023, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

De code uitlijnen via de sneltoets ctrl + T en laten we nu kijken wat er gebeurt, voer het uit voor verificatie, sla de schets op.

Dus compilatie van de schets, upload hem nu naar Arduino... Laten we even teruggaan naar het schema, op dit moment brandt er één LED niet bij het wisselen van verlichting wegens slecht contact.


Nu zal ik het repareren, we zullen het niet aanraken, als ik de verlichting uitdoe, gaan alle LED's uit. Als ik de fotoresistor verlicht met een zaklamp, waarbij ik soepel verlichting toevoeg, dan zullen bijna alle LED's branden en dienovereenkomstig verwijder ik, waardoor het verlichtingsniveau wordt verlaagd, het aantal LED's zal veranderen.


Als ik alle lichten aanzet, staat bijna alles aan, wat is het probleem met deze LED. Ik heb er veel tijd aan besteed, alles is hier correct geassembleerd, ik heb zelfs een min gegooid met een bewust werkende groene draad, maar om de een of andere reden is het grillig en brandt het niet.


Laten we nu teruggaan naar de schets en kijken wat er mis is. Het voorbeeld is ontleend aan de officiële bron, op schijf naar Arduino daar staat dezelfde code.

In de schets wordt de verdeling van de verlichting verkregen uit: 300 voordat 1023 (maximale waarde), een poging om de initiële drempel te wijzigen in 0 - geeft geen resultaat.

Maar als we deze hele waarde in 8 delen verdelen, dan komt een rekenmachine van pas, het blijkt dat de weerstand bij 10 kilo-ohm een ​​of andere fout geeft, je moet 1023 delen door 8, we krijgen praktisch 128 , als we het goed nemen, dan is 1024 gedeeld door 8, dit is en er zijn 128.

Nu moet je 128 van 1023 aftrekken, de waarde 895 hier zetten, dan zou volgens de logica van de dingen alles in orde moeten zijn. Laten we downloaden en kijken wat er verandert.

void loop () (sensorValue = analogRead (photocellPin); ledLevel = map (sensorValue, 0, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Nu zijn alle LED's aan, laten we proberen de verlichting te blokkeren, of laten we hem uitschakelen ...

De startwaarde moet nog 300 geretourneerd worden, aangezien deze aan deze drie eerste power LED's wordt toegevoerd. Laten we 0 in 300 veranderen in de schets, zoals het was, het was met een reden gedaan, laad de schets opnieuw en kijk wat er deze keer verandert ...

void loop () (sensorValue = analogRead (photocellPin); ledLevel = map (sensorValue, 300, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Nu brandt de eerste led, met minimale verlichting, als je alles aanzet, en daar heb ik 1800 lux, op twee meter ledstrip staat alles aan zoals het hoort.


Wanneer uitgeschakeld, vangt de fotoresistor de restverlichting in de kamer op, de kroonluchter is aan, geen volledige duisternis en wordt geactiveerd. Maar als je met een zaklamp verlicht, waarbij je soepel licht op de fotoresistor toepast, werkt het circuit correct.


Als we de lichten helemaal uitdoen, zullen we zien wat er gebeurt in totale duisternis. Zoals u kunt zien, reageert de fotoresistor correct bij volledige afwezigheid van licht, de LED's lichten geleidelijk op naarmate de verlichting toeneemt. Als het licht aan is, is alles aan. Zo'n schets bleek, met een life-hack - de gevoeligheid van de fotoresistor aanpassen aan uw behoeften.


Fotoweerstand
IMHO bedreigde diersoorten. De laatste keer dat ik hem zag was toen ik een kind was. Meestal is het zo'n metalen rondhout met een glazen raam, waarin men zoiets kan zien. Wanneer verlicht, daalt de weerstand, zij het onbeduidend, drie tot vier keer.

Fototransistor
De laatste tijd ben ik ze constant tegengekomen, een onuitputtelijke bron van fototransistoren - vijf-inch diskettestations. De laatste keer dat ik, voor de prijs van vuil, op een radio-vlooienmarkt ongeveer 5 stukken van een zakdoek van ontdekkingen plaatste, daar zijn de transistors tegenover de gaten voor het regelen van de opname en rotatie van de floppy disk. Een andere dubbele fototransistor (of misschien een fotodiode, zoals het toeval wil) zit in een gewone balmuis.
Het ziet eruit als een gewone LED, alleen de behuizing is transparant. LED's zijn echter ook hetzelfde, dus om te verwarren wie van hen wie slechts één keer spuwt. Maar het maakt niet uit, de partizaan is eenvoudig te berekenen met een gewone multimeter. Het is voldoende om een ​​ohmmeter tussen de zender en de collector in te schakelen (deze heeft geen basis) en erop te schijnen, omdat de weerstand eenvoudigweg catastrofaal zal instorten - van tientallen kilo-ohm tot een paar ohm. Degene die ik heb in de detector van rotatie van tandwielen in de robot verandert zijn weerstand van 100 kOhm naar 30 Ohm. De fototransistor werkt als een gewone - hij houdt de stroom vast, maar als regelactie is het niet de basisstroom, maar de lichtstroom.

Fotodiode
Uiterlijk is het niet anders dan een fototransistor of een gewone LED in een transparante behuizing. Soms zijn er ook oude fotodiodes in metalen behuizingen. Meestal zijn dit shovel-apparaten, FD-cheto-merken daar. Zo'n metalen cilinder met een raam aan het uiteinde en draden die uit de kont steken.

In tegenstelling tot een fototransistor kan deze in twee verschillende modi werken. In fotovoltaïsche en fotodiode.
In de eerste, fotovoltaïsche, versie gedraagt ​​de fotodiode zich als een zonnebatterij, dat wil zeggen, hij schijnt erop - er is een zwakke spanning ontstaan ​​op de klemmen. Het kan worden versterkt en toegepast =). Maar het is veel gemakkelijker om in de fotodiode-modus te werken. Hier passen we een sperspanning toe op de fotodiode. Want hoewel het een foto is, is het een diode, dan zal de spanning niet in de tegenovergestelde richting gaan, wat betekent dat de weerstand bijna een breuk zal zijn, maar als deze brandt, zal de diode heel sterk beginnen te etsen en zijn weerstand zal sterk dalen. En scherp, met een paar ordes van grootte, zoals een fototransistor.

Spectrum
Naast het type apparaat heeft het ook een werkend spectrum. Een fotodetector die is geslepen voor het infraroodspectrum (en er zijn de meeste) reageert bijvoorbeeld praktisch niet op het licht van een groene of blauwe LED. Het reageert slecht op een fluorescentielamp, maar reageert goed op een gloeilamp en een rode LED, en er is niets te zeggen over infrarood. Wees dus niet verbaasd als je fotosensor slecht reageert op licht, misschien heb je een fout gemaakt met het spectrum.

Verbinding
Nu is het tijd om te laten zien hoe je dit aansluit op de microcontroller. Met de fotoresistor is alles duidelijk, hier zijn geen problemen - je neemt het en sluit het aan volgens het schema.
De fotodiode en fototransistor zijn ingewikkelder. Het is noodzakelijk om te bepalen waar zijn anode/kathode of emitter/collector is. Dit gebeurt eenvoudig. Je pakt een multimeter, zet hem in de diode-kiesmodus en klampt je vast aan je sensor. De multimeter in deze modus toont de spanningsval over de diode / transistor, en de spanningsval hangt hier voornamelijk af van de weerstand U = I * R. Je neemt en verlicht de sensor, volgens de metingen. Als het aantal sterk daalt, dan heb je goed geraden en zit de rode draad op je kathode/collector, en de zwarte op de anode/emitter. Als het niet is veranderd, verwissel dan de pinnen. Als het niet helpt, dan is ofwel de detector dood, of je probeert een reactie van de LED te krijgen (LED's kunnen trouwens ook dienen als lichtdetectoren, maar daar is het niet zo eenvoudig. Echter, wanneer ik heb tijd, ik zal je deze technologische perversie laten zien).


Nu over het werk van het circuit, alles is hier elementair. In de verduisterde toestand laat de fotodiode geen stroom in de tegenovergestelde richting door, de fototransistor is ook gesloten en de weerstand van de fotoweerstand is erg hoog. De ingangsweerstand is bijna oneindig, wat betekent dat de ingang een volledige voedingsspanning heeft, oftewel een logische eenheid. Het is nu de moeite waard om de diode / transistor / weerstand op te lichten als de weerstand sterk daalt en de uitgang stevig op de grond of heel dicht bij de grond blijkt te zijn geplant. De weerstand zal in ieder geval veel lager zijn dan een weerstand van 10kΩ, waardoor de spanning ineens wegvalt en ergens op een logisch nulniveau komt te liggen. Je hoeft niet eens een weerstand in AVR en PIC te plaatsen, een interne pull-up is voldoende. Dus DDRx = 0 PORTx = 1 en je zult blij zijn. Draai het om als een gewone knop. De enige moeilijkheid kan zich voordoen met een fotoresistor - de weerstand ervan daalt niet zo sterk, dus deze kan niet nul worden. Maar hier kun je spelen met de grootte van de pull-up-weerstand en ervoor zorgen dat de verandering in weerstand voldoende is om door het logische niveau te gaan.

Als het nodig is om de verlichting te meten en niet om licht / donker dom te vangen, dan zal het nodig zijn om alles op de ADC aan te sluiten en de pull-up-weerstand variabel te maken om de parameters aan te passen.

Er is ook een geavanceerd type fotosensoren - TSOP er is een ingebouwde frequentiedetector en versterker, maar daar zal ik later over schrijven.

ZY
Ik heb hier een aantal parken, dus de site zal erg dom zijn met de update, ik denk dat het tot het einde van de maand zal zijn. Dan hoop ik weer in hetzelfde ritme terug te komen.