Isi kandungan:

Pemasa Boleh Diprogram 8 Saluran: 13 Langkah
Pemasa Boleh Diprogram 8 Saluran: 13 Langkah

Video: Pemasa Boleh Diprogram 8 Saluran: 13 Langkah

Video: Pemasa Boleh Diprogram 8 Saluran: 13 Langkah
Video: PENYEBAB SIARAN TV DIGITAL SEDIKIT YANG BISA DI DAPAT DI SET TOP BOX 2024, November
Anonim
Pemasa Boleh Diprogram 8 Saluran
Pemasa Boleh Diprogram 8 Saluran
Pemasa Boleh Diprogram 8 Saluran
Pemasa Boleh Diprogram 8 Saluran
Pemasa Boleh Diprogram 8 Saluran
Pemasa Boleh Diprogram 8 Saluran

Pengenalan

Saya telah menggunakan rangkaian mikrokontroler PIC Microchip untuk projek saya sejak tahun 1993, dan telah melakukan semua pengaturcaraan saya dalam bahasa assembler, dengan menggunakan Microchip MPLab IDE. Projek saya bermula dari lampu isyarat sederhana dan LED berkelip, ke antara muka joystick USB untuk model R / C, dan alat analisa suis yang digunakan dalam industri. Pembangunan memerlukan banyak hari, dan kadang-kadang beribu-ribu baris kod assembler.

Setelah menerima Matrix Multimedia Flowcode 4 Professional, saya agak skeptikal terhadap perisian tersebut. Ia kelihatan terlalu mudah dipercayai. Saya memutuskan untuk mencubanya, dan menguji semua Komponen Makro yang berbeza, semuanya dengan kejayaan besar. Bahagian terbaik menggunakan Flowcode adalah bahawa projek mudah dapat dikodkan dalam satu malam. Setelah bermain dengan jam nyata I²C dan DS1307, saya memutuskan untuk merancang Pemasa 8 Saluran menggunakan Flowcode. Tidak menjadi projek kecil dan mudah, saya percaya bahawa ini akan menjadi projek yang bagus untuk mengajar diri saya Flowcode.

Memilih mikropemproses dan komponen lain

Oleh kerana bilangan pin I / O diperlukan, jelas bahawa peranti 40 pin akan diperlukan. PIC 18F4520 dipilih, terutama untuk memori program 32K, dan memori data 1536 byte. Semua komponen yang digunakan, adalah peranti lubang melalui standard, memungkinkan untuk membina litar di papan Vero jika diperlukan. Ini juga membantu pengembangan papan roti.

Langkah 1: Objektif Projek

Objektif projek
Objektif projek

Objektif

- Menyimpan masa yang tepat, dengan sandaran bateri.

- Semua program dan data yang akan disimpan, walaupun setelah kehilangan kuasa.

- Antara muka pengguna yang sederhana.

- Fleksibiliti pengaturcaraan.

Penjagaan masa

Hidup di kawasan yang terdedah kepada gangguan bekalan elektrik, 50 / 60Hz standard dari talian kuasa tidak akan mencukupi untuk menyimpan masa yang tepat. Jam masa nyata adalah mustahak, dan setelah menguji beberapa cip RTC, saya memutuskan untuk menggunakan DS1307 kerana konfigurasi pengayun dan sandaran bateri yang ringkas. Penjimatan masa yang cukup tepat diperoleh dengan hanya menggunakan kristal 32.768 kHz yang disambungkan ke DS1307. Ketepatan berada dalam 2 saat dalam tempoh percubaan 2 bulan menggunakan 4 jenis kristal yang berbeza.

Pengekalan data

Semua data program pemasa mesti disimpan, walaupun semasa gangguan kuasa. Dengan 100 program yang berbeza dan pelbagai data konfigurasi, menjadi jelas bahawa 256 bait EEPROM on-board PIC tidak akan cukup besar. EEPROM 24LC256 I²C digunakan untuk menyimpan semua maklumat pengaturcaraan.

Antara muka pengguna yang sederhana

Antara muka pengguna hanya terdiri daripada 2 item, paparan LCD 16 x 4 baris dengan lampu latar LED, dan papan kekunci 4 x 3. Semua pengaturcaraan dapat dilakukan dengan hanya menekan beberapa butang. Tambahan pada antaramuka adalah buzzer piezo yang dapat didengar, dan lampu latar LCD berkelip visual.

Langkah 2: Kelenturan Pengaturcaraan

Fleksibiliti Pengaturcaraan
Fleksibiliti Pengaturcaraan

Untuk memastikan fleksibiliti program yang mencukupi, pemasa mempunyai 100 program yang dapat diatur secara individu. Untuk setiap program, Waktu On, Off Time, Output Channels, dan Day of Week dapat diatur. Setiap program mempunyai tiga mod:

- Auto: On Time, Off time, Output Channel dan Hari dalam seminggu ditetapkan.

- Mati: Program individu boleh dilumpuhkan, tanpa menghapus tetapan. Untuk mengaktifkan program sekali lagi, pilih mod lain.

- Siang / Malam: Pada Waktu, Waktu Mati, Saluran Keluaran dan Hari dalam seminggu ditetapkan. Berfungsi sama seperti mod Auto, tetapi akan

hanya hidupkan output antara waktu Hidup dan Mati semasa gelap. Ini juga membolehkan kawalan Siang / Malam penuh

sebagai fleksibiliti tambahan untuk menyalakan lampu ketika matahari terbenam, dan mati ketika matahari terbit.

Contoh 1: Akan menyalakan lampu selepas jam 20:00, dan mematikan cahaya pada waktu matahari terbit:

Pada: 20:00, Mati: 12:00, Contoh 2: Akan menyalakan lampu pada waktu matahari terbenam, dan mematikan lampu pada pukul 23:00.

Pada: 12:00

Mati: 23:00

Contoh 3: Akan menyalakan cahaya pada waktu matahari terbenam, dan mematikan cahaya pada waktu matahari terbit.

Pada: 12:01

Mati: 12:00

Terdapat pilihan tambahan, semuanya berfungsi secara bebas dari program 100 On / Off.

Saluran Program Aktif: Daripada mematikan beberapa program, saluran output individu boleh dilumpuhkan tanpa perlu mengubah program.

Input tambahan: Dua input digital tersedia, untuk membolehkan saluran output tertentu dihidupkan untuk waktu tertentu. Misalnya dapat digunakan untuk menyalakan lampu tertentu ketika tiba di rumah larut malam, ketika tombol pada alat kawalan jauh ditekan, atau untuk menyalakan lampu yang lain ketika alarm rumah dipicu.

Output tambahan: Terdapat dua output tambahan (selain daripada 8 saluran output). Mereka dapat diprogram untuk dihidupkan dengan saluran output tertentu, atau dengan input digital. Dalam pemasangan saya, saya mempunyai output 6-8 yang mengawal pengairan saya, yang berfungsi pada 24V. Saya menggunakan saluran 6-8 untuk menghidupkan salah satu output tambahan, untuk menghidupkan bekalan kuasa 24V untuk sistem pengairan.

Hidup Secara Manual: Ketika berada di layar utama, butang 1-8 dapat digunakan untuk menghidupkan atau mematikan saluran secara manual.

Langkah 3: Perkakasan

Perkakasan
Perkakasan

Bekalan Kuasa: Bekalan kuasa terdiri daripada penerus, kapasitor pelicin, dan sekering 1 Amp untuk perlindungan beban berlebihan. Bekalan ini kemudian diatur oleh pengatur 7812 dan 7805. Bekalan 12V digunakan untuk menggerakkan relai output, dan semua litar lain dikuasakan dari bekalan 5V. Oleh kerana pengatur 7805 disambungkan ke output pengatur 7812, arus keseluruhan mesti dihadkan kepada 1 amp melalui pengatur 7812. Sebaiknya pasang pengatur ini pada pendingin yang sesuai.

Bas I²C: Walaupun Flowcode membenarkan kawalan I²C perkakasan, saya memutuskan untuk menggunakan konfigurasi perisian I²C. Ini membolehkan lebih banyak fleksibiliti penugasan pin. Walaupun lebih perlahan (50 kHz), ia tetap berkinerja hebat berbanding dengan bas I²C perkakasan. Kedua-dua DS1307 dan 24LC256 disambungkan ke bas I²C ini.

Jam Masa Nyata (DS1307): Semasa permulaan, daftar RTC 0 dan 7 dibaca untuk menentukan sama ada ia mengandungi data masa dan konfigurasi yang sah. Setelah penyediaan betul, masa RTC dibaca dan masa dimuat dalam PIC. Ini adalah satu-satunya masa yang dibaca dari RTC. Selepas permulaan, nadi 1Hz akan hadir pada pin 7 RTC. Isyarat 1Hz ini disambungkan ke RB0 / INT0, dan melalui rutin perkhidmatan gangguan, waktu PIC dikemas kini setiap saat.

EEPROM Luaran: Semua data dan pilihan program disimpan di EEPROM luaran. Data EEPROM dimuat pada permulaan, dan salinan data disimpan dalam memori PIC. Data EEPROM hanya dikemas kini apabila tetapan program diubah.

Sensor Siang / Malam: Perintang bergantung cahaya standard (LDR) digunakan sebagai sensor Siang / Malam. Oleh kerana LDR terdapat dalam pelbagai bentuk dan varietas, semuanya dengan nilai rintangan yang berbeza dalam keadaan cahaya yang sama, saya menggunakan saluran input analog untuk membaca tahap cahaya. Tahap Siang dan Malam dapat disesuaikan, dan memberikan sedikit kelonggaran untuk sensor yang berbeza. Untuk menetapkan beberapa histeresis, nilai individu untuk Siang dan Malam dapat ditetapkan. Keadaan hanya akan berubah jika tahap cahaya berada di bawah Hari, atau di atas titik set Malam, lebih lama daripada 60 saat.

Paparan LCD: 4 baris, paparan 16 karakter digunakan, karena semua data tidak dapat ditampilkan pada paparan 2 baris. Projek ini merangkumi beberapa watak tersuai, yang ditentukan dalam makro LCD_Custom_Char.

Input Tambahan: Kedua-dua input disangga dengan transistor NPN. + 12v dan 0V juga tersedia pada penyambung, yang membolehkan sambungan yang lebih fleksibel ke sambungan luaran. Sebagai contoh, alat kawalan jauh boleh disambungkan ke bekalan.

Keluaran: Semua output diasingkan secara elektrik dari litar dengan menggunakan geganti 12V. Relay yang digunakan, dinilai untuk 250V AC, pada 10 amp. Kenalan yang biasanya terbuka dan tertutup dibawa keluar ke terminal.

Pad kekunci: Pad kekunci yang digunakan adalah papan kekunci matriks 3 x 4, dan disambungkan PORTB: 2..7.

Langkah 4: Pad kekunci terganggu

Pad kekunci terganggu
Pad kekunci terganggu
Pad kekunci terganggu
Pad kekunci terganggu
Pad Kekunci Gangguan
Pad Kekunci Gangguan

Saya ingin memanfaatkan gangguan PORTB Interrupt on Change pada sebarang tekan kekunci. Untuk ini, Interrupt Kustom harus dibuat dalam Flowcode, untuk memastikan arah dan data PORTB disiapkan dengan betul sebelum dan sesudah setiap kekunci terganggu. Gangguan dihasilkan setiap kali butang ditekan, atau dilepaskan. Rutin gangguan hanya bertindak balas apabila kekunci ditekan.

GANGGUAN KASTAM

Dayakan Kod

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Kod pengendali

jika (intcon & (1 << RBIF))

