Photocell Tutorial!

Photocells alias sel CdS, photoresistors, LDR (light dependistor) ...

Apa itu fotosel?

Photocell adalah sensor yang memungkinkan Anda mendeteksi cahaya. Mereka kecil, murah, berdaya rendah, mudah digunakan dan tidak aus. Karena alasan itu, mereka sering muncul dalam mainan, gadget, dan peralatan. Mereka sering disebut sel CdS (mereka terbuat dari Cadmium-Sulfida), resistor bergantung cahaya (LDR), dan fotoresistor.

Photocell pada dasarnya adalah sebuah resistor yang mengubah nilai resistifnya (dalam ohm) tergantung pada seberapa banyak cahaya bersinar ke wajah berlekuk-lekuk. Mereka berbiaya sangat rendah, mudah didapat dalam berbagai ukuran dan spesifikasi, tetapi sangat tidak akurat. Setiap sensor fotosel akan bertindak sedikit berbeda dari yang lain, bahkan jika mereka dari batch yang sama. Variasi bisa sangat besar, 50% atau lebih tinggi! Untuk alasan ini, mereka tidak boleh digunakan untuk mencoba menentukan tingkat cahaya yang tepat dalam lux atau millicandela. Sebagai gantinya, Anda bisa berharap hanya bisa menentukan perubahan cahaya dasar

Untuk sebagian besar aplikasi peka cahaya seperti "apakah cahaya atau gelap", "adakah sesuatu di depan sensor (yang akan menghalangi cahaya)", "apakah ada sesuatu yang mengganggu sinar laser" (sensor break-beam), atau "Yang mana dari beberapa sensor yang paling ringan memukulnya", photocell bisa menjadi pilihan yang bagus!

Beberapa statistik dasar

Statistik ini untuk fotosel di toko Adafruit yang sangat mirip dengan PDV-P8001. Hampir semua fotosel akan memiliki spesifikasi yang sedikit berbeda, walaupun semuanya hampir sama. Jika ada datasheet, Anda ingin merujuknya

  • Ukuran: Bulat, diameter 5mm (0, 2 "). (Fotosel lainnya dapat mencapai diameter 11mm / 0, 4"!)
  • Harga $ 1, 50 di toko Adafruit
  • Kisaran resistansi: 200K ohm (gelap) hingga 10K ohm (kecerahan 10 lux)
  • Kisaran sensitivitas: Sel CdS merespons cahaya antara 400nm (violet) dan 600nm (oranye) panjang gelombang, memuncak pada sekitar 520nm (hijau).
  • Catu daya: cukup banyak apa pun hingga 100V, rata-rata menggunakan arus kurang dari 1mA (tergantung pada tegangan catu daya)
  • Lembar Data dan Lembar Data lain
  • Dua catatan aplikasi tentang penggunaan dan pemilihan fotosel dari mana hampir semua grafik ini diambil

Langkah 1: Cara Mengukur Cahaya Menggunakan Photocell


Seperti yang telah kami katakan, resistensi fotosel berubah ketika wajah terkena lebih banyak cahaya. Saat gelap, sensornya terlihat seperti resistor besar hingga 10 juta ohm, saat level cahaya meningkat, resistansi turun. Grafik ini menunjukkan kira-kira resistensi sensor pada level cahaya yang berbeda. Ingat setiap fotosel akan sedikit berbeda jadi gunakan ini sebagai panduan saja!

(Lihat grafik Resistance Vs. Illumination di bawah ini)
Perhatikan bahwa grafik tidak linier, ini log-log grafik!

Fotosel, terutama sel CdS umum yang cenderung Anda temukan, tidak peka terhadap semua cahaya. Khususnya mereka cenderung peka terhadap cahaya antara 700nm (merah) dan 500nm (hijau).

Pada dasarnya, cahaya biru tidak akan hampir sama efektifnya dalam memicu sensor seperti lampu hijau / kuning!

Apa itu lux?

