Isi kandungan:

Arduino Portable Workbench Bahagian 3: 11 Langkah
Arduino Portable Workbench Bahagian 3: 11 Langkah

Video: Arduino Portable Workbench Bahagian 3: 11 Langkah

Video: Arduino Portable Workbench Bahagian 3: 11 Langkah
Video: 11 Genius Woodworking Tools for DIY Projects 2024, Julai
Anonim
Arduino Portable Workbench Bahagian 3
Arduino Portable Workbench Bahagian 3
Arduino Portable Workbench Bahagian 3
Arduino Portable Workbench Bahagian 3

Sekiranya anda melihat bahagian 1, 2 dan 2B, setakat ini belum banyak Arduino dalam projek ini, tetapi hanya beberapa wayar papan dan lain-lain yang tidak berkaitan dengan ini dan bahagian infrastruktur harus dibina sebelum kerja rehat.

Ini adalah kod elektronik dan Arduino. Petunjuk 2B sebelumnya menyenaraikan perincian bekalan kuasa.

Bahagian ini merangkumi meja kerja mudah alih dengan ciri berikut

Layar sentuh TFT menyediakan paparan, didorong oleh Arduino Mega untuk memberikan yang berikut

  1. 8 paparan digital, mati / hidup / berayun
  2. 4 paparan voltan
  3. 3 paparan arus / voltan
  4. Meter rintangan E24 (kerana saya tidak lagi dapat membaca jalur warna)

Akan ada perkara lain yang akan saya tambahkan, tetapi ini adalah sasaran awal saya. Kod Arduino juga menyenaraikan paparan bersiri, paparan I2C, meter kapasitans, suis digital dan osiloskop yang akan saya tambah seiring dengan berjalannya waktu. Saya juga belum memutuskan apakah bernilai menambah bekalan kuasa 3V3, bekalan kuasa berubah-ubah, atau pemantauan voltan / arus bekalan kuasa. Sejauh ini ini dibina menggunakan Mega tetapi saya juga melihat untuk memindahkan beberapa fungsi untuk memisahkan litar yang diakses oleh I2C, sama ada cip khusus atau Atmel 328 yang diprogramkan yang akan lebih mudah menampung pengawal yang berbeza.

Bekalan

Soket header 5 x 16 arah

Soket dupont 5 x 8 arah, sebenarnya diperbuat daripada soket garis tunggal 40 arah panjang yang dipotong hingga panjang yang diperlukan

Skrin sentuh 1 x 3,5 ILI9486 TFT

1 x Arduino Mega 2650

Komponen individu

Sesuai teks, nilai beberapa ini tidak benar-benar tetap dan jika anda ketinggalan fungsi tidak akan diperlukan sama sekali:)

Input digital

Perintang 16 x 10K

Input analog

1 x TL074 opamp quad jfet, inilah yang saya ada sebagai cadangan, apa sahaja yang serupa akan dilakukan:)

Perintang 4 x 68K dan 4 x 430k digunakan sebagai pembahagi voltan.

4 x 1N4001 atau serupa

Meter rintangan

1 x TL072 opamp dual jfet, inilah yang saya ada sebagai cadangan, apa sahaja yang serupa akan dilakukan:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Sekiranya nilai-nilai ini diubah, kod Arduino mesti dikemas kini)

Langkah 1: Gambaran keseluruhan Elektronik

Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik
Gambaran Keseluruhan Elektronik

Konsol kelabu dibuat oleh saya 30 tahun yang lalu dan masih digunakan secara tetap, tetapi masa telah berlalu. Ia menyediakan bekalan kuasa ganda di sebelah kiri, penguat audio pusat di tengah, dengan pembesar suara dalaman, dan pengayun di sebelah kiri. Pada masa ini kebanyakan litar saya hanya memerlukan bekalan kuasa dan dari itu, hanya rel positif. Sesuatu yang berbeza diperlukan, dan juga pelabelan yang pernah saya jalani, juga saya berjaya.

Keperluan utama untuk elektronik kotak projek adalah memberi kuasa pada litar baru menggunakan Arduino atau Raspberry PI, jadi 5V sangat penting seperti soket USB. Suis yang diterangi memberitahu saya jika kuasa dihidupkan atau tidak, dan semasa menguji, saya selalu perlu membina litar tambahan kecil untuk memberi paparan status sementara. Saya mempunyai kotak meter besar yang menghabiskan banyak ruang bangku dan yang paling penting, saya memerlukan paparan yang dapat saya baca dengan mudah apabila penglihatan saya merosot, sesuatu dengan watak-watak terang yang besar. Oleh itu, saya memerlukan paparan digital, meter voltan, meter semasa, dan dalam kes ini sedikit kemewahan dalam bentuk meter rintangan untuk mengenal pasti perintang siri E24 dengan cepat, semuanya berada dalam jarak 15cm dari papan roti projek dan dalam kotak mudah alih yang padat.

PSU utama, yang dijelaskan dalam artikel sebelumnya, memberikan kuasa pada penutup menggunakan kabel pita 40 arah yang membolehkan keduanya disambungkan semasa penutup ditutup. Ini menyediakan bekalan 5v dan 12V yang ditukar untuk elektronik panel dan untuk membekalkan papan roti.

Semua input kuasa dan isyarat disediakan oleh soket header PCB 2x8way selari dengan soket dupont 8 hala. Ini mungkin berlebihan, kebanyakan papan roti mempunyai rel elektrik tetapi senang dilakukan.

Pada soket kuasa, rel 0V utama bekalan kuasa adalah biasa untuk semua bekalan dan disediakan. Di atas ini adalah bekalan kuasa 5V, dihidupkan pada unit asas, dan di atas ini terdapat dua bekalan 12V dan -12V yang dibekalkan, yang pada masa ini diperbaiki walaupun saya mempunyai idea untuk menggodam bekalan untuk menjadikannya berubah-ubah dan menyediakan 3.3-20V pemboleh ubah berubah.

Langkah 2: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Saya telah menyiarkan cetakan skrin susun atur papan roti, seperti apa litar ketika dibina di papan matriks, skema sebagai PDF dan fail Fritzing yang asli. Ini bukan elektronik yang sangat kompleks dan ada untuk memasang perintang penghad, penguat penyangga dan sambungan kipas untuk papan Arduino. Tetapi terdapat beberapa gambar untuk menunjukkan banyak sambungan dengan lebih jelas. Sebilangan besar pendawaian dibuat dari panjang kabel pita dupont pra-berkerut yang dipasang semula ke dalam rumah berbilang jalan untuk menjadikannya lebih mudah dipasang semula dan lebih dipercayai.

Arduino Mega 2650 dipasang di penutup dengan soket USB yang tersedia untuk pengaturcaraan. Ini mendorong layar sentuh TFT yang digunakan untuk menampilkan semua output dan input.

8 input digital disediakan melalui header PCB 2 x 8 arah dan statusnya dipaparkan di skrin jika fungsi tersebut dipilih. Ini adalah paparan hidup / mati sederhana, merah mati, hijau aktif. Saya mungkin menambah berayun sebagai perubahan masa depan.

4 input voltan juga tersedia melalui header PCB, dan pembahagi voltan, voltan yang ditunjukkan di skrin. Setiap voltan masukan pada panel depan, dengan merujuk pada landasan bersama, diteruskan ke pembahagi dengan 7 pembahagi voltan dan kemudian disangga oleh salah satu dari empat op-amp dalam TL074 yang dikonfigurasi sebagai penguat pembetulan, hanya untuk mengelakkan kemalangan dengan voltan negatif. Alangkah baiknya untuk menambahkan petunjuk polaritas pada tahap tertentu tetapi tidak kali ini. Keluaran dari setiap op-amp adalah ke salah satu input ADC dari Arduino.

Header PCB yang lebih jauh memperlihatkan sambungan bersiri dan I2C. Ini dilakukan untuk membolehkan pelaksanaan konsol paparan bersiri dan fungsi pengenalan I2C asas.

Input voltan / digital mungkin terbukti tidak semua diperlukan sehingga mereka dapat dikonfigurasi semula untuk memberikan output beralih digital.

Arduino memberi kekuatan rintangan pada pembahagi voltan untuk menyediakan fungsi meter rintangan. Output ini disangga oleh op-amp (setengah TL072) sebelum dibaca oleh Arduino dan rintangan dikira. Tujuan ini bukan pengukuran rintangan yang tepat tetapi untuk mengenal pasti nilai siri E24 dengan cepat, walaupun dengan beberapa kalibrasi, ia dapat digunakan sebagai meter dasar. Operasinya adalah untuk mengesan ketika rintangan kurang dari 9M9 hadir pada dua pegas yang dipasang di panel depan dan kemudian secara selektif beralih 5V ke setiap perintang dalam larik pembahagi sehingga nilai yang paling dekat dengan 2.5V diukur atau perintang terakhir dipilih, a pengiraan dan perbandingan kemudian dibuat untuk menentukan nilai E24 yang terdekat. 5V bersumber dari output digital 3-10 pada Arduino yang dikonfigurasi ulang sebagai input impedansi tinggi antara setiap pengukuran untuk meminimumkan kesalahan. Arduino pin D3-10 sengaja digunakan sebagai penambahan masa depan mungkin meter kapasitansi menggunakan kemampuan PWM output ini yang berpotensi hanya menjadi perubahan perisian.

Papan INA3221 yang diubah suai memberikan pengukuran voltan dan arus tambahan melalui antara muka I2C dengan input dari panel depan. Segala-galanya dikabelkan menggunakan kabel jumper sehingga penugasan fungsi akan mudah di masa depan.

Langkah 3: Input Voltan / arus INA3221

INA3221 Input Voltan / semasa
INA3221 Input Voltan / semasa

Ini dimaksudkan sebagai perbaikan cepat untuk memberikan pengukuran voltan / arus di dalam kotak tetapi ternyata ketika dilaksanakan di papan, saya membelinya bertujuan untuk memantau pengisian bateri sehingga harus dimodifikasi untuk memberikan tiga pengukuran bebas. Sekiranya semasa membina projek ini, anda boleh mendapatkan papan INA3221 yang menggunakan cip ini mengikut lembaran data, maka ini tidak diperlukan.

Melihat gambar, tiga pemotongan harus dibuat pada jejak PCB untuk memisahkan perintang pengukuran. Pad untuk ketiga-tiga perintang ini juga harus dipotong untuk memisahkannya dari bahagian PCB yang lain. Perintang kemudian disambungkan ke alas dengan menyolder wayar tambahan sebagai jambatan. Saya mendokumentasikan ini kerana ini adalah papan umum dan mungkin satu-satunya yang ada.

Sambungan ke papan dari panel depan kemudian dibuat melalui plumbum pelompat melintasi perintang pengukuran.

Kekuatan untuk papan diambil dari pin Arduino 5V seperti tanah, dengan sambungan I2C pergi ke PCB elektronik.

Langkah 4: Skrin Paparan

Skrin Paparan
Skrin Paparan

Ini adalah pembelian eBay dan tersedia dari banyak sumber dan merupakan paparan bertenaga ILI9486. Saya dapati ia berfungsi dengan baik dengan perpustakaan MCUFRIEND David Prentice tetapi ia mesti dikalibrasi sebelum digunakan yang hanya memerlukan salah satu contoh perpustakaan yang diberikan oleh David dijalankan dengan skrin disambungkan, ikuti arahan di skrin dan tuliskan parameter yang dipaparkan, memasukkan ke dalam fail kod Arduino_Workstation_v01 jika berbeza.

Untuk projek ini, skrin sentuh sangat mustahak, ia berputar tanpa mempunyai suis khusus dan kemudahan untuk hanya menambahkan menu dan fungsi pada masa akan datang tanpa banyak pendawaian semula.

Langkah 5: Menyambungkannya Bersama

Menghubungkannya Bersama
Menghubungkannya Bersama
Menghubungkannya Bersama
Menghubungkannya Bersama
Menghubungkannya Bersama
Menghubungkannya Bersama

Arduino Mega terletak di penutup LHS, dengan port USB dan kuasa yang boleh diakses dari luar casing. Di RHS di sebelah Arduino terdapat elektronik yang dipasang di papan matriks dan di atasnya dipasang papan INA3221 di bahagian belakang penutup.