{FCM_% n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Masalah dijumpai

Semasa gangguan, rutin perkhidmatan gangguan mesti dalam keadaan TIDAK, memanggil makro lain yang mungkin digunakan di suatu tempat di program yang lain. Ini akhirnya akan menyebabkan masalah tumpukan tumpukan, kerana gangguan boleh berlaku pada masa yang sama bahawa program utama juga berada di subrutin yang sama. Ini juga dikenal pasti sebagai KESALAHAN SERIUS oleh Flowcode semasa kod tersebut disusun.

Dalam kod Custom Keypad di bawah GetKeyPadNumber, terdapat panggilan ke makro Delay_us, yang akan menyebabkan tumpukan tumpahan. Untuk mengatasinya, saya telah membuang perintah Delay_us (10), dan menggantinya dengan 25 baris “wreg = porta;” arahan. Perintah ini membaca PORTA, dan meletakkan nilainya ke dalam daftar W, hanya untuk sedikit kelewatan. Perintah ini akan disusun untuk satu arahan yang serupa dengan assembler movf porta, 0. Untuk jam 10MHz yang digunakan dalam projek, setiap arahan akan 400ns, dan untuk mendapatkan kelewatan 10us, saya memerlukan 25 arahan ini.

Perhatikan pada baris kedua Gambar 3: GetKeypadNumber Custom Code, bahawa arahan delay_us (10) asal telah dilumpuhkan dengan "//". Di bawah ini, saya telah menambahkan 25 "wreg = porta;" saya arahan untuk mendapatkan kelewatan 10us baru. Tanpa panggilan ke makro apa pun di dalam kod tersuai Keypad_ReadKeypadNumber, makro Keypad kini dapat digunakan dalam rutin perkhidmatan yang mengganggu.

Perlu diingatkan bahawa komponen Flowcode Keypad dan eBlocks tidak menggunakan resistor pull-up standard pada garis input. Sebaliknya, ia menggunakan perintang tarik 100K. Oleh kerana terdapat beberapa gangguan pada papan kekunci semasa pembangunan, perintang 100K semuanya diganti dengan 10K, dan semua perintang 10K diganti dengan 1K5. Pad kekunci diuji untuk berfungsi dengan betul dengan plumbum 200mm.

Langkah 5: Menggunakan Pemasa

Menggunakan Pemasa
Menggunakan Pemasa
Menggunakan Pemasa
Menggunakan Pemasa
Menggunakan Pemasa
Menggunakan Pemasa

Semua layar diatur untuk menunjukkan semua maklumat yang diperlukan bagi pengguna untuk membuat perubahan cepat pada pengaturan. Baris 4 digunakan untuk membantu navigasi melalui menu dan pilihan program. Sebanyak 22 skrin tersedia semasa operasi biasa.

BARIS 1: Masa dan Status

Menunjukkan hari dan waktu semasa, diikuti dengan ikon status:

A - Menunjukkan bahawa Aux Input A dicetuskan, dan pemasa Aux Input A sedang berjalan.

B - Menunjukkan bahawa Aux Input B telah dipicu, dan pemasa Aux Input B sedang berjalan.

C - Menunjukkan bahawa Output Aux C dihidupkan.

D - Menunjukkan bahawa Output Aux D dihidupkan.

} - Status sensor Siang / Malam. Sekiranya ada, menunjukkan bahawa ia adalah malam.

LINE 2: Hasil Program

Menunjukkan saluran yang telah dihidupkan oleh pelbagai program. Saluran ditampilkan dalam angka keluarannya, dan "-" menunjukkan bahawa output tertentu tidak dihidupkan. Saluran yang telah dinonaktifkan dalam "Program Output Aktif" masih akan ditunjukkan di sini, tetapi output Sebenar tidak akan ditetapkan.

BARIS 3: Keluaran Sebenar

Menunjukkan saluran mana yang dihidupkan oleh program yang berbeza, Aux Input A & B, atau output manual yang ditetapkan oleh pengguna. Menekan 0 akan mengembalikan semua output yang diaktifkan secara manual dan mematikan semula pemasa Aux Output A & B.

LINE 4: Menu dan pilihan utama (pada semua menu)

Menunjukkan fungsi kekunci "*" dan "#".

Bahagian tengah menunjukkan kunci angka mana (0-9) yang aktif untuk skrin yang dipilih.

Status input Aux Input A & B juga ditunjukkan melalui ikon suis Terbuka atau Tertutup.

Keluaran boleh dihidupkan / dimatikan secara manual dengan menekan kekunci yang sesuai pada papan kekunci.

Sepanjang menu, kekunci Bintang dan Hash digunakan untuk menavigasi pilihan program yang berbeza. Kekunci 0-9 digunakan untuk menetapkan pilihan. Di mana terdapat banyak pilihan pada satu skrin atau menu pengaturcaraan, kekunci Hash digunakan untuk menelusuri berbagai pilihan. Pilihan yang dipilih semasa akan selalu ditunjukkan oleh watak ">" di sebelah kiri skrin.

