- ADC0804 dan Raspberry Pi:
- Sensor Suhu LM35:
- Komponen yang Diperlukan:
- Litar dan Penjelasan Kerja:
- Penjelasan Pengaturcaraan:
Kami sebahagian besarnya merangkumi semua Komponen Asas yang berinteraksi dengan Raspberry Pi dalam Seri Tutorial Raspberry Pi kami. Kami telah membahas semua Tutorial dengan cara yang mudah dan terperinci, sehingga sesiapa sahaja, sama ada dia pernah bekerja dengan Raspberry Pi atau tidak, dapat belajar dari Seri ini dengan mudah. Dan setelah melalui semua tutorial, anda akan dapat membina beberapa projek Tingkat Tinggi menggunakan Raspberry Pi.
Jadi di sini kita merancang aplikasi pertama berdasarkan tutorial sebelumnya. Aplikasi asas pertama adalah Suhu Bilik Baca oleh Raspberry Pi. Dan anda boleh memantau Bacaan di komputer.
Seperti yang dibincangkan dalam tutorial sebelumnya, tidak ada saluran ADC yang disediakan secara dalaman di Raspberry Pi. Oleh itu, jika kita mahu menghubungkan antara sensor analog, kita memerlukan unit penukaran ADC. Dan dalam salah satu tutorial kami, kami mempunyai cip Interfaced ADC0804 kepada Raspberry Pi untuk membaca nilai analog. Oleh itu, lalui sebelum membina Termometer Suhu Bilik ini.
ADC0804 dan Raspberry Pi:
ADC0804 adalah cip yang direka untuk menukar isyarat analog ke data digital 8 bit. Cip ini adalah salah satu siri ADC yang popular. Ini adalah unit penukaran 8bit, jadi kami mempunyai nilai atau 0 hingga 255 nilai. Resolusi cip ini berubah berdasarkan voltan rujukan yang kami pilih, kami akan membincangkan lebih lanjut mengenainya nanti. Berikut adalah Pinout ADC0804:
Satu lagi perkara penting di sini ialah, ADC0804 beroperasi pada 5V dan dengan itu memberikan output dalam isyarat logik 5V. Dalam output 8 pin (mewakili 8 bit), setiap pin memberikan output + 5V untuk mewakili logik'1 '. Jadi masalahnya ialah logik PI adalah + 3.3v, jadi anda tidak dapat memberikan logik + 5V ke pin GPIO + 3.3V PI. Sekiranya anda memberi + 5V kepada mana-mana pin GPIO PI, papan akan rosak.
Jadi untuk turun ke tahap logik dari + 5V, kita akan menggunakan litar pembahagi voltan. Kami telah membincangkan Voltage Divider Circuit sebelum ini untuk memperjelasnya. Apa yang akan kami lakukan ialah, kami menggunakan dua perintang untuk membahagikan logik + 5V menjadi logik 2 * 2.5V. Oleh itu, selepas pembahagian, kami akan memberikan logik + 2.5v kepada PI. Jadi, setiap kali logik '1' dikemukakan oleh ADC0804 kita akan melihat + 2.5V di PI GPIO Pin, bukannya + 5V.
Sensor Suhu LM35:
Sekarang untuk Membaca Suhu Bilik, kita memerlukan sensor. Di sini kita akan menggunakan Sensor Suhu LM35. Suhu biasanya diukur dalam "Celcius" atau "Fahrenheit". Sensor "LM35" memberikan output dalam darjah Celcius.
Seperti yang ditunjukkan dalam gambar, LM35 adalah peranti seperti transistor tiga pin. Pin dinomborkan sebagai, PIN1 = Vcc - Daya (Disambungkan ke + 5V)
PIN2 = Isyarat atau Keluaran (disambungkan ke cip ADC)
PIN3 = Tanah (Terhubung ke tanah)
Sensor ini memberikan voltan berubah pada output, berdasarkan suhu. Untuk setiap kenaikan suhu +1 celcius akan ada + 10mV voltan lebih tinggi pada pin output. Jadi jika suhu 0◦ celcius output sensor akan 0V, jika suhu 10◦ celcius output sensor akan + 100mV, jika suhu 25◦ celcius output sensor akan + 250mV.
Komponen yang Diperlukan:
Di sini kita menggunakan Raspberry Pi 2 Model B dengan OS Raspbian Jessie. Semua keperluan asas Perkakasan dan Perisian dibincangkan sebelumnya, anda boleh mencarinya dalam Pengenalan Raspberry Pi, selain daripada yang kami perlukan:
- Pin penyambung
- Resistor 1KΩ (17 keping)
- Periuk 10K
- Kapasitor 0.1µF
- Kapasitor 100µF
- Kapasitor 1000µF
- ADC0804 IC
- Sensor Suhu LM35
- Papan Roti
Litar dan Penjelasan Kerja:
Sambungan yang dilakukan untuk Menghubungkan Raspberry ke ADC0804 dan LM35, ditunjukkan dalam rajah litar di bawah.
Output LM35 mempunyai banyak turun naik voltan; jadi kapasitor 100uF digunakan untuk melancarkan output, seperti yang ditunjukkan pada gambar.
ADC selalu mempunyai banyak bunyi, kebisingan ini dapat mempengaruhi prestasi, jadi kami menggunakan kapasitor 0.1uF untuk Penapisan Kebisingan. Tanpa ini akan terdapat banyak turun naik pada output.
Cip ini berfungsi pada jam pengayun RC (Resistor-Capacitor). Seperti yang ditunjukkan dalam rajah litar , C2 dan R20 membentuk Jam. Perkara penting yang perlu diingat di sini ialah kapasitor C2 boleh ditukar menjadi nilai yang lebih rendah untuk kadar penukaran ADC yang lebih tinggi. Namun dengan kelajuan yang lebih tinggi akan ada penurunan ketepatan. Oleh itu, jika aplikasi memerlukan ketepatan yang lebih tinggi, pilih kapasitor dengan nilai yang lebih tinggi dan untuk kelajuan yang lebih tinggi pilih kapasitor dengan nilai yang lebih rendah.
Seperti yang diberitahu sebelumnya, LM35 menyediakan + 10mV untuk setiap celcius. Suhu maksimum yang dapat diukur oleh LM35 ialah 150º celcius. Oleh itu, kita akan mempunyai maksimum 1.5V di terminal output LM35. Tetapi voltan rujukan lalai ADC0804 ialah + 5V. Oleh itu, jika kita menggunakan nilai rujukan itu, resolusi output akan rendah kerana kita akan menggunakan maksimum (5 / 1.5) 34% dari julat output digital.
Nasib baik ADC0804 mempunyai pin Vref yang boleh disesuaikan (PIN9) seperti yang ditunjukkan pada Rajah Pinnya di atas. Oleh itu, kami akan menetapkan Vref cip ke + 2V. Untuk menetapkan Vref + 2V, kita perlu memberikan voltan + 1V (VREF / 2) pada PIN9. Di sini kita menggunakan periuk 10K untuk menyesuaikan voltan pada PIN9 hingga + 1V. Gunakan voltmeter untuk mendapatkan voltan yang tepat.
Kami sebelumnya telah menggunakan Sensor Suhu LM35 untuk Membaca suhu Bilik dengan Arduino dan dengan Mikrokontroler AVR. Periksa juga Kelembapan dan Pengukuran Suhu menggunakan Arduino
Penjelasan Pengaturcaraan:
Setelah semuanya dihubungkan mengikut gambarajah litar, kita dapat menghidupkan PI untuk menulis program dalam PYHTON.
Kami akan membincangkan beberapa arahan yang akan kami gunakan dalam program PYHTON, Kami akan mengimport fail GPIO dari perpustakaan, fungsi di bawah ini membolehkan kita memprogram pin GPIO PI. Kami juga mengganti nama menjadi "GPIO" menjadi "IO", jadi dalam program setiap kali kami ingin merujuk pada pin GPIO, kami akan menggunakan kata 'IO'.
import RPi.GPIO sebagai IO
Kadang-kadang, apabila pin GPIO, yang cuba kita gunakan, mungkin melakukan beberapa fungsi lain. Sekiranya demikian, kami akan menerima amaran semasa menjalankan program. Perintah di bawah ini memberitahu PI untuk mengabaikan amaran dan meneruskan program.
Peringatan IO (Salah)
Kita boleh merujuk pin GPIO PI, sama ada dengan nombor pin di papan atau dengan nombor fungsinya. Seperti 'PIN 29' di papan adalah 'GPIO5'. Oleh itu, kami katakan di sini sama ada kami akan mewakili pin di sini dengan '29' atau '5'.
IO.setmode (IO.BCM)
Kami menetapkan 8 pin sebagai pin input. Kami akan mengesan 8 bit data ADC dengan pin ini.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Sekiranya keadaan di pendakap benar, pernyataan di dalam gelung akan dilaksanakan sekali. Oleh itu, jika pin GPIO 19 naik tinggi, maka pernyataan di dalam gelung IF akan dilaksanakan sekali. Sekiranya pin GPIO 19 tidak naik tinggi, maka pernyataan di dalam gelung IF tidak akan dilaksanakan.
jika (IO.input (19) == Betul):
Perintah di bawah digunakan sebagai loop selamanya, dengan perintah ini pernyataan di dalam gelung ini akan dilaksanakan secara berterusan.
Semasa 1:
Penjelasan Lebih Lanjut mengenai Kod diberikan dalam Bahagian Kod di Bawah.
Setelah menulis program inilah masanya untuk melaksanakannya. Sebelum melaksanakan program, mari kita bincangkan apa yang berlaku di litar sebagai Ringkasan. Sensor LM35 pertama mengesan suhu bilik dan memberikan voltan analog pada outputnya. Voltan ubah ini mewakili suhu secara linear dengan + 10mV per ºC. Isyarat ini diumpankan ke cip ADC0804, cip ini menukar nilai Analog ke nilai digital dengan 255/200 = 1.275 kiraan per10mv atau 1.275kira untuk 1 darjah. Kiraan ini diambil oleh PI GPIO. Program menukar kiraan menjadi nilai suhu dan memaparkannya di skrin. Suhu biasa yang dibaca oleh PI ditunjukkan di bawah, Oleh itu kami memantau suhu Raspberry Pi ini.