Isi kandungan:

Penjana Fungsi Mudah Alih pada WiFi dan Android: 10 Langkah
Penjana Fungsi Mudah Alih pada WiFi dan Android: 10 Langkah

Video: Penjana Fungsi Mudah Alih pada WiFi dan Android: 10 Langkah

Video: Penjana Fungsi Mudah Alih pada WiFi dan Android: 10 Langkah
Video: FENOMENA ANEH DI MASJIDILHARAM 2024, Julai
Anonim
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android
Penjana Fungsi Mudah Alih pada WiFi dan Android

Menjelang akhir abad ke-20, pelbagai inovasi teknologi muncul, terutama dalam bidang komunikasi; tetapi bukan sahaja. Bagi kami, pengguna, pengguna dan jurutera membuat pengembangan alat elektronik yang pesat, yang dapat menjadikan hidup kita lebih mudah: Jam tangan pintar, rumah pintar, telefon pintar dll.

Oleh kerana semuanya boleh menjadi "pintar" pada masa kini, saya telah memutuskan untuk merancang peranti yang sangat berguna untuk menjadi bahagian peralatan makmal elektronik yang penting - Portable Function Generator, yang dapat dikendalikan oleh telefon pintar berasaskan OS Android melalui WiFi langsung atau WiFi Local Area Network (WLAN).

Mengapa kita mesti membina peranti ini?

Sebilangan besar peralatan ujian sangat mahal pada masa ini. Kadang kala, peranti ini tidak mudah alih. Sebagai jalan keluar untuk harga yang tinggi, kekurangan portabiliti dan kekurangan akses rangkaian peranti, peranti menyediakan penjana bentuk gelombang dua saluran, yang sememangnya mudah alih dan mempunyai akses tanpa had ke rangkaian - sama ada internet atau tempatan.

Dan tentu saja, peranti harus dibina kerana semangat, mematuhi prinsip DIY - Kadang-kadang kita hanya perlu melakukan perkara-perkara untuk merasa betul:)

Ciri-ciri utama

Bekalan Kuasa

  • Penyambung USB Jenis-A, untuk kedua-dua sistem bekalan kuasa dan pengaturcaraan
  • Sistem pengurusan bateri Li-Ion yang lengkap - Mod pengecasan dan stabil
  • Pelaksanaan Smart Switch - tidak memerlukan suis togol kuasa
  • Bekalan kuasa ganda: + 3.3V dan -3.3V untuk penjanaan bentuk gelombang voltan simetri

Penjanaan Bentuk Gelombang

  • Pelaksanaan tahap DC pada lata lata - bentuk gelombang berat sebelah antara batas voltan
  • Penjanaan bentuk gelombang 4 jenis berdasarkan DDS - Sinus, segitiga, segi empat sama dan DC
  • Sokongan frekuensi sehingga 10MHz
  • Arus keluaran hingga 80mA dengan ketersediaan kuasa maksimum 500mW
  • Saluran berasingan untuk penjanaan bentuk gelombang - membelah litar berdasarkan AD9834

Komunikasi

  • Pelaksanaan ESP32 - Keupayaan WiFi yang boleh digunakan
  • Sokongan TCP / IP lengkap dengan peranti penjana dan telefon pintar Android
  • Keupayaan untuk menyimpan parameter pengguna untuk setiap kitaran peranti
  • Pemantauan keadaan - kedua-dua sistem saling mengetahui keadaan lain: FuncGen (mari kita menyebutnya dengan cara ini mulai sekarang) dan telefon pintar.

Antaramuka pengguna

  • LCD 20 x 4 Character dengan antara muka data 4-bit yang ringkas
  • Aplikasi Android - kawalan pengguna sepenuhnya ke atas peranti FuncGen
  • Litar buzzer - maklum balas bunyi kepada pengguna

Langkah 1: Gambarajah Blok - Perkakasan

Gambarajah Blok - Perkakasan
Gambarajah Blok - Perkakasan
Gambarajah Blok - Perkakasan
Gambarajah Blok - Perkakasan

Unit Pengawal Mikro - ATMEGA32L

Mikrokontroler adalah cip yang dapat diprogramkan yang terdiri daripada semua fungsi komputer yang terdapat dalam satu cip elektronik. Dalam kes kita, ia adalah "otak" dan komponen utama sistem. Tujuan MCU adalah untuk menguruskan semua sistem periferal, menangani komunikasi antara sistem ini, mengawal operasi perkakasan dan memberikan sokongan sepenuhnya untuk antara muka pengguna dan interaksinya dengan pengguna sebenarnya. Projek ini berdasarkan ATMEGA32L MCU, yang boleh beroperasi pada 3.3V dan frekuensi 8MHz.

SoC Komunikasi - ESP32

SoC (System on Chip) ini menyediakan sokongan komunikasi lengkap untuk FuncGen - Akses ke keupayaan WiFi termasuk komunikasi langsung, tempatan atau internet. Tujuan peranti adalah:

  • Mengendalikan penghantaran data antara aplikasi Android dan peranti FuncGen
  • Pengurusan mesej kawalan / data
  • Sokongan konfigurasi Pelayan Pelanggan TCP / IP berterusan

Dalam projek kami, SoC adalah ESP32 espressif, yang terlalu popular untuk dikembangkan lebih jauh lagi:)

Sistem Pengurusan Bateri Li-Ion

Untuk mengubah peranti kami menjadi mudah alih, peranti mengandungi litar pengisian bateri Li-Ion yang dirancang. Litar didasarkan pada IC MC73831, dengan arus pengecasan yang dapat dikawal dengan menyesuaikan nilai perintang pengaturcaraan tunggal (Kami akan membahas topik ini dalam langkah Skematik). Input bekalan kuasa peranti adalah penyambung USB Jenis-A.

Litar Suis Pintar

Litar kawalan kuasa peranti suis pintar menyediakan kawalan perisian yang lengkap terhadap urutan penutupan peranti dan kekurangan keperluan suis togel luaran untuk pemotongan voltan bateri peranti. Semua operasi kuasa dilakukan dengan menekan butang tekan dan perisian MCU. Dalam beberapa kes, perlu mematikan sistem: Voltan bateri rendah, voltan input tinggi, ralat komunikasi dan sebagainya. Suis pintar didasarkan pada IC suis pintar STM6601, yang murah dan sangat mesra untuk dimainkan.

Unit Bekalan Kuasa Utama

Unit ini terdiri daripada dua litar bekalan kuasa yang digerakkan oleh bateri - + 3.3V untuk semua litar bekalan digital / analog dan -3.3V untuk output simetri FunGen berbanding dengan potensi 0V (iaitu bentuk gelombang yang dihasilkan dapat diatur dalam [-3.3V: 3.3V] wilayah.

  • Litar bekalan utama berdasarkan LP3875-3.3 LDO (dropout rendah) 1A pengatur voltan linear.
  • Litar bekalan sekunder didasarkan pada LM2262MX IC, yang melakukan penukaran voltan negatif DC-DC melalui kapasitor-cas-pam - sistem yang didasari oleh IC.

Sistem Penjana Bentuk Gelombang

Sistem dirancang dengan penekanan pada rangkaian terpadu DDS (sintesis digital langsung) yang berasingan, yang membolehkan kawalan penjanaan bentuk gelombang lengkap oleh SPI MCU (antara muka periferal bersiri). Litar yang digunakan dalam reka bentuk adalah Analog Devices AD9834 yang dapat menyediakan pelbagai jenis bentuk gelombang. Cabaran yang perlu kita hadapi semasa bekerja dengan AD9834 adalah:

  • Amplitud bentuk gelombang tetap: Amplitud bentuk gelombang dikendalikan oleh modul DAC luaran
  • Tidak memperhatikan tahap DC offset: Pelaksanaan penjumlahan litar dengan nilai offset DC yang diinginkan
  • Output berasingan untuk gelombang persegi dan gelombang segitiga / sinus: Pelaksanaan litar pensuisan frekuensi tinggi sehingga setiap output saluran tunggal dapat menyediakan semua bentuk gelombang yang diinginkan: sinus, segitiga, segi empat sama dan DC.

Paparan Kristal Cecair

LCD adalah bahagian UI (antara muka pengguna), dan tujuannya adalah untuk membolehkan pengguna memahami apa yang dilakukan oleh peranti dalam mod masa nyata. Ia berinteraksi dengan pengguna di setiap keadaan peranti.

Buzzer

Litar penjana nada sederhana untuk maklum balas tambahan dari peranti ke pengguna.

Pengaturcara ISP Bersepadu

Terdapat masalah berterusan bagi setiap jurutera ketika datang ke proses pengaturcaraan: Selalu ada keperluan terburuk untuk membongkar produk untuk memprogramnya semula dengan firmware baru. Untuk mengatasi ketidakselesaan ini, pengaturcara AVR ISP dipasang pada peranti dari dalam, sedangkan data USB dan talian kuasa diikat pada penyambung USB Jenis-A peranti. Dalam konfigurasi ini, kita hanya perlu memasang FuncGen melalui kabel USB untuk pengaturcaraan atau pengecasan!

Langkah 2: Diagram Blok - Rangkaian

Gambarajah Blok - Rangkaian
Gambarajah Blok - Rangkaian

Penjana Fungsi Saluran Dwi

Peranti utama. Yang telah kami kaji pada langkah sebelumnya

ESP-WROOM-32

Sistem-on-Chip Bersepadu dengan kemampuan WiFi dan BLE. SoC dilampirkan ke papan utama (Kami akan membahasnya dalam langkah skema) melalui modul UART dan bertindak sebagai pemesejan mesej antara peranti utama dan telefon pintar Android.

Rangkaian Tempatan WiFi

Telefon pintar dan peranti akan berkomunikasi melalui WiFi langsung atau rangkaian kawasan setempat, berdasarkan konfigurasi pelayan / klien TCP. Apabila peranti mengenali satu sama lain di WiFi, peranti utama membuat pelayan TCP dengan parameter yang sesuai dan dapat mengirim / menerima mesej. Peranti bertindak sebagai sekunder untuk telefon pintar. Peranti Android di sisi lain, menghubungkan ke pelayan TCP sebagai peranti rangkaian pelanggan, tetapi dianggap sebagai pemancar mesej utama - telefon pintar adalah yang memulakan kitaran komunikasi lengkap: Menghantar mesej - menerima balasan.

Telefon Pintar Android

Peranti telefon pintar berasaskan OS Android yang berjalan pada aplikasi FuncGen

Langkah 3: Bahagian, Alat, IDE dan Bil Bahan

Bahagian, Alat, IDE dan Bil Bahan
Bahagian, Alat, IDE dan Bil Bahan
Bahagian, Alat, IDE dan Bil Bahan
Bahagian, Alat, IDE dan Bil Bahan
Bahagian, Alat, IDE dan Bil Bahan
Bahagian, Alat, IDE dan Bil Bahan

Bil Bahan (Lihat jadual XLS yang dilampirkan)

UI Dan Sambungan Sistem

  • 1 x 2004A Char-LCD 20x4 Biru
  • 1 x Penyambung Jenis USB B
  • 1 x 10 Set Mini Micro JST XH 2.54mm 4 Pin
  • 1 x 6pcs SW Momentary

Pemesanan PCB (Menurut Studio yang Dilihat)

Bahan Asas FR-4

Bilangan Lapisan 2 lapisan

Kuantiti PCB 10

Bilangan Reka Bentuk yang berbeza 1

Ketebalan PCB 1.6mm

Warna Biru PCB

Permukaan Selesai HASL

Empangan Solder Masker Minimum 0.4mm ↑

Berat tembaga 1oz

Ukuran Lubang Bor minimum 0.3mm

Jejak Lebar / Jarak 6/6 mil

Lubang Separa berlapis / Lubang Castellated No.

Kawalan Impedans No.

Alat

  • Pistol gam panas
  • Pinset
  • Pemotong
  • ~ 22AWG wayar untuk tujuan pengendalian kerosakan
  • Besi solder / stesen
  • Tin pematerian
  • Stesen kerja semula SMD (pilihan)
  • Pencetak 3D (Pilihan)
  • Fail ekstrusi
  • Pengaturcara AVR ISP
  • Penukar Serial USB ke (Pilihan, untuk tujuan penyahpepijatan)

Persekitaran Pembangunan Bersepadu (IDE) dan Perisian

  • Autodesk EAGLE atau Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (Pilihan)
  • Ultimaker Cura (Pilihan)
  • Saleae Logic (Untuk menyelesaikan masalah)
  • Atmel Studio 6.3 atau lebih tinggi
  • Android Studio atau Eclipse IDE
  • Docklight Serial Monitor / Perisian pemantauan port COM lain
  • ProgISP untuk pengaturcaraan flash AVR ATMEGA32L

Langkah 4: Reka Bentuk Perkakasan - Papan Utama

Reka Bentuk Perkakasan - Papan Utama
Reka Bentuk Perkakasan - Papan Utama
Reka Bentuk Perkakasan - Papan Utama
Reka Bentuk Perkakasan - Papan Utama
Reka Bentuk Perkakasan - Papan Utama
Reka Bentuk Perkakasan - Papan Utama

Litar Pengurusan Bateri

Litar pengisian bateri didasarkan pada IC MCP7383, yang memungkinkan kita memilih arus pengecasan yang diingini untuk bateri Li-Ion - 3.7V dengan kapasiti 850mAh. Arus pengisian ditetapkan oleh nilai perintang pengaturcaraan (R1) dalam kes kami

R1 = 3KOhm, I (cas) = 400mA

Voltan USB VBUS ditapis oleh π-penapis (C1, L3, C3) dan bertindak sebagai sumber kuasa untuk litar pengisian.

Litar pembahagi voltan (R2, R3) membolehkan MCU menunjukkan sama ada bekalan kuasa USB luaran disambungkan atau tidak, dengan memberikan voltan berikut ke saluran MCU A / D:

V (petunjuk) ~ (2/3) V (BUS)

Oleh kerana A / D ATMEGA32L kami adalah 12-bit, kami dapat mengira julat digital:

A / D (julat) = 4095V (petunjuk) / V (REF).

A / D ∈ [14AH: FFFH]

Unit Kuasa Suis Pintar

Litar membolehkan sistem mengawal bekalan kuasa ke setiap blok yang dirancang baik dari butang tekan dan perisian pada MCU dan berdasarkan STM6601 Smart-Switch dengan pilihan POWER dan bukannya RESET. Terminal yang ingin kami pertimbangkan adalah:

  • PSHOLD - Garis input, yang menentukan keadaan peranti: jika ditarik RENDAH, peranti mematikan semua unit bekalan kuasa sekunder (+ 3.3V dan -3.3V). Sekiranya dipegang TINGGI - peranti mengekalkan keadaan ON.
  • nSR dan nPB - Garis input. Terminal butang tekan. Apabila tepi jatuh dikesan pada pin ini, peranti cuba memasuki mod naik / turun kuasa
  • nINT - Garisan output. Ditarik RENDAH setiap kali apabila butang tekan ditekan
  • EN - Saluran keluaran, digunakan sebagai kuasa untuk unit bekalan kuasa sekunder. Semasa diadakan RENDAH, kedua-dua bekalan kuasa kedua dimatikan

Terdapat beberapa nota penting sebelum kita meneruskan reka bentuk akhir:

  • PSHOLD harus ditarik hingga 3.3V, kerana ada kes ketika MCU memaksa semua I / Os berada dalam keadaan HIGH-Z. Dalam kes ini, keadaan PSHOLD dari MCU tidak diketahui dan boleh mempengaruhi proses pengaturcaraan peranti secara dramatik.
  • STM6601 harus dipesan dengan pilihan penyesuaian EN pada tekan lama, bukannya pilihan RESET (saya telah jatuh pada yang satu).

Unit Bekalan Kuasa: + 3.3V

Bekalan kuasa utama untuk semua sistem dalam projek kami. Apabila talian + 3.3V dipegang pada tahap GND (iaitu tidak ada voltan), semua IC kecuali suis pintar dilumpuhkan. Litar ini didasarkan pada LDO LP-3875-3.3 IC, dengan kemampuan dikendalikan melalui terminal EN dan memberikan arus hingga 1A.

Sumber kuasa untuk litar ini adalah voltan bateri, dengan penunjuk A / D terpasang untuk mendeteksi VBAT dalam konfigurasi, serupa dengan rangkaian penginderaan VBUS. Dalam kes ini, pengiraannya sedikit berbeza;

V (Bateri-ke-A / D) = 0.59V (Bateri); A / D (julat) ∈ [000H: C03H]

Unit Bekalan Kuasa: -3.3V

Litar bekalan voltan negatif membolehkan kita menghasilkan bentuk gelombang simetri dengan faktor DC 0V (iaitu nilai purata bentuk gelombang dapat 0V). Litar ini didasarkan pada LM2662MX IC - DC / DC converter yang beroperasi pada kaedah "charge pump". Arus keluaran maksimum litar ialah 200mA yang mencukupi untuk keperluan reka bentuk kami - kami terhad dengan arus keluaran 80mA dari setiap saluran peranti.

IC melakukan semua kerja yang diperlukan, jadi hanya bahagian yang perlu kita pasangkan adalah dua kapasitor elektrolitik: C33 untuk beralih dan C34 untuk pintasan saluran -3.3V (pertimbangan pengurangan kebisingan). Kekerapan peralihan diabaikan dalam reka bentuk jika kita meletakkan litar cukup jauh dari bahagian penjanaan bentuk gelombang (Kami akan membincangkannya pada langkah Susun atur PCB).

Unit Pengawal Mikro - MCU

Ini adalah pengurus dan CEO sistem kami - kawalan, pengendalian rangkaian, penghantaran mesej dan sokongan UI - semuanya dilakukan oleh MCU.

MCU yang dipilih adalah Atmel ATMEGA32L, di mana L bermaksud operasi voltan yang disokong ∈ [2.7V: 5.5V]. Dalam kes kami, voltan operasi ialah + 3.3V.

Mari pertimbangkan blok operasi utama, yang perlu difahami, bekerja dengan MCU dalam reka bentuk kami:

  • External Oscillator - Merupakan komponen pilihan, kerana kami berminat dengan frekuensi operasi 8MHz
  • Peripheral Control, SPI Network - Semua peranti periferal (tidak termasuk ESP32) berkomunikasi dengan MCU melalui SPI. Terdapat tiga garisan bersama untuk semua peranti (SCK, MOSI, MISO) dan setiap litar periferal mempunyai garis CS (Chip Select) khusus. Peranti SPI yang merupakan bahagian peranti:

    1. D / A untuk kawalan amplitud - Saluran A
    2. D / A untuk kawalan amplitud - Saluran B
    3. Peranti AD9834 - Saluran A
    4. Peranti AD9834 - Saluran B
    5. D / A untuk kawalan voltan berat sebelah - Saluran A
    6. D / A untuk kawalan voltan berat sebelah - Saluran B
    7. Potensiometer Digital untuk tetapan kecerahan / kontras LCD
  • Sokongan LCD - Oleh kerana LCD adalah paparan watak 20 x 4 generik, kami menggunakan antara muka 4-bit (Garis D7: D4), pin kawalan (Garis RS, E) dan kawalan kecerahan / kontras (Garis V0 dan Anod)
  • Sokongan LED RGB - Modul ini adalah pilihan, tetapi ada penyambung LED RGB katod biasa dengan perintang yang sesuai, disambungkan ke MCU.
  • Power Control - MCU melakukan pemantauan sistem kuasa dalam mod masa nyata, dan menangani semua peristiwa kuasa yang diperlukan:

    1. VBAT_ADC - Pemantauan voltan bateri dan menentukan keadaannya (Saluran ADC0)
    2. PWR_IND - Petunjuk sambungan bekalan kuasa luaran (Saluran ADC1)
    3. PS_HOLD - Talian kuasa utama untuk semua sistem yang ditentukan. Apabila ditarik rendah oleh MCU, peranti dimatikan
    4. Ganggu terminal suis pintar - Pemantauan keadaan butang tekan
  • Pengurusan Rangkaian WiFi - ESP32: MCU berkomunikasi dengan ESP32 melalui antara muka UART. Oleh kerana 8MHz membolehkan kita menerapkan kadar baud 115200 dengan ralat yang agak kecil, kita dapat menggunakan ESP32 dalam litar tanpa pra-definisi perubahan kadar baud.

Pengaturcara AVR ISP

MCU kami diprogramkan melalui SPI dengan garis ulang (/ RST) harus ditarik TINGGI untuk operasi yang betul (jika tidak - MCU akan berada dalam keadaan semula selamanya).

Untuk membolehkan peranti diprogram dan diisi melalui USB, saya telah memasang programmer AVR ISP (Produk bersaiz kecil, yang dibeli dari eBay). Untuk mengekalkan sokongan USB yang lengkap pada peranti, perlu mengikat terminal USB Type-A (D +, D-, VBUS dan GND) dengan peranti AVR ISP.

Litar Penjanaan Bentuk Gelombang

Inti peranti adalah litar ini. AD9834 adalah peranti DDS berkuasa rendah yang menyediakan kita semua bentuk gelombang yang ingin kita dapatkan dari sistem. Litar mengandungi dua IC AD9834 bebas dengan pengayun 50MHz luaran yang dipisahkan (seperti yang dapat dilihat dalam skema). Sebab pengayun yang dipisahkan adalah pertimbangan pengurangan kebisingan rangkaian digital, jadi keputusannya adalah untuk menangani garis 50MHz yang betul dengan pengayun diletakkan berdekatan dengan AD9834.

Sekarang mari kita lihat beberapa matematik:

Oleh kerana peranti DDS beroperasi pada teknologi Roda Fasa dengan nilai output disimpan dalam daftar 28-bit, kita dapat menggambarkan penjanaan bentuk gelombang secara matematik:

dP (fasa) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2 ^ 28; ΔP ∈ [0: 2 ^ 28 - 1]

Dan menurut lembaran data AD9834, dengan mengambil kira frekuensi maksimum, resolusi frekuensi output dapat diperoleh:

Δf = k * f (pengayun) / f (maksimum) = 0.28 * 50M / 28M = 0.187 [Hz]

AD9834 IC menyediakan output arus analog untuk gelombang segitiga / sinus (terminal IOUT) dan output digital untuk gelombang persegi (terminal SIGN_OUT). Penggunaan bit isyarat agak sukar tetapi kita dapat mengatasinya - Setiap kali DDS melewati ambang nilai perbandingan, SIGN_OUT berkelakuan sewajarnya. Perintang 200Ohm dilampirkan pada output setiap saluran, jadi voltan output akan mempunyai nilai yang bermakna:

I (saluran tunggal) = V (output) / R (pemilihan voltan); V (output) = R (VS) * I (SS) = 200I (SS) [A]

Litar Kawalan Amplitud (D / A)

Menurut lembar data AD9834, amplitudanya dapat disesuaikan dengan memberikan arus ke sistem skala penuh DDS, jadi dengan bantuan dual D / A IC, kita dapat mengawal amplitud isyarat output dengan menyesuaikan arus itu. Sekali lagi, beberapa matematik:

I (skala penuh) = 18 * (V_REF - V_DAC) / R_SET [A]

Menurut skema dan meletakkan beberapa nombor untuk persamaan:

I (skala penuh) = 3.86 - 1.17 * V_DAC [A]

Modul D / A yang digunakan dalam reka bentuk adalah 12-bit MCP4922, ketika arus berada dalam julat [0mA: 3.86mA] dan fungsi amplitud linear adalah:

V (pilih amplitud) = 1 - [V (D / A) / (2 ^ 12 - 1)]

Litar Multiplexing Bentuk Gelombang

Output penjanaan gelombang persegi dan gelombang sinus / segitiga dipisahkan pada AD9834 oleh itu kita harus menggunakan litar multiplexing berkelajuan tinggi untuk kedua-dua output untuk membolehkan mengambil semua bentuk gelombang yang diinginkan dari satu saluran yang terpisah. IC multiplexer adalah suis analog ADG836L dengan rintangan on yang sangat rendah (~ 0.5Ohm).

Jadual pemilihan yang digunakan MCU untuk output seperti:

Pemilihan Mod [D2: D1] | Saluran Keluaran A | Saluran Keluaran B

00 | Sinus / Segitiga | Sinus / Segitiga 01 | Sinus / Segitiga | Petak 10 | Petak | Sinus / Segitiga 11 | Petak | Petak

Litar Kawalan Voltan Bias (D / A)

Salah satu ciri utama penjana gelombang adalah mengawal nilai DCnya. Dalam reka bentuk ini dilakukan dengan menetapkan voltan D / A yang diingini setiap saluran, dan voltan bias ini dijumlahkan dengan output multipleks yang telah kita bincangkan sedikit lebih awal.

Voltan yang diambil dari D / A terletak pada julat [0V: + 3.3V] jadi ada litar berasaskan op-amp yang memetakan julat D / A ke [-3.3V: + 3.3V], yang membolehkan peranti menyediakan jarak penuh komponen DC yang dikehendaki. Kami akan melangkau matematik analitik yang menjengkelkan, dan hanya fokus pada hasil akhir:

V_OUT (saluran B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (saluran A) = V_BIAS_A (+) - V_BIAS_A (-)

Kini, julat komponen DC terletak dalam julat [-3.3V: + 3.3V].

Lingkaran Penjumlahan - Komponen DC dan Output Bentuk Gelombang

Pada ketika ini, kita mempunyai semua yang kita perlukan untuk output peranti yang betul - Bias Voltage (komponen DC) dalam julat voltan penuh, dan output AD9834 berbilang. Kami akan mewujudkannya dengan menggunakan penjumlahan penjumlahan - konfigurasi op-amp

Mari melangkau matematik sekali lagi (Kami telah merangkumi banyak pendekatan matematik) dan tuliskan hasil akhir output penguat penjumlahan:

V (output peranti) = V (bias positif) - V (bias negatif) - V (keluaran berbilang) [V]

Oleh itu:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Penyambung output jenis BNC disambungkan dengan perintang pilihan (R54, R55; R56, R57). Sebabnya adalah bahawa sekiranya reka bentuknya tidak berfungsi, kita masih boleh memilih apakah kita ingin menggunakan penguat penjumlahan.

Nota Penting: Rangkaian perintang penguat penjumlahan akhir dapat disesuaikan oleh pereka, untuk mengubah amplitud maksimum yang dapat diambil dari peranti. Dalam kes saya, semua amp mempunyai keuntungan yang sama = 1, jadi amplitud buffer maksimum adalah 0.7Vpp untuk gelombang segitiga / sinus dan 3.3Vpp untuk gelombang persegi. Pendekatan matematik tertentu boleh didapati di antara gambar langkah yang dilampirkan.

ESP32 Sebagai Modul Luaran

MCU berkomunikasi dengan ESP32 melalui antara muka UART. Oleh kerana saya mahukan PCB saya sendiri untuk ESP32, terdapat 4 terminal yang tersedia untuk disambungkan: VCC, RX, TX, GND. J7 adalah penyambung antara muka antara PCB, dan ESP32 akan diperuntukkan sebagai modul luaran di dalam peranti.

Antara Muka Pengguna - LCD dan Pembesar suara

LCD yang digunakan adalah paparan watak 20 x 4 generik dengan antara muka 4-bit, Seperti yang dapat dilihat dari reka bentuknya terdapat potensiometer digital SPI yang terpasang pada terminal LCD "A" dan "V0" - tujuannya adalah untuk menyesuaikan kecerahan dan kontras modul LCD secara teratur.

Pembesar suara memberikan output suara untuk pengguna dengan penjanaan gelombang persegi sederhana dari MCU. BJT T1 mengawal arus melalui pembesar suara yang boleh berada dalam dua keadaan - ON / OFF.

Langkah 5: Reka Bentuk Perkakasan - Modul ESP32

Reka Bentuk Perkakasan - Modul ESP32
Reka Bentuk Perkakasan - Modul ESP32

ESP32 digunakan sebagai modul luaran untuk PCB utama. Komunikasi peranti didasarkan pada perintah AT, yang tersedia pada firmware peranti generik.

Tidak banyak yang perlu dikembangkan pada reka bentuk ini, tetapi terdapat beberapa nota untuk reka bentuk:

  • Untuk kegagalan pengendalian penggunaan modul UART ESP32 yang betul, saya telah memasang tiga perintang pilihan untuk kedua-dua garis TX dan RX. (0Ohm untuk setiap satu). Untuk konfigurasi standard, modul UART2 digunakan untuk perintah AT (R4, R7 mesti disolder)
  • Peranti mempunyai output 4 baris - VCC, GND, TX, RX.
  • Pin IO0 dan EN menilai operasi peranti dan harus dirancang seperti yang disediakan dalam skema

Semua ciri PCB yang akan kami bahas pada langkah berikut.

Langkah 6: Susun atur PCB

Susun atur PCB
Susun atur PCB
Susun atur PCB
Susun atur PCB
Susun atur PCB
Susun atur PCB

Matlamat merancang PCB

  1. Buat sistem tertanam untuk semua litar bersepadu pada papan yang sama
  2. Tingkatkan prestasi peranti dengan merancang PCB utama tunggal
  3. Pengurangan kos - jika anda ingin melihat harganya, reka bentuk kos rendah adalah kos yang BENAR-BENAR
  4. Minimumkan saiz papan elektronik
  5. Mudah diselesaikan - Kita boleh menggunakan TP (Titik ujian) untuk setiap kemungkinan garis kerosakan.

Parameter teknikal

Kedua-dua PCB: papan utama dan ESP32 mempunyai ciri yang sama untuk proses pembuatan - kos rendah dan dapat dikendalikan untuk tujuan kami. Mari lihat mereka:

A - Papan Utama

  • Saiz: 10cm x 5.8cm
  • Bilangan Lapisan: 2
  • Ketebalan PCB: 1.6mm
  • Ruang / lebar jejak minimum: 6 / 6mil
  • Minimum melalui diameter lubang: 0.3mm
  • Tembaga ke tepi PCB jarak minimum: 20 juta
  • Kemasan permukaan: HASL (Jenis perak yang cantik dengan warna murah)

B - Papan Utama

  • Saiz: 3cm x 4cm
  • Bilangan Lapisan: 2
  • Ketebalan PCB: 1.6mm
  • Ruang / lebar jejak minimum: 6 / 6mil
  • Minimum melalui diameter lubang: 0.3mm
  • Tembaga ke tepi PCB jarak minimum: 20 juta
  • Kemasan permukaan: HASL

Langkah 7: Kandang 3D

Kandang 3D
Kandang 3D

Saya tidak merancangnya sendiri, kerana pada masa itu saya meyakinkan peranti ini agar berfungsi, jadi saya sama sekali tidak mengetahui semua asas percetakan 3D. Oleh itu, saya telah menggunakan projek SCAD dari Thingiverse, dan memasang bukaan yang berlainan pada sempadan, mengikut spesifikasi peranti saya.

  1. Peranti Percetakan: Creality Ender-3
  2. Jenis Tempat Tidur: Kaca, tebal 5mm
  3. Diameter Filamen: 1.75mm
  4. Jenis filamen: PLA +
  5. Diameter muncung: 0.4mm
  6. Kelajuan Permulaan: 20mm / Sec
  7. Kelajuan Purata: 65mm / Sec
  8. Sokongan: N / A
  9. Isi: 25%
  10. Suhu:

    • Katil: 60 (oC)
    • Muncung: 215 (oC)
  11. Warna Filamen: Hitam
  12. Jumlah bukaan: 5
  13. Bilangan Panel Penutup: 4

    • TOP Shell
    • Shell Bawah
    • Panel hadapan
    • Panel Belakang

Langkah 8: Pelaksanaan Perisian - MCU

Pelaksanaan Perisian - MCU
Pelaksanaan Perisian - MCU
Pelaksanaan Perisian - MCU
Pelaksanaan Perisian - MCU
Pelaksanaan Perisian - MCU
Pelaksanaan Perisian - MCU

Pautan GitHub ke Android dan Atmega32 Code

Algoritma Perisian

Semua operasi yang dilakukan oleh MCU, dijelaskan dalam carta alir yang dilampirkan. Selain itu, terdapat kod terlampir untuk projek tersebut. Mari kita bahas spesifikasi perisian:

Kekuatan

Pada tahap ini, MCU melakukan semua urutan inisialisasi bersama dengan penentuan jenis komunikasi tersimpan dengan peranti Android: Komunikasi rangkaian WiFi langsung atau WLAN - data ini disimpan di EEPROM. Pengguna boleh mentakrifkan semula jenis pasangan peranti Android pada tahap ini.

Pasangan Peranti Android Langsung

Jenis pasangan ini berdasarkan penciptaan rangkaian WiFi oleh peranti FuncGen. Ia akan membuat AP (Titik Akses) dan pelayan TCP pada IP peranti tempatan dengan SSID tertentu (nama rangkaian WiFi) dan nombor port tertentu. Peranti harus menahan keadaan - terbuka untuk sambungan.

Apabila peranti Android disambungkan ke FuncGen, MCU memasuki mod AKTIF, dan bertindak balas mengikut arahan pengguna dari peranti Android.

Berpasangan WLAN

Untuk berkomunikasi di rangkaian WiFi tempatan, MCU harus memberikan arahan kepada ESP32 untuk membuat AP, berkomunikasi dengan peranti Android dan menukar data rangkaian penting:

  • Peranti Android menerima dari FuncGen alamat MACnya, menyimpannya dalam memori.
  • Peranti FuncGen menerima parameter bentuk WLAN yang dipilih oleh peranti Android: SSID, jenis keselamatan dan Kata Laluan dan menyimpannya di EEPROM.

Apabila peranti memang disambungkan ke WLAN yang sama, peranti Android akan mencari FuncGen dengan mengimbas semua alamat MAC peranti yang disambungkan ke WLAN. Apabila peranti Android menentukan kecocokan MAC, ia cuba berkomunikasi.

Penyambungan dan Pengendalian Negeri - MCU

Apabila peranti saling berkomunikasi, protokol (Lihat langkah pra-akhir) tetap sama, dan carta alir sama.

Pemantauan Keadaan Peranti

Selang masa memberikan maklumat yang diperlukan kepada MCU untuk pengendalian keadaan. Setiap kitaran pemasa terganggu, senarai parameter berikut dikemas kini:

  • Bekalan kuasa luaran - Hidup / Mati
  • Keadaan voltan bateri
  • Kemas kini UI untuk setiap penyesuaian
  • Tombol Tekan: Ditekan / Tidak Ditekan

Langkah 9: Pelaksanaan Perisian - Aplikasi Android

Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android
Pelaksanaan Perisian - Aplikasi Android

Aplikasi Android ditulis dalam gaya Java-Android. Saya akan cuba menerangkannya dengan cara yang sama seperti langkah sebelumnya - dengan membahagikan algoritma menjadi blok kod yang berasingan.

Urutan Kuasa

Urutan pertama peranti. Di sini logo aplikasi disajikan bersama dengan mengaktifkan GPS dan modul WiFi peranti Android (Jangan bimbang, GPS diperlukan untuk rangkaian WiFi sahaja yang perlu diimbas).

Menu utama

Setelah aplikasi di-boot, empat butang akan muncul di layar. Tindakan butang:

  1. Sambungan LANGSUNG: Memulakan sambungan ke FuncGen's AP oleh SSID IOT_FUNCGEN. Sekiranya sambungan berjaya, peranti masuk dalam mod UI utama.
  2. Sambungan WIFI: Peranti memeriksa apakah terdapat parameter data yang tersimpan dalam memori: wifi.txt, mac.txt. Sekiranya tidak ada data yang tersimpan, perangkat akan menolak permintaan pengguna dan memberikan pesan pop timbul bahawa pemasangan WLAN harus dilakukan terlebih dahulu.
  3. PAIRING: Berkomunikasi dengan FuncGen dengan cara yang sama seperti LANGSUNG LANGSUNG, tetapi sebagai ganti pertukaran mesej berterusan, ada satu jabat tangan. Peranti Android memeriksa apakah sudah tersambung ke rangkaian WiFi, dan meminta pengguna memasukkan kata laluan. Sekiranya penyambungan semula berjaya, peranti Android menyimpan SSID dan kata laluan dalam fail wifi.txt. Setelah berjaya berkomunikasi dengan FuncGen, ia menyimpan alamat MAC yang diterima dalam fail mac.txt.
  4. Keluar: Cukup kata:)

Pengurus Pengimbasan WiFi

Saya mahu aplikasi ini dapat beroperasi sepenuhnya dan tanpa penyesuaian di luar aplikasi dibuat. Oleh itu, saya telah merancang Pengimbas WiFi, yang melakukan semua operasi yang diperlukan untuk menyambung ke rangkaian WiFi dengan kunci laluan dan SSID yang diketahui.

Penghantaran Data dan Komunikasi TCP

Ini adalah blok kod utama dalam aplikasi. Untuk semua unit UI ada pesan yang ditentukan dalam format tertentu (Langkah pra-final), yang memaksa FuncGen memberikan output yang diinginkan untuk saluran. Terdapat tiga jenis bidang UI dalam aktiviti:

  1. Cari Bar: Di sini kita menentukan parameter output FuncGen sebenar

    1. Amplitud
    2. Offset DC
    3. Kecerahan LCD
    4. Kontras LCD
  2. Suntingan Teks: Untuk memastikan nilai integer dapat ditentukan dengan tepat dan tepat, input frekuensi dilakukan melalui kotak teks nombor sahaja
  3. Butang: Pemilihan parameter dari senarai yang ada:

    1. Jenis Gelombang

      1. Benar
      2. Segi tiga
      3. DC
      4. Petak
      5. MATI
    2. Dapatkan maklumat

      1. Status Bateri (Peratusan)
      2. Status AC (Bekalan Kuasa Luaran)
    3. Pilihan Boot (Untuk FuncGen MCU)

      1. Tetapan kilang
      2. Mula semula
      3. Menutup
      4. Langsung - Mulakan semula dengan mod pasangan langsung
      5. WLAN - Mulakan semula dengan mod berpasangan WLAN
    4. Keluar ke Menu Utama: Cukup Berkata:)

Langkah 10: Menguji

Disyorkan: