- Mesin Penimbang Arduino Berfungsi
- Komponen Diperlukan untuk Mesin Penimbang Berasaskan Arduino
- Mesin Penimbang Berasaskan Arduino - Diagram Litar
- Membuat Litar pada Perfboard Bercak
- Membangun Pagar untuk Mesin Berat Berasaskan Arduino
- Mesin Penimbang Arduino - Kod
Skala beban digital adalah satu lagi keajaiban kejuruteraan dan reka bentuk moden. Ya, kita bercakap mengenai skala penimbangan yang sering kita lihat di kebanyakan kedai runcit dan tempat lain, tetapi pernahkah anda terfikir bagaimana skala berat berfungsi? Untuk menjawab soalan itu, dalam projek ini, kita akan melihat sel beban dan cara kerjanya. Akhirnya, kami akan membina skala beban berasaskan Arduino mudah alih dengan HX711 Weight Sensor, yang dapat mengukur berat hingga 10kg.
Ini mesin seberat sesuai untuk kedai-kedai tempatan, di mana mereka membungkus barangan dalam kuantiti pukal. Seperti produk komersil, skala berat kita akan mempunyai butang sifar yang mengecilkan skala. Juga, Ia memiliki pilihan untuk menetapkan berat untuk pengukuran, ketika berat pengukur mencapai berat yang ditetapkan, bel berbunyi bip dengan cepat dan berhenti ketika berat yang ditetapkan sama dengan berat pengukur. Dengan cara ini, pengguna dapat mengemasnya hanya dengan mendengar suaranya dan tidak perlu melihat paparannya. Oleh kerana ini adalah projek yang sangat mudah, kami akan membina ini dengan mudah menggunakan komponen seperti Arduino dan sel beban pengukur regangan. Jadi, tanpa berlengah lagi, mari kita masuk ke dalamnya.
Dalam artikel sebelumnya, kami telah membuat projek seperti Raspberry Pi Based Weight Sensor dan IoT Smart Container dengan Makluman E-mel dan Pemantauan Web menggunakan modul penguat sel beban HX711 yang popular. Oleh itu, periksa apakah itu keperluan anda.
Mesin Penimbang Arduino Berfungsi
Komponen utama projek ini ialah sel beban dan HX711 beban modul penguat sel. Seperti yang anda lihat, satu sisi ditandai dengan sepuluh kilogram. Anda juga dapat melihat sejenis gam pelindung putih di atas sel beban dan empat warna wayar yang berbeza keluar, akan membongkar rahsia di bawah gam pelindung putih dan fungsi wayar empat warna ini kemudian dalam artikel.
Sel beban adalah transduser yang mengubah daya atau tekanan menjadi output elektrik. Ia mempunyai dua sisi, katakan sebelah kanan dan kiri, dan ia terbuat dari blok aluminium. Seperti yang anda lihat di tengah-tengah bahan ditipis dengan meletakkan lubang besar. Itulah sebabnya itulah titik yang mengalami ubah bentuk ketika beban diletakkan di sisi pelekap. Sekarang bayangkan bahawa sel sebelah kanan dipasang ke pangkalan dan sebelah kiri adalah tempat beban ditempatkan, konfigurasi ini mengubah sel beban pengukur regangan kerana lubang raksasa di tengahnya.
Apabila beban diletakkan di sisi beban sel beban, bahagian atas akan mengalami ketegangan, dan bahagian bawah akan mengalami tekanan. Itulah sebabnya bar aluminium membongkok ke bawah di sebelah kiri. Sekiranya kita mengukur ubah bentuk ini, kita dapat mengukur daya yang dikenakan pada blok aluminium dan itulah yang akan kita lakukan.
Sekarang, persoalannya masih ada di dalam pelindung putih? Di dalam pelindung ini, kita akan menemui komponen elastik yang sangat nipis yang disebut sebagai regangan regangan. Strain gauge adalah komponen yang digunakan untuk mengukur regangan. Sekiranya kita melihat lebih dekat komponen ini, kita dapat melihat dua pad sambungan, dan kemudian kita mempunyai corak wayar konduktif dengan pesongan berulang. Kawat konduktif ini mempunyai rintangan yang ditentukan. Apabila kita membengkokkannya, nilai rintangan akan berubah? Oleh itu, satu sisi tolok regangan dipasang dan dipasang di suatu tempat, jika kita meletakkan berat di sisi bar aluminium yang lain, ini akan memaksa tolok regangan membengkok, yang akan menyebabkan perubahan rintangan. Bagaimana ini berlaku sebenarnya? Corak konduktif tolok regangan terbuat dari tembaga, wayar ini akan mempunyai luas dan panjang tertentu, jadi kedua unit ini akan memberikan ketahanan wayar. Rintangan wayar menentang aliran arus. Sekarang jelas bahawa jika kawasan wayar ini semakin kecil,lebih sedikit elektron boleh lulus yang bermaksud arus yang lebih rendah. Sekarang jika kita meningkatkan kawasan itu, ia akan meningkatkan daya tahan konduktor. Sekiranya daya ditekankan pada wayar ini, ini akan meregangkan kawasan dan akan semakin kecil pada masa yang sama, rintangan meningkat Tetapi variasi rintangan ini sangat rendah. Sekiranya kita meregangkan tolok regangan, rintangan akan meningkat dan jika kita memampatkannya, rintangan akan semakin rendah. Untuk mengukur daya, kita perlu mengukur rintangan. Mengukur rintangan secara langsung tidak selalu praktikal, kerana perubahannya sangat kecil. Oleh itu, daripada mengukur rintangan, kita dapat mengukur voltan dengan mudah. Jadi, dalam kes ini, kita perlu menukar output tolok dari nilai rintangan kepada nilai voltan.Sekiranya daya ditekankan pada wayar ini, ini akan meregangkan kawasan dan akan semakin kecil pada masa yang sama, rintangan meningkat. Tetapi variasi rintangan ini sangat rendah. Sekiranya kita meregangkan tolok regangan, rintangan akan meningkat dan jika kita memampatkannya, rintangan akan semakin rendah. Untuk mengukur daya, kita perlu mengukur rintangan. Mengukur rintangan secara langsung tidak selalu praktikal, kerana perubahannya sangat kecil. Oleh itu, daripada mengukur rintangan, kita dapat mengukur voltan dengan mudah. Jadi, dalam kes ini, kita perlu menukar output tolok dari nilai rintangan ke nilai voltan.Sekiranya daya ditekankan pada wayar ini, ini akan meregangkan kawasan dan akan semakin kecil pada masa yang sama, rintangan meningkat. Tetapi variasi rintangan ini sangat rendah. Sekiranya kita meregangkan tolok regangan, rintangan akan meningkat dan jika kita memampatkannya, rintangan akan semakin rendah. Untuk mengukur daya, kita perlu mengukur rintangan. Mengukur rintangan secara langsung tidak selalu praktikal, kerana perubahannya sangat kecil. Oleh itu, daripada mengukur rintangan, kita dapat mengukur voltan dengan mudah. Jadi, dalam kes ini, kita perlu menukar output tolok dari nilai rintangan ke nilai voltan.rintangan akan semakin rendah. Untuk mengukur daya, kita perlu mengukur rintangan. Mengukur rintangan secara langsung tidak selalu praktikal, kerana perubahannya sangat kecil. Oleh itu, daripada mengukur rintangan, kita dapat mengukur voltan dengan mudah. Jadi, dalam kes ini, kita perlu menukar output tolok dari nilai rintangan ke nilai voltan.rintangan akan semakin rendah. Untuk mengukur daya, kita perlu mengukur rintangan. Mengukur rintangan secara langsung tidak selalu praktikal, kerana perubahannya sangat kecil. Oleh itu, daripada mengukur rintangan, kita dapat mengukur voltan dengan mudah. Jadi, dalam kes ini, kita perlu menukar output tolok dari nilai rintangan ke nilai voltan.
Kita boleh melakukan ini dengan bantuan jambatan Wheatstone. Kami meletakkan tolok regangan di jambatan Wheatstone jika jambatan seimbang, voltan di titik tengah mestilah sifar (sebelumnya kami telah membina projek di mana kami telah menerangkan bagaimana jambatan Wheatstone berfungsi, anda boleh menyemaknya jika anda mahu mengetahui lebih lanjut mengenai topik tersebut). Apabila tolok regangan mengubah rintangannya, ia akan mengimbangi jambatan, dan voltan juga akan berubah. Jadi, ini adalah bagaimana jambatan Wheatstone menukar variasi rintangan kepada nilai voltan.
Tetapi perubahan voltan ini masih sangat kecil, jadi untuk meningkatkannya, kita perlu menggunakan modul HX711. HX711 adalah ADC Perbezaan 24-bit, dengan cara ini, kita dapat mengukur perubahan voltan yang sangat kecil. ia akan memberikan nilai dari 0 hingga 2 eksponen 24.
Komponen Diperlukan untuk Mesin Penimbang Berasaskan Arduino
Untuk menjadikan projek ini semudah mungkin, kami telah menggunakan komponen yang sangat umum yang anda dapati di mana-mana kedai hobi tempatan. Gambar di bawah akan memberi anda idea mengenai komponen. Selanjutnya, kami mempunyai Bil Bahan (BOM) yang disenaraikan di bawah.
- Sel beban (Kami menggunakan sel beban 10 kg)
- Modul penguat HX 711
- Arduino Nano
- I2C LCD 16X2 - Sesuai dengan I2C
- Perintang 1k -2 Nos
- LED -2Nos
- Buzzer
- PCB biasa
- Bateri 7.4V (jika anda mahu ia mudah alih)
- Pengatur voltan LM7805
Mesin Penimbang Berasaskan Arduino - Diagram Litar
Sel beban mempunyai empat wayar yang berwarna merah, hitam, hijau, dan putih. Warna ini mungkin berbeza mengikut pengeluar, jadi lebih baik merujuk pada lembar data. Sambungkan merah ke papan E + HX711, sambungkan hitam ke E-, sambungkan putih ke A +, dan sambungkan hijau ke A-, Dout, dan jam papan masing-masing menyambung ke D4 dan D5. Sambungkan satu hujung butang tekan ke D3, D8, D9, dan hujung lain ke tanah. Kami mempunyai LCD I2C, jadi sambungkan SDA ke A4 dan SCL ke A5. Sambungkan tanah LCD, HX711, dan Arduino ke tanah, juga sambungkan VCC ke 5Vpin Arduino. Semua modul berfungsi pada 5V, jadi kami telah menambahkan pengatur voltan LM7805. Sekiranya anda tidak menginginkannya sebagai mudah alih, anda boleh menghidupkan Arduino secara langsung menggunakan kabel USB.
Membuat Litar pada Perfboard Bercak
Kami telah menyolder semua komponen pada papan serpihan bertitik umum. Kami menggunakan header wanita untuk menyolder Arduino dan ADC dengan papan litar, juga kami menggunakan wayar untuk menyambungkan semua butang tekan dan LED. Setelah semua proses pematerian selesai, kami telah memastikan bahawa 5V yang betul keluar dari LM7805. Akhirnya, kami telah menukar suis hidup / mati litar. Setelah kami semua selesai, ia seperti gambar di bawah.
Membangun Pagar untuk Mesin Berat Berasaskan Arduino
Seperti yang anda lihat, sel beban mempunyai beberapa utas skru, jadi kami dapat memasangnya pada pelat dasar. Kami akan menggunakan papan PVC untuk asas skala kami, untuk itu, pertama kami memotong persegi 20 * 20 cm dan empat segi empat sama 20 * 5 dari papan PVC. Kemudian menggunakan gam keras, kami menempelkan setiap kepingan dan membuat penutup kecil.
Ingat, kita tidak memperbaiki satu sisi, kerana kita perlu meletakkan butang tekan, LED, dan LCD di atasnya. Kemudian kami menggunakan papan plastik untuk bahagian atas skala. Sebelum membuat persediaan ini kekal, kita harus memastikan bahawa kita mempunyai ruang yang cukup dari tanah ke sel beban, sehingga dapat membengkokkan, jadi kita meletakkan skru dan mur di antara sel beban dan alas, juga kita tambahkan beberapa spacer plastik di antara sel beban dan bahagian atas. kami menggunakan kepingan plastik bulat sebagai kunci keseimbangan terbaik.
Kemudian kami meletakkan LCD, LED, dan butang tekan ke panel depan, dan semua yang bersambung dengan wayar bertebat panjang. Setelah selesai proses pendawaian, kami menempelkan panel depan ke pangkalan utama dengan sedikit kecenderungan, sehingga kami dapat membaca nilai dari LCD dengan sangat mudah. akhirnya, kami pasangkan suis utama ke sisi keseimbangan dan itu sahaja. Ini adalah bagaimana kita membuat badan untuk skala berat badan kita .
Anda boleh merancang dengan idea anda tetapi ingat untuk meletakkan sel beban seperti dalam gambar.
Mesin Penimbang Arduino - Kod
Oleh kerana sekarang kita sudah selesai dengan proses pembuatan untuk skala digital kita, kita dapat beralih ke bahagian pengaturcaraan. Untuk pengaturcaraan yang mudah, kami akan menggunakan perpustakaan HX711, Perpustakaan EEPROM, dan perpustakaan LiquidCrystal. Anda boleh memuat turun perpustakaan HX711 dari repositori GitHub rasmi, atau pergi ke alat > sertakan perpustakaan > uruskan perpustakaan, kemudian cari perpustakaan menggunakan kata kunci HX711, setelah memuat turun perpustakaan, Pasang ke dalam Arduino ide.
Pertama, kita perlu menentukur sel beban dan menyimpan nilainya di EEPROM, untuk itu, pergi ke fail> contoh> HX 711_ADC, kemudian pilih kod penentukuran. Sebelum memuat naik kod, letakkan baki di permukaan satah yang stabil. Kemudian muat naik kod ke Arduino dan buka monitor bersiri. Kemudian ubah kadar baud ke 572600. Sekarang monitor minta untuk mengambil berat, untuk itu kita perlu menekan t dan masuk.
Sekarang, kita perlu meletakkan berat badan yang diketahui, dalam kes saya, iaitu 194gm. Setelah meletakkan berat yang diketahui, ketik berat pada monitor bersiri, dan tekan enter.
Sekarang, monitor bersiri bertanya kepada anda sama ada anda ingin menyimpan nilai di EEPROM atau tidak, jadi ketik Y untuk memilih ya. Sekarang kita dapat melihat berat pada monitor bersiri.
Kod utama projek ini, yang kami kembangkan dari lakaran contoh perpustakaan HX711. Anda boleh memuat turun kod projek ini dari bawah.
Di bahagian pengekodan, pertama, kami menambahkan ketiga-tiga perpustakaan. Perpustakaan HX711 adalah untuk mengambil nilai sel beban. EEPROM adalah perpustakaan terintegrasi Arduino ide, yang digunakan untuk menyimpan nilai di EEPROM dan perpustakaan LiquidCrystal adalah untuk Modul LCD l2C.
#sertakan
Kemudian didefinisikan bilangan bulat untuk pin yang berbeza dan nilai yang ditetapkan. Fungsi loadcell HX711_ADC adalah untuk menetapkan pin Dout dan jam.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; panjang t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; butang apunganPushCounter = 0; apungan ke atas_buttonState = 0; float up_lastButtonState = 0; terapung ke bawah_buttonState = 0; float down_lastButtonState = 0;
Di bahagian persediaan, pertama, kami memulakan monitor bersiri, ini hanya untuk debugging sahaja. Kemudian kami menentukan mod pin, semua butang tekan didefinisikan sebagai input. Dengan bantuan fungsi Arduino PULL UP, kami menetapkan pin ke tahap tinggi yang normal. Oleh itu, kami tidak mahu menggunakan perintang luaran untuk itu.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Baris kod berikut adalah untuk menetapkan LCD I2C. Pertama, kami memaparkan teks selamat datang menggunakan fungsi LCD.print () , setelah dua saat, kami membersihkan paparan menggunakan lcd.clear () . Maksudnya, pada awalnya, paparan menunjukkan ARDUINO BALANCE sebagai teks selamat datang, dan setelah dua saat, ia akan membersihkan dan menampilkan berat pengukuran.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("mari kita ukur"); kelewatan (2000); lcd.clear ();
Kemudian mula membaca nilai dari loadcell menggunakan fungsi loadCell.begin () , setelah itu, kami membaca EEPROM untuk nilai yang dikalibrasi, kami melakukannya dengan menggunakan fungsi EEPROM.get () . Artinya, kita sudah menyimpan nilainya menggunakan lakaran kalibrasi di alamat EEPROM, kita hanya mengambil semula nilai itu.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
Di bahagian gelung, pertama, kami memeriksa apakah ada data dari sel muat tersedia menggunakan LoadCell.update (), jika ada, kami membaca dan menyimpan data tersebut, untuk itu, kami menggunakan LoadCell.getData () . Seterusnya, kita perlu memaparkan nilai yang tersimpan dalam LCD. Untuk melakukan itu, kami menggunakan fungsi LCD.print () . juga, kami mencetak berat yang ditetapkan. Berat set adalah dengan bantuan kaunter Pushbutton. Itu dijelaskan di bahagian 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");
Seterusnya, kita menetapkan nilai tare, untuk itu, pertama, kita membaca keadaan tombol tekan tare menggunakan fungsi digitalRead () , jika keadaannya rendah, kita mengira berat itu menjadi sifar. Fungsi tare dari skala berat ini adalah untuk menjadikan bacaan menjadi sifar. Sebagai contoh, jika kita mempunyai mangkuk di mana barang-barang itu dimuat, maka berat bersih adalah berat mangkuk + berat barang. Sekiranya kita menekan butang tare dengan mangkuk di sel muatan sebelum memuat barang, berat bakul akan ditolak dan kita dapat mengukur berat barang sahaja.
if (digitalRead (tpin) == RENDAH) { LoadCell.tareNoDelay ();
Sekarang, kita perlu menetapkan syarat untuk petunjuk berbeza seperti menetapkan kelewatan bel dan status dipimpin. Kita lakukan bahawa menggunakan jika keadaan, kita mempunyai sebanyak tiga syarat. Pertama, kita mengira perbezaan antara berat yang ditetapkan dan mengukur berat, kemudian menyimpan nilai tersebut dalam pemboleh ubah k.
apungan k = butangPushCounter-i;
1. Sekiranya perbezaan antara berat yang ditetapkan dan berat pengukuran lebih besar daripada atau sama dengan 50gms, bel berbunyi dengan kelewatan 200 milisaat (perlahan).
jika (k> = 50) { digitalWrite (6, TINGGI); kelewatan (200); digitalWrite (6, RENDAH); kelewatan (200); }
2. Sekiranya perbezaan antara berat yang ditetapkan dan berat pengukuran lebih rendah dari 50 dan lebih besar daripada 1 gram, buzzer berbunyi bip dengan kelewatan 50 milisaat (lebih cepat).
jika (k <50 && k> 1) { digitalWrite (6, TINGGI); kelewatan (50); digitalWrite (6, RENDAH); kelewatan (50); }
3. Apabila berat pengukuran sama atau lebih besar daripada nilai yang ditetapkan, ini akan menghidupkan led hijau dan mematikan bel dan led merah.
jika (i> = buttonPushCounter) { digitalWrite (6, RENDAH); digitalWrite (12, TINGGI); }
Kami mempunyai dua fungsi lagi kosong () untuk menetapkan berat yang ditetapkan (untuk mengira tekan butang).
Fungsi meningkatkan nilai set dengan 10gms untuk setiap tekan. Ini dilakukan dengan menggunakan fungsi digitalRead dari Arduino jika pin rendah yang bermaksud butang ditekan dan itu akan menambah nilainya sebanyak 10gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == RENDAH) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Begitu juga, checkdown adalah untuk menurunkan nilai yang ditetapkan sebanyak 10gms untuk setiap akhbar.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == RENDAH) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Ini menandakan berakhirnya bahagian pengaturcaraan.
Skala elektronik berasaskan Arduino ini sangat sesuai untuk mengukur berat hingga 10kg (kita dapat meningkatkan had ini dengan menggunakan loadcell yang dinilai lebih tinggi). Ini adalah 99% tepat untuk ukuran asal.
Sekiranya anda mempunyai pertanyaan mengenai litar mesin keseimbangan berat LCD berasaskan Arduino ini, sila hantarkan di bahagian komen, terima kasih!