Sebagian besar lembar data menggunakan lux untuk menunjukkan resistensi pada level cahaya tertentu. Tapi apa itu lux? Ini bukan metode yang cenderung kita gunakan untuk menggambarkan kecerahan sehingga sulit untuk diukur. Ini adalah tabel yang diadaptasi dari artikel Wikipedia tentang topik ini!
(Lihat tabel Penerangan di bawah)

Langkah 2: Menguji dan Menghubungkan Photocell Anda


Menguji fotosel Anda

Cara termudah untuk menentukan bagaimana fotosel Anda bekerja adalah dengan menghubungkan multimeter dalam mode pengukuran resistansi ke dua lead dan melihat bagaimana resistensi berubah ketika menaungi sensor dengan tangan Anda, mematikan lampu, dll. Karena resistensi banyak berubah, meteran rentang otomatis bekerja dengan baik di sini. Jika tidak, pastikan Anda mencoba rentang yang berbeda, antara 1M ohm dan 1K ohm sebelum 'menyerah'

Menghubungkan ke fotosel Anda

Karena fotosel pada dasarnya adalah resistor, mereka tidak terpolarisasi. Itu berarti Anda dapat menghubungkan mereka 'baik' dan mereka akan berfungsi dengan baik!

Photocell cukup kuat, Anda dapat dengan mudah menyoldernya, menjepitkan timah, menyambungkannya ke papan tempat memotong roti, menggunakan klip buaya, dll. Satu-satunya perawatan yang harus Anda lakukan adalah menghindari menekuk timah di sensor epoxied, karena dapat terputus jika terlalu sering tertekuk.

Langkah 3: Contoh Proyek



Noisemaker yang mengubah frekuensi berdasarkan level cahaya.


Nilai motorik dan kontrol arah dengan photoresistor dan mikrokontroler


Robot yang mengikuti garis yang menggunakan fotosel untuk mendeteksi cahaya yang memantul dari garis-garis putih / hitam

Robot lain, yang ini memiliki dua sensor dan bergerak menuju cahaya (mereka disebut kendaraan Braitenberg)


Menggunakan fotosel dan penunjuk laser saku untuk membuat sensor breakbeam

Langkah 4: Metode Baca Tegangan Analog


Cara termudah untuk mengukur sensor resistif adalah dengan menghubungkan satu ujung ke Power dan yang lainnya ke resistor pull-down ke ground. Kemudian titik antara resistor pull-down tetap dan resistor photocell variabel terhubung ke input analog mikrokontroler seperti Arduino (ditampilkan)
(Lihat diagram sirkuit di bawah ini)

Untuk contoh ini saya menunjukkannya dengan persediaan 5V tetapi perhatikan bahwa Anda dapat menggunakan ini dengan pasokan 3.3V dengan mudah. Dalam konfigurasi ini, pembacaan tegangan analog berkisar dari 0V (arde) hingga sekitar 5V (atau hampir sama dengan tegangan catu daya).

Cara kerjanya adalah saat resistansi fotosel berkurang, resistansi total fotosel dan resistor pulldown berkurang dari lebih dari 600 K ohm ke 10 K ohm. Itu berarti bahwa arus yang mengalir melalui kedua resistor meningkat yang pada gilirannya menyebabkan tegangan melintasi resistor 10K ohm tetap meningkat. Ini cukup tipuan!

(Lihat tabel pertama di bawah)
Tabel ini menunjukkan perkiraan tegangan analog berdasarkan lampu sensor / resistansi dengan pasokan 5V dan resistor pulldown 10 K ohm

Jika Anda berencana memiliki sensor di area yang terang dan menggunakan pulldown 10K ohm, sensor akan cepat jenuh. Itu berarti bahwa itu akan mengenai 'langit-langit' 5V dan tidak dapat membedakan antara agak terang dan sangat cerah. Dalam hal ini, Anda harus mengganti pulldown 10K ohm dengan pulldown 1K ohm. Dalam hal ini, ia tidak akan dapat mendeteksi perbedaan level gelap juga tetapi ia akan dapat mendeteksi perbedaan cahaya terang dengan lebih baik. Ini adalah tradeoff yang harus Anda putuskan!

(Lihat tabel kedua di bawah)
Tabel ini menunjukkan perkiraan tegangan analog berdasarkan lampu sensor / resistansi dengan pasokan 5V dan resistor pulldown 1K

Perhatikan bahwa metode kami tidak memberikan tegangan linier sehubungan dengan kecerahan! Juga, setiap sensor akan berbeda. Ketika level cahaya meningkat, tegangan analog naik meskipun resistansi turun:

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

Artinya, tegangan sebanding dengan kebalikan dari resistensi fotosel yang, pada gilirannya, berbanding terbalik dengan tingkat cahaya

Langkah 5: Demonstrasi Penggunaan Sederhana


Sketsa ini akan mengambil pembacaan tegangan analog dan menggunakannya untuk menentukan seberapa terang LED merah. Semakin gelap itu, semakin terang LED akan! Ingat bahwa LED harus terhubung ke pin PWM agar bisa berfungsi, saya menggunakan pin 11 dalam contoh ini.

Contoh-contoh ini mengasumsikan Anda tahu beberapa pemrograman Arduino dasar. Jika tidak, mungkin meluangkan waktu meninjau dasar-dasar di tutorial Arduino?

/ * Photocell sketsa pengujian sederhana.

Hubungkan satu ujung fotosel ke 5V, ujung lainnya ke Analog 0.
Kemudian hubungkan salah satu ujung resistor 10K dari Analog 0 ke ground
Hubungkan LED dari pin 11 melalui resistor ke ground
Untuk informasi lebih lanjut lihat www.ladyada.net/learn/sensors/cds.html * /

int photocellPin = 0; // sel dan pulldown 10K terhubung ke a0
int photocellReading; // pembacaan analog dari pembagi sensor
int LEDpin = 11; // sambungkan Red LED ke pin 11 (pin PWM)
int LEDbrightness; //
pengaturan batal (batal) {
// Kami akan mengirimkan informasi debug melalui monitor Serial
Serial.begin (9600);
}

void loop (void) {
photocellReading = analogRead (photocellPin);

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

// LED menjadi lebih terang semakin gelap di sensor
// itu berarti kita harus -membalik- pembacaan dari 0-1023 kembali ke 1023-0
photocellReading = 1023 - photocellReading;
// sekarang kita harus memetakan 0-1023 ke 0-255 karena itulah kisaran yang digunakan analogWrite
LEDbrightness = peta (photocellReading, 0, 1023, 0, 255);
analogWrite (LEDpin, LEDbrightness);

keterlambatan (100);
}

Anda mungkin ingin mencoba berbagai resistor pulldown tergantung pada kisaran level cahaya yang ingin Anda deteksi!

Langkah 6: Kode Sederhana untuk Pengukuran Cahaya Analog:


Kode ini tidak melakukan perhitungan apa pun, hanya mencetak apa yang ditafsirkan sebagai jumlah cahaya secara kualitatif. Untuk sebagian besar proyek, ini cukup banyak; dibutuhkan!

/ * Photocell sketsa pengujian sederhana.

Hubungkan satu ujung fotosel ke 5V, ujung lainnya ke Analog 0.
Kemudian hubungkan salah satu ujung resistor 10K dari Analog 0 ke ground

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

int photocellPin = 0; // sel dan pulldown 10K terhubung ke a0
int photocellReading; // pembacaan analog dari pembagi resistor analog

pengaturan batal (batal) {
// Kami akan mengirimkan informasi debug melalui monitor Serial
Serial.begin (9600);
}

void loop (void) {
photocellReading = analogRead (photocellPin);

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

// Kami akan memiliki beberapa ambang batas, ditentukan secara kualitatif
if (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");
} lain {
Serial.println ("- Sangat cerah");
}
keterlambatan (1000);
}

Untuk mengujinya, saya mulai di ruangan yang diterangi matahari (tapi teduh) dan menutupi sensor dengan tangan saya, lalu menutupnya dengan selembar kain pemadaman.

Langkah 7: BONUS! Membaca Photocell Tanpa Pin Analog