0-9 Masukkan nilai masa

1-8 Tukar pemilihan saluran

14 36 Melangkah melalui program, 1 langkah ke belakang, 4 langkah ke belakang 10 program, 3 langkah ke depan, 6 langkah ke hadapan 10

program

1-7 Tetapkan hari dalam seminggu. 1 = Ahad, 2 = Isnin, 3 = Selasa, 4 = Rabu, 5 = Khamis, 6 = Jumaat, 7 = Sabtu

0 Pada skrin utama, kosongkan semua penggantian manual dan pemasa Input A & Input B. Di menu lain, perubahan

pilihan yang dipilih

# Di layar utama, akan mematikan semua penggantian manual, timer Input A & Input B dan Output Program, hingga

acara seterusnya.

* dan 1 Nyalakan semula pemasa

* dan 2 Hapus semua program dan pilihan, kembalikan tetapan ke lalai.

* dan 3 Masukkan pemasa ke bersedia. Untuk menghidupkan semula pemasa, tekan sebarang kekunci.

Semasa penyisipan yang salah dengan nilai masa apa pun, lampu latar LCD akan berkelip 5 kali untuk menunjukkan kesalahan. Pada masa yang sama, bel akan berbunyi. Perintah Keluar dan Seterusnya hanya akan berfungsi apabila entri semasa betul.

Lampu Latar LCD

Pada permulaan awal, lampu latar LCD akan dihidupkan selama 3 minit, kecuali:

- Terdapat kegagalan perkakasan (EEPROM atau RTC tidak dijumpai)

- Masa tidak ditetapkan dalam RTC

Lampu latar LCD akan kembali menyala selama 3 minit pada sebarang input pengguna pada papan kekunci. Sekiranya lampu latar LCD mati, arahan keypad mana pun akan menghidupkan lampu latar LCD terlebih dahulu, dan mengabaikan kekunci yang ditekan. Ini memastikan pengguna dapat membaca paparan LCD sebelum menggunakan papan kekunci. Lampu latar LCD juga akan dihidupkan selama 5 saat jika Aux Input A atau Aux Input B diaktifkan.

Langkah 6: Tangkapan Skrin Menu

Tangkapan Skrin Menu
Tangkapan Skrin Menu
Tangkapan Skrin Menu
Tangkapan Skrin Menu
Tangkapan Skrin Menu
Tangkapan Skrin Menu

Dengan menggunakan papan kekunci, setiap pilihan dapat diprogram dengan mudah. Gambar memberikan beberapa maklumat mengenai apa yang dilakukan oleh setiap skrin.

Langkah 7: Reka Bentuk Sistem

Reka Bentuk Sistem
Reka Bentuk Sistem

Semua pembangunan dan pengujian dilakukan di papan roti. Melihat semua bahagian sistem, saya menguraikan sistem dalam tiga modul. Keputusan ini terutama disebabkan oleh batasan ukuran PCB (80 x 100mm) versi Eagle percuma.

Modul 1 - Bekalan Kuasa

Modul 2 - papan CPU

Modul 3 - Papan geganti

Saya memutuskan bahawa semua komponen mesti diperoleh dengan mudah, dan bahawa saya tidak mahu menggunakan komponen pelekap permukaan.

Mari kita teliti masing-masing.

Langkah 8: Bekalan Kuasa

Bekalan Kuasa
Bekalan Kuasa
Bekalan Kuasa
Bekalan Kuasa
Bekalan Kuasa
Bekalan Kuasa
Bekalan Kuasa
Bekalan Kuasa

Bekalan kuasa lurus ke hadapan, dan membekalkan CPU dan papan geganti dengan 12V dan 5V.

Saya memasang pengatur voltan pada sink haba yang baik, dan juga menggunakan kapasitor yang berlebihan untuk bekalannya.

Langkah 9: Papan CPU

Papan CPU
Papan CPU
Papan CPU
Papan CPU
Papan CPU
Papan CPU
Papan CPU
Papan CPU

Semua komponen, kecuali layar LCD, pad kekunci dan relay dipasang pada papan CPU.

Blok terminal ditambahkan untuk mempermudah hubungan antara bekalan, dua input digital, dan sensor cahaya.

Pin header / soket menyediakan sambungan mudah ke skrin LCD dan papan kekunci.

Untuk output ke relay, saya menggunakan ULN2803. Ini sudah mengandungi semua perintang memandu dan dioda flyback yang diperlukan. Ini memastikan bahawa papan CPU masih dapat dibuat menggunakan Eagle versi percuma. Relay disambungkan ke dua ULN2803s. ULN2803 bawah digunakan untuk 8 output, dan ULN2803 teratas untuk dua output tambahan. Setiap output tambahan mempunyai empat transistor. Sambungan ke relay juga melalui pin header / soket.

PIC 18F4520 dilengkapi dengan soket pengaturcaraan, untuk memungkinkan pengaturcaraan yang mudah melalui pengaturcara PicKit 3.

CATATAN:

Anda akan melihat bahawa papan mengandungi IC 8 pin tambahan. IC teratas adalah PIC 12F675, dan disambungkan ke input digital. Ini ditambahkan semasa reka bentuk PCB. Ini memudahkan proses pra-input input digital. Dalam aplikasi saya, salah satu input digital disambungkan ke sistem penggera saya. Sekiranya penggera berbunyi, lampu tertentu dihidupkan di rumah saya. Melengkapkan dan melucutkan senjata sistem penggera saya memberikan bunyi bip yang berbeza pada siren. Dengan menggunakan PIC 12F675, saya sekarang dapat membezakan antara lengan / pelucutan senjata dan penggera yang sebenar. 12F675 juga dilengkapi dengan soket pengaturcaraan.

Saya juga memperuntukkan port I2C melalui pin header / soket. Ini akan berguna kemudian dengan papan geganti.

Papan berisi beberapa jumper, yang harus disolder sebelum memasang soket IC.

Langkah 10: Kesimpulan Kod Alir

Kesimpulan Kod Alir
Kesimpulan Kod Alir
Kesimpulan Kod Alir
Kesimpulan Kod Alir
Kesimpulan Kod Alir
Kesimpulan Kod Alir

Oleh kerana saya biasa bekerja pada tahap pendaftaran dalam pemasangan, kadang-kadang sukar dan mengecewakan untuk menggunakan makro komponen. Ini disebabkan oleh kurangnya pengetahuan saya mengenai struktur pengaturcaraan Flowcode. Satu-satunya tempat yang saya gunakan blok C atau ASM, adalah untuk menghidupkan output di dalam rutin gangguan, dan dalam rutin Do_KeyPressed untuk mematikan / mengaktifkan kekunci terganggu. PIC juga diletakkan di SLEEP menggunakan blok ASM, apabila EEPROM atau RTC tidak dijumpai.

Bantuan mengenai penggunaan perintah I²C yang berlainan, semuanya diperoleh dari dalam fail Bantuan Flowcode. Diperlukan untuk mengetahui dengan tepat bagaimana peranti I²C berfungsi, sebelum perintah dapat digunakan dengan jayanya. Merancang litar memerlukan perancang untuk menyediakan semua lembar data yang relevan. Ini bukan kekurangan Flowcode.

Flowcode benar-benar sesuai dengan ujian, dan sangat disyorkan untuk orang yang ingin mula bekerja dengan rangkaian mikropemproses Microchip.

Pengaturcaraan dan konfigurasi aliran aliran untuk PIC ditetapkan seperti gambar

Langkah 11: Papan Relay I2C Pilihan

Papan Relay I2C pilihan
Papan Relay I2C pilihan
Papan Relay I2C pilihan
Papan Relay I2C pilihan
Papan Relay I2C pilihan
Papan Relay I2C pilihan

Papan CPU sudah mempunyai sambungan header untuk 16 relay. Output ini adalah transistor pemungut terbuka melalui dua cip ULN2803. Ini boleh digunakan untuk memberi kuasa kepada geganti secara langsung.

