Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Kontrol Tirai (Atau Motor Listrik AC)

Komponen dan persediaan

Arduino Nano R3
× 1
ControlEverything.com 4-CHANNEL RELAY CONTROLLER UNTUK I2C
× 1
Papan saluran 4 keadaan padat
× 1
Motor buta
Hingga 4 motor dapat dikontrol dengan satu Arduino.
× 1
Kapasitor 100 nF 630 V
Jumlah per motor.
× 1
Resistor 100 ohm (0,5 W min!)
Jangan gunakan resistor presisi (yang biru)! Kuantitas per motor.
× 1
Varistor 275 VAC
Jumlah per motor.
× 1
Dioda generik
Sinyal atau dioda daya apa pun boleh digunakan. Kuantitas per tirai.
× 3
Raspberry Pi 3 Model B
Opsional untuk kendali jarak jauh
× 1
Modul nRF24 (Generik)
Opsional untuk kendali jarak jauh
× 2

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Arduino IDE
Domoticz
Opsional, hanya untuk kendali jarak jauh. Kontroler otomatisasi lainnya dapat digunakan atau bahkan tidak sama sekali, hanya untuk memicu perintah konsol.

Tentang proyek ini

Pendahuluan

Baru saja membeli rumah baru dan ingin mengotomatiskan semuanya, dimulai dengan tirai. Apa yang tampaknya merupakan proyek yang mudah ternyata menjadi sedikit mimpi buruk:motor daya relatif tinggi (150W) menghancurkan relai dan triac saya, komunikasi dan pengontrol nirkabel apa yang digunakan dan bagaimana membuatnya bekerja tidak jelas, kebisingan di baris menyebabkan aktivasi acak kerai (cukup menakutkan di tengah malam) ... Akhirnya saya berhasil menyelesaikan semua masalah itu dengan komponen yang sangat murah dan mudah-mudahan saya dapat membantu orang lain untuk menghindari sakit kepala ini dan banyak lagi waktu.

Tidak suka memprogram, tetapi suka menyolder? Baca tutorialnya dan pada akhirnya Anda menemukan sirkuit diskrit, yang melakukan hal yang sama, tetapi tanpa kecerdasan.

Penjelasan

Saat mengendalikan motor, masalah penting adalah induktansinya, yang menyebabkan ketika mencoba membuka rangkaian, arus bersikeras untuk tetap mengalir melalui perangkat pemutus Anda, menyebabkan tegangan yang sangat tinggi. Jika Anda mencoba memutus sirkuit tanpa tindakan pencegahan dengan relai kecil, kontaknya akan saling menempel, dan jika Anda menggunakan triac (relai solid state), tegangan berlebih (dalam kasus saya, saya mengukur puncak lebih dari 1600V) akan menghancurkan semikonduktor.

Saya menyadari dengan googling, bahwa orang lain memiliki masalah dengan ini, tetapi mereka mengambil cara yang mudah, mahal dan banyak, mereka hanya mendapatkan relai yang lebih besar, masih membutuhkan relai murah hanya untuk mengaktifkan yang lebih besar, sementara kontak masih akan menderita dan mungkin gagal akhirnya. Sebagai seorang insinyur, saya tidak bisa membiarkan diri saya tidak mendapatkan solusi yang paling efisien. :) Dalam skema terlampir di bawah ini Anda memiliki solusi untuk menyimpan relay besar ini hanya dengan menambahkan satu resistor, satu kapasitor dan satu varistor.

Varistor melindungi triac dari tegangan berlebih. Resistor plus kapasitor membentuk rangkaian RC Snubber yang menyerap energi selama komutasi putus.

[PS: karena saya menulis tutorial langsung dari kepala saya lama setelah membuat proyek, hari lain setelah melihat lebih dekat pada papan saya, saya menyadari, bahwa dalam rangkaian nyata saya menempatkan resistor dan kapasitor antara garis coklat dan abu-abu (sesuai dengan warna skematis) dari setiap motor alih-alih di kontak triac. Kedua solusi berfungsi dalam kasus ini, tetapi keuntungan dari opsi kedua ini adalah Snubber tidak terpasang secara permanen ke listrik. ]

[PS2: SebDominguez juga membuat skema yang bagus dengan konfigurasi aktual:

]

Alih-alih menggunakan satu pin untuk perintah naik dan satu lagi untuk turun untuk setiap tirai, sakelar berbagi garis yang sama yang menunjukkan apakah tirai harus naik atau turun. Jadi kami menggunakan 5 input, bukan 8. Tidak diperlukan filter, input adalah perangkat lunak yang di-debounce.

Pertama Arduino mengaktifkan modul relai untuk memilih arah motor, setelah penundaan kecil, sehingga kontak relai sudah terpasang, ia mengaktifkan triac, memberi makan motor dengan 230 VAC melalui relai murah dan modul triac tanpa masalah. Untuk memutus rangkaian proses sebaliknya, pertama triac dan kemudian relay, sehingga relay tidak pernah mengalami komutasi hidup.

Anda dapat menggunakan dari satu hingga empat motor, tanpa perlu mengubah kode, tidak ada salahnya untuk memiliki logika untuk motor lain jika Anda tidak menggunakannya, kecuali jika Anda memerlukan pin untuk sesuatu yang lain, tentu saja.

Di rumah kami memiliki dua lantai dan karenanya, dua sirkuit. Karena perintah jarak jauh harus unik, saya telah membuat kode tersebut valid untuk semua perintah tersebut dengan berkomentar satu baris pada waktu mengunggah. Jika Anda memasang hanya satu sirkuit, Anda tidak perlu mengubah apa pun, tetapi jika Anda akan membangun dua, di sana Anda sudah memiliki solusinya secara gratis. Sebenarnya saya hanya berbohong kepada Anda, kami memiliki tiga sirkuit, tetapi total 8 tirai, dalam satu sirkuit kami menempati keempat motor, tetapi empat tirai lainnya dibagi dua dengan menggunakan tiga input pertama dalam satu Arduino dan hanya input nomor empat di detik. Sirkuit yang digandakan bereaksi terhadap perintah jarak jauh persis sama, tetapi di mana tidak ada yang terhubung, tidak ada yang bisa diaktifkan. :) Jika Anda menggunakan kode versi MySensors, maka Anda dapat menghubungkan hingga 256 node dengan 4 tirai masing-masing tidak mengubah satu baris dalam kode, cukup adil jika Anda tinggal di istana.

Sistemnya secara keseluruhan terlihat seperti ini:

Maaf, itu tidak terlalu mewah dan jelas, tetapi ini adalah instalasi nyata, dibuat beberapa waktu lalu, bukan hanya rangkaian yang disiapkan untuk tutorial ini dan saya tidak dapat menunjukkannya kepada Anda berbagai macam di atas meja. Seperti yang Anda lihat, itu muat dalam kotak dinding berukuran 22 x 15 x 5,2 cm, tetapi cukup ketat. Cara saya membuatnya adalah dengan memasukkan semuanya ke dalam kotak kayu terbuka menggunakan lem tembak:praktis, cepat dan mudah.

Jika Anda menggunakan IDE web untuk sketsa Arduino, itu akan menemukan secara otomatis semua perpustakaan yang diperlukan.

Kontrol Jarak Jauh (Opsional)

Tujuan dari tutorial ini adalah untuk memecahkan masalah induktansi, tetapi sebagai tambahan, ada juga kemampuan remote control.

Kode yang diberikan mencakup dua cara remote control melalui modul radio nrf24l01+:menggunakan MySensors (disarankan), atau dengan mengirimkan bilangan bulat dengan jumlah blind dan perintah 0 atau 1 untuk naik atau turun.

Dalam kedua kasus saya menggunakan RPi sebagai master dengan modul nRF24L01+ yang langsung terpasang padanya, dan pengontrol (Domoticz) diinstal.

Untuk opsi pertama, menggunakan MySensors, perlu menginstal gateway MQTT MySensors. (https://www.mysensors.org/build/raspberry). Dalam implementasi saya mengonfigurasinya sebagai Ethernet di localhost. Ikuti langkah-langkah di tautan dan di sini Anda memiliki parameter konfigurasi saya yang dapat membantu Anda (periksa apakah Anda memerlukan yang sama):

sudo ./configure --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 --my-mqtt-publish-topic-prefix=domoticz/in/MyMQTT --my-mqtt-subscribe-topic -prefix=domoticz/out/MyMQTT --my-mqtt-client-id=mygateway1 --my-transport=rf24 --my-port=1883 --my-rf24-irq-pin=15

Setelah selesai, integrasinya di Domoticz sangat mudah:tambahkan gateway HW MySensors MQTT, aktifkan node dan dalam pengaturan perangkat keras baru Anda, Anda akan menemukannya secara langsung.

Untuk opsi kedua, menggunakan langsung aplikasi khusus, bukan MySensors, sakelar virtual menjalankan perintah konsol:

 ./remote -m XY  

(X:blind #, Y:aksi).

Di header skrip Arduino Anda dapat menemukan detail lebih lanjut.

Kode untuk perintah jarak jauh ini dijelaskan di http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/ Lupakan bagian Node.js dan sketsa Arduino, kita tidak perlu mereka dan sketsa itu sebenarnya memiliki bug. Yang kita butuhkan dari sini hanyalah bagian "Aplikasi Saklar Lampu". Bagian perangkat keras juga dapat berguna untuk sambungan radio. Omong-omong, selalu letakkan kapasitor 10 uF di pin daya modul radio. Juga pertimbangkan untuk mendapatkan modul radio dengan antena eksternal jika Anda memiliki ruang. Di dalam ruangan, jangkauan antena PCB bisa sangat terbatas (kurang dari 10 m), khususnya jika modul dipasang di dinding seperti untuk proyek ini.

Perlu diingat bahwa kode ini harus dimodifikasi sedikit, mencocokkan parameter radio dengan Arduino dan juga, membuat kode mengirim perintah hanya sekali alih-alih mencoba ulang hingga 5 kali jika tidak ada respons yang diterima, jika tidak ada respons. umpan balik Arduino Anda akan melihat tirai Anda bertindak-menghentikan-bertindak-berhenti-bertindak.

Kode terakhir untuk Raspberry akan terlihat seperti ini:

#include #include #include #include #include #include #include menggunakan namespace std;//RF24 radio("/dev/spidev0.0",8000000 , 25); // RF24 radio (RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); radio RF24 (RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); // const int role_pin =7; const uint64_t pipa [2] ={0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL}; // pipa uint8_t const [] [6] ={"1Node","2Node"};// hack untuk menghindari SEG FAULT, issue #46 pada RF24 github https://github.com/TMRh20/RF24.gitunsigned long got_message;void setup(void){ //Siapkan modul radio printf("\nMempersiapkan antarmuka\n"); radio.mulai(); radio.setRetries( 15, 15); radio.setChannel (0x70); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_MAX); radio.printDetails(); radio.openWritingPipe(pipa[0]); radio.openReadingPipe(1,pipes[1]); // radio.startListening();}bool sendMessage(int action){ //Fungsi ini mengirim pesan, 'action', ke arduino dan menunggu jawaban //Mengembalikan nilai true jika paket ACK diterima //Stop mendengarkan radio .stopListening(); pesan panjang yang tidak ditandatangani =tindakan; printf("Sekarang mengirim %lu...", pesan); //Kirim pesan bool ok =radio.write( &message, sizeof(unsigned long) ); if (!ok){ printf("gagal...\n\r"); }else{ printf("Oke!\n\r"); } //Mendengarkan ACK radio.startListening(); //Mari luangkan waktu sambil mendengarkan unsigned long start_waiting_at =millis(); batas waktu bool =salah; while ( ! radio.available() &&! batas waktu ) { //printf("%d", !radio.available()); if (millis() - start_waiting_at> 1000 ){ timeout =true; } } if( timeout ){ //Jika kita menunggu terlalu lama transmisi gagal printf("Puta mierda, no me responde nadie...\n\r"); kembali salah; }else{ //Jika kita menerima pesan tepat waktu, mari kita membacanya dan mencetaknya radio.read( &got_message, sizeof(unsigned long) ); printf("Ya, saya han respondido> %lu.\n\r",dapat_pesan); kembali benar; }} int main( int argc, char ** argv){ char pilihan; mempersiapkan(); bool diaktifkan =salah; int penghitung =0; //Tentukan opsi while(( choice =getopt( argc, argv, "m:")) !=-1){ if (choice =='m'){ printf("\n Berbicara dengan teman NRF24l01+ saya di luar sana ....\n"); while(switched ==false &&counter <1){ //Jumlah upaya untuk mengirim pesan diaktifkan =sendMessage(atoi(optarg)); penghitung ++; tidur(1); } }else{ // Sedikit bantuan:printf("\n\rSaatnya membuat beberapa pilihan...\n"); printf("\n\rTIPS:Gunakan -m idAction untuk mengirim pesan. "); printf("\n\rContoh (nomor id 12, nomor tindakan 1):"); printf("\nsudo ./jarak jauh -m 121\n"); } //mengembalikan 0 jika semuanya berjalan baik, 2 sebaliknya jika (penghitung <5) mengembalikan 0; lain kembali 2; }}  

Karena diperlukan untuk mengkompilasi dan sebagainya, saya membuatnya mudah bagi Anda dan meletakkan semua yang Anda butuhkan (hanya untuk sisi Raspberry, sketsa Arduino ada di bawah) dalam file zip dengan kode sumber yang dimodifikasi, perpustakaan, dan kode yang dikompilasi untuk Raspberry Pi 3:

https://goo.gl/ocCwk3

Jika Anda mengekstrak ini ke RPi Anda, Anda seharusnya dapat menjalankan perintah jarak jauh.

Hasilnya

Di sini Anda dapat melihat bagaimana saya menerapkan semuanya.

Tiga pasang sakelar di dinding mengontrol tiga tirai. Tablet di dinding menunjukkan antarmuka Domoticz dengan sakelar virtual. Di belakang tablet ada Raspberry, di mana pengontrol dipasang, antara lain. Arduino tidak ada di sini, itu dekat dengan tirai pada gambar yang ditunjukkan sebelumnya; RPi dan Arduino dihubungkan secara nirkabel melalui modul radio.

Di sini Anda juga dapat melihat Google Home, yang dengan menggunakan IFTTT dengan layanan Webhooks dan Domoticz membantu saya membuat perintah suara apa pun menjadi mungkin, seperti "Hai Google, tutup". Jika Anda telah mencapai titik ini, pasti Anda tidak akan kesulitan menjalankan perintah suara.

Di sini Anda memiliki video yang dibuat dengan sangat cepat yang menunjukkan hasilnya.

Beri tahu saya jika tutorial ini membantu Anda!

Hormat kami,

gomesin

P.S. Sebagai tambahan untuk rasa ingin tahu, atau karena Anda sangat membenci komputer, pemrograman, atau apa pun, pertama-tama saya mencoba membuat solusi secara diam-diam tanpa kecerdasan sama sekali. Ini hasilnya:

Saya bahkan membuatnya, dan sirkuitnya berfungsi, tetapi saya melakukannya sebelum terbiasa dengan platform Arduino, yang lebih fleksibel dan sepenuhnya andal, oleh karena itu saya tidak akan menjelaskannya. Jika ada gunanya bagi Anda, maka bagus, tetapi itu bukan cakupan tutorial ini, dan saya tidak menyarankan untuk menggunakannya.

Kode

Sketsa Arduino

Skema

Arduino mengendalikan 4 motor buta

Proses manufaktur

  1. Sirkuit Permisif dan Interlock
  2. Sirkuit Kontrol Motor
  3. Penghitungan Daya
  4. Bulldozer
  5. Algoritma dan peningkatan kekuatan perangkat keras dari kontrol suara
  6. Infineon meluncurkan seri daya tertanam TLE985x untuk aplikasi otomotif
  7. Kontrol kualitas adalah langkah pertama menuju keandalan motor
  8. Dasar-dasar Panel Kontrol Listrik
  9. Kontrol Daya dan HVAC/Iklim
  10. Bagaimana Anda mengontrol kecepatan motor hidrolik?