Karena fotosel pada dasarnya adalah resistor, dimungkinkan untuk menggunakannya meskipun Anda tidak memiliki pin analog pada mikrokontroler Anda (atau jika Anda ingin menghubungkan lebih dari yang Anda miliki dengan pin input analog). Cara kami melakukan ini adalah dengan memanfaatkan properti elektronik dasar resistor dan kapasitor. Ternyata jika Anda mengambil kapasitor yang awalnya tidak menyimpan tegangan, dan kemudian menghubungkannya ke daya (seperti 5V) melalui resistor, itu akan mengisi daya ke tegangan daya secara perlahan. Semakin besar resistor, semakin lambat.

Pengambilan gambar ini dari osiloskop menunjukkan apa yang terjadi pada pin digital (kuning). Garis biru menunjukkan kapan sketsa mulai menghitung dan ketika penghitungan selesai, sekitar 1, 2 ms nanti.

Ini karena kapasitor bertindak seperti ember dan resistor seperti pipa tipis. Untuk mengisi ember dengan pipa yang sangat tipis, Anda perlu waktu yang cukup untuk mengetahui seberapa lebar pipa dengan menentukan berapa lama waktu yang dibutuhkan untuk mengisi ember hingga setengah.

Dalam hal ini, 'ember' kami adalah kapasitor keramik 0, 1 uF. Anda dapat mengubah kapasitor dengan cara apa pun yang Anda inginkan tetapi nilai waktunya juga akan berubah. 0, 1 uF tampaknya menjadi tempat yang baik untuk memulai untuk fotosel ini. Jika Anda ingin mengukur rentang yang lebih terang, gunakan kapasitor 1uF. Jika Anda ingin mengukur rentang yang lebih gelap, turun ke 0.01uF.

/ * Photocell sketsa pengujian sederhana.
Hubungkan salah satu ujung fotosel ke daya, ujung lainnya ke pin 2.
Kemudian hubungkan salah satu ujung kapasitor 0, 1uF dari pin 2 ke ground
Untuk informasi lebih lanjut lihat www.ladyada.net/learn/sensors/cds.html * /

int photocellPin = 2; // LDR dan tutup terhubung ke pin2
int photocellReading; // pembacaan digital
int ledPin = 13; // Anda bisa menggunakan LED 'built in'

pengaturan batal (batal) {
// Kami akan mengirimkan informasi debug melalui monitor Serial
Serial.begin (9600);
pinMode (ledPin, OUTPUT); // memiliki LED untuk output
}

void loop (void) {
// baca resistor menggunakan teknik RCtime
photocellReading = RCtime (photocellPin);

if (photocellReading == 30000) {
// jika kita mendapat 30000 itu berarti kita 'kehabisan waktu'
Serial.println ("Tidak ada yang terhubung!");
} lain {
Serial.print ("RCtime reading =");
Serial.println (photocellReading); // bacaan analog mentah

// Semakin cerah, semakin cepat berkedip!
digitalWrite (ledPin, HIGH);
delay (photocellReading);
digitalWrite (ledPin, LOW);
delay (photocellReading);
}
keterlambatan (100);
}

// Menggunakan pin digital untuk mengukur resistor (seperti FSR atau fotosel!)
// Kami melakukan ini dengan mengalirkan arus resistor ke kapasitor dan
// menghitung berapa lama untuk mencapai Vcc / 2 (untuk kebanyakan arduinos, itu 2.5V)
int RCtime (int RCpin) {
pembacaan int = 0; // mulai dengan 0

// atur pin ke output dan tarik ke LOW (ground)
pinMode (RCpin, OUTPUT);
digitalWrite (RCpin, LOW);

// Sekarang atur pin ke input dan ...
pinMode (RCpin, INPUT);
while (digitalRead (RCpin) == LOW) {// hitung berapa lama untuk naik ke HIGH
membaca ++; // peningkatan untuk melacak waktu

if (membaca == 30000) {
// jika kita sampai sejauh ini, perlawanannya sangat tinggi
// sepertinya tidak ada yang terhubung!
istirahat; // tinggalkan loop
}
}
// Oke kita maksimal 30000 atau semoga mendapat bacaan, kembalikan hitungan

kembali membaca;
}

Artikel Terkait