Bina Sistem Pengesanan Pergerakan Anda Sendiri Menggunakan Alat Pelancaran

The Great Gildersleeve: Fishing at Grass Lake / Bronco the Broker / Sadie Hawkins Dance (Jun 2019).

$config[ads_text] not found
Anonim

Bina Sistem Pengesanan Pergerakan Anda Sendiri Menggunakan Alat Pelancaran


Projek ini menggunakan kit pembangunan mikrokontroller C8051, papan penilaian pecutan, dan Simplicity Studio IDE-semua dari Silicon Labs-untuk dengan cepat dan mudah membina sistem penggera gerakan mengesan.

Kit Pembangunan C8051F930

Kit pembangunan C8051F930 ini dimaksudkan sebagai platform pembangunan untuk mikrokontroler dalam keluarga MCU C8051F93x-C8051F92x. Kit ini dilengkapi dengan mikrokontroller C8051F930 dipasang-lihat Rajah 1 di bawah.

Rajah 1. C8051F930 kit pembangunan. C8051F930 mikrokontroler (kotak merah).

Mikrokontroler C8051F930 termasuk ciri-ciri berikut:

  • Bekalan tunggal: 0.9 hingga 3.6V
  • Inti kelajuan 8051 μC
  • ADC 10-bit
  • 4352 bytes data dalaman RAM
  • Memori kilat 64kB
  • 24 port I / Os
  • SMBus, I2C, 2x SPI, UART
  • Debug cip-on

Rajah 2. Carta blok C8051F930

Mikrokontroler lain dalam keluarga C8051F93x-C8051F92x mempunyai memori kurang Flash dan / atau kurang I / Os berbanding C8051F930.

IDE Silicon Labs, yang dipanggil Simplicity Studio, tersedia sebagai muat turun percuma, dan ia termasuk kod contoh.

Lembaga Penilaian Akselerometer

Di teras lembaga penilaian pecutan (STEVAL-MKI135V1) adalah peranti accelerometer itu sendiri (LIS2DH), yang mempunyai ciri-ciri termasuk:

  • ultra rendah kuasa
  • tiga paksi peranti
  • antara muka siri digital I 2 C / SPI
  • pengguna dinamik boleh dipilih skala penuh ± 2g / ± 4g / ± 8g / ± 16g
  • boleh dikonfigurasikan untuk menjana sehingga dua isyarat interupsi berdasarkan:
    • pengesanan pergerakan (ambang pilihan pengguna)
    • pengesanan pergerakan tidak (ambang pilihan pengguna)
    • acara kejatuhan bebas

Rajah 3. Papan penilaian pecutan.

Penggera audio

Penggera piezo audio yang dipilih untuk projek ini adalah penggera penggera yang lambat dengan julat kekerapan resonan 2500 hingga 3500 Hz. Memandangkan saiz yang agak kecil, bugger ini menghasilkan bunyi menindik telinga 100dB pada 100cm (dengan voltan pemacu 12V). Penggera ini mempunyai litar dalaman yang didorong sendiri dan beroperasi dari 5V hingga 15V, yang sesuai untuk projek ini kerana kami mempunyai 12V sedia ada. Hanya gunakan voltan dan anda mati dan berlari-tidak bimbang tentang memberi makan penggera isyarat PWM untuk kesan warble.

Rajah 4. Penggera audio

Lampu Banjir LED

Sebab saya memilih lampu banjir LED ini hanya kerana saya mempunyai mereka dalam makmal saya. Juga, mereka komponen mudah untuk sistem 12V ini kerana ia beroperasi dari bekalan 12V.

Rajah 5. 12V lampu banjir LED

Senarai Bahagian

Perkara # Penerangan / Sumber Kos (setiap) Maklumat lain
1Kit pembangunan C8051F930$ 99.00Panduan pengguna
Panduan permulaan cepat
Lembaran C8051F930
Nota: skema di halaman 23-25 ​​dari Panduan Pengguna.
2Breadboard$ 8.98atau setaraf
3Kawat melompat kit$ 5.28atau setaraf
4Papan penilaian pecutan
(STEVAL-MKI135V1)
$ 21.28Lembaran datasheet penilaian
Lembaran data peranti
5Penggera audio$ 6.08Lembaran data
6Lampu banjir LED (qty 2)$ 10.2910W; 12V DC atau AC
7MOSFET N-saluran (qty 2)$ 1.17Lembaran data
atau setaraf

Menyambungkan Komponen

Mikrokontroler itu mengkonfigurasikan pecutan-menggunakan protokol SPI-untuk mengesan percepatan yang sangat kecil dalam paksi X- dan Y. Apabila percepatan dikesan dalam paksi sama ada, pecutan menjana isyarat gangguan yang dikesan oleh mikrokontroler. Selepas menerima isyarat gangguan, mikropengawal kemudian menghidupkan dua FET luaran dengan itu memberi tenaga penggera audio dan dua lampu banjir LED. Penggera dan lampu akan terus bertenaga sehingga pengawal mikro diset semula.

Sebelum menghidupkan kit pembangunan mikropengawal, pastikan anda mengkonfigurasinya seperti berikut:

Pelompat:

  • J11: VBAT ke WALL_PWR
  • J12: VDD ke VIO
  • J17: VBAT_PIN ke VBAT

Suis:

  • SW4: tetapkan kepada "2 CELL"
    • Nota Penting: Menurut Panduan Pengguna, suis kuasa (SW5) mesti berada di kedudukan OFF sebelum bertukar antara satu sel dan mod dua sel menggunakan SW4.
    • Pilihan kuasa diterangkan dalam bahagian 5.2.1 Panduan Pengguna.
  • Kuasa kuasa (SW5) ke kedudukan "OFF"-kami akan menukarnya nanti

Kabel :

  • Sambungkan penyesuai debug kabel reben ke J9
  • Sambungkan penyesuai debug USB ke PC anda
  • Sambungkan penyesuai kuasa AC / DC yang dibekalkan kepada P2

Breadboard the Components

Rajah 7 di bawah menggambarkan hubungan antara pelbagai komponen. Seperti yang dapat dilihat, kedua-dua FET N-Channel berkelakuan sebagai suis rendah: apabila pintu FET ditarik tinggi (3.3V), FET membolehkan arus mengalir dari longkang ke sumber. Sambungan SPI 4-wayar antara pecutan dan mikrokontroler juga ditunjukkan.

Rajah 6. Penggambaran bagaimana komponen perlu dihubungkan bersama

Setelah semua komponen dihubungkan, tiba masanya untuk menulis firmware.

Menulis Firmware Menggunakan Simplicity Studio

Menggunakan IDE Simplicity Studio adalah mudah. Sebelum menjalankan Simplicity Studio IDE, pastikan kit pembangunan anda disambungkan ke PC anda dan dikuasakan.

Sebaik sahaja IDE sedang berjalan ia harus mencari alat penilaian C8051F930 secara automatik. Jika tidak, ketik "C8051F930" dalam medan produk di sebelah kiri skrin. Kit Pembangunan C8051F930 harus kelihatan sebagai pilihan-pilihan pada pilihan ini (lihat Rajah 8 di bawah).

Rajah 7. Memilih produk C8051 yang betul.

Selepas Simplicity Studio mempunyai C8051F930 Kit Pembangunan yang ditunjukkan sebagai Produk Semasa, kemudian navigasi ke F93x-92x ADC0 ExternalInput di bawah "Perisian dan Kit" dan "Contoh Perisian". Lihat Rajah 9 di bawah.

Rajah 8. Memilih kod contoh yang betul.

Pada skrin Konfigurasi Projek, biarkan semua yang ada (lihat Rajah 9 di bawah) kemudian klik Selesai. IDE akan muncul dengan fail "F93x_ADC0_ExternalInput.c" terbuka. Kod ini juga memberi komen.

Rajah 9. Konfigurasi projek.

Sekarang bahawa kod contoh telah dimuatkan, kita perlu membuat pengubahsuaian berikut-untuk perubahan ini, yang terbaik (dan paling mudah) untuk menggunakan fail F93x_ADC0_ExternalInput.hwconf .

  • Port 1.2 (port ini dikaitkan dengan isyarat Int1 dari pecutan):
    • Ubah Skip: dari Tidak Dilangkau hingga Dilangkau
  • Port 2.1 (pelabuhan ini digunakan untuk mengawal FETs):
    • Tukar Kekuatan Drive: dari Rendah ke Tinggi
    • Tukar IOMode: dari Digital OpenDrain I / O ke Digital-Push Output .
    • Tukar Latch: dari Tinggi ke Rendah
    • Ubah Skip: dari Tidak Dilangkau hingga Dilangkau
  • SPI0
    • Ubah Fasa Jam: dari Sampel data pada pinggir pertama ke Sampel data pada tepi kedua .
    • Ubah Polariti Jam: dari keadaan terbiar yang rendah hingga Tinggi dalam keadaan terbiar .

Petua: Semasa pembangunan projek ini saya terpasang pada konfigurasi Clock Phase dan Clock Pulse . Walaupun tidak jelas dipanggil dalam datasheet pecutan, mereka disebutkan. Walau bagaimanapun, bukannya merujuk kepada "Clock Phase" dan "Clock Polarity" - yang nampaknya menjadi norma (lihat seksyen 24.5 lembar datasheet C8051F930) -pancaran datasheet LIS2DH (lihat halaman 26) hanya menyatakan: " SPC adalah jam port siri dan ia dikawal oleh master SPI.Ia dihentikan tinggi apabila CS adalah tinggi (tiada penghantaran) SDI dan SDO masing-masing adalah input dan output data port bersiri.Garis-laluan tersebut didorong di tepi jatuh SPC dan harus ditangkap di kelebihan SPC yang semakin meningkat. "

Pada hakikatnya, masalah ini telah membuat saya terperangkap sebelum saya terpaksa menggunakan penganalisis bas SPI. Rajah 10 di bawah adalah pukulan skrin penganalisis yang dikatakan dengan konfigurasi yang betul.

Jika anda menghadapi isu bas SPI atau jika peranti percepatan anda atau mana-mana peranti SPI atau I 2 C lain pada projek lain-tidak berfungsi seperti yang diharapkan, saya sangat mengesyorkan anda mempertimbangkan untuk membeli penganalisis bas SPI. Yang saya gunakan adalah Saleae Logic Analyzer (24MHz, 8 channel).

Rajah 10. Penganalisa bas SPI dengan fasa jam yang betul dan tetapan polariti jam.

Sebaik sahaja anda telah menyelesaikan perubahan konfigurasi pada mikropengawal, anda perlu menambah semua kod untuk mengkonfigurasi pecutan dengan betul. Ini mesti ditambah ke fail F93x_SPI0_Master.c . Petikan kod di bawah menunjukkan perubahan kod yang diperlukan.

 // The accelerometer requires 5ms for booting after power is applied. Delay (); // Assign the address of the desired register within the accelerometer: // Address to write = 0x60 --> 0x20 for CTRL_REG1(20h) + 0x40 for RW# (bit 7) = 0, and MS# (bit 6) = 1 // Reference section 5.2.2 of LIS2DH accelerometer datasheet for more information on RW# (bit 7) and MS# (bit 6). SPI_Data_Array(0)=0x60; SPI_Data_Array(1)=0x73; // CTRL_REG1(20h): 400 Hz Normal Mode. X- and Y-axis enabled. SPI_Data_Array(2)=0x00; // CTRL_REG2(21h): High-pass filter disabled. SPI_Data_Array(3)=0x40; // CTRL_REG3(22h): Interrupt activity driven to INT1. SPI_Data_Array(4)=0x00; // CTRL_REG4(23h): FS = +/-2 g SPI_Data_Array(5)=0x00; // CTRL_REG5(24h): Interrupt pin not latched. SPI_Data_Array(6)=0x02; // CTRL_REG6(25h): Active Low // Assign the number of bytes in the array "SPI_Data_Array" that are to be sent to the accelerometer. BytesToSend = 7; // Send the array data to the slave (ie, accelerometer). SPI_Array_Write (); // Send the array data. // Assign the address of the desired register within the accelerometer: // Address to write = 0x70 --> 0x30 for INT1_CFG(30h) + 0x40 for RW# (bit 7) = 0, and MS# (bit 6) = 1 SPI_Data_Array(0)=0x70; SPI_Data_Array(1)=0x0A; // INT1_CFG(30h): Enable XH and YH interrupt generation, and enable OR combination of interrupt events. // Assign the number of bytes in the array "SPI_Data_Array" that are to be sent to the accelerometer. BytesToSend = 2; // Send the array data to the slave (ie, accelerometer). SPI_Array_Write (); // Send the array data. // Assign the address of the desired register within the accelerometer: // Address to write = 0x72 --> 0x32 for INT1_THS(32h) + 0x40 for RW# (bit 7) = 0, and MS# (bit 6) = 1 SPI_Data_Array(0)=0x72; SPI_Data_Array(1)=0x10; // INT1_THS(32h): Threshold 256 mg. 0x10 --> 16LSBs * 16mg/LSB (at FS=2g) = 256mg. // Assign the number of bytes in the array "SPI_Data_Array" that are to be sent to the accelerometer. BytesToSend = 2; // Send the array data to the slave (ie, accelerometer). SPI_Array_Write (); // Send the array data. while (1) { if(P1_B2 == 0) // If Accelerometer is moving. Accelerometer Interrupt is Active Low { LED = LED_ON; ALARM = ALARM_ON; while (1) { // Wait here forever. } } else if (P1_B2 == 1) // If Accelerometer is NOT moving. Accelerometer Interrupt is Active Low { LED = LED_OFF; ALARM = ALARM_OFF; } } 

Seperti yang dapat dilihat, saya telah mengkonfigurasi mendaftarkan 0x20 sedemikian rupa sehingga hanya paksi X dan Y diaktifkan. Daftar 0x32 menetapkan ambang pecutan (ditetapkan ke 256mg) untuk apabila isyarat Int1 didorong; penetapan ambang 256mg adalah yang menjadikan pengesan pergerakan begitu sensitif terhadap pecutan sedikit.

Semua kod untuk projek ini boleh dimuat turun dari pautan di bawah.

Muat turun Kod

Membina dan Memuatkan Kod … dan Menguji Sistem

Setelah semua kod diubah, bina projek dan muat turun kod ke mikrokontroler. Pastikan anda mempunyai pecutan pada permukaan yang cukup rata. Selepas anda menjalankan kod, ringan mengetuk lembaga penilaian pecutan (atau papan roti) harus bunyi penggera dan menghidupkan dua lampu banjir LED.

Dalam demonstrasi video di bawah, anda dapat melihat bahawa mengetuk papan roti memicu penggera, dan menekan butang set semula papan pembangunan semula melancarkan sistem.

Ringkasan dan Langkah Seterusnya

Seperti yang ditunjukkan dalam artikel ini, pengaturcaraan mikrokontroler C8051F930 untuk mengkonfigurasi dan menggunakan pecutan STEVAL-MKI135V1 agak mudah, atau tentu saja, anda telah menguasai tetapan konfigurasi Jam dan Polariti Jam.

Sekiranya anda membuat keputusan untuk menggunakan accelerometer ini dalam reka bentuk baru-sans papan pengembangan dan penilaian-anda akan mahu menggunakan peranti accelerometer LIS2DH itu sendiri pada reka bentuk PCB baru anda. Pastikan untuk memberi perhatian kepada keperluan susun atur bahagian kerana peranti ini agak kecil, dengan padnya menjadi lebih banyak, lebih kecil. ST telah menyediakan fail Gerber, skema, dan BOM yang mungkin anda ingin gunakan sebagai panduan rujukan.

Semoga berjaya!

Beri projek ini cuba untuk diri sendiri! Dapatkan BOM.