Arduino සහ WS2812 මත පදනම් වූ පැරණි විදුලි බුබුලකින් රාත්‍රී ආලෝකය. ස්වාධීන විසඳුමක් සඳහා කාර්යයන්

බොහෝ විට සෑම කෙනෙකුටම ළමා කාලයේ (සහ එකකට වඩා) සිහිනයක් තිබුණි. ඔහුගේ සිහිනය සැබෑ වන විට දරුවාගේ ආත්මය පුරවන හැඟීම හෝ ඔහුගේ ඇස්වල දුරස්ථ, හුරුපුරුදු බැබළීම මතක තබා ගැනීමට පවා ඔබට උත්සාහ කළ හැකිය ... කුඩා කාලයේ දී, මම මගේම රාත්රී ආලෝකය ලබා ගැනීමට සිහින මැව්වෙමි.

දැන් මම BSUIR හි 4 වන වසරේ ශිෂ්‍යයෙක් වන අතර, පරිපථ නිර්මාණය පිළිබඳ පාඨමාලා ව්‍යාපෘතියක් කඩදාසි මත නොව දෘඩාංග කැබැල්ලකින් කළ හැකි බව අපට පැවසූ විට, එය මට වැටහුණි: මම කැමති රාත්‍රී ආලෝකය දරුවෙකු මා විසින්ම සෑදිය හැකිය. එපමණක් නොව, අඳුරේ කාමරය ආලෝකමත් කරන වස්තුවක් පමණක් නොව, ඕනෑම මනෝභාවයකට ගැලපෙන පරිදි පහසුවෙන් පාලනය කළ හැකි උපකරණයක් සාදන්න. ඇයි නැත්තේ? මගේ අත් භාවිතයෙන් වර්ණ වෙනස් කිරීමේ හැකියාව එකතු කිරීමට මම තීරණය කළෙමි: මගේ අත රාත්‍රී ආලෝකයට සමීප වන තරමට, දීප්තිමත් වර්ණ (RGB) ආලෝකමත් වේ. දුරස්ථ පාලකය භාවිතයෙන් රාත්‍රී ආලෝකය පාලනය කිරීමට ද මම කැමතියි.

මම cxem.net වෙබ් අඩවියේ අදහස දුටු බව මම වහාම පිළිගනිමි. කෙටියෙන් කිවහොත්, මෙම උදාහරණය RGB matrix භාවිතා කළ අතර එය මාරු රෙජිස්ටර් සහ අතිධ්වනික දුර සංවේදක භාවිතයෙන් පාලනය වේ. ඒත් මම හිතුවා matrix එක එක දිසාවකට විතරක් දිලිසෙනවා කියලා, ඒත් මට ඕන වුනේ රෑ එළිය දෙපැත්තෙන් දිලිසෙනවාට.

පරිපථ මූලද්රව්ය සාධාරණීකරණය කිරීම


මම මගේ අවධානය යොමු කළේ Arduino microcontroller වෙතටයි. UNO යනු මගේ අදහස සඳහා බෙහෙවින් සුදුසු විකල්පයකි, පළමුව එය වඩාත් ජනප්‍රිය වේදිකාව වන අතර මෙගා මෙන් නොව අල්ෙපෙනති ගණන විශාල නොවන අතර දෙවනුව ඔබට එයට බාහිර බල ප්‍රභවයක් සම්බන්ධ කළ හැකිය, මගේ නඩුවේදී එය 12V වේ. , නැනෝ මෙන් නොව, තෙවනුව ... හොඳයි, මම හිතන්නේ අපට මෙම කරුණු දෙකෙන් නතර විය හැකිය. ක්‍රමලේඛන භාෂාවේ පහසුව සහ සරල බව මෙන්ම එහි විවෘත ගෘහ නිර්මාණ ශිල්පය සහ වැඩසටහන් කේතය හේතුවෙන් වේදිකාව ලොව පුරා අතිශයින් ජනප්‍රියය.

තව විස්තරාත්මක තොරතුරුඔබට මෙම පුවරුව පිළිබඳ තොරතුරු අන්තර්ජාලයේ පහසුවෙන් සොයාගත හැකිය, එබැවින් මම ලිපිය අධික ලෙස පටවන්නේ නැත.

ඉතින්, පද්ධතිය සඳහා මූලික අවශ්යතා. අවශ්ය:
- පද්ධතිය පාලනය කිරීමට බාධාවකට ඇති දුර නිරීක්ෂණය කරන සංවේදක;
- දුරස්ථ පාලකයෙන් සංඥා කියවීම සඳහා සංවේදකය දුරස්ථ පාලකය;
- LED, අවශ්ය ආලෝක ක්රියාකාරිත්වය සපයනු ඇත;
- සමස්ත පද්ධතියම පාලනය කරන පාලන ඒකකයක්.

ව්‍යාපෘතියට දුර සංවේදක ලෙස රේන්ජ්ෆයින්ඩර් අවශ්‍ය වේ, ඒ සෑම එකක්ම නිශ්චිත වර්ණයකට අනුරූප වේ: රතු, කොළ, නිල්. දුර සංවේදක මගින් රාත්‍රී ආලෝකයට අතේ ඇති දුර නිරීක්ෂණය කරන අතර අත යම් සංවේදකයකට සමීප වන තරමට මෙම රේන්ජ්ෆයින්ඩරයට අනුරූප වර්ණය වඩාත් ප්‍රබල ලෙස ආලෝකමත් වේ. අනෙක් අතට, අත දුරින්, සංවේදකයට අනුරූප වර්ණයට අඩු වෝල්ටීයතාවයක් යොදනු ලැබේ.

වඩාත්ම ජනප්‍රිය රේන්ජ්ෆයින්ඩර් ක්‍රියාත්මකයි මේ මොහොතේමේවා Sharp GP2Y0A21YK සහ HC-SR04 වේ. තියුණු GP2Y0A21YK යනු අධෝරක්ත රේන්ජ්ෆයින්ඩරයකි. එය IR විමෝචකයක් සහ IR ග්‍රාහකයකින් සමන්විත වේ: පළමුවැන්න කදම්භයේ ප්‍රභවය ලෙස සේවය කරයි, එහි පරාවර්තනය දෙවැන්න විසින් අල්ලා ගනු ලැබේ. ඒ අතරම, සංවේදකයේ IR කිරණ මිනිස් ඇසට නොපෙනෙන අතර එවැනි තීව්රතාවයකින් හානිකර නොවේ.

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

ව්‍යාපෘතිය සඳහා දුර සංවේදක ලෙස භාවිතා කරයි: අතිධ්වනික පරාස සොයන්නා HC-SR04.
HC-SR04 හි මෙහෙයුම් මූලධර්මය පදනම් වී ඇත්තේ echolocation හි සුප්රසිද්ධ සංසිද්ධිය මතය. එය භාවිතා කරන විට, විමෝචකය ධ්වනි සංඥාවක් ජනනය කරයි, එය බාධකයෙන් පරාවර්තනය වී සංවේදකය වෙත ආපසු ගොස් ග්‍රාහකයා විසින් ලියාපදිංචි කරනු ලැබේ. වාතයේ අල්ට්රා සවුන්ඩ් ප්රචාරය කිරීමේ වේගය (ආසන්න වශයෙන් 340 m / s) සහ විමෝචනය කරන ලද සහ ලැබුණු සංඥාව අතර ප්රමාද කාලය දැන ගැනීමෙන්, ධ්වනි බාධකයට ඇති දුර ප්රමාණය ගණනය කිරීම පහසුය.

TRIG ආදානය ක්ෂුද්‍ර පාලකයේ ඕනෑම පින් එකකට සම්බන්ධ වේ. මෙම පින් එකට ස්පන්දනයක් යෙදිය යුතුය. ඩිජිටල් සංඥාවකාලසීමාව 10 μs. TRIG ආදානයේ සංඥාව මත පදනම්ව, සංවේදකය අතිධ්වනික ස්පන්දන පැකට්ටුවක් යවයි. පරාවර්තනය කරන ලද සංඥාව ලැබීමෙන් පසු, සංවේදකය ECHO පින් එකේ ස්පන්දන සංඥාවක් ජනනය කරයි, එහි කාලසීමාව බාධකයට ඇති දුර ප්රමාණයට සමානුපාතික වේ.

IR සංවේදකය. ඇත්ත වශයෙන්ම, දුරස්ථ පාලකයට අවශ්ය සංඥා මෙම සංවේදකයෙන් කියවා විකේතනය කරනු ලැබේ. TSOP18 එකිනෙකට වෙනස් වන්නේ සංඛ්‍යාතයෙන් පමණි. VS1838B TSOP1838 සංවේදකය ව්‍යාපෘතිය සඳහා තෝරා ගන්නා ලදී.

මෙම ව්‍යාපෘතිය පදනම් වූයේ කාමරය ඕනෑම වර්ණයකින් ආලෝකමත් කිරීමේ අදහස මත වන අතර එයින් අදහස් කරන්නේ ඔබට ආලෝකය ලබා ගන්නා ප්‍රාථමික වර්ණ 3 ක් අවශ්‍ය වනු ඇති බවයි: රතු, කොළ, නිල්. එබැවින්, SMD 5050RGB LED ආකෘතිය තෝරාගෙන ඇති අතර, එය කාර්යයට හොඳින් මුහුණ දෙනු ඇත.

එක් එක් LED සඳහා සපයන වෝල්ටීයතා ප්රමාණය අනුව, ඔවුන් මෙම ආලෝකයේ තීව්රතාවය වෙනස් කරනු ඇත. LED එක ප්‍රතිරෝධයක් හරහා සම්බන්ධ කළ යුතුය, එසේ නොමැතිනම් අපි එය පමණක් නොව Arduino ද විනාශ කිරීමේ අවදානමක් ඇත. LED මත ධාරාව පිළිගත හැකි අගයකට සීමා කිරීම සඳහා ප්රතිරෝධකය අවශ්ය වේ. කාරණය වන්නේ LED වල අභ්‍යන්තර ප්‍රතිරෝධය ඉතා අඩු වන අතර, ඔබ ප්‍රතිරෝධකයක් භාවිතා නොකරන්නේ නම්, එවැනි ධාරාවක් LED හරහා ගමන් කරන අතර එය LED ​​සහ පාලකය යන දෙකම දැවී යනු ඇත.

ව්යාපෘතියේ භාවිතා කරන LED තීරු 12V මගින් බල ගැන්වේ.

"අක්රිය" තත්වයේ LED වල වෝල්ටීයතාවය 6V වන අතර එය 5V ඉක්මවන බල සැපයුම නියාමනය කිරීම අවශ්ය වේ යන කාරනය නිසා, එය මාරු කිරීමේ මාදිලියේ පරිපථයට ට්රාන්සිස්ටර එකතු කිරීම අවශ්ය වේ. මගේ තේරීම BC547c ආකෘතිය මත වැටුණි.

අපි කෙටියෙන් සලකා බලමු, අමතක වූ අය සඳහා, මෙහෙයුම් මූලධර්මය npn ට්‍රාන්සිස්ටරය. ඔබ කිසිසේත් වෝල්ටීයතාවයක් යොදන්නේ නැති නමුත්, කෙටි පරිපථයක් නොවුණත්, ඕම් කිහිපයක ප්‍රතිරෝධකයක් හරහා පාදම සහ විමෝචක පර්යන්ත කෙටි-පරිපථය කළහොත්, පාදක-විමෝචක වෝල්ටීයතාව ශුන්‍ය බව පෙනේ. එහි ප්රතිඵලයක් වශයෙන්, පාදක ධාරාවක් නොමැත. ට්‍රාන්සිස්ටරය වසා ඇත, එකතු කරන්නා ධාරාව නොසැලකිය හැකි තරම් කුඩා වේ, එකම ආරම්භක ධාරාවයි. මෙම අවස්ථාවේ දී, ට්රාන්සිස්ටරය කපා හැරීමේ තත්වයේ පවතින බව කියනු ලැබේ. ප්රතිවිරුද්ධ තත්වය සන්තෘප්තිය ලෙස හැඳින්වේ: ට්රාන්සිස්ටරය සම්පූර්ණයෙන්ම විවෘත වන විට, තවදුරටත් විවෘත කිරීමට තැනක් නොමැත. මෙම විවෘත කිරීමේ මට්ටම සමඟ, එකතු කරන්නා-විමෝචක කොටසේ ප්‍රතිරෝධය ඉතා අඩු බැවින් එකතුකරන්නන්ගේ පරිපථයේ බරක් නොමැතිව ට්‍රාන්සිස්ටරය සක්‍රිය කළ නොහැක; එය ක්ෂණිකව දැවී යනු ඇත. මෙම අවස්ථාවෙහිදී, එකතුකරන්නාගේ ඉතිරි වෝල්ටීයතාව 0.3 ... 0.5V පමණක් විය හැකිය.

ට්‍රාන්සිස්ටරය සාමාන්‍ය රිලේ ස්පර්ශයක් වැනි ස්විචින් මාදිලියක ක්‍රියා කරන විට මෙම අවස්ථා දෙක, සංතෘප්තිය සහ කපා හැරීම භාවිතා වේ. මෙම මාදිලියේ ප්රධාන අර්ථය වන්නේ කුඩා පාදක ධාරාවක් විශාල එකතු කරන්නා ධාරාවක් පාලනය කරයි, එය මූලික ධාරාවට වඩා දස ගුණයකින් වැඩි වේ. නිසා විශාල එකතු කරන්නා ධාරාවක් ලබා ගනී බාහිර මූලාශ්රයශක්තිය, නමුත් තවමත් වත්මන් ලාභය, ඔවුන් පවසන පරිදි, පැහැදිලිය. අපගේ නඩුවේදී, ක්රියාකාරී වෝල්ටීයතාව 5V වන ක්ෂුද්ර පරිපථය, 12V සිට ක්රියාත්මක වන LED සහිත තීරු 3 ක් ඇතුළත් වේ.

යතුරු කැස්කැඩයේ මෙහෙයුම් ආකාරය ගණනය කරමු. LED සම්පූර්ණ බලයෙන් පුළුස්සා දැමීම සඳහා මූලික පරිපථයේ ප්රතිරෝධයේ අගය ගණනය කිරීම අවශ්ය වේ. ගණනය කිරීමේදී අත්‍යවශ්‍ය කොන්දේසියක් නම්, ධාරා ලාභය හැකි උපරිම එකතු කරන්නා ධාරාව හැකි අවම පාදක ධාරාවෙන් බෙදීමේ ප්‍රමාණයට වඩා වැඩි හෝ සමාන වීමයි:

එබැවින්, තීරු 220V ක ක්රියාකාරී වෝල්ටීයතාවයක් තිබිය හැකි අතර, 5V වෝල්ටීයතාවයකින් යුත් ක්ෂුද්ර පරිපථයකින් මූලික පරිපථය පාලනය කළ හැකිය. ට්‍රාන්සිස්ටරය එකතුකරන්නාගේ එවැනි වෝල්ටීයතාවයක් සමඟ ක්‍රියා කිරීමට සැලසුම් කර තිබේ නම්, LED මඟින් ගැටළු නොමැතිව ආලෝකමත් වේ.
පාදක-විමෝචක හන්දිය හරහා වෝල්ටීයතා පහත වැටීම 0.77V වේ, පාදක ධාරාව 5mA සහ එකතු කිරීමේ ධාරාව 0.1A වේ.
පාදක ප්‍රතිරෝධය හරහා වෝල්ටීයතාවය වනුයේ:

ඕම්ගේ නීතියට අනුව:

සම්මත ප්‍රතිරෝධක පරාසයෙන් අපි 8.2 kOhm ප්‍රතිරෝධයක් තෝරා ගනිමු. මෙය ගණනය කිරීම සම්පූර්ණ කරයි.

මා මුහුණ දුන් එක් ගැටලුවක් ගැන ඔබේ අවධානය යොමු කිරීමට කැමැත්තෙමි. IRremote පුස්තකාලය භාවිතා කරන විට, නිල් වර්ණය සකස් කිරීමේදී Arduino ශීත විය. අන්තර්ජාලයේ දීර්ඝ හා ගැඹුරු සෙවුමකින් පසුව, මෙම පුස්තකාලය මෙම Arduino ආකෘතිය සඳහා පෙරනිමියෙන් Timer 2 භාවිතා කරන බව පෙනී ගියේය. PWM නිමැවුම් පාලනය කිරීමට ටයිමර් භාවිතා කරයි.

ටයිමර් 0 (පද්ධති කාලය, PWM 5 සහ 6);
ටයිමර් 1 (PWM 9 සහ 10);
ටයිමර් 2 (PWM 3 සහ 11).

මුලදී, මම නිල් වර්ණය නියාමනය කිරීමට PWM 11 භාවිතා කළෙමි. එබැවින්, ඒවා භාවිතා කළ හැකි PWM, ටයිමර් සහ තෙවන පාර්ශවීය පුස්තකාල සමඟ වැඩ කිරීමේදී ප්‍රවේශම් වන්න. ඒක අමුතුයි මුල් පිටුව Github හි මෙම nuance ගැන කිසිවක් පවසා නැත. ඔබට අවශ්‍ය නම්, ඔබට ටයිමරය 1 සමඟ පේළිය ඉවත් කර 2 කමෙන්ට් කළ හැකිය.

