Sensor gerak otomatisasi pencahayaan Arduino ir photoresistor. Fotoresistor dan LED pada Arduino

Artikel Baru

● Proyek 13: Fotoresistor. Kami memproses penerangan dengan menyalakan atau memadamkan LED

Dalam percobaan ini, kita akan berkenalan dengan sensor analog untuk mengukur iluminasi - fotoresistor (Gbr.13.1).

Komponen yang diperlukan:

Penggunaan umum fotoresistor adalah untuk mengukur iluminasi. Dalam gelap, perlawanannya cukup besar. Ketika cahaya mengenai fotoresistor, resistansi turun sebanding dengan iluminasi. Diagram untuk menghubungkan fotoresistor ke Arduino ditunjukkan pada Gambar. 13.2. Untuk mengukur iluminasi, perlu untuk memasang pembagi tegangan, di mana lengan atas akan diwakili oleh fotoresistor, yang lebih rendah - oleh resistor biasa dengan peringkat yang cukup besar. Kami akan menggunakan resistor 10k. Kami menghubungkan lengan tengah pembagi ke input analog A0 dari Arduino.

Beras. 13.2. Diagram pengkabelan fotoresistor ke Arduino

Mari kita menulis sketsa pembacaan data analog dan mengirimkannya ke port serial. Isi sketsa ditunjukkan pada Listing 13.1.

Int cahaya; // variabel untuk menyimpan data fotoresistor batalkan pengaturan ()(Serial.begin (9600);) lingkaran kosong ()(light = analogRead (0); Serial.println (ringan); delay (100);)
Prosedur koneksi:

1. Kami menghubungkan fotoresistor sesuai dengan diagram pada gambar. 13.2.
2. Muat sketsa dari Listing 13.1 ke papan Arduino.
3. Kami mengatur iluminasi photoresistor dengan tangan dan mengamati output ke port serial dari nilai yang berubah, mengingat pembacaan pada penerangan penuh ruangan dan pada pemblokiran penuh fluks bercahaya.

Sekarang mari kita buat indikator lampu menggunakan deretan LED sebanyak 8 LED. Jumlah LED yang menyala sebanding dengan penerangan saat ini. Kami merakit LED sesuai dengan diagram pada Gambar. 13.3 menggunakan resistor pembatas 220 ohm.

Beras. 13.3. Diagram pengkabelan fotoresistor dan LED ke Arduino


Isi sketsa untuk menampilkan iluminasi saat ini pada bilah LED ditunjukkan pada Daftar 13.2.

// Kontak untuk menghubungkan LED const int led = (3, 4, 5, 6, 7, 8, 9, 10); const int CAHAYA = A0; // Pin A0 untuk input fotoresistor const int MIN_LIGHT = 200; // Ambang iluminasi lebih rendah const int MAX_LIGHT = 900; // ambang iluminasi atas // Variabel untuk menyimpan data fotoresistor int nilai = 0; batalkan pengaturan (){ // Konfigurasikan pin LED sebagai output untuk (int i = 0; i<8 ;i++) pinMode(leds[i],OUTPUT); } lingkaran kosong ()(val = analogRead (LIGHT); // Baca pembacaan fotoresistor // Menggunakan fungsi peta () val = peta (val, MIN_LIGHT, MAX_LIGHT, 8, 0); // kita batasi agar tidak melebihi batas val = kendala (val, 0, 8); // nyalakan jumlah LED sebanding dengan iluminasi, // padamkan sisanya untuk (int i = 1; i<9 ;i++) { if (i>= val) // nyalakan lednya digitalWrite (led, TINGGI); lain // matikan LED digitalWrite (led, RENDAH); ) penundaan (1000); // jeda sebelum pengukuran berikutnya }
Prosedur koneksi:

1. Kami menghubungkan fotoresistor dan LED sesuai dengan diagram pada gambar. 13.3.
2. Muat sketsa dari Listing 13.2 ke papan Arduino.
3. Kami menyesuaikan iluminasi fotoresistor dengan tangan dan menentukan tingkat iluminasi saat ini dengan jumlah LED yang menyala (Gbr. 13.3).

Kami mengambil batas bawah dan atas iluminasi dari nilai yang diingat saat melakukan percobaan pada sketsa sebelumnya (Daftar 13.1). Kami menskalakan nilai iluminasi menengah dengan 8 nilai (8 LED) dan menyalakan jumlah LED sebanding dengan nilai antara batas bawah dan atas.

Daftar program

Sensor cahaya (pencahayaan), dibangun berdasarkan fotoresistor, cukup sering digunakan dalam proyek Arduino nyata. Mereka relatif sederhana, tidak mahal, dan mudah ditemukan dan dibeli dari toko online mana pun.

Fotoresistor Arduino memungkinkan Anda untuk mengontrol tingkat iluminasi dan merespons perubahannya. Pada artikel ini, kita akan melihat apa itu fotoresistor, cara kerja sensor cahaya berdasarkan itu, cara menghubungkan sensor ke papan Arduino dengan benar.

Photoresistor, seperti namanya, banyak berkaitan dengan resistor yang sering ditemukan di hampir semua rangkaian elektronik. Ciri utama resistor konvensional adalah nilai resistansinya. Tegangan dan arus bergantung padanya, dengan bantuan resistor kami mengatur mode operasi yang diperlukan dari komponen lain. Sebagai aturan, nilai resistansi resistor di bawah kondisi operasi yang sama praktis tidak berubah.

Tidak seperti resistor konvensional, resistor ini dapat mengubah resistansinya tergantung pada tingkat cahaya sekitar. Ini berarti bahwa parameter dalam rangkaian elektronik akan terus berubah, pertama-tama kita tertarik pada tegangan yang jatuh pada fotoresistor. Dengan memperbaiki perubahan tegangan ini pada pin analog Arduino, kita dapat mengubah logika operasi rangkaian, sehingga menciptakan perangkat yang beradaptasi dengan kondisi eksternal.

Fotoresistor secara aktif digunakan dalam berbagai sistem. Aplikasi yang paling umum adalah lampu jalan. Jika malam tiba di kota atau mendung, lampu menyala secara otomatis. Anda dapat membuat bola lampu ekonomis untuk rumah dari fotoresistor, yang tidak menyala sesuai jadwal, tetapi tergantung pada pencahayaan. Berdasarkan sensor cahaya, Anda bahkan dapat membuat sistem keamanan yang akan dipicu segera setelah lemari tertutup atau brankas dibuka dan diterangi. Seperti biasa, cakupan sensor Arduino hanya dibatasi oleh imajinasi kita.

Fotoresistor apa yang dapat dibeli di toko online

Opsi sensor paling populer dan terjangkau di pasaran adalah model produksi massal perusahaan Cina, tiruan dari produk VT. Untuk memulai dengan fotoresistor, opsi paling sederhana cukup cocok.

Seorang pemain arduino pemula dapat disarankan untuk membeli modul foto yang sudah jadi, yang terlihat seperti ini:

Modul ini sudah memiliki semua elemen yang diperlukan untuk koneksi sederhana dari fotoresistor ke papan arduino. Dalam beberapa modul, sirkuit dengan komparator diimplementasikan dan output digital dan pemangkas untuk kontrol tersedia.

Seorang amatir radio Rusia dapat disarankan untuk beralih ke sensor FR Rusia. Tersedia untuk dijual FR1-3, FR1-4, dll. - diproduksi kembali di masa serikat. Namun, meskipun demikian, FR1-3 adalah detail yang lebih akurat. Dari sini mengikuti perbedaan harga.Untuk FR mereka meminta tidak lebih dari 400 rubel. FR1-3 masing-masing akan berharga lebih dari seribu rubel.

Penandaan model modern yang diproduksi di Rusia cukup sederhana. Dua huruf pertama adalah PhotoResistor, angka setelah tanda hubung menunjukkan angka pengembangan. FR-765 - photoresistor, pengembangan 765. Biasanya ditandai langsung pada badan bagian

Untuk sensor VT, kisaran resistansi ditunjukkan dalam diagram penandaan. Sebagai contoh:

  • VT83N1 - 12-100kOhm (12K - menyala, 100K - dalam gelap)
  • VT93N2 - 48-500kOhm (48K - menyala, 100K - dalam gelap).

Terkadang penjual memberikan dokumen khusus dari produsen untuk memperjelas informasi tentang model. Selain parameter kerja, keakuratan bagian juga ditunjukkan di sana. Semua model memiliki rentang sensitivitas di bagian spektrum yang terlihat. Mengumpulkan sensor cahaya Anda perlu memahami bahwa akurasi operasi adalah konsep bersyarat. Bahkan untuk model dari satu pabrikan, satu batch, satu pembelian, dapat berbeda hingga 50% atau lebih.

Di pabrik, suku cadang disetel ke panjang gelombang dari merah ke hijau. Pada saat yang sama, mayoritas "melihat" radiasi inframerah. Detail yang sangat presisi bahkan dapat menangkap sinar ultraviolet.

Keuntungan dan kerugian dari sensor

Kerugian utama dari fotoresistor adalah sensitivitasnya terhadap spektrum. Tergantung pada jenis cahaya datang, resistansi dapat bervariasi dengan beberapa urutan besarnya. Kerugiannya juga termasuk kecepatan reaksi yang rendah terhadap perubahan iluminasi. Jika lampu berkedip, sensor tidak punya waktu untuk merespons. Jika frekuensi perubahan agak tinggi, resistor akan berhenti "melihat" bahwa iluminasi berubah.

Keuntungannya termasuk kesederhanaan dan keterjangkauan. Perubahan langsung dalam resistansi tergantung pada cahaya yang jatuh di atasnya memungkinkan untuk menyederhanakan diagram pengkabelan listrik. Photoresistor itu sendiri sangat murah, ini adalah bagian dari banyak kit dan konstruktor Arduino, oleh karena itu tersedia untuk hampir semua pemain Arduino pemula.

Dalam proyek arduino photoresistor digunakan sebagai sensor cahaya. Menerima informasi darinya, papan dapat menghidupkan atau mematikan relai, menyalakan motor, mengirim pesan. Secara alami, dalam hal ini, kita harus menghubungkan sensor dengan benar.

Diagram untuk menghubungkan sensor cahaya ke Arduino cukup sederhana. Jika kita menggunakan fotoresistor, maka pada diagram koneksi sensor diimplementasikan sebagai pembagi tegangan. Satu lengan berubah dengan tingkat iluminasi, yang kedua memasok tegangan ke input analog. Dalam rangkaian mikro pengontrol, tegangan ini diubah menjadi data digital melalui ADC. Karena hambatan sensor saat terkena cahaya berkurang, maka nilai tegangan yang jatuh padanya akan berkurang.

Bergantung pada lengan pembagi tempat kita meletakkan fotoresistor, tegangan yang dinaikkan atau diturunkan akan diterapkan ke input analog. Jika satu kaki fotoresistor terhubung ke ground, maka nilai tegangan maksimum akan sesuai dengan kegelapan (hambatan fotoresistor maksimum, hampir semua tegangan turun di atasnya), dan nilai minimum akan sesuai dengan pencahayaan yang baik. (resistansi mendekati nol, tegangan minimum). Jika kita menghubungkan lengan fotoresistor ke catu daya, maka perilakunya akan menjadi sebaliknya.

Pemasangan papan itu sendiri seharusnya tidak sulit. Karena photoresistor tidak memiliki polaritas, Anda dapat menghubungkannya di kedua sisi, Anda dapat menyoldernya ke papan, menghubungkannya dengan kabel menggunakan papan sirkuit, atau menggunakan klip biasa (buaya) untuk koneksi. Sumber daya dalam rangkaian adalah arduino itu sendiri. fotoresistor terhubung dengan satu kaki ke tanah, yang lain terhubung ke ADC papan (dalam contoh kita - AO). Kami menghubungkan resistor 10 kOhm ke kaki yang sama. Secara alami, Anda dapat menghubungkan fotoresistor tidak hanya ke pin analog A0, tetapi juga ke pin lainnya.

Beberapa kata tentang resistor 10K tambahan.Ini memiliki dua fungsi di sirkuit kami: untuk membatasi arus di sirkuit dan untuk membentuk tegangan yang diinginkan di sirkuit dengan pembagi. Pembatasan arus diperlukan dalam situasi di mana fotoresistor yang menyala penuh secara tajam menurunkan resistansinya. Dan pembentukan tegangan adalah untuk nilai yang dapat diprediksi di port analog. Faktanya, untuk operasi normal dengan fotoresistor kami, resistansi 1K sudah cukup.

Dengan mengubah nilai resistor, kita dapat "menggeser" tingkat sensitivitas ke sisi "gelap" dan "terang". Jadi, 10 K akan memberikan saklar cepat dari permulaan cahaya. Dalam kasus 1K, sensor cahaya akan lebih akurat mendeteksi tingkat cahaya yang tinggi.

Jika Anda menggunakan modul sensor cahaya yang sudah jadi, maka koneksi akan lebih mudah. Kami menghubungkan output modul VCC ke konektor 5V di papan, GND - ke ground. Kami menghubungkan pin yang tersisa ke konektor arduino.

Jika ada output digital di papan, maka kami mengirimkannya ke pin digital. Jika analog - maka analog. Dalam kasus pertama, kami akan menerima sinyal pemicu - melebihi tingkat iluminasi (ambang pemicu dapat disesuaikan menggunakan resistor penyesuaian). Dari pin analog, kita akan dapat menerima nilai tegangan yang sebanding dengan tingkat iluminasi yang sebenarnya.