Juga di bahagian belakang penutup di LHS di atas Arduino adalah papan sambungan tanah biasa yang mana semua landasan disambungkan.

Sebilangan besar petunjuk mungkin disatukan menjadi penyambung berbilang jalan. Ini menjadikan pemasangan litar bersama lebih mudah dan boleh dipercayai, dan sokongan bersama penyambung di perumahan berbilang jalan memberikan ketahanan yang lebih baik untuk melepaskan diri. Berikut adalah senarai gabungan ini.

Semua penyambung ditambahkan dengan cara yang logik memberikan akses yang terbaik untuk membuat hubungan dengan jari saya yang kekok, meninggalkan sambungan panel depan hingga akhir, dengan sambungan paparan terakhir dilalui melalui lubang pemasangan yang akan diselesaikan terakhir. Skrin dipasang di tempat dengan bezel bercetak 3D.

Langkah 6: Memimpin Gabungan

Petunjuk Gabungan
Petunjuk Gabungan
  1. Input voltan dan rintangan ke port Arduino ADC, lima plumbum 20cm dengan penyambung lelaki individu pada satu hujung digabungkan menjadi perumahan enam arah dengan jurang untuk menampung jurang pada tajuk Arduino.
  2. Kabel 4cm 10 arah dari perumahan empat arah hingga dua rumah 2 arah untuk menyambungkan pin voltan pada panel depan ke papan litar.
  3. Kabel 8 hala 10cm dari header lelaki 2x4 hingga header wanita 8 hala
  4. Kabel 4cm 10 arah dari perumahan wanita 4 arah hingga perumahan wanita 4 arah untuk menghubungkan Serial dan I2C ke panel depan
  5. Kabel 4cm 10 arah dari perumahan 4 arah hingga empat penyambung tunggal untuk menyambungkan INA3221 ke panel depan
  6. Kabel 4 way 20cm untuk menghubungkan perumahan wanita empat arah ke perumahan lelaki empat arah untuk mengambil Serial dan I2C dari Arduino ke kipas papan litar.
  7. Kabel 8cm 10 arah dari perumahan wanita 8 arah hingga perumahan wanita 8 arah untuk mengambil input digital dari panel depan ke papan litar.
  8. Kabel 8 way 10 cm untuk mengambil perumahan wanita 8 arah ke perumahan lelaki 3 arah dan perumahan lelaki 5 arah untuk menghubungkan pembahagi rintangan ke papan litar. Kedua-dua rumah digunakan untuk menampung jurang tidak standard pada tajuk di papan Arduino.
  9. Kabel 2 way 20cm untuk membawa perumahan wanita 2 arah ke dua penyambung lelaki tunggal untuk bekalan kuasa INA3221.
  10. Kabel 2cm 10 arah untuk membawa perumahan wanita 2 arah ke dua rumah wanita tunggal untuk menyambungkan sambungan monitor INA3221 ketiga ke panel depan.
  11. Kabel 2cm 10 way untuk mengambil perumahan wanita 2 arah ke perumahan wanita 2 arah untuk menghubungkan sambungan fanout INA3221 ke I2C.

Langkah 7: Kod Arduino

Kod Arduino
Kod Arduino
Kod Arduino
Kod Arduino

Projek ini berpusat di sekitar Arduino Mega 2650 untuk alasan mudah saya mahu banyak port I / O yang dikhaskan untuk tugas dalam format yang mudah. Perpustakaan untuk skrin sentuh TFT lalai untuk menyokong Arduino Uno dan harus diedit untuk menyokong Mega. Penyuntingan perpustakaan disokong oleh pengarang kod TFT asal, adalah mudah dan dijelaskan pada langkah seterusnya.

Menggunakan paparan skrin sentuh adalah asas bahagian projek ini tetapi kerana paparan yang akhirnya digunakan seseorang mungkin berbeza dengan yang saya gunakan, kod ini hanya meletakkan fungsi khusus perkakasan dalam rutin yang terpisah sehingga semua modifikasi yang diperlukan dapat dikenal pasti.

Versi kod yang berfungsi disertakan di sini dan akan dikemas kini tetapi kemas kini paling terkini akan dilakukan di github.

Fungsi utama kod berputar di sekeliling paparan, setiap elemen pada layar memiliki entri dalam satu array yang memegang jenis elemen, di mana pada layar ia memaparkan, warna, dan parameter tambahan seperti sumber input. Tangkapan skrin array ini dengan komen ditunjukkan di atas. Ia juga memiliki medan untuk mengawal sama ada ia akan dipaparkan di layar atau tidak. Dengan mengedit susunan ini, fitur baru dapat ditambahkan, atau fitur dihapus. Rutin 'loop' kod berjalan melalui susunan ini secara berterusan, memproses setiap elemen yang layak secara berurutan dan kemudian diulang. Pada masa ini terdapat 6 elemen yang berbeza.

Elemen menu - ini tidak memaparkan maklumat tetapi apabila disentuh laksanakan subrutin yang terkait, yang dikenal pasti dalam parameter elemen

Elemen digital - dipaparkan sebagai kotak di skrin sama ada merah atau hijau bergantung pada status pin input digital yang berkaitan. Konsol contoh dikabelkan untuk 8 pin digital tetapi ini boleh ditingkatkan atau dikurangkan seperti yang dikehendaki.

Elemen analog - memaparkan voltan anggaran yang diukur pada pin analog yang berkaitan. Empat ditentukan pada asalnya.

Elemen ketepatan - input paparan dari modul voltan / arus ketepatan luaran. Hanya ada tiga daripadanya tetapi modul kedua atau ketiga dapat ditambahkan.

Elemen rintangan - ini adalah elemen tunggal yang memaparkan input dari meter rintangan.

Sentuh - ini adalah satu-satunya rutin yang selalu dijalankan untuk mengesan jika skrin telah disentuh dan kemudian membuat keputusan berdasarkan apa yang telah disentuh. iaitu jika item menu, apa yang perlu ditunjukkan seterusnya.

Skrin mempunyai tiga mod status, skrin normal, besar dan penuh dan semua elemen mengubah operasinya bergantung pada status. Ketiga mod boleh dipilih dari menu dengan menyentuh elemen dan pilihan menu yang berkaitan.

Mod normal - memaparkan 8 input digital, empat input voltan analog, tiga elemen ketepatan, elemen rintangan dan empat elemen menu. Memilih Normal dari menu meletakkan paparan ke mod ini.

Mod besar - dipilih dengan menyentuh salah satu elemen di layar diikuti dengan Besar. Apabila dipilih, jenis elemen itu adalah satu-satunya jenis yang dipilih dan elemen jenis itu disusun semula untuk memenuhi keseluruhan skrin.

Mod skrin penuh - dipilih dengan menyentuh salah satu elemen di skrin diikuti dengan Skrin Penuh. Apabila dipilih, elemen itu adalah satu-satunya elemen yang dipaparkan dan disusun semula untuk memenuhi keseluruhan skrin memberikan keterlihatan maksimum satu item tersebut.

Untuk menambahkan fungsi tambahan, rutin berikut perlu ditambahkan

Rutin 'draw' yang dipanggil untuk mendapatkan maklumat untuk elemen tersebut, panggil rutin kemas kini skrin yang sesuai dan daftarkan maklumat sentuhan yang dikembalikan

rutin 'logik' yang menerima maklumat dari rutin undian dan menggunakan rutin pemandu skrin yang sesuai untuk meletakkan maklumat di skrin dan mengembalikan maklumat sentuhan yang betul untuk kawasan layar yang dilukis

Rutin 'setup' yang disebut sebagai sebahagian daripada persediaan Arduino

Rutin lain boleh disertakan tetapi tidak boleh ada saling ketergantungan antara kod elemen, jika elemen belum diaktifkan maka kodnya tidak boleh dijalankan dan struktur multifungsi sederhana mempertahankan integritasnya.

Langkah 8: Menyunting Perpustakaan Arduino

Mengedit Perpustakaan Arduino
Mengedit Perpustakaan Arduino
Mengedit Perpustakaan Arduino
Mengedit Perpustakaan Arduino

Paparan yang saya gunakan berfungsi dengan baik dengan Arduino Uno dan perpustakaan asas yang ditulis untuknya tetapi menunjukkan perlahan apabila dipindahkan secara langsung ke Arduino Mega. Untuk menggerakkan paparan dengan betul, satu set pin data yang berbeda harus digunakan dan perubahan penggunaan ini harus disiapkan di perpustakaan. Ini adalah perubahan sederhana dan bertujuan oleh pengarang. Gambar-gambar tersebut menunjukkan perubahan yang dilakukan.

Kedua-dua fail tersebut disimpan dalam folder utiliti MCUFRIEND_kbv / sebagai mcufriend_shield.h dan mcufriend_special.h. Perubahan yang diperlukan adalah pertama ke fail tajuk 'perisai' untuk memastikan baris pertama dibaca

#tentukan USE_SPECIAL

untuk memastikan bahawa fail tajuk 'khas' dimuat.

Fail tajuk 'khas' juga mesti dikemas kini untuk memastikan garis tersebut

#tentukan USE_MEGA_8BIT_PROTOSHIELD

tidak terkira.

Kedua perubahan ini bermaksud bahawa kod paparan untuk paparan ini akan beroperasi menggunakan pin 20-29 pada Arduino Mega dan bukannya 3-10 lalai di Uno.

Langkah 9: Tangkapan Skrin

Tangkapan Skrin
Tangkapan Skrin
Tangkapan Skrin
Tangkapan Skrin
Tangkapan Skrin
Tangkapan Skrin

Saya telah meletakkan tangkapan skrin di sini supaya mudah untuk melihat apa yang harus dilakukan oleh konsol. Bahagian seterusnya merujuk kepada memuatkan kod ke dalam Arduino.

Skrin pertama menunjukkan skrin 'normal' dengan Menu di bahagian atas, pengukuran voltan pada LHS, pengukuran voltan dan arus pada RHS dan status pin digital di bahagian bawah, merah untuk 'false / rendah', hijau untuk 'benar / tinggi '. Akhirnya di tengah adalah pengukuran rintangan.

Skrin kedua menunjukkan input digital yang diaktifkan dalam mod Besar, setiap input ditunjukkan dengan jelas.

Skrin ketiga menunjukkan input voltan dalam mod Besar.

Langkah 10: Memuatkan Kod Arduino

Kodnya dilampirkan, tetapi seperti yang telah disebutkan sebelumnya akan dimasukkan ke github pada suatu waktu dan lokasi ditambahkan di sini. Fail kod sumber utama adalah Arduino_Workbench_v01.ino dan rutin lain adalah menyediakan pelbagai ciri.

Sekiranya perpustakaan telah diubah suai ok dan Arduino Mega2650 telah ditetapkan sebagai platform sasaran di Arduino IDE, maka kodnya harus disusun pertama kali.

Perpustakaan yang perlu dimuat adalah perpustakaan Adafruit GFX dan Touchscreen yang semestinya tersedia dari pengurus perpustakaan Arduino, salinan MCUFRIEND_kbv yang boleh dimuat turun dari github dan untuk INA3221, perpustakaan SwitchDocLabs SDL_Arduino_INA3221 juga boleh dimuat turun dari github, keduanya muncul dengan cepat carian google.

Langkah 11: Sentuhan Akhir

Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir

Ideanya adalah menggunakannya untuk kerja-kerja projek sehingga panel yang dapat ditanggalkan telah dibuat yang terdiri dari baut pemasangan untuk papan Arduino dan papan roti, keseluruhannya dilekatkan pada penutup oleh velcro untuk membuatnya dilepas dan supaya papan yang berlainan dapat dibuat untuk memuatkan projek dan bahawa kotak itu boleh digunakan semula untuk pelbagai projek yang berjalan serentak.

Saya menjangkakan bahawa ini akan menjadi sumber bagi beberapa idea untuk membuat sesuatu yang berbeza, lebih baik atau kedua-duanya. Saya akan menambah ciri tambahan yang saya sebutkan, dan menambahkannya tetapi jika ini ada pertolongan, sila ambil apa yang anda mahukan dan nikmati. Sekiranya terdapat masalah yang mencolok, sila beritahu saya.

Sekarang ini saya akan meneruskan dan menggunakannya, saya mempunyai beberapa projek untuk disiapkan!

Disyorkan: