Tutorial Photocell!

Fotokel aka sel CdS, photoresistors, LDR (perintang yang bergantung kepada cahaya) ...

Apakah photocell?

Photocells adalah sensor yang membolehkan anda mengesan cahaya. Mereka adalah kecil, murah, berkuasa tinggi, mudah digunakan dan tidak haus. Atas sebab itu mereka sering muncul dalam mainan, alat dan perkakas. Mereka sering dirujuk kepada sel CdS (mereka terbuat dari Kadmium-Sulfide), perintang cahaya yang bergantung kepada cahaya (LDR), dan photoresistor.

Photocell pada dasarnya adalah perintang yang mengubah nilai rintangannya (dalam ohm) bergantung kepada berapa banyak cahaya yang bersinar ke wajah licin. Mereka adalah kos yang sangat rendah, mudah untuk mendapatkan dalam banyak saiz dan spesifikasi, tetapi sangat tidak tepat. Setiap sensor photocell akan bertindak sedikit berbeza daripada yang lain, walaupun mereka dari kumpulan yang sama. Variasi boleh benar-benar besar, 50% atau lebih tinggi! Atas sebab ini, mereka tidak boleh digunakan untuk menentukan tahap cahaya yang tepat dalam lux atau millicandela. Sebaliknya, anda boleh mengharapkan untuk hanya dapat menentukan perubahan cahaya asas

Bagi kebanyakan aplikasi sensitif cahaya seperti "apakah cahaya atau gelap", "ada sesuatu di hadapan sensor (yang akan menyekat cahaya)", "adakah sesuatu mengganggu rasuk laser" (sensor rasuk pecah), atau "yang mana pelbagai sensor mempunyai yang paling ringan memukulnya", photocells boleh menjadi pilihan yang baik!

Beberapa statistik asas

Statistik ini adalah untuk photocell di kedai Adafruit yang sangat mirip dengan PDV-P8001. Hampir semua photocells akan mempunyai spesifikasi yang sedikit berbeza, walaupun mereka semua banyak bekerja sama. Sekiranya terdapat datasheet, anda perlu merujuknya

  • Saiz: Pusingan, diameter 5mm (0.2 "). (Photocells lain boleh mencapai sehingga 11mm / 0.4" diameter!)
  • Harga $ 1.50 di kedai Adafruit
  • Pelbagai rintangan: 200K ohm (gelap) hingga 10K ohm (10 kecerahan lux)
  • Kepelbagaian sensitiviti: Sel-sel CdS bertindak balas terhadap cahaya antara 400nm (violet) dan 600nm (oren) panjang gelombang, memuncak pada kira-kira 520nm (hijau).
  • Bekalan kuasa: apa pun sehingga 100V, menggunakan kurang daripada 1mA semasa secara purata (bergantung kepada voltan bekalan kuasa)
  • Datasheet dan Datasheet lain
  • Dua nota aplikasi mengenai penggunaan dan memilih fotokel di mana hampir semua graf ini diambil dari

Langkah 1: Cara Mengukur Cahaya Menggunakan Photocell


Seperti yang telah kita katakan, perubahan rintangan photocell sebagai wajah terdedah kepada cahaya yang lebih. Apabila ia gelap, sensor kelihatan seperti perintang besar sehingga 10m ohm, apabila tahap cahaya meningkat, rintangan turun. Grafik ini menunjukkan kira-kira rintangan sensor pada tahap cahaya yang berbeza. Ingat setiap fotosel akan menjadi sedikit berbeza jadi gunakan ini sebagai panduan sahaja!

(Lihat Rintangan Vs. Grafik pencahayaan di bawah)
Perhatikan bahawa graf tidak linier, graf log log!

Fotosel, terutamanya sel CdS yang biasa anda cari, tidak sensitif kepada semua cahaya. Khususnya mereka cenderung sensitif terhadap cahaya antara 700nm (merah) dan 500nm (hijau) cahaya.

Pada asasnya, cahaya biru tidak akan begitu berkesan memicu sensor sebagai cahaya hijau / kuning!

Apa sih lux?

Kebanyakan lembaran data menggunakan lux untuk menunjukkan rintangan pada tahap cahaya tertentu. Tetapi apa yang mewah? Ia bukan kaedah yang kita gunakan untuk menerangkan kecerahan supaya sukar untuk diukur. Berikut adalah jadual yang disesuaikan daripada artikel Wikipedia mengenai topik ini!
(Lihat jadual pencahayaan di bawah)

Langkah 2: Menguji dan Menyambung Photocell Anda


Menguji photocell anda

Cara termudah untuk menentukan bagaimana fotosel anda berfungsi adalah untuk menyambungkan multimeter dalam mod pengukuran rintangan kepada kedua-dua petunjuk dan melihat bagaimana rintangan berubah apabila memandikan sensor dengan tangan anda, mematikan lampu, dan lain-lain Kerana rintangan berubah banyak, meter yang berfungsi secara automatik berfungsi dengan baik di sini. Jika tidak, pastikan anda mencuba rentang yang berbeza, antara 1M ohms dan 1K ohms sebelum 'menyerah'

Menyambung ke photocell anda

Kerana photocells pada dasarnya adalah perintang, mereka tidak terpolarisasi. Ini bermakna anda boleh menyambungkan mereka 'sama ada cara' dan mereka akan berfungsi dengan baik!

Photocells cukup tahan lasak, anda boleh dengan mudah menjualnya kepada mereka, klipkan petunjuk, pasangkannya ke papan makan, gunakan klip buaya, dan lain-lain. Penjagaan yang perlu anda ambil adalah untuk mengelakkan lenturan petunjuk tepat pada sensor epoxied, kerana mereka boleh memecah jika tertekan terlalu kerap.

Langkah 3: Contoh Projek



Noisemaker yang mengubah kekerapan berdasarkan tahap cahaya.


Nilai motor dan kawalan arah dengan photoresistors dan mikrokontroler


Robot garisan berikut yang menggunakan photocells untuk mengesan cahaya memantul jalur putih / hitam

Satu lagi robot, yang satu ini mempunyai dua sensor dan bergerak ke arah cahaya (mereka dipanggil kenderaan Braitenberg)


Menggunakan photocell dan penunjuk laser poket untuk mencipta sensor breakbeam

Langkah 4: Kaedah Baca Voltan Analog


Cara termudah untuk mengukur sensor rintangan adalah untuk menyambung satu hujung ke Power dan yang lain ke perintang tarik ke bawah. Kemudian titik di antara resistor pulldown yang tetap dan perintang fotocell yang berubah-ubah disambungkan kepada input analog pengawal mikrokontroler seperti Arduino (ditunjukkan)
(Lihat gambar rajah litar di bawah)

Untuk contoh ini saya menunjukkannya dengan bekalan 5V tetapi perhatikan bahawa anda boleh menggunakan ini dengan bekalan 3.3v seperti mudah. Dalam konfigurasi ini bacaan voltan analog antara 0V (tanah) hingga kira-kira 5V (atau kira-kira sama dengan voltan bekalan kuasa).

Cara ini berfungsi ialah apabila rintangan fotosfer berkurangan, rintangan jumlah photocell dan resistor pulldown menurun dari lebih 600K ohm hingga 10K ohm. Ini bermakna arus yang mengalir melalui kedua-dua perintang bertambah yang seterusnya menyebabkan voltan merentasi 10K ohm perintang tetap untuk meningkatkan. Cukup silap!

(Lihat jadual pertama di bawah)
Jadual ini menunjukkan voltan analog anggaran berdasarkan cahaya / rintangan sensor w / a 5V bekalan dan 10K ohm pulldown perintang

Sekiranya anda merancang untuk mempunyai sensor di kawasan yang terang dan menggunakan titisan 10K ohm, ia akan cepat jenuh. Ini bermakna ia akan melanda 'siling' 5V dan tidak dapat membezakan antara yang terang dan terang. Dalam hal ini, anda harus mengganti 10K ohm pulldown dengan pulldown 1K ohm. Dalam hal ini, ia tidak akan dapat mengesan perbezaan tahap gelap juga tetapi ia dapat mengesan perbezaan cahaya yang lebih terang dengan lebih baik. Ini adalah tradeoff yang anda perlu selesaikan!

(Lihat jadual kedua di bawah)
Jadual ini menunjukkan voltan analog anggaran berdasarkan cahaya sensor / rintangan w / a 5V bekalan dan 1K resistor pulldown

Perhatikan bahawa kaedah kami tidak memberikan voltan linear berkenaan dengan kecerahan! Juga, setiap sensor akan berbeza. Apabila tahap cahaya meningkat, voltan analog naik walaupun rintangan turun:

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

Iaitu, voltan adalah berkadaran dengan kebalikan dari rintangan photocell yang, sebaliknya, berkadar songsang dengan tahap cahaya

Langkah 5: Demonstrasi Mudah Penggunaan


Lakaran ini akan mengambil bacaan voltan analog dan menggunakannya untuk menentukan betapa terangnya LED merah itu. Yang lebih gelap itu, semakin terang LED akan menjadi! Ingat bahawa LED perlu disambungkan kepada pin PWM untuk ini berfungsi, saya menggunakan pin 11 dalam contoh ini.

Contoh-contoh ini menganggap anda mengetahui beberapa pengaturcaraan Arduino asas. Jika anda tidak, mungkin menghabiskan sedikit masa meninjau asas-asas pada tutorial Arduino?

/ * Photocell sket ujian mudah.

Sambung satu hujung fotosel ke 5V, hujung yang lain untuk Analog 0.
Kemudian sambungkan satu hujung perintang 10K dari Analog 0 ke tanah
Sambungkan LED dari pin 11 melalui perintang ke tanah
Untuk maklumat lanjut lihat www.ladyada.net/learn/sensors/cds.html * /

int photocellPin = 0; / // sel dan 10K pulldown disambungkan ke a0
int photocellReading; // bacaan analog dari pembahagi sensor
int LEDpin = 11; // menyambung LED Merah ke pin 11 (pin PWM)
int LEDbrightness; //
void setup (void) {
// Kami akan menghantar maklumat debugging melalui monitor Serial
Serial.begin (9600);
}

kekosongan gelung (batal) {
photocellReading = analogRead (photocellPin);

Serial.print ("bacaan analog =");
Serial.println (photocellReading); // bacaan analog mentah

// LED semakin cerah semakin gelap pada sensor
// itu bermakna kita perlu mengalihkan- bacaan dari 0-1023 kembali ke 1023-0
photocellReading = 1023 - photocellReading;
/ // sekarang kita perlu peta 0-1023 hingga 0-255 sejak yang menggunakan pelbagai analogWrite
LEDbrightness = peta (photocellReading, 0, 1023, 0, 255);
analogWrite (LEDpin, LEDbrightness);

kelewatan (100);
}

Anda mungkin ingin mencuba perintang pulldown yang berbeza bergantung pada julat tahap cahaya yang anda mahu untuk mengesan!

Langkah 6: Kod Mudah untuk Pengukuran Cahaya Analog:


Kod ini tidak melakukan apa-apa pengiraan, ia hanya mencetak apa yang diinterpretasikan sebagai jumlah cahaya dalam cara kualitatif. Untuk kebanyakan projek, ini cukup banyak yang perlu!

/ * Photocell sket ujian mudah.

Sambung satu hujung fotosel ke 5V, hujung yang lain untuk Analog 0.
Kemudian sambungkan satu hujung perintang 10K dari Analog 0 ke tanah

Untuk maklumat lanjut lihat www.ladyada.net/learn/sensors/cds.html * /

int photocellPin = 0; / // sel dan 10K pulldown disambungkan ke a0
int photocellReading; // bacaan analog dari pembahagi perintang analog

void setup (void) {
// Kami akan menghantar maklumat debugging melalui monitor Serial
Serial.begin (9600);
}

kekosongan gelung (batal) {
photocellReading = analogRead (photocellPin);

Serial.print ("bacaan analog =");
Serial.print (photocellReading); // bacaan analog mentah

// Kami akan mempunyai beberapa ambang batas, ditentukan secara kualitatif
jika (photocellReading <10) {
Serial.println ("- Dark");
} lain jika (photocellReading <200) {
Serial.println ("- Dim");
} lain jika (photocellReading <500) {
Serial.println ("- Light");
} lain jika (photocellReading <800) {
Serial.println ("- Bright");
} else {
Serial.println ("- Sangat terang");
}
kelewatan (1000);
}

Untuk mengujinya, saya mula memasuki bilik yang diterangi oleh sinar matahari (tetapi teduh) dan menutupi sensor dengan tangan saya, kemudian menutupnya dengan kain pemadaman.

Langkah 7: BONUS! Membaca Photocells Tanpa Pin Analog