Kami menghubungkan sirkuit dengan fotoresistor ke arduino, memastikan semuanya dilakukan dengan benar. Sekarang tinggal memprogram pengontrol.

Cukup mudah untuk membuat sketsa sensor cahaya. Kita hanya perlu melepas nilai tegangan arus dari pin analog yang terhubung dengan sensor. Ini dilakukan dengan menggunakan fungsi analogRead () yang kita semua tahu. Kemudian kita dapat melakukan beberapa tindakan, tergantung pada tingkat cahaya.

Mari kita tulis sketsa untuk sensor cahaya yang menghidupkan atau mematikan LED yang terhubung sebagai berikut.

Algoritma kerja adalah sebagai berikut:

  • Tentukan level sinyal dari pin analog.
  • Kami membandingkan level dengan nilai ambang batas. Nilai maksimum akan sesuai dengan kegelapan, nilai minimum akan sesuai dengan pencahayaan maksimum. Kami akan memilih nilai ambang yang sama dengan 300.
  • Jika levelnya kurang dari ambang batas, gelap, Anda perlu menyalakan LED.
  • Jika tidak, matikan LED.

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

#tentukan PIN_LED 13

#tentukan PIN_PHOTO_SENSOR A0

batalkan pengaturan () (

Serial. mulai (9600);

lingkaran kosong () (

Serial. println (val);

jika (val< 300 ) {

digitalWrite (PIN_LED, RENDAH);

) lain (

digitalWrite (PIN_LED, TINGGI);

Menutupi fotoresistor (dengan tangan kita atau dengan benda buram), kita dapat mengamati penyalaan dan penonaktifan LED. Dengan mengubah parameter ambang batas dalam kode, kita dapat memaksa bola lampu untuk dinyalakan / dimatikan pada tingkat pencahayaan yang berbeda.

Saat memasang, coba posisikan fotoresistor dan LED sejauh mungkin sehingga lebih sedikit cahaya dari LED terang yang mengenai sensor cahaya.

Sensor cahaya dan perubahan kecerahan lampu latar yang mulus

Anda dapat memodifikasi proyek sehingga tergantung pada tingkat iluminasi, kecerahan LED berubah. Kami akan menambahkan perubahan berikut pada algoritme:

  • Kami akan mengubah kecerahan bola lampu melalui PWM, mengirim nilai dari 0 hingga 255 ke pin dengan LED menggunakan analogWrite ().
  • Untuk mengubah nilai digital tingkat cahaya dari sensor cahaya (dari 0 hingga 1023) menjadi rentang PWM kecerahan LED (dari 0 hingga 255), kita akan menggunakan fungsi map ().

Contoh sketsa:

#define PIN_LED 10 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); int ledPower = map (val, 0, 1023, 0, 255); // Mengubah nilai yang dihasilkan menjadi level sinyal PWM. Semakin rendah nilai iluminasi, semakin sedikit daya yang harus kita suplai ke LED melalui PWM. analogWrite (PIN_LED, ledPower ); // Ubah kecerahan)

#tentukan PIN_LED 10

#tentukan PIN_PHOTO_SENSOR A0

batalkan pengaturan () (

Serial. mulai (9600);

pinMode (PIN_LED, OUTPUT);

lingkaran kosong () (

int val = analogRead (PIN_PHOTO_SENSOR);

Serial. println (val);

int ledPower = peta (val, 0, 1023, 0, 255); // Konversi nilai yang diterima ke level sinyal PWM. Semakin rendah nilai iluminasi, semakin sedikit daya yang harus kita suplai ke LED melalui PWM.

analogWrite (PIN_LED, ledPower); // Ubah kecerahan

Dalam kasus metode koneksi lain, di mana sinyal dari port analog sebanding dengan tingkat iluminasi, perlu untuk "membalikkan" nilai tambahan, menguranginya dari maksimum:

int val = 1023 - analogRead (PIN_PHOTO_RESISTOR);

Sensor cahaya (pencahayaan), dibangun berdasarkan fotoresistor, cukup sering digunakan dalam proyek Arduino nyata. Mereka relatif sederhana, tidak mahal, dan mudah ditemukan dan dibeli dari toko online mana pun. Fotoresistor arduino memungkinkan Anda mengontrol tingkat iluminasi dan merespons perubahannya. Pada artikel ini, kita akan melihat apa itu fotoresistor, cara kerja sensor cahaya berdasarkan itu, cara menghubungkan sensor ke papan Arduino dengan benar.

Photoresistor, seperti namanya, banyak berkaitan dengan resistor yang sering ditemukan di hampir semua rangkaian elektronik. Ciri utama resistor konvensional adalah nilai resistansinya. Tegangan dan arus bergantung padanya, dengan bantuan resistor kami mengatur mode operasi yang diperlukan dari komponen lain. Sebagai aturan, nilai resistansi resistor di bawah kondisi operasi yang sama praktis tidak berubah.

Tidak seperti resistor konvensional, fotoresistor dapat mengubah resistansinya tergantung pada tingkat cahaya sekitar. Ini berarti bahwa parameter dalam rangkaian elektronik akan terus berubah, pertama-tama kita tertarik pada tegangan yang jatuh pada fotoresistor. Dengan memperbaiki perubahan tegangan ini pada pin analog Arduino, kita dapat mengubah logika operasi rangkaian, sehingga menciptakan perangkat yang beradaptasi dengan kondisi eksternal.

Fotoresistor secara aktif digunakan dalam berbagai sistem. Aplikasi yang paling umum adalah lampu jalan. Jika malam tiba di kota atau mendung, lampu menyala secara otomatis. Anda dapat membuat bola lampu ekonomis untuk rumah dari fotoresistor, yang tidak menyala sesuai jadwal, tetapi tergantung pada pencahayaan. Berdasarkan sensor cahaya, Anda bahkan dapat membuat sistem keamanan yang akan dipicu segera setelah lemari tertutup atau brankas dibuka dan diterangi. Seperti biasa, ruang lingkup penerapan sensor Arduino hanya dibatasi oleh imajinasi kita.

Fotoresistor apa yang dapat dibeli di toko online

Opsi sensor paling populer dan terjangkau di pasaran adalah model produksi massal perusahaan Cina, tiruan dari produk VT. Di sana tidak selalu mungkin untuk bangkrut tentang siapa dan apa sebenarnya yang diproduksi oleh pemasok ini atau itu, tetapi opsi paling sederhana cukup cocok untuk mulai bekerja dengan fotoresistor.

Seorang pemain arduino pemula dapat disarankan untuk membeli modul foto yang sudah jadi, yang terlihat seperti ini:


Modul ini sudah memiliki semua elemen yang diperlukan untuk koneksi sederhana dari fotoresistor ke papan arduino. Dalam beberapa modul, sirkuit dengan komparator diimplementasikan dan output digital dan pemangkas untuk kontrol tersedia.

Seorang amatir radio Rusia dapat disarankan untuk beralih ke sensor FR Rusia. Tersedia untuk dijual FR1-3, FR1-4, dll. - diproduksi kembali di masa serikat. Namun, meskipun demikian, FR1-3 adalah detail yang lebih akurat. Dari sini mengikuti perbedaan harga.Untuk FR mereka meminta tidak lebih dari 400 rubel. FR1-3 masing-masing akan berharga lebih dari seribu rubel.

Penandaan fotoresistor

Penandaan model modern yang diproduksi di Rusia cukup sederhana. Dua huruf pertama adalah PhotoResistor, angka setelah tanda hubung menunjukkan angka pengembangan. FR-765 - photoresistor, pengembangan 765. Biasanya ditandai langsung pada badan bagian

Untuk sensor VT, kisaran resistansi ditunjukkan dalam diagram penandaan. Sebagai contoh:

  • VT83N1 - 12-100kOhm (12K - menyala, 100K - dalam gelap)
  • VT93N2 - 48-500kOhm (48K - menyala, 100K - dalam gelap).

Terkadang penjual memberikan dokumen khusus dari produsen untuk memperjelas informasi tentang model. Selain parameter kerja, keakuratan bagian juga ditunjukkan di sana. Semua model memiliki rentang sensitivitas di bagian spektrum yang terlihat. Mengumpulkan sensor cahaya Anda perlu memahami bahwa akurasi operasi adalah konsep bersyarat. Bahkan untuk model dari satu pabrikan, satu batch, satu pembelian, dapat berbeda hingga 50% atau lebih.

Di pabrik, suku cadang disetel ke panjang gelombang dari merah ke hijau. Pada saat yang sama, mayoritas "melihat" radiasi inframerah. Detail yang sangat presisi bahkan dapat menangkap sinar ultraviolet.

Keuntungan dan kerugian dari sensor

Kerugian utama dari fotoresistor adalah sensitivitasnya terhadap spektrum. Tergantung pada jenis cahaya datang, resistansi dapat bervariasi dengan beberapa urutan besarnya. Kerugiannya juga termasuk kecepatan reaksi yang rendah terhadap perubahan iluminasi. Jika lampu berkedip, sensor tidak punya waktu untuk merespons. Jika frekuensi perubahan agak tinggi, resistor akan berhenti "melihat" bahwa iluminasi berubah.

Keuntungannya termasuk kesederhanaan dan keterjangkauan. Perubahan langsung dalam resistansi tergantung pada cahaya yang jatuh di atasnya memungkinkan untuk menyederhanakan diagram pengkabelan listrik. Photoresistor itu sendiri sangat murah, ini adalah bagian dari banyak kit dan konstruktor Arduino, oleh karena itu tersedia untuk hampir semua pemain Arduino pemula.

Menghubungkan photoresistor ke arduino

Dalam proyek arduino photoresistor digunakan sebagai sensor cahaya. Menerima informasi darinya, papan dapat menghidupkan atau mematikan relai, menyalakan motor, mengirim pesan. Secara alami, dalam hal ini, kita harus menghubungkan sensor dengan benar.

Diagram koneksi sensor cahaya ke arduino cukup sederhana. Jika kita menggunakan fotoresistor, maka pada diagram koneksi sensor diimplementasikan sebagai pembagi tegangan. Satu lengan berubah dengan tingkat iluminasi, yang kedua memasok tegangan ke input analog. Dalam rangkaian mikro pengontrol, tegangan ini diubah menjadi data digital melalui ADC. Karena hambatan sensor saat terkena cahaya berkurang, maka nilai tegangan yang jatuh padanya akan berkurang.

Bergantung pada lengan pembagi tempat kita meletakkan fotoresistor, tegangan yang dinaikkan atau diturunkan akan diterapkan ke input analog. Jika satu kaki fotoresistor terhubung ke ground, maka nilai tegangan maksimum akan sesuai dengan kegelapan (hambatan fotoresistor maksimum, hampir semua tegangan turun di atasnya), dan nilai minimum akan sesuai dengan pencahayaan yang baik. (resistansi mendekati nol, tegangan minimum). Jika kita menghubungkan lengan fotoresistor ke catu daya, maka perilakunya akan menjadi sebaliknya.

Pemasangan papan itu sendiri seharusnya tidak sulit. Karena photoresistor tidak memiliki polaritas, Anda dapat menghubungkannya di kedua sisi, Anda dapat menyoldernya ke papan, menghubungkannya dengan kabel menggunakan papan sirkuit, atau menggunakan klip biasa (buaya) untuk koneksi. Sumber daya dalam rangkaian adalah arduino itu sendiri. fotoresistor terhubung dengan satu kaki ke tanah, yang lain terhubung ke ADC papan (dalam contoh kita, AO). Kami menghubungkan resistor 10 kOhm ke kaki yang sama. Secara alami, Anda dapat menghubungkan fotoresistor tidak hanya ke pin analog A0, tetapi juga ke pin lainnya.

Beberapa kata tentang resistor 10K tambahan.Ini memiliki dua fungsi di sirkuit kami: untuk membatasi arus di sirkuit dan untuk membentuk tegangan yang diinginkan di sirkuit dengan pembagi. Pembatasan arus diperlukan dalam situasi di mana fotoresistor yang menyala penuh secara tajam menurunkan resistansinya. Dan pembentukan tegangan adalah untuk nilai yang dapat diprediksi di port analog. Faktanya, untuk operasi normal dengan fotoresistor kami, resistansi 1K sudah cukup.

Dengan mengubah nilai resistor, kita dapat "menggeser" tingkat sensitivitas ke sisi "gelap" dan "terang". Jadi, 10 K akan memberikan saklar cepat dari permulaan cahaya. Dalam kasus 1K, sensor cahaya akan lebih akurat mendeteksi tingkat cahaya yang tinggi.

Jika Anda menggunakan modul sensor cahaya yang sudah jadi, maka koneksi akan lebih mudah. Kami menghubungkan output modul VCC ke konektor 5V di papan, GND - ke ground. Kami menghubungkan pin yang tersisa ke konektor arduino.

Jika ada output digital di papan, maka kami mengirimkannya ke pin digital. Jika analog - maka analog. Dalam kasus pertama, kami akan menerima sinyal pemicu - melebihi tingkat iluminasi (ambang pemicu dapat disesuaikan menggunakan resistor penyesuaian). Dari pin analog, kita akan dapat menerima nilai tegangan yang sebanding dengan tingkat iluminasi yang sebenarnya.

Contoh sketsa sensor cahaya pada fotoresistor

Kami menghubungkan sirkuit dengan fotoresistor ke arduino, memastikan semuanya dilakukan dengan benar. Sekarang tinggal memprogram pengontrol.

Cukup mudah untuk membuat sketsa sensor cahaya. Kita hanya perlu melepas nilai tegangan arus dari pin analog yang terhubung dengan sensor. Ini dilakukan dengan menggunakan fungsi analogRead () yang kita semua tahu. Kemudian kita dapat melakukan beberapa tindakan, tergantung pada tingkat cahaya.

Mari kita tulis sketsa untuk sensor cahaya yang menghidupkan atau mematikan LED yang terhubung sebagai berikut.

Algoritma kerja adalah sebagai berikut:

  • Tentukan level sinyal dari pin analog.
  • Kami membandingkan level dengan nilai ambang batas. Nilai maksimum akan sesuai dengan kegelapan, nilai minimum akan sesuai dengan pencahayaan maksimum. Kami akan memilih nilai ambang yang sama dengan 300.
  • Jika levelnya kurang dari ambang batas, gelap, Anda perlu menyalakan LED.
  • Jika tidak, matikan LED.
#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); if ( nilai< 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }

Menutupi fotoresistor (dengan tangan kita atau dengan benda buram), kita dapat mengamati penyalaan dan penonaktifan LED. Dengan mengubah parameter ambang batas dalam kode, kita dapat memaksa bola lampu untuk dinyalakan / dimatikan pada tingkat pencahayaan yang berbeda.

Saat memasang, coba posisikan fotoresistor dan LED sejauh mungkin sehingga lebih sedikit cahaya dari LED terang yang mengenai sensor cahaya.

Sensor cahaya dan perubahan kecerahan lampu latar yang mulus

Anda dapat memodifikasi proyek sehingga tergantung pada tingkat iluminasi, kecerahan LED berubah. Kami akan menambahkan perubahan berikut pada algoritme:

  • Kami akan mengubah kecerahan bola lampu melalui PWM, mengirim nilai dari 0 hingga 255 ke pin dengan LED menggunakan analogWrite ().
  • Untuk mengubah nilai digital tingkat cahaya dari sensor cahaya (dari 0 hingga 1023) menjadi rentang PWM kecerahan LED (dari 0 hingga 255), kita akan menggunakan fungsi map ().

Contoh sketsa:

#define PIN_LED 10 #define PIN_PHOTO_SENSOR A0 void setup () (Serial.begin (9600); pinMode (PIN_LED, OUTPUT);) void loop () (int val = analogRead (PIN_PHOTO_SENSOR); Serial.println (val); int ledPower = map (val, 0, 1023, 0, 255); // Ubah nilai yang dihasilkan menjadi level sinyal PWM. Semakin rendah nilai iluminasi, semakin sedikit daya yang harus kita suplai ke LED melalui PWM. analogWrite (PIN_LED, ledPower ); // Ubah kecerahan)

Dalam kasus metode koneksi lain, di mana sinyal dari port analog sebanding dengan tingkat iluminasi, perlu untuk "membalikkan" nilai tambahan, menguranginya dari maksimum:

Int val = 1023 - analogRead (PIN_PHOTO_RESISTOR);

Rangkaian sensor cahaya pada photoresistor dan relay

Contoh sketsa untuk bekerja dengan relai diberikan dalam artikel tentang memprogram relai di arduino. Dalam hal ini, kita tidak perlu membuat gerakan yang rumit: setelah menentukan "kegelapan", kita cukup menyalakan relai, memberikan nilai yang sesuai pada pinnya.

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

Kesimpulan

Proyek menggunakan sensor cahaya berdasarkan fotoresistor cukup sederhana dan efektif. Anda dapat mengimplementasikan banyak proyek menarik, sementara biaya peralatan tidak akan tinggi. Fotoresistor terhubung sesuai dengan rangkaian pembagi tegangan dengan resistansi tambahan. Sensor terhubung ke port analog untuk mengukur berbagai nilai tingkat cahaya atau ke digital jika kita hanya peduli dengan fakta kegelapan. Dalam sketsa, kami hanya membaca data dari port analog (atau digital) dan memutuskan bagaimana bereaksi terhadap perubahan. Mari berharap bahwa sekarang "mata" sederhana seperti itu akan muncul di proyek Anda.

Dalam pelajaran sebelumnya, Anda mempelajari cara kerja potensiometer, resistansi yang berubah tergantung pada rotasi pegangan - batang. Dalam tutorial ini, Anda akan belajar tentang fotoresistor, yang mengubah resistansinya tergantung pada seberapa banyak cahaya mengenai elemen penginderaannya.

Arduino tidak dapat menginterpretasikan resistansi itu sendiri karena berhubungan dengan tegangan, sehingga rangkaian ini menggunakan pembagi tegangan. Pembagi biasanya terdiri dari dua resistor, dalam kasus kami salah satunya akan menjadi fotoresistor kami, dan tegangan pembacaan Arduino diambil dari titik tengah di antara mereka, diumpankan ke input analog Arduino (pin 0). Pembagi akan mengeluarkan tegangan tinggi ketika fotoresistor menerima banyak cahaya dan rendah ketika fotoresistor menerima sedikit cahaya (gelap).

Dalam tutorial ini, Anda akan membutuhkan:

1. Arduino UNO - 1 buah.

2. LED - 1 buah.

3. Resistor 10 Kom. - 1 buah.

4. Resistor dari 200 hingga 560 ohm. - 1 buah.

5. Fotoresistor

6. Menghubungkan kabel.

Arduino dan Fotoresistor. Diagram koneksi untuk pelajaran nomor 6

Unduh pelajaran dengan sketsa dan deskripsi terperinci tentang pelajaran:

Kit Eksperimen ArduinoKit
Unduh kode program untuk percobaan # 6:

Tampilan pelajaran yang dibuat pada diagram tata letak:

Akibatnya, Anda harus melihat LED yang kecerahannya akan meningkat atau menurun sesuai dengan seberapa banyak cahaya mengenai fotoresistor. Jika itu tidak mengubah kecerahannya, pastikan bahwa kamu dirakit dengan benar skema. Dan pastikan kode program dimuat di atas Arduino.

Semoga sukses untuk semua! Kami menunggu komentar Anda tentang ARDUINO LESSON 6 - PHOTORESISTOR.

Untuk proyek berikutnya, kami akan menggunakan fotoresistor. Dan kami akan mempertimbangkan penerapan lampu malam di kamar tidur, yang secara otomatis akan menyala ketika gelap dan mati ketika menjadi terang.

Resistansi fotoresistor tergantung pada cahaya yang masuk. Menggunakan fotoresistor bersama dengan resistor 4,7k ohm konvensional, kami mendapatkan pembagi tegangan di mana tegangan yang melewati fotoresistor berubah, tergantung pada tingkat pencahayaan.

Tegangan dari pembagi, kami terapkan pada input ADC Arduino. Di sana kami membandingkan nilai yang diterima dengan ambang batas tertentu dan menyalakan atau mematikan lampu.

Diagram skema pembagi ditunjukkan di bawah ini. Ketika iluminasi meningkat, resistansi fotoresistor turun dan, karenanya, tegangan pada output pembagi (dan input ADC) meningkat. Ketika iluminasi jatuh, yang terjadi adalah sebaliknya.

Foto di bawah ini menunjukkan sirkuit yang dirakit pada papan tempat memotong roti. Tegangan 0V dan 5V diambil dari Arduino. Kaki A0 digunakan sebagai input ADC.

Sketsa Arduino ditunjukkan di bawah ini. Dalam tutorial ini, kita hanya menyalakan dan mematikan LED, yang sudah terpasang di papan Arduino. Lampu LED yang lebih terang, Anda dapat terhubung ke kaki 13 (melalui resistor ~ 220 ohm). Jika Anda akan menghubungkan beban yang lebih kuat, seperti lampu pijar, maka itu harus dihubungkan melalui relai atau thyristor.

Ada bagian yang dikomentari dalam kode program, mereka digunakan untuk debugging. Dimungkinkan untuk mengontrol nilai ADC (dari 0 hingga 1024). Juga, Anda perlu mengubah nilai 500 (ambang hidup dan mati) dalam kode menjadi nilai yang akan Anda pilih secara empiris dengan mengubah iluminasi.

/ * ** Lampu malam ** ** www.hobbytronics.co.uk * / int sensorPin = A0; // setel kaki masukan ADC unsigned int sensorValue = 0; // nilai digital dari photoresistor void setup () (pinMode (13, OUTPUT); Serial.begin (9600); // memulai output data serial (untuk pengujian)) void loop () (sensorValue = analogRead (sensorPin); / / baca nilai dari photoresistor jika (sensorValue<500) digitalWrite(13, HIGH); // включаем else digitalWrite(13, LOW); // выключаем // Для отладки раскомментируйте нижеследующие строки //Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024) //Serial.println(""); // возврат каретки //delay(500); }