පාන් පුවරුවේ ඇති මූලද්‍රව්‍ය සම්බන්ධ කිරීම මේ ආකාරයෙන් පෙනේ:

බ්‍රෙඩ්බෝඩ් එක පරීක්ෂා කිරීමෙන් පසු, “පුවරුව මත මූලද්‍රව්‍ය තැබීම” සහ “පෑස්සුම් යකඩ සමඟ වැඩ කිරීම” යන අදියර ආරම්භ විය. නිමි පුවරුවේ පළමු පරීක්ෂණයෙන් පසු, සිතුවිල්ලක් මගේ හිස තුළට රිංගා ඇත: යමක් වැරදී ඇත. බොහෝ දෙනෙකුට හුරුපුරුදු “පරීක්ෂක සමඟ වෙහෙස මහන්සි වී වැඩ කිරීම” මෙහි ආරම්භ වේ. කෙසේ වෙතත්, ගැටළු (යාබද සම්බන්ධතා කිහිපයක් අහම්බෙන් එකට පෑස්සුම් කර ඇත) ඉක්මනින් ඉවත් කරන ලද අතර LED වල දිගුකාලීන අපේක්ෂිත දුෂ්ට ආලෝකය මෙන්න.

එවිට එය ශරීරය පිළිබඳ කාරණයක් විය. මෙම හේතුව නිසා, අපගේ සංවේදක සඳහා සිදුරු සහිත ප්ලයිවුඩ් කපා ඇත. පිටුපස කවරයඑය විශේෂයෙන් ඉවත් කළ හැකි ලෙස සකස් කර ඇති අතර එමඟින් ඔබට ඇතුළත සිට දර්ශනය භුක්ති විඳීමට සහ අවශ්‍ය නම්, යමක් අවසන් කිරීමට හෝ නැවත කිරීමට හැකි වේ. පුවරුව සහ බල සැපයුම නැවත ක්‍රමලේඛනය කිරීම සඳහා එහි සිදුරු 2 ක් ද ඇත.

ශරීරය ද්වි-සංරචක ඉෙපොක්සි මැලියම් වලින් ඇලී ඇත. මීට පෙර එය හමු නොවූ අය සඳහා මෙම මැලියම් වල සුවිශේෂත්වය සඳහන් කිරීම වටී. මෙම නිෂ්පාදනය වෙනම බහාලුම් දෙකකින් පැමිණෙන අතර, අන්තර්ගතය මිශ්ර වූ විට, ක්ෂණික රසායනික ප්රතික්රියාවක් සිදු වේ. මිශ්ර කිරීමෙන් පසු, ඔබ විනාඩි 3-4 ක් ඇතුළත ඉක්මනින් ක්රියා කළ යුතුය. වැඩිදුර භාවිතය සඳහා, ඔබ නව කොටසක් මිශ්ර කළ යුතුය. එබැවින් ඔබ මෙය නැවත කිරීමට උත්සාහ කරන්නේ නම්, කුඩා කොටස් වලට මිශ්ර කර ඉතා ඉක්මනින් ක්රියා කරන ලෙස මගේ උපදෙස්, සිතන්නට වැඩි කාලයක් ගත නොවනු ඇත. එමනිසා, ශරීරය ඇලවිය යුත්තේ කෙසේද සහ කොතැනද යන්න ගැන කල්තියා සිතීම වටී. එපමණක්ද නොව, මෙය එක රැස්වීමකින් කළ නොහැකිය.

LED සහිත තීරු සවි කිරීම සඳහා ඉහළ ආවරණයසියලුම වයර් හොඳින් ගමන් කරන නලයක් ඇතුල් කරන ලදී.

පහන් කූඩුව පිළිබඳ ගැටළුව මතු වූ විට, කුඩා කාලයේදී මම සරල නූල්, මැලියම් සහ බැලූනයකින් අත්කම් නිර්මාණය කළ ආකාරය මට සිහිපත් විය, එය පදනම ලෙස සේවය කළේය. ලාම්පු සෙවන සඳහා වන මූලධර්මය එක හා සමානයි, නමුත් බහු අවයවයක් ඔතා බෝලයකට වඩා දුෂ්කර විය. ව්යුහය මත නූල් මගින් ඇතිවන පීඩනය හේතුවෙන් එය ඉහළට පටු වීමට පටන් ගත් අතර නූල් වැටීමට පටන් ගත්තේය. හදිසියේම, මගේ දෑත් මැලියම් වලින් ආවරණය කර ඇති අතර, ඉහළින් ව්යුහය ශක්තිමත් කිරීමට තීරණය විය. ඊට පස්සේ සීඩී එක උදව්වට ආවා. අවසාන ප්‍රතිඵලය මෙම රාත්‍රී ආලෝකයයි:

අවසානයේ ඔබ කියන්නට කැමති කුමක්ද?

ව්යාපෘතියේ මා වෙනස් කළ යුත්තේ කුමක්ද? දුර සංවේදක වලට TRIG සංඥාව සැපයීමට, කෙනෙකුට Arduino ප්‍රතිදානය තුනක් වෙනුවට එක භාවිතා කළ හැක. මම IR සංවේදකය සඳහා සිදුරක් ද ලබා දෙන්නෙමි (මට එය අමතක විය), එය, අහෝ, එය තවමත් දුරස්ථ පාලකයෙන් සංඥා කියවිය නොහැකි නඩුවේ සැඟවී ඇත. කෙසේ වෙතත්, ඔබට කිසිවක් පෑස්සීමට හෝ සරඹ කිරීමට නොහැකි බව කීවේ කවුද?

මෙය සිත්ගන්නාසුළු අධ්‍යයන වාරයක් බවත්, කඩදාසි මත නැති දෙයක් කිරීමට උත්සාහ කිරීමට හොඳ අවස්ථාවක් බවත්, එයට ස්තූතිවන්ත වන්නට මට “ළමා සිහින” අයිතමය අසල තවත් ටික් එකක් තැබිය හැකි බව සටහන් කිරීමට කැමැත්තෙමි. අලුත් දෙයක් උත්සාහ කිරීම දුෂ්කර යැයි ඔබ සිතන්නේ නම් සහ පළමුව කුමක් කළ යුතු දැයි ඔබ නොදන්නේ නම්, කරදර නොවන්න. බොහෝ මිනිසුන්ට ඔවුන්ගේ හිස පුරා සිතුවිල්ලක් තිබේ: ආරම්භ කළ යුත්තේ කොතැනින්ද සහ මෙය කළ හැක්කේ කෙසේද? ජීවිතයේ ඔබට ව්‍යාකූල විය හැකි බොහෝ කාර්යයන් ඇත, නමුත් ඔබ උත්සාහ කළ පසු, ඔබට මේ සඳහා ටිකක් උත්සාහ කිරීමට සිදු වුවද, ඔබේ ඇස්වල දීප්තියකින් කඳු චලනය කළ හැකි බව ඔබට පෙනෙනු ඇත.

අතිරේක කාර්යයක් සඳහා

    තවත් LED 1ක්

    220 Ohms නාමික අගයක් සහිත තවත් ප්‍රතිරෝධක 1ක්

    තවත් වයර් 2 ක්

ක්රමානුරූප සටහන

බ්රෙඩ්බෝඩ් මත යෝජනා ක්රමය

සටහන

    මෙම අත්හදා බැලීමේදී අපි බල සැපයුම සහ ඇනලොග් ආදානය අතර ඡායාරූප ප්රතිරෝධකයක් ස්ථාපනය කරමු, i.e. වෝල්ටීයතා බෙදුම් පරිපථයේ R1 ස්ථානගත කිරීමට. අපට මෙය අවශ්‍ය වන අතර එමඟින් ආලෝකය අඩු වන විට ප්‍රතිසම ආදානයේදී අපට අඩු වෝල්ටීයතාවයක් ලැබේ.

    LED මඟින් photoresistor ආලෝකමත් නොවන පරිදි සංරචක තැබීමට උත්සාහ කරන්න.

ස්කීච්

p050_night_light.ino #LED_PIN 13 නිර්වචනය #LDR_PIN A0 නිර්වචනය කරන්න #POT_PIN A1 void setup () ( pinMode(LED_PIN, OUTPUT) ; ) void loop () ( // ආලෝක මට්ටම කියවන්න. මාර්ගය වන විට, නිවේදනය කරන්න // ඔබට එකවර විචල්‍යයක් සහ අගයක් නියම කළ හැකිය int lightness = analogRead(LDR_PIN) ; // අපි නියාමනය කරන පොටෙන්ටියෝමීටරයෙන් අගය කියවන්න // කොන්දේසි සහිත අන්ධකාරය සහ ආලෝකය අතර එළිපත්ත අගය int threshold = analogRead(POT_PIN) ; // බූලියන් විචල්‍යයක් ප්‍රකාශ කර එයට අගයක් ලබා දෙන්න // "දැන් කළුවරද" බූලියන් විචල්‍යයන්, ඊට ප්‍රතිවිරුද්ධව // පූර්ණ සංඛ්‍යා, අගයන් දෙකෙන් එකක් පමණක් අඩංගු විය හැක: //ඇත්තද බොරුද. එවැනි අගයන් // බූලියන් ලෙසද හැඳින්වේ. boolean tooDark = (සැහැල්ලු බව< threshold) ; // වැඩසටහන් ශාඛාව භාවිතා කරන්න: ප්‍රොසෙසරය ඉන් එකක් ක්‍රියාත්මක කරයි // කොන්දේසිය ක්‍රියාත්මක කිරීම මත පදනම්ව කේත කොටස් දෙකක්. // (ඉංග්‍රීසි “if”) අඳුරු වැඩි නම්...(අඳුරු) නම් ( // ...ආලෝකය සක්රිය කරන්නඩිජිටල් රයිට් (LED_PIN, HIGH) ; ) වෙනත් ( // ...එසේ නොමැති නම් ආලෝකය අවශ්ය නොවේ - එය නිවා දමන්නඩිජිටල් රයිට් (LED_PIN, අඩු) ; ))

කේතය සඳහා පැහැදිලි කිරීම්

    අපි නව ආකාරයේ විචල්‍යයක් භාවිතා කරමු - බූලියන්, එය ගබඩා කරන්නේ සත්‍ය (සත්‍ය, 1) හෝ අසත්‍ය (අසත්‍ය, 0) අගයන් පමණි. මෙම අගයන් බූලියන් ප්‍රකාශන ඇගයීමේ ප්‍රතිඵලයකි. මෙම උදාහරණයේ දී, බූලියන් ප්රකාශනය සැහැල්ලු බව වේ< threshold . На человеческом языке это звучит как: «освещенность ниже порогового уровня». Такое высказывание будет истинным, когда освещенность ниже порогового уровня. Микроконтроллер может сравнить значения переменных lightness и threshold , которые, в свою очередь, являются результатами измерений, и вычислить истинность логического выражения.

    අපි මෙම තාර්කික ප්‍රකාශනය වරහන් තුළ තබන්නේ පැහැදිලිකම සඳහා පමණි. සෑම විටම කියවිය හැකි කේතයක් ලිවීම වඩා හොඳය. වෙනත් අවස්ථා වලදී, වරහන් සාමාන්‍ය අංක ගණිතයේ මෙන් මෙහෙයුම් අනුපිළිවෙලට බලපෑ හැකිය.

    අපගේ අත්හදා බැලීමේදී, අපි ක්‍රියාකරු භාවිතා කළ නිසා සැහැල්ලු අගය එළිපත්ත අගයට වඩා අඩු වූ විට බූලියන් ප්‍රකාශනය සත්‍ය වනු ඇත.< . Мы можем использовать операторы > , <= , >= , == , != , එනම් පිළිවෙළින් "වැඩි", "ට වඩා අඩු හෝ සමාන", "වැඩි හෝ සමාන," "සමාන", "සමාන නොවේ" යන්නයි.

    තාර්කික ක්‍රියාකරු සමඟ විශේෂයෙන් ප්‍රවේශම් වන්න == සහ එය පැවරුම් ක්‍රියාකරු = සමඟ පටලවා නොගන්න. පළමු අවස්ථාවේ දී, අපි ප්‍රකාශනවල අගයන් සංසන්දනය කර තාර්කික අගයක් (සත්‍ය හෝ අසත්‍ය) ලබා ගනිමු, දෙවන අවස්ථාවේ දී, අපි දකුණු ඔපෙරන්ඩ් හි අගය වම් ඔපෙරන්ඩ් වෙත පවරමු. සම්පාදකයා අපගේ අභිප්‍රායන් නොදන්නා අතර දෝෂයක් නිකුත් නොකරනු ඇත, නමුත් අපට යම් විචල්‍යයක අගය අහම්බෙන් වෙනස් කළ හැකි අතර පසුව දෝෂයක් සොයමින් දිගු කාලයක් ගත කළ හැකිය.

    කොන්දේසි සහිත if ප්‍රකාශය බොහෝ ක්‍රමලේඛන භාෂා වල ප්‍රධාන එකකි. එහි ආධාරයෙන්, අපට දැඩි ලෙස අර්ථ දක්වා ඇති ක්‍රියා අනුපිළිවෙලක් පමණක් නොව, ඇතැම් කොන්දේසි මත පදනම්ව ඇල්ගොරිතමයේ කුමන ශාඛාව අනුගමනය කළ යුතුද යන්න පිළිබඳව තීරණ ගත හැකිය.

    තාර්කික ප්රකාශනය සැහැල්ලුබව< threshold есть значение: true или false . Мы вычислили его и поместили в булеву переменную tooDark («слишком темно»). Таким образом мы как бы говорим «если слишком темно, то включить светодиод»

    එම සාර්ථකත්වය සමඟම අපට පැවසිය හැකිය "ආලෝකය එළිපත්ත මට්ටමට වඩා අඩු නම්, LED සක්රිය කරන්න", i.e. සම්පූර්ණ තාර්කික ප්‍රකාශනය යවන්න:

නම් (සැහැල්ලු බව< threshold) { // ... }

    පිටුපස කොන්දේසි සහිත ක්රියාකරුතාර්කික ප්‍රකාශනය සත්‍ය නම් ක්‍රියාත්මක වන කේත සමූහයක් අවශ්‍යයෙන්ම අනුගමනය කරන්නේ නම්. curly braces () දෙකම ගැන අමතක කරන්න එපා!

    ප්‍රකාශනය සත්‍ය නම්, අපට අවශ්‍ය වන්නේ ක්‍රියාත්මක කිරීම පමණි එකඋපදෙස්, එය (...) නොමැතිව වහාම ලිවිය හැක curly braces:

නම් (සැහැල්ලු බව< threshold) digitalWrite(LED_PIN, HIGH) ;

    if ප්‍රකාශය වෙනත් නිර්මිතයක් සමඟ දීර්ඝ කළ හැක. කේත බ්ලොක් එක හෝ එය අනුගමනය කරන තනි ප්‍රකාශය ක්‍රියාත්මක වන්නේ බූලියන් ප්‍රකාශනය අසත්‍ය ලෙස ඇගයීමට ලක් වුවහොත් පමණි. curly braces සම්බන්ධ නීති සමාන වේ. අපගේ අත්හදා බැලීමේදී, අපි ලිව්වේ "අඳුරු වැඩි නම්, LED සක්රිය කරන්න, එසේ නොමැතිනම් LED අක්රිය කරන්න."

ප්‍රභා ප්‍රතිරෝධක පදනම මත ගොඩනගා ඇති ආලෝක සංවේදක (ආලෝකය) බොහෝ විට සැබෑ Arduino ව්‍යාපෘතිවල භාවිතා වේ. ඒවා සාපේක්ෂව සරල, මිල අධික නොවන අතර ඕනෑම අන්තර්ජාල වෙළඳසැලකින් සොයා ගැනීමට සහ මිලදී ගැනීමට පහසුය. Arduino photoresistor ඔබට ආලෝක මට්ටම පාලනය කිරීමට සහ එහි වෙනස්කම් වලට ප්රතිචාර දැක්වීමට ඉඩ සලසයි. මෙම ලිපියෙන් අපි Photoresistor යනු කුමක්ද, එය මත පදනම් වූ ආලෝක සංවේදකයක් ක්‍රියා කරන ආකාරය සහ සංවේදකය Arduino පුවරු වලට නිසි ලෙස සම්බන්ධ කරන්නේ කෙසේද යන්න සොයා බලමු.

ෆොටෝ රෙසිස්ටරයක්, නමට අනුව, ප්‍රතිරෝධකවලට කෙලින්ම සම්බන්ධ වන අතර, ඒවා බොහෝ විට ඕනෑම ඉලෙක්ට්‍රොනික පරිපථයක දක්නට ලැබේ. සාම්ප්රදායික ප්රතිරෝධකයේ ප්රධාන ලක්ෂණය වන්නේ එහි ප්රතිරෝධයේ අගයයි. වෝල්ටීයතාවය සහ ධාරාව එය මත රඳා පවතී; ප්රතිරෝධකයක් භාවිතයෙන් අපි අනෙකුත් සංරචකවල අවශ්ය මෙහෙයුම් ආකාරයන් සකස් කරමු. රීතියක් ලෙස, ප්රතිරෝධකයේ ප්රතිරෝධක අගය එකම මෙහෙයුම් තත්වයන් යටතේ ප්රායෝගිකව වෙනස් නොවේ.

සාම්ප්‍රදායික ප්‍රතිරෝධකයක් මෙන් නොව, photoresistorඅවට ආලෝකයේ මට්ටම අනුව එහි ප්රතිරෝධය වෙනස් කළ හැකිය. මෙයින් අදහස් කරන්නේ දී ඉලෙක්ට්රොනික පරිපථයපරාමිතීන් නිරන්තරයෙන් වෙනස් වනු ඇත; පළමුවෙන්ම, අපි ඡායාරූප ප්රතිරෝධකයේ වෝල්ටීයතා පහත වැටීම ගැන උනන්දු වෙමු. මෙම වෝල්ටීයතා වෙනස්කම් Arduino හි ඇනලොග් අල්ෙපෙනති මත සටහන් කිරීමෙන්, අපට පරිපථයේ තර්කනය වෙනස් කළ හැකිය, එමඟින් බාහිර තත්වයන්ට අනුවර්තනය වන උපාංග නිර්මාණය කළ හැකිය.

Photoresistors ඉතා සක්‍රීයව විවිධ පද්ධතිවල භාවිතා වේ. වඩාත් පොදු යෙදුම වීදි ආලෝකකරණයයි. නගරයට රාත්‍රිය වැටුණහොත් හෝ එය වළාකුළු සහිත වුවහොත්, විදුලි පහන් ස්වයංක්‍රීයව දැල්වෙයි. ඔබට නිවස සඳහා ආර්ථිකමය ආලෝක බල්බයක් සෑදිය හැක්කේ කාලසටහනකට අනුව නොව, ආලෝකය මත ක්‍රියාත්මක වන ඡායාරූප ප්‍රතිරෝධකයකිනි. ඔබට ආලෝක සංවේදකයක් මත පදනම් වූ ආරක්ෂක පද්ධතියක් පවා සෑදිය හැකිය, එය සංවෘත කැබිනට්ටුවක් හෝ සේප්පුවක් විවෘත කර ආලෝකමත් වූ වහාම ක්‍රියාත්මක වේ. සෑම විටම මෙන්, ඕනෑම Arduino සංවේදක යෙදීමේ විෂය පථය අපගේ පරිකල්පනයෙන් පමණක් සීමා වේ.

අන්තර්ජාල වෙළඳසැල් වලින් මිලදී ගත හැකි ඡායාරූප ප්රතිරෝධක මොනවාද

වඩාත්ම ජනප්රිය සහ දැරිය හැකි විකල්පයවෙළඳපොලේ ඇති සංවේදක යනු චීන සමාගම් වලින් මහා පරිමාණ නිෂ්පාදනයේ ආකෘති, නිෂ්පාදක VT වෙතින් නිෂ්පාදන ක්ලෝන වේ. මෙම හෝ එම සැපයුම්කරු හරියටම නිපදවන්නේ කවුරුන්ද සහ කුමක් දැයි සොයා ගැනීමට සැමවිටම නොහැකි ය, නමුත් ඡායාරූප ප්‍රතිරෝධක සමඟ ආරම්භ කිරීමට, සරලම විකල්පය තරමක් සුදුසු ය.

නවක Arduino පරිශීලකයෙකුට මේ ආකාරයෙන් පෙනෙන සූදානම් කළ ඡායාරූප මොඩියුලයක් මිලදී ගැනීමට උපදෙස් දිය හැකිය:


මෙම මොඩියුලය දැනටමත් අවශ්‍ය සියලුම අංග අඩංගු වේ පහසු සම්බන්ධතාවය Arduino පුවරුවට photoresistor. සමහර මොඩියුල සංසන්දනාත්මක පරිපථයක් ක්‍රියාත්මක කරන අතර පාලනය සඳහා ඩිජිටල් ප්‍රතිදානයක් සහ ටිම් ප්‍රතිරෝධයක් සපයයි.

රුසියානු ගුවන්විදුලි ආධුනිකයෙකුට රුසියානු PA සංවේදකය වෙත හැරීමට උපදෙස් දිය හැකිය. විකිණීමට ඇත FR1-3, FR1-4, ආදිය. - සෝවියට් සමයේදී නැවත නිෂ්පාදනය කරන ලදී. එහෙත්, මෙය තිබියදීත්, FR1-3 වඩාත් නිවැරදි විස්තරයකි. මෙයින් මිලෙහි වෙනස පහත දැක්වේ.එෆ්ආර් සඳහා ඔවුන් රුබල් 400 කට වඩා වැඩි මුදලක් ඉල්ලන්නේ නැත. FR1-3 සඳහා රුබල් දහසකට වඩා වැඩි මුදලක් වැය වේ.

ඡායාරූප ප්රතිරෝධක සලකුණු කිරීම

රුසියාවේ නිෂ්පාදිත මාදිලිවල නවීන ලේබල් කිරීම තරමක් සරල ය. පළමු අකුරු දෙක PhotoResistor වේ, ඉරෙන් පසුව ඇති අංක සංවර්ධන අංකය දක්වයි. FR -765 - photoresistor, Development 765. සාමාන්‍යයෙන් කොටසෙහි සිරුරේ කෙලින්ම සලකුණු කර ඇත

VT සංවේදකය සලකුණු කිරීමේ රූප සටහනෙහි දක්වා ඇති ප්රතිරෝධක පරාසයක් ඇත. උදාහරණ වශයෙන්:

  • VT83N1 - 12-100kOhm (12K - ආලෝකමත්, 100K - අඳුරේ)
  • VT93N2 - 48-500kOhm (48K - ආලෝකමත්, 100K - අඳුරේ).

සමහර විට, ආකෘති පිළිබඳ තොරතුරු පැහැදිලි කිරීම සඳහා, විකුණුම්කරු නිෂ්පාදකයාගෙන් විශේෂ ලේඛනයක් සපයයි. මෙහෙයුම් පරාමිතීන්ට අමතරව, කොටසෙහි නිරවද්යතාව ද එහි දැක්වේ. සියලුම මාදිලි වර්ණාවලියේ දෘශ්ය කොටසෙහි සංවේදී පරාසයක් ඇත. එකතු කරනවා ආලෝක සංවේදකයමෙහෙයුමේ නිරවද්‍යතාවය සාපේක්ෂ සංකල්පයක් බව ඔබ තේරුම් ගත යුතුය. එකම නිෂ්පාදකයාගේ, එකම කාණ්ඩයේ හෝ එකම මිලදී ගැනීමේ මාදිලි සඳහා වුවද, එය 50% හෝ ඊට වඩා වෙනස් විය හැකිය.

කර්මාන්තශාලාවේ, කොටස් රතු සිට කොළ ආලෝකය දක්වා තරංග ආයාමයට සුසර කර ඇත. බොහෝ මිනිසුන් අධෝරක්ත කිරණ "දකියි". විශේෂයෙන් නිශ්චිත කොටස් වලට පාරජම්බුල කිරණ පවා හඳුනාගත හැකිය.

සංවේදකයේ වාසි සහ අවාසි

ඡායාරූප ප්රතිරෝධකවල ප්රධාන අවාසිය නම් වර්ණාවලියේ සංවේදීතාවයි. සිද්ධි ආලෝකයේ වර්ගය අනුව, ප්‍රතිරෝධය විශාලත්වයේ ඇණවුම් කිහිපයකින් වෙනස් විය හැක. අවාසි ද ඇතුළත් වේ අඩු වේගයආලෝකයේ වෙනස්කම් වලට ප්රතික්රියා. ආලෝකය දැල්වුවහොත්, සංවේදකයට ප්‍රතික්‍රියා කිරීමට කාලය නොමැත. වෙනස් වීමේ සංඛ්‍යාතය තරමක් ඉහළ නම්, ප්‍රතිරෝධකය සාමාන්‍යයෙන් ආලෝකය වෙනස් වන බව "දැකීම" නතර කරයි.

වාසි අතර සරල බව සහ ප්‍රවේශ්‍යතාවය ඇතුළත් වේ. එය මත වැටෙන ආලෝකය මත ප්රතිරෝධය සෘජුව වෙනස් කිරීම ඔබට සරල කිරීමට ඉඩ සලසයි විදුලි රූප සටහනසම්බන්ධතා. ෆොටෝරෙසිස්ටරය ඉතා ලාභදායී වේ, එය බොහෝ Arduino කට්ටල සහ ඉදිකිරීම්කරුවන්ට ඇතුළත් කර ඇත, එබැවින් ඕනෑම නවක Arduino නිෂ්පාදකයෙකුට පාහේ ලබා ගත හැකිය.

Arduino වෙත photoresistor සම්බන්ධ කිරීම

ව්යාපෘති වල arduinoෆොටෝරෙසිස්ටරය ආලෝක සංවේදකයක් ලෙස භාවිතා කරයි. එයින් තොරතුරු ලැබීමෙන්, පුවරුවට රිලේ සක්රිය හෝ අක්රිය කිරීමට, එන්ජින් ආරම්භ කිරීමට සහ පණිවිඩ යැවීමට හැකිය. ස්වාභාවිකවම, අපි සංවේදකය නිවැරදිව සම්බන්ධ කළ යුතුය.

ආලෝක සංවේදකය Arduino වෙත සම්බන්ධ කිරීමේ රූප සටහන තරමක් සරල ය. අපි photoresistor භාවිතා කරන්නේ නම්, සම්බන්ධතා රූප සටහනෙහි සංවේදකය වෝල්ටීයතා බෙදුම්කරුවෙකු ලෙස ක්රියාත්මක වේ. එක් අතක් ආලෝක මට්ටම අනුව වෙනස් වේ, දෙවැන්න ඇනලොග් ආදානයට වෝල්ටීයතාව සපයයි. පාලක චිපයේ, මෙම වෝල්ටීයතාව ADC හරහා ඩිජිටල් දත්ත බවට පරිවර්තනය වේ. නිසා ආලෝකය වැදෙන විට සංවේදකයේ ප්‍රතිරෝධය අඩු වූ විට, එය හරහා වැටෙන වෝල්ටීයතාවයේ අගය ද අඩු වේ.

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

පුවරුවම ස්ථාපනය කිරීම කිසිදු දුෂ්කරතාවයක් ඇති නොකළ යුතුය. ෆොටෝරෙසිස්ටරයට ධ්‍රැවීයතාවක් නොමැති බැවින්, එය දෙපස සිට සම්බන්ධ කළ හැකිය; එය පුවරුවට පෑස්සීමට, පරිපථ පුවරුවක් භාවිතයෙන් වයර් සමඟ සම්බන්ධ කිරීමට හෝ සම්බන්ධ කිරීම සඳහා සාමාන්‍ය ක්ලිප් (කිඹුල් ක්ලිප්) සමඟ භාවිතා කළ හැකිය. පරිපථයේ බලශක්ති ප්රභවය Arduino ම වේ. ෆොටෝරෙසිස්ටරයඑක් කකුලක් බිමට සම්බන්ධ වේ, අනෙක ADC පුවරුවට සම්බන්ධ වේ (අපගේ උදාහරණයේ - AO). අපි එකම කකුලට 10 kOhm ප්රතිරෝධකයක් සම්බන්ධ කරමු. ස්වාභාවිකවම, ඔබට ෆොටෝ රෙසිස්ටරයක් ​​ඇනලොග් පින් A0 වෙත පමණක් නොව වෙනත් ඕනෑම දෙයකට සම්බන්ධ කළ හැකිය.

අතිරේක 10 K ප්‍රතිරෝධකය ගැන වචන කිහිපයක්. එය අපගේ පරිපථයේ කාර්යයන් දෙකක් ඇත: පරිපථයේ ධාරාව සීමා කිරීම සහ සෑදීම අවශ්ය වෝල්ටීයතාවයබෙදුම්කරු සහිත පරිපථයක. සම්පූර්ණයෙන්ම ආලෝකමත් කරන ලද ෆොටෝරෙසිස්ටරයක් ​​එහි ප්රතිරෝධය තියුනු ලෙස අඩු කරන තත්වයක් තුළ වත්මන් සීමාව අවශ්ය වේ. වෝල්ටීයතා උත්පාදනය යනු ඇනලොග් වරායේ පුරෝකථනය කළ හැකි අගයන් සඳහා ය. ඇත්තටම සඳහා සාමාන්ය මෙහෙයුම්අපගේ photoresistors සමඟ, 1K ප්‍රතිරෝධයක් ප්‍රමාණවත් වේ.

ප්රතිරෝධක අගය වෙනස් කිරීමෙන් අපට සංවේදීතා මට්ටම "අඳුරු" සහ "ආලෝකය" යන පැතිවලට "මාරු" කළ හැකිය. ඉතින්, 10 K ලබා දෙනු ඇත වේගයෙන් මාරු වීමආලෝකයේ ආරම්භය. 1K අවස්ථාවෙහිදී, ආලෝක සංවේදකය ඉහළ ආලෝක මට්ටම් වඩාත් නිවැරදිව හඳුනා ගනී.

ඔබ භාවිතා කරන්නේ නම් සූදානම් මොඩියුලයආලෝක සංවේදකය, එවිට සම්බන්ධතාවය වඩාත් සරල වනු ඇත. අපි VCC මොඩියුලයේ ප්රතිදානය පුවරුවේ 5V සම්බන්ධකයට, GND සිට බිමට සම්බන්ධ කරමු. අපි ඉතිරි pins Arduino සම්බන්ධක වලට සම්බන්ධ කරමු.

පුවරුවේ ඩිජිටල් නිමැවුමක් තිබේ නම්, අපි එය ඩිජිටල් පින් වෙත යවමු. එය ඇනලොග් නම්, ඇනලොග් වෙත යන්න. පළමු අවස්ථාවේදී, අපට ප්‍රේරක සංඥාවක් ලැබෙනු ඇත - ආලෝක මට්ටම ඉක්මවා ඇත (ප්‍රේරක සීමාව ගැලපුම් ප්‍රතිරෝධයක් භාවිතයෙන් සකස් කළ හැක). ඇනලොග් පින් වලින් අපට සැබෑ ආලෝක මට්ටමට සමානුපාතික වෝල්ටීයතා අගයක් ලබා ගත හැකිය.

ඡායාරූප ප්‍රතිරෝධකයක් මත ආලෝක සංවේදකයක උදාහරණ සටහනක්

අපි ෆොටෝරෙසිස්ටරය සමඟ පරිපථය Arduino වෙත සම්බන්ධ කර සියල්ල නිවැරදිව සිදු කිරීමට වග බලා ගත්තා. දැන් ඉතිරිව ඇත්තේ පාලකය වැඩසටහන් කිරීමයි.

ආලෝක සංවේදකයක් සඳහා සටහනක් ලිවීම තරමක් සරල ය. අපට අවශ්‍ය වන්නේ සංවේදකය සම්බන්ධ කර ඇති ඇනලොග් පින් එකෙන් වත්මන් වෝල්ටීයතා අගය ඉවත් කිරීම පමණි. මෙය සිදු කරන්නේ අප කවුරුත් දන්නා analogRead() ශ්‍රිතය භාවිතා කරමිනි. එවිට අපට ආලෝකයේ මට්ටම අනුව සමහර ක්රියා සිදු කළ හැකිය.

පහත පරිපථයට අනුව සම්බන්ධ කර ඇති LED එකක් සක්‍රිය හෝ අක්‍රිය කරන ආලෝක සංවේදකයක් සඳහා කටු සටහනක් ලියමු.

මෙහෙයුම් ඇල්ගොරිතම පහත පරිදි වේ:

  • ඇනලොග් පින් එකෙන් සංඥා මට්ටම තීරණය කරන්න.
  • අපි එළිපත්ත අගය සමඟ මට්ටම සංසන්දනය කරමු. උපරිම අගය අන්ධකාරයට අනුරූප වේ, අවම අගය උපරිම ආලෝකයට අනුරූප වේ. අපි 300 ට සමාන threshold අගයක් තෝරමු.
  • මට්ටම එළිපත්තට වඩා අඩු නම්, එය අඳුරු වේ, ඔබ LED සක්රිය කළ යුතුය.
  • එසේ නොමැතිනම්, LED නිවා දමන්න.
#PIN_LED 13 නිර්වචනය කරන්න #PIN_PHOTO_SENSOR A0 void setup() (Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( int val = analogRead(PIN_PHOTO_SENSOR); Serial.println (val.println); val< 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

ප්‍රභා ප්‍රතිරෝධකය (ඔබේ දෑතින් හෝ ආලෝකයට ඔරොත්තු දෙන වස්තුවකින්) ආවරණය කිරීමෙන් LED එක සක්‍රිය සහ අක්‍රිය වීම අපට නිරීක්ෂණය කළ හැක. කේතයේ එළිපත්ත පරාමිතිය වෙනස් කිරීමෙන්, විවිධ ආලෝක මට්ටම්වලදී ආලෝක බල්බය සක්රිය / අක්රිය කිරීමට අපට බල කළ හැකිය.

ස්ථාපනය කරන විට, දීප්තිමත් LED වලින් අඩු ආලෝකය ආලෝක සංවේදකය මතට වැටෙන පරිදි photoresistor සහ LED එකින් එක හැකිතාක් දුරට තැබීමට උත්සාහ කරන්න.

ආලෝක සංවේදකය සහ පසුතල දීප්තියෙහි සුමට වෙනසක්

ආලෝකයේ මට්ටම අනුව LED වල දීප්තිය වෙනස් වන පරිදි ඔබට ව්යාපෘතිය වෙනස් කළ හැකිය. අපි ඇල්ගොරිතමයට පහත වෙනස්කම් එකතු කරන්නෙමු:

  • අපි PWM හරහා ආලෝක බල්බයේ දීප්තිය වෙනස් කරන්නෙමු, ඇනලොග් රයිට් () භාවිතයෙන් LED සහිත පින් එකට 0 සිට 255 දක්වා අගයන් යවමු.
  • ආලෝක සංවේදකයේ සිට (0 සිට 1023 දක්වා) ආලෝක මට්ටමේ ඩිජිටල් අගය LED ​​දීප්තියේ PWM පරාසය (0 සිට 255 දක්වා) බවට පරිවර්තනය කිරීම සඳහා, අපි සිතියම () ශ්‍රිතය භාවිතා කරමු.

ස්කීච් උදාහරණය:

#PIN_LED 10 නිර්වචනය කරන්න #PIN_PHOTO_SENSOR A0 void setup() (Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() (int val = analogRead(PIN_PHOTO_SENSOR); Serial.println); = සිතියම(val, 0, 1023, 0, 255); // ලැබෙන අගය PWM සංඥා මට්ටමට පරිවර්තනය කරන්න. ආලෝකකරණ අගය අඩු වන විට, PWM හරහා LED වෙත සැපයිය යුතු බලය අඩු වේ. analogWrite(PIN_LED, ledPower) // දීප්තිය වෙනස් කරන්න)

වෙනත් සම්බන්ධතා ක්‍රමයකදී, ප්‍රතිසම වරායෙන් ලැබෙන සංඥාව ආලෝකකරණ මට්ටමට සමානුපාතික වන විට, ඔබට එය උපරිමයෙන් අඩු කිරීමෙන් අගය “ආපසු හැරවීමට” අවශ්‍ය වනු ඇත:

Int val = 1023 - analogRead (PIN_PHOTO_RESISTOR);

ෆොටෝරෙසිස්ටරය සහ රිලේ භාවිතා කරමින් ආලෝක සංවේදක පරිපථය

ආර්ඩුයිනෝ හි ක්‍රමලේඛන රිලේ පිළිබඳ ලිපියේ රිලේ සමඟ වැඩ කිරීම සඳහා රූප සටහන් සඳහා උදාහරණ ලබා දී ඇත. මෙම අවස්ථාවෙහිදී, අපට සංකීර්ණ චලනයන් සිදු කිරීමට අවශ්ය නොවේ: "අන්ධකාරය" තීරණය කිරීමෙන් පසුව අපි හුදෙක් රිලේය සක්රිය කර එහි පින් එකට අනුරූප අගය යොදන්නෙමු.

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

නිගමනය

photoresistor මත පදනම් වූ ආලෝක සංවේදකයක් භාවිතා කරන ව්යාපෘති තරමක් සරල හා ඵලදායී වේ. ඔබට බොහෝ රසවත් ව්යාපෘති ක්රියාත්මක කළ හැකි අතර, උපකරණවල පිරිවැය ඉහළ නොවනු ඇත. අතිරේක ප්රතිරෝධයක් සහිත වෝල්ටීයතා බෙදුම් පරිපථයක් භාවිතයෙන් ඡායාරූප ප්රතිරෝධකය සම්බන්ධ වේ. සංවේදකය විවිධ ආලෝක මට්ටම් මැනීමට ඇනලොග් පෝට් එකකට හෝ අප සැලකිලිමත් වන්නේ අන්ධකාරයේ කාරනය නම් ඩිජිටල් එකකට සම්බන්ධ කර ඇත. ස්කීච් එකේ, අපි හුදෙක් ඇනලොග් (හෝ ඩිජිටල්) පෝට් එකකින් දත්ත කියවා වෙනස්කම් වලට ප්‍රතික්‍රියා කරන්නේ කෙසේදැයි තීරණය කරමු. දැන් එවැනි සරල “ඇස්” ඔබේ ව්‍යාපෘතිවල දිස්වනු ඇතැයි අපි බලාපොරොත්තු වෙමු.

මෙම අත්හදා බැලීමේදී, ආලෝක මට්ටම පොටෙන්ටියෝමීටරයකින් සකසන ලද එළිපත්තකට වඩා පහළට වැටෙන විට LED ක්‍රියාත්මක විය යුතුය.

අත්හදා බැලීම සඳහා කොටස් ලැයිස්තුව

- 1 Arduino Uno පුවරුව;

- පෑස්සුම් රහිත පාන් පුවරුව 1;

- 1 LED;

- 1 ඡායාරූප ප්රතිරෝධක;

- 220 Ohms නාමික අගයක් සහිත 1 ප්රතිරෝධයක්, 10 kOhms නාමික අගයක් සහිත 1 ප්රතිරෝධයක්;

- 1 විචල්ය ප්රතිරෝධක (potentiometer);

- පිරිමි-පිරිමි වයර් 10 ක්.

අමතර කාර්යය සඳහා විස්තර

තවත් 1 LED;

220 Ohms නාමික අගයක් සහිත තවත් 1 ප්රතිරෝධක;

තවත් වයර් 2 ක්.

පරිපථ සටහන

BREADBOARD මත රූප සටහන

SKETCH

Arduino IDE සඳහා ස්කීච් බාගන්න
#define LED_PIN 13 #define LDR_PIN A0 #define POT_PIN A1 void setup() ( pinMode(LED_PIN, OUTPUT); ) void loop() ( // ආලෝක මට්ටම කියවන්න. මාර්ගයෙන්, // ඔබට විචල්‍යයක් ප්‍රකාශ කර පැවරිය හැක. එයට එකවර අගයක් int සැහැල්ලුබව = analogRead(LDR_PIN); // අපි සකස් කිරීමට භාවිතා කරන පොටෙන්ටියෝමීටරයෙන් අගය කියවන්න // කොන්දේසි සහිත අන්ධකාරය සහ ආලෝකයේ සීමාව අතර එළිපත්ත අගය = analogRead(POT_PIN); // ප්‍රකාශ කරන්න තාර්කික විචල්‍යය සහ එයට // "දැන් අඳුරුද" යන අගය ලබා දෙන්න. // පූර්ණ සංඛ්‍යා විචල්‍ය මෙන් නොව බූලියන් විචල්‍යවල අඩංගු විය හැක්කේ // සත්‍ය හෝ අසත්‍ය යන අගයන් දෙකෙන් එකක් පමණි. එවැනි අගයන් // බූලියන් ලෙසද හැඳින්වේ. boolean tooDark = (සැහැල්ලු බව< threshold); // используем ветвление программы: процессор исполнит один из // двух блоков кода в зависимости от исполнения условия. // Если (англ. «if») слишком темно... if (tooDark) { // ...включаем освещение digitalWrite(LED_PIN, HIGH); } else { // ...иначе свет не нужен — выключаем его digitalWrite(LED_PIN, LOW); } }

කේතය සඳහා පැහැදිලි කිරීම්

  • අපි නව විචල්‍ය වර්ගයක් භාවිතා කරනවා - බූලියන්, අගයන් පමණක් ගබඩා කරන සැබෑ (ඇත්ත, 1) හෝ බොරු (අසත්‍ය, 0) මෙම අගයන් බූලියන් ප්‍රකාශන ඇගයීමේ ප්‍රතිඵලයකි. මෙම උදාහරණයේ දී, බූලියන් ප්‍රකාශනය වේ සැහැල්ලු බව< threshold . මිනිස් භාෂාවෙන් මෙය ශබ්ද කරන්නේ: "එළිමහන මට්ටමට පහළින් ආලෝකය". ආලෝකය එළිපත්ත මට්ටමට වඩා පහළින් ඇති විට එවැනි ප්රකාශයක් සත්ය වනු ඇත. ක්ෂුද්‍ර පාලකයට විචල්‍යවල අගයන් සැසඳිය හැක සැහැල්ලු බවසහ එළිපත්ත, අනෙක් අතට මිනුම් ප්රතිඵල වන අතර, තාර්කික ප්රකාශනයේ සත්යය ගණනය කරන්න.
  • අපි මෙම තාර්කික ප්‍රකාශනය වරහන් තුළ තබන්නේ පැහැදිලිකම සඳහා පමණි. සෑම විටම කියවිය හැකි කේතයක් ලිවීම වඩා හොඳය. වෙනත් අවස්ථා වලදී, වරහන් සාමාන්‍ය අංක ගණිතයේ මෙන් මෙහෙයුම් අනුපිළිවෙලට බලපෑ හැකිය.
  • අපගේ අත්හදා බැලීමේදී, අගය වූ විට බූලියන් ප්‍රකාශනයක් සත්‍ය වේ සැහැල්ලු බවවටිනාකමට වඩා අඩුය එළිපත්තමොකද අපි operator එක පාවිච්චි කරපු නිසා < . අපට ක්රියාකරුවන් භාවිතා කළ හැකිය > , <= , >= , = = , != , එයින් අදහස් වන්නේ පිළිවෙලින් "වඩා වැඩි", "ට වඩා අඩු හෝ සමාන", "වඩා වැඩි හෝ සමාන", "සමාන", "සමාන නොවේ" යන්නයි.
  • තාර්කික ක්රියාකරු සමඟ විශේෂයෙන් ප්රවේශම් වන්න = = පැවරුම් ක්‍රියාකරු සමඟ එය පටලවා නොගන්න = . පළමු අවස්ථාවේ දී, අපි ප්‍රකාශනවල අගයන් සංසන්දනය කර තාර්කික අගයක් (සත්‍ය හෝ අසත්‍ය) ලබා ගනිමු, දෙවන අවස්ථාවේ දී, අපි දකුණු ඔපෙරන්ඩ් හි අගය වම් ඔපෙරන්ඩ් වෙත පවරමු. සම්පාදකයා අපගේ අභිප්‍රායන් නොදන්නා අතර දෝෂයක් නිකුත් නොකරනු ඇත, නමුත් අපට යම් විචල්‍යයක අගය අහම්බෙන් වෙනස් කළ හැකි අතර පසුව දෝෂයක් සොයමින් දිගු කාලයක් ගත කළ හැකිය.
  • කොන්දේසි සහිත ක්රියාකරු නම්නම්") යනු බොහෝ ක්‍රමලේඛන භාෂා වල ප්‍රධාන එකකි. එහි ආධාරයෙන්, අපට දැඩි ලෙස අර්ථ දක්වා ඇති ක්‍රියා අනුපිළිවෙලක් පමණක් නොව, ඇතැම් කොන්දේසි මත පදනම්ව ඇල්ගොරිතමයේ කුමන ශාඛාව අනුගමනය කළ යුතුද යන්න පිළිබඳව තීරණ ගත හැකිය.
  • තාර්කික ප්‍රකාශනයක් සඳහා සැහැල්ලු බව< threshold අර්ථයක් තිබේ: සැබෑහෝ බොරු. අපි එය ගණනය කර එය බූලියන් විචල්‍යයකට දැමුවෙමු ඉතා අඳුරු("අඳුරු") මේ අනුව, අපි "අඳුරු වැඩි නම්, LED සක්රිය කරන්න" යැයි කියනු පෙනේ.
  • එම සාර්ථකත්වය සමඟම අපට පැවසිය හැකිය "ආලෝකය එළිපත්ත මට්ටමට වඩා අඩු නම්, LED සක්රිය කරන්න", i.e. වෙත මාරු කරන්න නම්සියලු තාර්කික ප්රකාශනය:
නම් (සැහැල්ලු බව< threshold) { // ... }
  • කොන්දේසි සහිත ප්රකාශය පිටුපස නම්තාර්කික ප්‍රකාශනය සත්‍ය නම් ක්‍රියාත්මක වන කේත සමූහයක් තිබිය යුතුය. curly braces දෙකම අමතක කරන්න එපා {} !
  • ප්‍රකාශනය සත්‍ය නම්, අපට අවශ්‍ය වන්නේ ක්‍රියාත්මක කිරීම පමණි එක උපදෙස්, එය වහාම ලිවිය හැක නම් (…)රැලි වරහන් නොමැතිව:
නම් (සැහැල්ලු බව< threshold) digitalWrite(LED_PIN, HIGH);
  • ක්රියාකරු නම්නිර්මාණය මගින් දීර්ඝ කළ හැක වෙනත්("වෙනත් ආකාරයකින්"). තාර්කික ප්‍රකාශනය නම් පමණක් ක්‍රියාත්මක වනුයේ කේත සමූහයක් හෝ එය අනුගමනය කරන තනි ප්‍රකාශයකි නම්අර්ථය ඇත බොරු , « බොරු කියනවා" curly braces සම්බන්ධ නීති සමාන වේ. අපගේ අත්හදා බැලීමේදී, අපි ලිව්වේ "අඳුරු වැඩි නම්, LED සක්රිය කරන්න, එසේ නොමැතිනම් LED අක්රිය කරන්න."

ඔබම පරීක්ෂා කර ගැනීමට ප්‍රශ්න

  1. අපි ඇනලොග් ආදානය සහ බිම අතර ෆොටෝරෙසිස්ටරයක් ​​ස්ථාපනය කරන්නේ නම්, අපගේ උපාංගය ප්රතිලෝමව ක්රියා කරනු ඇත: ආලෝකයේ ප්රමාණය වැඩි වන විට LED ක්රියාත්මක වේ. ඇයි?
  2. LED එකේ ආලෝකය photoresistor එක මත වැටුනොත් උපාංගයේ ක්‍රියාකාරිත්වයේ ප්‍රතිඵලය කුමක්ද?
  3. පෙර ප්‍රශ්නයේ සඳහන් පරිදි අපි photoresistor ස්ථාපනය කරන්නේ නම්, උපාංගය නිවැරදිව ක්‍රියාත්මක වන පරිදි වැඩසටහන වෙනස් කළ යුත්තේ කෙසේද?
  4. අපි හිතමු කෝඩ් එක තියෙනවා කියලා (කොන්දේසි) නම් (ක්‍රියාව;). එය සිදු කරනු ලබන්නේ කුමන අවස්ථා වලදීද? කටයුතු ?
  5. කුමන අගයන් යටතේද yප්රකාශනය x + y > 0නම් සැබෑ වනු ඇත x > 0 ?
  6. කොන්දේසිය ප්‍රකාශයේ තිබේ නම් කුමන උපදෙස් ක්‍රියාත්මක කළ යුතුද යන්න සඳහන් කිරීම අවශ්‍යද? නම්බොරුද?
  7. ක්රියාකරු අතර වෙනස කුමක්ද = = ක්රියාකරුගෙන් = ?
  8. අපි ඉදිකිරීම් භාවිතා කරන්නේ නම් (තත්ත්වය) ක්‍රියාව1 නම්; වෙනත් ක්‍රියාව2;, කිසිම ක්‍රියාවක් ක්‍රියාත්මක නොවන තත්වයක් තිබිය හැකිද? ඇයි?

ස්වාධීන විසඳුම සඳහා කාර්යයන්

  1. විචල්‍යය භාවිතා නොකර වැඩසටහන නැවත ලියන්න ඉතා අඳුරුඋපාංගයේ ක්රියාකාරිත්වය පවත්වා ගනිමින්.
  2. පරිපථයට තවත් LED එකක් එකතු කරන්න. වැඩසටහන සම්පූර්ණ කරන්න එවිට ආලෝකය එළිපත්ත අගයට වඩා පහළට වැටෙන විට, එක් LED එකක් ක්‍රියාත්මක වන අතර, ආලෝකය එළිපත්ත අගයෙන් අඩකට වඩා අඩු වූ විට, LED දෙකම ක්‍රියාත්මක වේ.
  3. එම මූලධර්මය අනුව LED සක්‍රිය වන පරිදි පරිපථය සහ ක්‍රමලේඛය වෙනස් කරන්න, නමුත් ෆොටෝ රෙසිස්ටරය මත අඩු ආලෝකය වැටෙන තරමට වඩා තීව්‍ර ලෙස දිලිසෙන්න.




ඉහල