Kerana photocells pada dasarnya adalah perintang, mungkin untuk menggunakannya walaupun anda tidak mempunyai pin analog pada mikrokontroler anda (atau jika katakan anda ingin menyambung lebih daripada anda mempunyai pin input analog). Cara kami melakukan ini adalah dengan mengambil kesempatan daripada harta elektronik asas perintang dan kapasitor. Ternyata jika anda mengambil kapasitor yang pada mulanya tidak menyimpan voltan, dan kemudian menyambungkannya ke kuasa (seperti 5V) melalui perintang, ia akan mengecas voltan kuasa perlahan-lahan. Semakin besar resistor, semakin perlahan.

Penangkapan ini dari osiloskop menunjukkan apa yang berlaku pada pin digital (kuning). Baris biru menunjukkan apabila lakaran bermula mengira dan apabila pengiraan selesai, kira-kira 1.2ms kemudian.

Ini kerana kapasitor bertindak seperti baldi dan perintang adalah seperti paip nipis. Untuk mengisi baldi dengan paip yang sangat nipis mengambil masa yang cukup sehingga anda boleh memikirkan sejauh mana paip itu dengan masa berapa lama diperlukan untuk mengisi baldi sehingga separuh jalan.

Dalam kes ini, 'baldi' kami adalah kapasitor seramik 0.1uF. Anda boleh menukar kapasitor hampir apa sahaja yang anda mahu tetapi nilai masa juga akan berubah. 0.1uF nampaknya menjadi tempat yang baik untuk memulakan fotostel ini. Jika anda ingin mengukur julat yang lebih cerah, gunakan kapasitor 1uF. Jika anda ingin mengukur jarak yang lebih gelap, turun ke 0.01uF.

/ * Photocell sket ujian mudah.
Sambung satu hujung photocell ke kuasa, hujung yang lain untuk pin 2.
Kemudian hubungkan hujung kapasitor 0.1uF dari pin 2 ke tanah
Untuk maklumat lanjut lihat www.ladyada.net/learn/sensors/cds.html * /

int photocellPin = 2; // LDR dan cap disambungkan ke pin2
int photocellReading; // bacaan digital
int ledPin = 13; / / Anda hanya boleh menggunakan 'built in' LED

void setup (void) {
// Kami akan menghantar maklumat debugging melalui monitor Serial
Serial.begin (9600);
pinMode (ledPin, OUTPUT); // mempunyai LED untuk keluaran
}

kekosongan gelung (batal) {
// baca perintang menggunakan teknik RCtime
photocellReading = RCtime (photocellPin);

jika (photocellReading == 30000) {
// jika kita mendapat 30000 yang bermakna kita 'tamat masa'
Serial.println ("Tiada apa-apa yang berkaitan!");
} else {
Serial.print ("RCtime reading =");
Serial.println (photocellReading); // bacaan analog mentah

/ / Semakin terang, semakin cepat ia berkedip!
digitalWrite (ledPin, TINGGI);
kelewatan (photocellReading);
digitalWrite (ledPin, LOW);
kelewatan (photocellReading);
}
kelewatan (100);
}

// Menggunakan pin digital untuk mengukur perintang (seperti FSR atau photocell!)
/ / Kami melakukan ini dengan mempunyai resistor makan semasa menjadi kapasitor dan
/ menghitung berapa lama masa yang diperlukan untuk sampai ke Vcc / 2 (untuk kebanyakan arduinos, thats 2.5V)
int RCtime (int RCpin) {
bacaan int = 0; // bermula dengan 0

// tetapkan pin ke output dan tarik ke LOW (tanah)
pinMode (RCpin, OUTPUT);
digitalWrite (RCpin, LOW);

// Sekarang tetapkan pin ke input dan ...
pinMode (RCpin, INPUT);
sementara (digitalRead (RCpin) == RENDAH) {// berapa jumlahnya diperlukan untuk naik sehingga TINGGI
membaca ++; / / increment untuk menjejaki masa

jika (membaca == 30000) {
/ / Jika kita sampai sejauh ini, rintangan itu begitu tinggi
// mungkin tiada apa yang berkaitan!
pecah; / / meninggalkan gelung
}
}
// OK sama ada kita maxed out pada 30000 atau mudah-mudahan mendapat bacaan, kembali kiraan

bacaan bacaan;
}

Artikel Berkaitan