Selepas ujian pertama sistem, saya tidak menyukai semua wayar antara papan CPU dan geganti. Oleh kerana saya memasukkan port I2C pada papan CPU, saya memutuskan untuk merancang papan geganti untuk menyambung ke port I2C. Dengan menggunakan cip 16 saluran MCP23017 I / O Port Expander dan array transistor ULN2803, saya mengurangkan sambungan antara CPU dan geganti menjadi 4 wayar.

Oleh kerana saya tidak dapat memuatkan 16 geganti pada PCB 80 x 100mm, saya memutuskan untuk membuat dua papan. Setiap MCP23017 hanya menggunakan 8 dari 16 portnya. Papan 1 mengendalikan 8 output, dan papan 2 dua output tambahan. Satu-satunya perbezaan di papan adalah alamat setiap papan. Ini mudah dipasang dengan pelompat mini. Setiap papan mempunyai penyambung untuk membekalkan kuasa dan data I2C ke papan yang lain.

CATATAN:

Sekiranya diperlukan, perisian hanya menyediakan satu papan yang dapat menggunakan semua 16 port. Semua data relay output tersedia di papan pertama.

Oleh kerana litar adalah pilihan dan sangat mudah, saya tidak membuat skema. Sekiranya terdapat permintaan yang mencukupi, saya boleh menambahkannya kemudian.

Langkah 12: Pautan RF Pilihan

Pautan RF Pilihan
Pautan RF Pilihan
Pautan RF Pilihan
Pautan RF Pilihan
Pautan RF Pilihan
Pautan RF Pilihan

Setelah selesai projek, saya segera menyedari bahawa saya harus menarik banyak pendawaian 220V AC ke pemasa. Saya mengembangkan pautan RF menggunakan modul standard 315MHz yang membolehkan pemasa diletakkan di dalam almari, dan papan geganti di dalam bumbung, dekat dengan semua pendawaian 220V.

Pautan menggunakan AtMega328P berjalan pada 16MHz. Perisian untuk pemancar dan penerima sama, dan modnya dipilih oleh jumper mini.

Pemancar

Pemancar hanya dipasang ke port CPU I2C. Tidak diperlukan persediaan tambahan, kerana AtMega328P mendengar data yang sama dengan papan geganti I2C.

Data dikemas kini sekali per detik di port I2C, dan pemancar menghantar maklumat ini melalui pautan RF. Sekiranya pemancar tidak menerima data I2C selama kira-kira 30 saat, pemancar akan terus mengirimkan data untuk mematikan semua geganti ke unit penerima.

Kuasa ke modul pemancar dapat dipilih antara 12V dan 5V dengan pelompat mini di papan PC. Saya menghidupkan pemancar saya menggunakan 12V.

Penerima

Penerima mendengar data berkod dari pemancar, dan meletakkan data pada port I2C. Papan geganti hanya dipasang ke port ini, dan berfungsi sama seperti yang dipasang ke papan CPU.

Sekiranya penerima tidak menerima data yang sah selama 30 saat, penerima akan terus menghantar data pada port I2C untuk mematikan semua relay pada papan geganti.

Skematik

Suatu hari, jika ada permintaan untuknya. Lakaran Arduino mengandungi semua maklumat yang diperlukan untuk membina litar tanpa gambarajah litar.

Julat

Dalam pemasangan saya, pemancar dan penerima terletak kira-kira 10 meter. Pemasa berada di dalam almari, dan unit geganti di atas siling.

Langkah 13: Produk Akhir

Produk akhir
Produk akhir
Produk akhir
Produk akhir
Produk akhir
Produk akhir

Unit utama dipasang di kotak projek lama. Ia mengandungi perkara berikut:

- Transformer 220V / 12V

- Papan Bekalan Kuasa

- Papan CPU

- Paparan LCD

- Pad kekunci

- Pemancar Pautan RF

- Unit penerima jauh rumah tambahan untuk membolehkan saya menghidupkan / mematikan lampu melalui alat kawalan jauh

Unit geganti terdiri daripada yang berikut:

- Transformer 220V / 12V

- Papan Bekalan Kuasa

- Penerima Pautan RF

- 2 x Papan Relay I2C

Semua papan direka dengan dimensi yang sama, menjadikannya mudah untuk meletakkannya di atas satu sama lain dengan spacer 3mm.

Disyorkan: