Daftar Isi:

Arduino Magnetometer: 5 Langkah (dengan Gambar)
Arduino Magnetometer: 5 Langkah (dengan Gambar)

Video: Arduino Magnetometer: 5 Langkah (dengan Gambar)

Video: Arduino Magnetometer: 5 Langkah (dengan Gambar)
Video: hmc5883l Arduino compass, magnetometer sensor, compass navigation"Arduino Project for beginners 2024, September
Anonim
Magnetometer Arduino
Magnetometer Arduino

Apa yang kita bangun?

Manusia tidak dapat mendeteksi medan magnet, tetapi kami menggunakan perangkat yang bergantung pada magnet sepanjang waktu. Motor, kompas, sensor rotasi, dan turbin angin, misalnya, semuanya memerlukan magnet untuk pengoperasiannya. Tutorial ini menjelaskan cara membuat magnetometer berbasis Arduino yang mendeteksi medan magnet menggunakan tiga sensor efek Hall. Vektor medan magnet di suatu lokasi ditampilkan pada layar kecil menggunakan proyeksi isometrik.

Apa itu Arduino?

Arduino adalah mikrokontroler open-source kecil yang mudah digunakan. Ini memiliki pin input dan output digital. Ini juga memiliki pin input analog, yang berguna untuk membaca input dari sensor. Model Arduino yang berbeda tersedia. Tutorial ini menjelaskan cara menggunakan Arduino Uno atau Arduino MKR1010. Namun model lain juga bisa digunakan.

Sebelum Anda memulai tutorial ini, unduh lingkungan pengembangan Arduino serta semua perpustakaan yang diperlukan untuk model khusus Anda. Lingkungan pengembangan tersedia di https://www.arduino.cc/en/main/software, dan petunjuk penginstalan tersedia di

Apa itu medan magnet?

Magnet permanen memberikan gaya pada magnet permanen lainnya. Kabel pembawa arus memberikan gaya pada kabel pembawa arus lainnya. Magnet permanen dan kabel pembawa arus juga memberikan gaya satu sama lain. Gaya per unit arus uji ini adalah medan magnet.

Jika kita mengukur volume suatu benda, kita mendapatkan bilangan skalar tunggal. Namun, magnet dijelaskan oleh medan vektor, kuantitas yang lebih rumit. Pertama, bervariasi dengan posisi di seluruh ruang. Misalnya, medan magnet satu sentimeter dari magnet permanen kemungkinan lebih besar dari medan magnet sepuluh sentimeter jauhnya.

Selanjutnya, medan magnet di setiap titik dalam ruang diwakili oleh sebuah vektor. Besarnya vektor mewakili kekuatan medan magnet. Arahnya tegak lurus terhadap arah gaya dan arah arus uji.

Kita bisa membayangkan medan magnet di satu lokasi sebagai panah. Kita dapat menggambarkan medan magnet di seluruh ruang dengan deretan panah di lokasi yang berbeda, mungkin dengan ukuran yang berbeda dan menunjuk ke arah yang berbeda. Visualisasi yang bagus tersedia di https://www.falstad.com/vector3dm/. Magnetometer yang kami bangun menampilkan medan magnet di lokasi sensor sebagai panah di layar.

Apa itu sensor efek Hall, dan bagaimana cara kerjanya?

Sensor efek Hall adalah perangkat kecil dan murah yang mengukur kekuatan medan magnet di sepanjang arah tertentu. Itu terbuat dari sepotong semikonduktor yang didoping dengan muatan berlebih. Output dari beberapa sensor efek Hall adalah tegangan analog. Sensor efek Hall lainnya memiliki komparator terintegrasi dan menghasilkan output digital. Sensor efek Hall lainnya diintegrasikan ke dalam instrumen yang lebih besar yang mengukur laju aliran, kecepatan rotasi, atau kuantitas lainnya.

Fisika di balik efek Hall diringkas oleh persamaan gaya Lorentz. Persamaan ini menggambarkan gaya pada muatan yang bergerak karena medan listrik dan magnet eksternal.

Gambar
Gambar

Gambar di bawah mengilustrasikan efek Hall. Misalkan kita ingin mengukur kekuatan medan magnet searah panah biru. Seperti yang ditunjukkan di bagian kiri gambar, kami menerapkan arus melalui sepotong semikonduktor yang tegak lurus dengan arah medan yang akan diukur. Arus adalah aliran muatan, sehingga muatan dalam semikonduktor bergerak dengan kecepatan tertentu. Muatan ini akan merasakan gaya akibat medan luar, seperti terlihat pada bagian tengah gambar. Muatan akan bergerak karena gaya dan menumpuk di tepi semikonduktor. Muatan menumpuk sampai gaya akibat akumulasi muatan menyeimbangkan gaya akibat medan magnet luar. Kita dapat mengukur tegangan melintasi semikonduktor, seperti yang ditunjukkan pada bagian kanan gambar. Tegangan yang diukur sebanding dengan kekuatan medan magnet, dan arahnya tegak lurus terhadap arus dan arah medan magnet.

Gambar
Gambar

Apa itu proyeksi isometrik?

Pada setiap titik dalam ruang, medan magnet digambarkan oleh vektor tiga dimensi. Namun, tampilan layar kami adalah dua dimensi. Kita dapat memproyeksikan vektor tiga dimensi ke dalam bidang dua dimensi sehingga kita dapat menggambarnya di layar. Ada beberapa cara untuk mencapai ini seperti proyeksi isometrik, proyeksi ortografis, atau proyeksi miring.

Dalam proyeksi isometrik, sumbu x, y, dan z terpisah 120 derajat, dan keduanya tampak sama-sama diperpendek. Informasi tambahan tentang proyeksi isometrik, serta rumus yang diperlukan, dapat ditemukan di halaman Wikipedia tentang topik tersebut.

Langkah 1: Kumpulkan Persediaan

Arduino dan Kabel

Arduino adalah otak dari magnetometer. Instruksi ini menjelaskan cara menggunakan Arduino Uno atau Arduino MKR1010. Dalam kedua kasus, kabel diperlukan untuk menghubungkannya ke komputer.

Opsi 1: Arduino Uno dan Kabel USB AB

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

Opsi 2: Arduino MKR1010 dan kabel microUSB

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

Tampilan TFT

TFT adalah singkatan dari Thin Film Transistor. Layar 1,44 ini berisi 128 x 128 piksel. Kecil, cerah, dan berwarna-warni. Layar ini terpasang pada papan breakout. Namun, pin header terpisah, jadi Anda harus menyoldernya. (Solder dan solder adalah diperlukan.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Gambar
    Gambar
  • Sensor Efek Aula Analog

Tiga sensor efek Hall diperlukan. Tautan di bawah ini untuk Allegro nomor bagian A1324LUA-T. Untuk sensor ini, pin 1 adalah tegangan suplai, pin 2 ground, dan pin 3 output. Sensor Hall lainnya juga berfungsi, tetapi pastikan analog, bukan digital. Jika Anda menggunakan sensor yang berbeda, periksa pinout dan sesuaikan kabel jika diperlukan. (Saya sebenarnya menggunakan sensor yang berbeda dari perusahaan yang sama untuk tujuan pengujian. Namun, yang saya gunakan sudah usang, dan sensor ini adalah penggantinya.)

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Papan tempat memotong roti kecil dan Kawat

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Magnet Permanen untuk Pengujian

Magnet kulkas akan bekerja dengan baik.

Langkah 2: Pengkabelan

Pengkabelan
Pengkabelan

Solder header pada layar.

Gambar
Gambar

Tempatkan sensor di salah satu ujung papan tempat memotong roti, dan letakkan layar dan Arduino di ujung yang berlawanan. Arus di kabel di Arduino dan layar menghasilkan medan magnet, yang tidak ingin dibaca oleh sensor. Selain itu, kami mungkin ingin menempatkan sensor di dekat magnet permanen, yang dapat berdampak buruk pada arus di kabel layar dan sensor. Untuk alasan ini, kami ingin sensor jauh dari layar dan Arduino. Juga untuk alasan ini, magnetometer ini harus dijauhkan dari medan magnet yang sangat kuat.

Tempatkan sensor tegak lurus satu sama lain tetapi sedekat mungkin satu sama lain. Tekuk sensor dengan lembut untuk membuatnya tegak lurus. Setiap pin dari setiap sensor harus berada di baris breadboard yang terpisah sehingga dapat dihubungkan secara terpisah.

Gambar
Gambar

Pengkabelan sedikit berbeda antara MKR1010 dan Uno karena dua alasan. Pertama, Arduino dan layar berkomunikasi dengan SPI. Model Arduino yang berbeda memiliki pin khusus yang berbeda untuk jalur SPI tertentu. Kedua, input analog Uno dapat menerima hingga 5 V sedangkan input analog MKR1010 hanya dapat menerima hingga 3,3 V. Tegangan suplai yang direkomendasikan untuk sensor efek Hall adalah 5 V. Output sensor terhubung ke input analog Arduino, dan ini bisa sebesar tegangan suplai. Untuk Uno, gunakan suplai 5 V yang direkomendasikan untuk sensor. Untuk MKR1010, gunakan 3,3 V sehingga input analog Arduino tidak pernah melihat tegangan yang lebih besar dari yang dapat ditanganinya.

Ikuti diagram dan instruksi di bawah ini untuk Arduino yang Anda gunakan.

Pengkabelan dengan Arduino Uno

Gambar
Gambar

Layar memiliki 11 pin. Hubungkan mereka ke Arduino Uno sebagai berikut. (NC berarti tidak terhubung.)

  • Vin →5V
  • 3.3 →NC
  • Gnd → GND
  • SCK →13
  • JADI → NC
  • SI →11
  • TCS →10
  • RST →9
  • D/C →8
  • CCS → NC
  • Ringan → NC

Hubungkan Vin sensor ke 5V Arduino. Hubungkan ground sensor ke ground Arduino. Hubungkan output sensor ke input analog A1, A2, dan A3 Arduino.

Gambar
Gambar

Pengkabelan dengan Arduino MKR1010

Gambar
Gambar

Layar memiliki 11 pin. Hubungkan mereka ke Arduino sebagai berikut. (NC berarti tidak terhubung.)

  • Vin →5V
  • 3.3 →NC
  • Gnd → GND
  • SCK →SCK 9
  • JADI → NC
  • SI →MOSI 8
  • TCS →5
  • RST →4
  • D/C →3
  • CCS → NC
  • Ringan → NC

Hubungkan Vin dari sensor ke Vcc dari Arduino. Pin ini pada 3.3V, bukan 5V. Hubungkan ground sensor ke ground Arduino. Hubungkan output sensor ke input analog A1, A2, dan A3 Arduino.

Gambar
Gambar

Langkah 3: Uji Tampilan

Mari buat tampilan TFT berfungsi. Untungnya, Adafruit memiliki beberapa perpustakaan yang ramah pengguna dan tutorial yang sangat baik untuk diikuti. Instruksi ini mengikuti tutorial dengan cermat, Buka lingkungan pengembangan Arduino. Buka Alat → Kelola Perpustakaan. Instal pustaka Adafruit_GFX, Adafruit_ZeroDMA, dan Adafruit_ST7735. Mulai ulang lingkungan pengembangan Android.

Contoh graphicstest disertakan dengan perpustakaan. Buka. File → Contoh → Adafruit ST7735 dan ST7789 Library → graphicstest. Untuk memilih 1,44 tampilkan komentar keluar baris 95 dan batalkan komentar baris 98.

Versi asli:

94 // Gunakan penginisialisasi ini jika menggunakan layar TFT 1,8 :

95 tft.initR(INITR_BLACKTAB); //Init ST7735S chip, black tab 96 97 //ATAU gunakan initializer ini (batalkan komentar) jika menggunakan 1,44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

Versi yang benar untuk tampilan 1,44 :

94 // Gunakan penginisialisasi ini jika menggunakan layar TFT 1,8 :

95 //tft.initR(INIT_BLACKTAB); //Init ST7735S chip, black tab 96 97 //ATAU gunakan inisialisasi ini (batalkan komentar) jika menggunakan 1,44 TFT: 98 tft.initR(INITR_144GREENTAB); //Init SST35R chip, tab hijau

Layar berkomunikasi menggunakan SPI, dan model Arduino yang berbeda menggunakan pin khusus yang berbeda untuk beberapa jalur komunikasi. Contoh graphicstest diatur untuk bekerja dengan pin Uno. Jika Anda menggunakan MKR1010, tambahkan baris berikut di antara baris 80 dan 81.

Koreksi untuk MKR1010:

80

#menentukan TFT_CS 5 #menentukan TFT_RST 4 #menentukan TFT_DC 3 #menentukan TFT_MOSI 8 #menentukan TFT_SCLK 9 Adafruit_ST7735 tft=Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); 81 pelampung p=3.1415926;

Simpan contoh graphicstest yang dimodifikasi. Colokkan Arduino ke komputer jika Anda belum melakukannya. Buka Alat → Papan dan Alat → Port untuk memverifikasi bahwa komputer dapat menemukan Arduino. Buka Sketsa → Unggah. Jika contoh berhasil, layar akan menampilkan garis, persegi panjang, teks, dan demo lengkap. Tutorial Adafruit memberikan lebih banyak detail jika pemecahan masalah diperlukan.

Langkah 4: Kode Magnetometer

Unduh kode terlampir, dan buka di lingkungan pengembangan Arduino.

Program ini menggunakan enam fungsi:

Setup() menginisialisasi tampilan

Loop() berisi loop utama program. Itu menghitamkan layar, menggambar sumbu, membaca input, dan menggambar panah yang mewakili vektor medan magnet. Ini memiliki kecepatan refresh satu detik yang dapat diubah dengan mengubah baris 127

DrawAxes3d() menggambar dan memberi label pada sumbu x, y, dan z

DrawArrow3d() mengambil input x, y, dan z mulai dari 0 hingga 1023. Dari nilai ini, ia menghitung titik akhir panah di ruang. Selanjutnya, ia menggunakan fungsi isometricxx() dan isometricyy() untuk menghitung titik akhir di layar. Akhirnya, ia menggambar panah dan mencetak voltase di bagian bawah layar

Isometricxx() menemukan koordinat x dari proyeksi isometrik. Dibutuhkan koordinat x, y, dan z dari suatu titik dan mengembalikan lokasi x piksel yang sesuai di layar

Isometricyy() menemukan koordinat y dari proyeksi isometrik. Dibutuhkan koordinat x, y, dan z dari suatu titik dan mengembalikan lokasi piksel y yang sesuai di layar

Sebelum menjalankan kode, kita perlu menentukan pin mana yang akan digunakan untuk komunikasi SPI dengan layar, dan kita perlu menentukan tegangan sumber untuk sensor. Jika Anda menggunakan MKR1010, beri komentar pada baris 92-96 serta baris 110. Kemudian, batalkan komentar pada baris 85-89 dan juga pada baris 108. Jika Anda menggunakan Uno, beri komentar pada baris 85-89 serta baris 108 Kemudian, batalkan komentar pada baris 92-96 serta baris 110.

Unggah kode, Sketsa → Unggah.

Anda akan melihat sumbu x, y, dan z berwarna merah. Panah hijau dengan lingkaran biru untuk ujungnya mewakili vektor medan magnet pada sensor. Pembacaan tegangan ditampilkan di kiri bawah. Saat Anda mendekatkan magnet ke sensor, pembacaan tegangan akan berubah, dan ukuran panah akan bertambah.

Gambar
Gambar

Langkah 5: Pekerjaan Masa Depan

Pekerjaan masa depan
Pekerjaan masa depan

Langkah selanjutnya adalah mengkalibrasi perangkat. Lembar data sensor memberikan informasi tentang cara mengubah nilai tegangan sensor mentah menjadi kekuatan medan magnet. Kalibrasi dapat diverifikasi dengan membandingkan dengan magnetometer yang lebih akurat.

Magnet permanen berinteraksi dengan kabel pembawa arus. Kabel di dekat layar dan di Arduino menghasilkan medan magnet yang dapat memengaruhi pembacaan sensor. Selain itu, jika perangkat ini digunakan untuk mengukur di dekat magnet permanen yang kuat, medan magnet dari perangkat yang diuji akan berinteraksi, menimbulkan kebisingan, dan mungkin merusak Arduino dan layar. Perisai bisa membuat magnetometer ini lebih kuat. Arduino dapat menahan medan magnet yang lebih besar jika terlindung dalam kotak logam, dan lebih sedikit noise akan muncul jika kabel terlindung menghubungkan sensor, bukan kabel telanjang.

Medan magnet adalah fungsi posisi, sehingga berbeda di setiap titik dalam ruang. Perangkat ini menggunakan tiga sensor, satu untuk mengukur komponen x, y, dan z medan magnet pada suatu titik. Sensor berdekatan satu sama lain tetapi tidak pada satu titik, dan ini membatasi resolusi magnetometer. Akan lebih keren untuk menyimpan pembacaan medan magnet pada titik yang berbeda kemudian menampilkannya sebagai larik panah di lokasi yang sesuai. Namun, itu adalah proyek untuk hari lain.

Referensi

Informasi tentang perpustakaan Adafruit Arduino Graphics

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Visualisasi medan magnet

https://www.falstad.com/vector3dm/

Informasi tentang efek Hall dan sensor efek Hall

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Informasi tentang proyeksi isometrik

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Direkomendasikan: