- Mesin Timbang Arduino Bekerja
- Komponen yang Diperlukan untuk Mesin Penimbangan Berbasis Arduino
- Mesin Timbang Berbasis Arduino - Diagram Sirkuit
- Membuat Sirkuit pada Perfboard Bertitik
- Membangun Kandang untuk Mesin Timbang Berbasis Arduino
- Mesin Timbang Arduino - Kode
Timbangan beban digital adalah keajaiban lain dari teknik dan desain modern. Ya, kita berbicara tentang timbangan yang sering kita lihat di sebagian besar toko bahan makanan dan tempat lain, tetapi pernahkah Anda bertanya-tanya bagaimana cara kerja timbangan? Untuk menjawab pertanyaan itu, dalam proyek ini, kita akan melihat load cell dan cara kerjanya. Terakhir, kami akan membuat timbangan beban portabel berbasis Arduino dengan Sensor Berat HX711, yang dapat mengukur bobot hingga 10kg.
Mesin penimbangan ini sangat cocok untuk toko lokal, di mana mereka mengemas barang dalam jumlah banyak. Seperti produk komersial, timbangan kami akan memiliki tombol nol yang berarti timbangan nol. Juga, Ini memiliki opsi untuk mengatur berat untuk pengukuran, ketika berat pengukur mencapai berat yang ditetapkan, bel berbunyi bip cepat dan berhenti ketika berat yang ditetapkan sama dengan berat pengukuran. Dengan cara ini, pengguna dapat mengemasnya hanya dengan mendengar suaranya dan tidak perlu melihat tampilan. Karena ini adalah proyek yang sangat sederhana, kami akan membangunnya dengan sangat mudah menggunakan komponen seperti Arduino dan sel beban pengukur regangan. Jadi, tanpa penundaan lebih lanjut, mari kita mulai.
Pada artikel sebelumnya, kami telah membuat proyek seperti Sensor Berat Berbasis Raspberry Pi dan Wadah Cerdas IoT dengan Peringatan Email dan Pemantauan Web menggunakan modul penguat sel beban HX711 yang populer. Jadi, periksa apakah itu kebutuhan Anda.
Mesin Timbang Arduino Bekerja
Komponen utama dari proyek ini adalah modul penguat Load cell dan HX711 load cell. Seperti yang Anda lihat, satu sisi ditandai dengan sepuluh kilogram. Selain itu, Anda dapat melihat semacam lem pelindung putih di atas sel beban dan empat warna kabel yang berbeda akan keluar, akan mengungkap rahasia di bawah lem pelindung putih dan fungsi kabel empat warna ini nanti di artikel.
Sel beban adalah transduser yang mengubah gaya atau tekanan menjadi keluaran listrik. Ini memiliki dua sisi, katakanlah sisi kanan dan kiri, dan terbuat dari balok aluminium. Seperti yang Anda lihat di bagian tengah bahan diencerkan dengan membuat lubang besar. Itulah mengapa titik yang mengalami deformasi saat beban ditempatkan di sisi dudukan. Sekarang bayangkan bahwa sel sisi kanan dipasang ke alas dan sisi kiri adalah tempat beban ditempatkan, konfigurasi ini merusak sel beban pengukur regangan karena lubang raksasa di tengah.
Pada saat beban ditempatkan pada sisi beban dari load cell, maka bagian atas akan mengalami tegangan, dan bagian bawah akan mengalami kompresi. Itulah sebabnya batang aluminium melengkung ke bawah di sisi kiri. Jika kita mengukur deformasi ini, kita dapat mengukur gaya yang diterapkan pada balok aluminium dan itulah yang akan kita lakukan.
Sekarang, pertanyaannya tetap ada apa di dalam lem pelindung putih itu? Di dalam lem pelindung ini, kita akan menemukan komponen elastis yang sangat tipis yang disebut pengukur regangan. Pengukur regangan adalah komponen yang digunakan untuk mengukur regangan. Jika kita melihat lebih dekat pada komponen ini, kita dapat melihat dua bantalan koneksi, dan kemudian kita memiliki pola kabel konduktif dengan defleksi berulang. Kabel konduktif ini memiliki resistansi yang ditentukan. Saat kita menekuknya, nilai resistansi akan berubah? Jadi, satu sisi pengukur regangan dipasang dan dipasang di suatu tempat, jika kita menempatkan beban di sisi lain dari batang aluminium, ini akan memaksa pengukur regangan untuk menekuk, yang akan menyebabkan perubahan resistansi. Bagaimana sebenarnya ini terjadi? Pola konduktif dari strain gauge ini terbuat dari bahan tembaga, kawat ini akan memiliki luas dan panjang tertentu, sehingga kedua satuan ini akan memberikan tahanan pada kawat tersebut. Hambatan kawat melawan aliran arus. Sekarang jelas bahwa jika area kawat ini semakin kecil,lebih sedikit elektron bisa lewat yang berarti arus yang lebih rendah. Sekarang jika kita menambah luasnya, itu akan meningkatkan resistansi konduktor. Jika beberapa gaya diterapkan pada kawat ini, ini akan meregangkan area dan akan menjadi lebih kecil pada saat yang sama, hambatan meningkat. Tetapi variasi resistensi ini sangat rendah. Jika strain gauge kita regangkan maka tahanannya akan bertambah dan jika kita kompres maka tahanannya akan semakin rendah. Untuk mengukur gaya, kita perlu mengukur hambatannya. Mengukur resistansi secara langsung tidak selalu praktis, karena perubahannya sangat kecil. Jadi, alih-alih mengukur resistansi, kita dapat mengukur tegangan dengan mudah. Jadi, dalam hal ini, kita perlu mengubah keluaran pengukur dari nilai resistansi menjadi nilai tegangan.Jika beberapa gaya diterapkan pada kawat ini, ini akan meregangkan area dan akan menjadi lebih kecil pada saat yang sama, hambatan meningkat. Tetapi variasi resistensi ini sangat rendah. Jika strain gauge kita regangkan maka tahanannya akan bertambah dan jika kita kompres maka tahanannya akan semakin rendah. Untuk mengukur gaya, kita perlu mengukur hambatannya. Mengukur resistansi secara langsung tidak selalu praktis, karena perubahannya sangat kecil. Jadi, alih-alih mengukur resistansi, kita dapat mengukur tegangan dengan mudah. Jadi, dalam hal ini, kita perlu mengubah keluaran pengukur dari nilai resistansi menjadi nilai tegangan.Jika beberapa gaya diterapkan pada kawat ini, ini akan meregangkan area dan akan menjadi lebih kecil pada saat yang sama, hambatan meningkat. Tetapi variasi resistensi ini sangat rendah. Jika strain gauge kita regangkan maka tahanannya akan bertambah dan jika kita kompres maka tahanannya akan semakin rendah. Untuk mengukur gaya, kita perlu mengukur hambatannya. Mengukur resistansi secara langsung tidak selalu praktis, karena perubahannya sangat kecil. Jadi, alih-alih mengukur resistansi, kita dapat mengukur tegangan dengan mudah. Jadi, dalam hal ini, kita perlu mengubah keluaran pengukur dari nilai resistansi menjadi nilai tegangan.resistensi akan semakin rendah. Untuk mengukur gaya, kita perlu mengukur hambatannya. Mengukur resistansi secara langsung tidak selalu praktis, karena perubahannya sangat kecil. Jadi, alih-alih mengukur resistansi, kita dapat mengukur tegangan dengan mudah. Jadi, dalam hal ini, kita perlu mengubah keluaran pengukur dari nilai resistansi menjadi nilai tegangan.resistensi akan semakin rendah. Untuk mengukur gaya, kita perlu mengukur hambatannya. Mengukur resistansi secara langsung tidak selalu praktis, karena perubahannya sangat kecil. Jadi, alih-alih mengukur resistansi, kita dapat mengukur tegangan dengan mudah. Jadi, dalam hal ini, kita perlu mengubah keluaran pengukur dari nilai resistansi menjadi nilai tegangan.
Kita bisa melakukan ini dengan bantuan jembatan Wheatstone. Kami menempatkan pengukur regangan di jembatan Wheatstone jika jembatan seimbang, tegangan di titik tengah harus nol (sebelumnya kami telah membangun proyek di mana kami telah menjelaskan cara kerja jembatan Wheatstone, Anda dapat memeriksanya jika Anda mau tahu lebih banyak tentang topik). Ketika pengukur regangan mengubah hambatannya, itu akan membuat jembatan tidak seimbang, dan tegangan juga akan berubah. Jadi, beginilah cara jembatan Wheatstone mengubah variasi resistansi menjadi nilai tegangan.
Namun perubahan tegangan ini masih sangat kecil, sehingga untuk meningkatkannya perlu menggunakan modul HX711. HX711 adalah ADC Diferensial 24-bit, dengan cara ini, kita dapat mengukur perubahan tegangan yang sangat kecil. itu akan memberikan nilai dari 0 hingga 2 eksponensial 24.
Komponen yang Diperlukan untuk Mesin Penimbangan Berbasis Arduino
Untuk membuat proyek ini sesederhana mungkin, kami telah menggunakan komponen yang sangat umum yang dapat Anda temukan di toko hobi lokal mana pun. Gambar di bawah ini akan memberi Anda gambaran tentang komponen. Selanjutnya, kami memiliki Bill of Material (BOM) yang tercantum di bawah ini.
- Load cell (Kami menggunakan load cell 10 kg)
- Modul amplifier HX 711
- Arduino Nano
- LCD I2C 16X2 - Kompatibel dengan I2C
- Resistor 1k -2 No.
- LED -2Nos
- Bel
- PCB biasa
- Baterai 7.4V (jika Anda ingin portabel)
- Pengatur tegangan LM7805
Mesin Timbang Berbasis Arduino - Diagram Sirkuit
Sel beban memiliki empat kabel yaitu merah, hitam, hijau, dan putih. Warna ini mungkin berbeda menurut produsennya, jadi sebaiknya lihat lembar data. Hubungkan merah ke E + dari papan HX711, hubungkan hitam ke E-, hubungkan putih ke A +, dan hubungkan hijau ke A-, Dout, dan jam papan terhubung ke D4 dan D5 masing-masing. Hubungkan salah satu ujung tombol tekan ke D3, D8, D9, dan ujung lainnya ke tanah. Kami memiliki LCD I2C, jadi hubungkan SDA ke A4 dan SCL ke A5. Hubungkan ground LCD, HX711, dan Arduino ke ground, juga hubungkan VCC ke 5Vpin Arduino. Semua modul bekerja pada 5V, jadi kami telah menambahkan pengatur tegangan LM7805. Jika Anda tidak menginginkannya sebagai portabel, Anda dapat langsung menyalakan Arduino menggunakan kabel USB.
Membuat Sirkuit pada Perfboard Bertitik
Kami telah menyolder semua komponen pada perfboard bertitik umum. Kami menggunakan header wanita untuk menyolder Arduino dan ADC dengan papan sirkuit, juga kami telah menggunakan kabel untuk menghubungkan semua tombol tekan dan LED. Setelah semua proses penyolderan selesai, kami telah memastikan bahwa 5V yang tepat keluar dari LM7805. Akhirnya, kami telah memasang sakelar untuk menghidupkan / mematikan sirkuit. Setelah kita semua selesai, itu terlihat seperti gambar di bawah.
Membangun Kandang untuk Mesin Timbang Berbasis Arduino
Seperti yang Anda lihat, sel beban memiliki beberapa ulir sekrup, sehingga kami dapat memasangnya di pelat dasar. Kami akan menggunakan papan PVC untuk dasar timbangan kami, untuk itu, pertama-tama kami memotong persegi 20 * 20 cm dan empat persegi panjang 20 * 5 dari papan PVC. Kemudian menggunakan lem keras, kami merekatkan setiap bagian dan membuat selungkup kecil.
Ingat, kami tidak memperbaiki satu sisi, karena kami perlu menempatkan tombol tekan, LED, dan LCD di atasnya. Kemudian kami menggunakan papan plastik untuk bagian atas skala. Sebelum membuat penyetelan ini permanen, kita perlu memastikan bahwa kita memiliki ruang yang cukup dari tanah ke sel beban, sehingga akan dapat ditekuk, jadi kami menempatkan sekrup dan mur di antara sel beban dan alas, juga kami menambahkan beberapa spacer plastik di antara sel beban dan bagian atas. kami menggunakan lembaran plastik bundar sebagai kecerdasan atas keseimbangan.
Kemudian kami menempatkan LCD, LED, dan tombol tekan ke panel depan, dan semuanya terhubung dengan kabel berinsulasi panjang. Setelah kami menyelesaikan proses pemasangan kabel, kami menempelkan panel depan ke alas utama dengan sedikit kemiringan, sehingga kami dapat membaca nilai dari LCD dengan sangat mudah. akhirnya, kami memasang sakelar utama ke sisi keseimbangan dan hanya itu. Beginilah cara kami membuat tubuh untuk timbangan berat kami .
Anda dapat mendesain dengan ide-ide Anda tetapi ingat untuk menempatkan load cell seperti pada gambar.
Mesin Timbang Arduino - Kode
Karena sekarang kita telah selesai dengan proses build untuk skala digital kita, kita dapat beralih ke bagian pemrograman. Untuk pemrograman yang mudah, kami akan menggunakan perpustakaan HX711, Perpustakaan EEPROM, dan perpustakaan LiquidCrystal. Anda dapat mengunduh pustaka HX711 dari repositori GitHub resmi, atau buka alat > sertakan pustaka > kelola pustaka, lalu cari pustaka menggunakan kata kunci HX711, setelah mengunduh pustaka, Instal ke Arduino ide.
Pertama, kita perlu mengkalibrasi sel beban dan menyimpan nilai itu di EEPROM, untuk itu, buka file> contoh> HX 711_ADC, lalu pilih kode kalibrasi. Sebelum mengunggah kode, letakkan timbangan pada permukaan bidang yang stabil. Kemudian unggah kodenya ke Arduino dan buka monitor serial. Kemudian ubah baud rate menjadi 572600. Sekarang monitor minta untuk mengukur beratnya, untuk itu kita perlu menekan t dan enter.
Sekarang, kita perlu menempatkan berat yang diketahui pada timbangan, dalam kasus saya, yaitu 194gm. Setelah menempatkan bobot yang diketahui, ketik bobot pada monitor serial, dan tekan enter.
Sekarang, monitor serial menanyakan Anda apakah Anda ingin menyimpan nilai di EEPROM atau tidak, jadi ketik Y untuk memilih ya. Sekarang kita bisa melihat bobot pada monitor serial.
Kode utama proyek ini, yang kami kembangkan dari sketsa contoh pustaka HX711. Anda dapat mengunduh kode proyek ini dari bawah.
Di bagian pengkodean, pertama, kami menambahkan ketiga perpustakaan. Pustaka HX711 digunakan untuk mengambil nilai sel beban. EEPROM adalah pustaka bawaan Arduino ide, yang digunakan untuk menyimpan nilai di EEPROM dan pustaka LiquidCrystal untuk Modul LCD l2C.
#include
Kemudian tentukan bilangan bulat untuk pin berbeda dan nilai yang ditetapkan. Fungsi loadcell HX711_ADC adalah untuk mengatur Dout dan pin jam.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; LoadCell HX711_ADC (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; t panjang; const int Up_buttonPin = 9; const int Down_buttonPin = 8; float buttonPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
Di bagian penyetelan, pertama, kami memulai monitor serial, ini hanya untuk debugging saja. Kemudian kami mendefinisikan mode pin, semua tombol push didefinisikan sebagai input. Dengan bantuan fungsi Arduino PULL UP, kami mengatur pin ke logika tinggi secara normal. Jadi, kami tidak ingin menggunakan resistor eksternal untuk itu.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Baris kode berikut adalah untuk mengatur LCD I2C. Pertama, kita menampilkan teks selamat datang menggunakan fungsi LCD.print () , setelah dua detik, kita membersihkan tampilan menggunakan lcd.clear () . Artinya, pada awalnya, tampilan menunjukkan SALDO ARDUINO sebagai teks selamat datang, dan setelah dua detik, akan jelas dan menampilkan bobot pengukuran.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("mari kita ukur"); penundaan (2000); lcd.clear ();
Kemudian mulai membaca nilai dari loadcell menggunakan fungsi loadCell.begin () , setelah itu, kita membaca EEPROM untuk nilai yang dikalibrasi, kita melakukannya dengan menggunakan fungsi EEPROM.get () . Artinya, kami sudah menyimpan nilai menggunakan sketsa kalibrasi di alamat EEPROM, kami hanya mengambil kembali nilai itu.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
Di bagian loop, pertama, kami memeriksa apakah ada data dari sel beban tersedia menggunakan LoadCell.update (), jika tersedia, kami membaca dan menyimpan data itu, untuk itu, kami menggunakan LoadCell.getData () . Selanjutnya, kita perlu menampilkan nilai yang disimpan di LCD. Untuk melakukan itu, kami menggunakan fungsi LCD.print () . juga, kami mencetak berat set. Setel berat diatur dengan bantuan penghitung Tombol Tekan. Itu dijelaskan di bagian terakhir.
jika (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("berat:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Selanjutnya kita atur nilai tara, untuk itu pertama kita baca keadaan tombol tekan tara menggunakan fungsi digitalRead () , jika keadaannya rendah maka kita tare bobotnya menjadi nol. Fungsi tara dari timbangan ini adalah untuk membawa hasil pembacaan menjadi nol. Misalnya, jika kita memiliki mangkok yang berisi barang-barang, maka berat bersihnya adalah berat baskom + berat benda. Jika kita menekan tombol tara dengan mangkuk pada sel beban sebelum memuat barang, berat keranjang akan dinegasikan dan kita dapat mengukur beratnya sendiri.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Sekarang, kita perlu mengatur kondisi untuk berbagai indikasi seperti pengaturan penundaan bel dan status yang dipimpin. Kami melakukannya dengan menggunakan kondisi if , kami memiliki total tiga kondisi. Pertama, kita hitung selisih antara bobot set dan bobot ukur, lalu simpan nilai itu di variabel k.
float k = buttonPushCounter-i;
1. Jika perbedaan antara berat yang disetel dan berat pengukuran lebih besar dari atau sama dengan 50 gram, bel berbunyi bip dengan penundaan 200 milidetik (perlahan).
if (k> = 50) { digitalWrite (6, HIGH); penundaan (200); digitalWrite (6, LOW); penundaan (200); }
2. Jika perbedaan antara berat yang disetel dan berat pengukuran lebih rendah dari 50 dan lebih besar dari 1 gram, bel berbunyi bip dengan penundaan 50 milidetik (lebih cepat).
if (k <50 && k> 1) { digitalWrite (6, HIGH); penundaan (50); digitalWrite (6, LOW); penundaan (50); }
3. Bila bobot pengukuran sama atau lebih besar dari nilai yang ditetapkan, ini akan menyalakan led hijau dan mematikan bel dan led merah.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, TINGGI); }
Kami memiliki dua fungsi kosong lagi () untuk menyetel bobot yang disetel (untuk menghitung penekanan tombol).
Fungsi meningkatkan nilai set 10gms untuk setiap pers. Ini dilakukan dengan menggunakan fungsi digitalRead dari Arduino jika pin rendah yang berarti tombol ditekan dan itu akan menambah nilai sebesar 10gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Demikian pula, checkdown adalah untuk mengurangi nilai set 10gms untuk setiap pers.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Ini menandai akhir dari bagian pemrograman.
Timbangan elektronik berbasis Arduino ini sangat cocok untuk mengukur bobot hingga 10kg (kami dapat meningkatkan batas ini dengan menggunakan loadcell berperingkat lebih tinggi). Ini 99% akurat untuk pengukuran asli.
Jika anda mempunyai pertanyaan tentang rangkaian mesin keseimbangan berat LCD berbasis Arduino ini, silahkan posting di kolom komentar, terima kasih!