Talaan ng mga Nilalaman:
- Hakbang 1: I-block ang Diagram - Hardware
- Hakbang 2: I-block ang Diagram - Networking
- Hakbang 3: Mga Bahagi, Mga Tool, IDE at Bill ng Mga Materyales
- Hakbang 4: Disenyo ng Hardware - Pangunahing Lupon
- Hakbang 5: Disenyo ng Hardware - Module ng ESP32
- Hakbang 6: Layout ng PCB
- Hakbang 7: 3D Enclosure
- Hakbang 8: Pagpapatupad ng Software - MCU
- Hakbang 9: Pagpapatupad ng Software - Android App
- Hakbang 10: Pagsubok
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Malapit sa pagtatapos ng ika-20 siglo, ang iba`t ibang mga teknolohikal na pagbabago ay lumitaw, lalo na sa larangan ng komunikasyon; ngunit hindi lamang. Para sa amin, ang mga gumagamit, consumer at inhinyero ay mabilis na bumuo ng mga elektronikong aparato, na maaaring gawing mas madali ang aming buhay: Mga Smart relo, matalinong tahanan, smartphone atbp.
Dahil ang lahat ay maaaring "matalino" sa kasalukuyan, napagpasyahan kong magdisenyo ng isang napaka-kapaki-pakinabang na aparato upang maging bahagi ng mahahalagang elektronikong kagamitan sa lab - Portable Function Generator, makokontrol ng Android OS based smartphone sa pamamagitan ng WiFi direct o WiFi Local Area Network (WLAN).
Bakit namin itatayo ang aparatong ito?
Ang isang karamihan sa mga kagamitan sa pagsubok ay medyo mahal ngayon. At kung minsan, ang mga aparatong ito ay hindi portable. Bilang isang solusyon para sa mataas na presyo, kawalan ng kakayahang dalhin at kawalan ng pag-access sa network ng aparato, nagbibigay ang aparato ng dalawahang generator waveform generator, na talagang portable at mayroong isang walang limitasyong pag-access sa network - alinman sa internet o lokal.
At syempre, ang aparato ay dapat na itayo dahil sa sigasig, pagsunod sa mga prinsipyo ng DIY - Minsan kailangan lang nating gawin ang mga bagay upang maging maayos ang pakiramdam:)
Pangunahing tampok
Power Supply
- Konektor ng USB Type-A, para sa parehong mga sistema ng supply ng kuryente at programa
- Kumpletuhin ang sistema ng pamamahala ng baterya ng Li-Ion - Nagcha-charge at matatag na mga mode
- Pagpapatupad ng Smart Switch - hindi na kailangan ng switch ng toggling ng kuryente
- Dobleng supply ng kuryente: + 3.3V at -3.3V para sa pagbuo ng simetriko boltahe na boltahe
Pagbuo ng Waveform
- Pagpapatupad ng antas ng DC sa output cascade - bias na form ng alon sa pagitan ng mga hangganan ng boltahe
- Batay sa DDS na 4 na uri ng pagbuo ng waveform - Sine, tatsulok, parisukat at DC
- Hanggang sa 10MHz dalas ng suporta
- Kasalukuyang output hanggang sa 80mA na may 500mW maximum na kakayahang magamit ang kuryente
- Mga pinaghiwalay na channel para sa pagbuo ng waveform - split AD9834 based circuit
Komunikasyon
- Pagpapatupad ng ESP32 - Naaangkop na mga kakayahan sa WiFi
- Kumpletuhin ang suporta ng TCP / IP ng aparato ng generator at Android smartphone
- Kakayahang mag-imbak ng mga parameter ng gumagamit para sa bawat ikot ng aparato
- Pagsubaybay ng estado - ang parehong mga system ay may kamalayan sa bawat isa pang estado: FuncGen (tawagan natin ito sa ganitong paraan mula ngayon) at smartphone.
User Interface
- 20 x 4 Character LCD na may simpleng interface ng data na 4-bit
- Android application - kumpletuhin ang kontrol ng gumagamit sa FuncGen device
- Buzzer circuit - tunog feedback sa gumagamit
Hakbang 1: I-block ang Diagram - Hardware
Unit ng Microcontroller - ATMEGA32L
Ang Microcontroller ay isang programmable chip na binubuo ng lahat ng pagpapaandar ng computer na naninirahan sa isang solong electronic chip. Sa aming kaso, ito ay ang "utak" at isang pangunahing bahagi ng system. Ang layunin ng MCU ay upang pamahalaan ang lahat ng mga peripheral system, pangasiwaan ang komunikasyon sa pagitan ng mga sistemang ito, pagkontrol sa pagpapatakbo ng hardware at pagbibigay ng kumpletong suporta para sa interface ng gumagamit at pakikipag-ugnay nito sa isang tunay na gumagamit. Ang proyektong ito batay sa ATMEGA32L MCU, na maaaring gumana sa 3.3V at dalas ng 8MHz.
Komunikasyon SoC - ESP32
Ang SoC (System on Chip) na ito ay nagbibigay ng kumpletong suporta sa komunikasyon para sa FuncGen - Pag-access sa mga kakayahan sa WiFi kabilang ang direkta, lokal o komunikasyon sa internet. Ang mga layunin ng aparato ay:
- Paghawak ng paghahatid ng data sa pagitan ng Android app at FuncGen aparato
- Pamamahala ng mga mensahe ng control / data
- Suporta ng tuloy-tuloy na pagsasaayos ng TCP / IP Client-Server
Sa aming proyekto ang SoC ay espressif ESP32, masyadong popular iyon upang mapalawak pa ito:)
Sistema ng Pamamahala ng Baterya ng Li-Ion
Upang mabago ang aming aparato sa isang portable, naglalaman ang aparato ng naka-disenyo ng circuit ng singilin ng baterya ng Li-Ion. Ang circuit ay batay sa MC73831 IC, na may kontrol na kasalukuyang pagsingil sa pamamagitan ng pag-aayos ng halaga ng isang solong resistor sa programa (Tatalakayin namin ang paksang ito sa hakbang sa Skema). Ang pag-input ng power supply ng aparato ay isang konektor ng USB Type-A.
Smart Switch Circuit
Nagbibigay ang circuit switch ng kuryente ng switch ng aparato ng kumpletong kontrol ng software sa pagkakasunud-sunod ng pag-shutdown ng aparato at kawalan ng pangangailangan para sa panlabas na switch ng toggle para sa cutter ng boltahe ng baterya ng aparato. Ang lahat ng mga pagpapatakbo ng kuryente ay ginagawa sa pamamagitan ng pagpindot sa push button at software ng MCU. Sa ilang mga kaso, kakailanganin na i-shut down ang system: Mababang boltahe ng baterya, mataas na boltahe ng pag-input, error sa komunikasyon at iba pa. Ang Smart switch ay batay sa STM6601 smart switch IC, na mura at napaka-friendly na paglaruan.
Pangunahing Yunit ng Pag-supply ng Kuryente
Ang yunit na ito ay binubuo ng dalawang mga circuit ng suplay ng kuryente na hinihimok ng baterya - + 3.3V para sa lahat ng mga digital / analog supply circuit at -3.3V para sa FunGen symmetrical output na may kaugnayan sa potensyal na 0V (ibig sabihin, ang nabuong waveform ay maaaring maitakda sa [-3.3V: 3.3V] rehiyon.
- Pangunahing supply circuit ay batay sa LP3875-3.3 LDO (mababang pagbaba) 1A linear voltage regulator.
- Ang pangalawang supply circuit ay batay sa LM2262MX IC, na gumaganap ng DC-DC na negatibong boltahe na pagbabago sa pamamagitan ng capacitor-charge-pump - system na batay sa IC.
Sistema ng Mga Generator ng Waveform
Ang sistema ay dinisenyo na may diin sa magkakahiwalay na DDS (direktang digital synthesis) na isinama na mga circuit, na nagpapahintulot sa kumpletong pagkontrol ng henerasyon ng alon sa pamamagitan ng SPI ng MCU (serial peripheral interface). Ang mga circuit na ginamit sa disenyo ay mga Analog Devices AD9834 na maaaring magbigay ng iba't ibang uri ng mga waveform. Ang mga hamon na kailangan nating harapin habang nagtatrabaho kasama ang AD9834 ay:
- Naayos na amplitude ng waveform: Ang Waveform amplitude ay kinokontrol ng panlabas na module ng DAC
- Walang pagsasaalang-alang sa antas ng offset DC: Pagpapatupad ng mga summing circuit na may nais na mga halaga ng offset ng DC
- Paghiwalayin ang mga output para sa square wave at triangle / sine wave: Pagpapatupad ng high frequency switching circuit kaya't ang bawat solong output ng channel ay maaaring magbigay ng lahat ng nais na waveforma: sine, triangle, square at DC.
Liquid Crystal Display
Ang LCD ay isang bahagi ng UI (interface ng gumagamit), at ang layunin nito ay payagan ang gumagamit na maunawaan kung ano ang ginagawa ng aparato sa real time mode. Nakikipag-ugnay ito sa gumagamit sa bawat estado ng aparato.
Buzzer
Simpleng circuit ng tone generator para sa karagdagang feedback mula sa aparato patungo sa gumagamit.
Pinagsama-samang ISP Programmer
Mayroong isang nagpapatuloy na problema para sa bawat engineer pagdating sa proseso ng pagprograma: Palaging may pinakamasamang pangangailangan na i-disassemble ang produkto upang mai-reprogram ito ng isang bagong firmware. Upang mapagtagumpayan ang abala, ang programmer ng AVR ISP ay naka-attach sa aparato mula sa loob, samantalang ang data ng USB at mga linya ng kuryente ay nakatali sa konektor ng USB Type-A ng aparato. Sa pagsasaayos na ito, kailangan lang naming i-plug ang aming FuncGen sa pamamagitan ng USB cable para sa alinman sa pagprograma o pagsingil!
Hakbang 2: I-block ang Diagram - Networking
Dobleng Channel Function Generator
Pangunahing aparato. Ang isa na aming nasuri sa nakaraang hakbang
ESP-WROOM-32
Pinagsamang System-on-Chip na may mga kakayahan sa WiFi at BLE. Ang SoC ay naka-attach sa pangunahing board (Tatalakayin namin ito sa hakbang sa eskematiko) sa pamamagitan ng module ng UART at gumaganap bilang isang transciever ng mensahe sa pagitan ng pangunahing aparato at Android smartphone.
Lokal na Network ng WiFi
Ang smartphone at aparato ay makikipag-usap sa pamamagitan ng direktang WiFi o lokal na network ng lugar, batay sa pagsasaayos ng server ng TCP / client. Kapag kinikilala ng mga aparato ang bawat isa sa WiFi, ang pangunahing aparato ay lumilikha ng TCP server na may naaangkop na mga parameter at makapagpadala / makatanggap ng mga mensahe. Gumaganap ang aparato bilang isang pangalawa sa smartphone. Ang Android aparato sa kabilang banda, ay kumokonekta sa server ng TCP bilang isang aparato ng network ng client, ngunit itinuturing na pangunahing transmitter ng mensahe - ang smartphone ay ang nagpasimula ng kumpletong siklo ng komunikasyon: Pagpapadala ng mensahe - pagtanggap ng tugon.
Android Smartphone
Ang aparato ng smartphone na nakabatay sa Android OS na tumatakbo sa FuncGen application
Hakbang 3: Mga Bahagi, Mga Tool, IDE at Bill ng Mga Materyales
Bill Of Materials (Tingnan ang nakalakip na talahanayan ng XLS)
Mga Koneksyon sa UI At System
- 1 x 2004A Char-LCD 20x4 Blue
- 1 x USB Type B Connector
- 1 x 10 Itakda ang Mini Micro JST XH 2.54mm 4 Pin
- 1 x 6pcs Sandali SW
Pag-order ng PCB (Ayon sa Seeed Studio)
Batayang Materyal FR-4
Bilang ng Mga Layer 2 layer
Dami ng PCB 10
Bilang ng Iba't Ibang Disenyo 1
Kapal ng PCB 1.6mm
PCB Kulay Asul
Ibabaw ng Tapos na HASL
Minimum na Solder Mask Dam 0.4mm ↑
Timbang ng Copper 1oz
Minimum na Laki ng Drill Hole 0.3mm
Subaybayan ang Lapad / Puwang 6/6 mil
Naka-tubong Half-hole / Castellated Holes No.
Impedance Control Hindi
Mga kasangkapan
- Mainit na glue GUN
- Mga Tweezer
- Pamutol
- ~ 22AWG wire para sa mga hangarin sa paghawak ng madepektong paggawa
- Panghinang / istasyon
- Lata na panghinang
- Istasyon ng muling paggawa ng SMD (opsyonal)
- 3D printer (Opsyonal)
- Pinapasok na file
- Programmer ng AVR ISP
- USB sa Serial Converter (Opsyonal, para sa mga layuning pag-debug)
Integrated Development Environment (IDE) at Software
- Autodesk EAGLE o Cadence Schematic Editor / Allegro PCB Editor
- OpenSCAD (Opsyonal)
- Ultimaker Cura (Opsyonal)
- Saleae Logic (Para sa pag-troubleshoot)
- Atmel Studio 6.3 o mas mataas pa
- Android Studio o Eclipse IDE
- Serial Monitor ng Docklight / Iba pang software ng pagsubaybay sa COM port
- ProgISP para sa AVR ATMEGA32L flash program
Hakbang 4: Disenyo ng Hardware - Pangunahing Lupon
Battery Circuit Management
Ang circuit ng pagsingil ng baterya ay batay sa MCP7383 IC, na nagbibigay-daan sa amin upang pumili ng isang nais na kasalukuyang singilin para sa baterya ng Li-Ion - 3.7V na may kapasidad na 850mAh. Ang kasalukuyang singilin ay itinakda ng halaga ng resistor ng programa (R1) sa aming kaso
R1 = 3KOhm, ako (singil) = 400mA
Ang USB boltahe VBUS ay nasala ng π-filter (C1, L3, C3) at kumikilos bilang isang mapagkukunan ng kuryente para sa pagsingil ng circuit.
Pinapayagan ng boltahe divider circuit (R2, R3) ang MCU na ipahiwatig kung ang panlabas na USB power supply ay konektado o hindi, sa pamamagitan ng pagbibigay ng sumusunod na boltahe sa MCU A / D channel:
V (pahiwatig) ~ (2/3) V (BUS)
Dahil ang aming A / D ng ATMEGA32L ay 12-bit, maaari naming kalkulahin ang digital range:
A / D (saklaw) = 4095V (pahiwatig) / V (REF).
A / D ∈ [14AH: FFFH]
Smart Switch Power Unit
Pinapayagan ng circuit ang system na makontrol ang suplay ng kuryente sa bawat nakadisenyo na bloke kapwa mula sa push-button at software sa MCU at batay sa STM6601 Smart-Switch na may pagpipilian na POWER sa halip na I-RESET. Ang mga terminal na nais naming isaalang-alang ay ang mga ito:
- PSHOLD - Input na linya, na tumutukoy sa estado ng aparato: kung hinugot ang LOW, hindi pinagana ng aparato ang lahat ng pangalawang mga yunit ng supply ng kuryente (+ 3.3V at -3.3V). Kung gaganapin MATAAS - ang aparato ay nagpapanatili ng ON estado.
- nSR at nPB - Mga linya ng pag-input. Mga terminal ng push button. Kapag nahahanap ang pagkahulog sa mga pin na ito, sinusubukan ng aparato na ipasok ang power up / down mode
- nINT - Linya ng output. Hinugot MABABA sa tuwing pinipindot ang push button
- EN - Output na linya, ay ginagamit bilang kapangyarihan paganahin para sa pangalawang power supply unit. Habang gaganapin mababa, ang parehong pangalawang mga supply ng kuryente ay hindi pinagana
Mayroong ilang mahahalagang tala bago magpatuloy sa huling disenyo:
- Ang PSHOLD ay dapat na hilahin hanggang sa 3.3V, sapagkat may mga kaso kung pinipilit ng MCU ang lahat ng I / Os na nasa estado ng HIGH-Z. Sa kasong ito, ang estado ng PSHOLD mula sa MCU ay hindi kilala at maaaring kapansin-pansing makaapekto sa proseso ng pagproseso ng aparato.
- Ang STM6601 ay dapat na mag-order na may isang pagpipilian sa pagsasaayos ng EN sa mahabang pindutin, sa halip na RESET na pagpipilian (Nabagsak ako sa isang iyon).
Power Supply Unit: + 3.3V
Pangunahing supply ng kuryente para sa lahat ng mga system sa aming proyekto. Kapag ang linya ng + 3.3V ay gaganapin sa antas ng GND (ibig sabihin Walang regalo sa boltahe), lahat ng IC maliban sa smart switch ay hindi pinagana. Ang circuit ay batay sa LDO LP-3875-3.3 IC, na may kakayahang kontrolin sa pamamagitan ng EN terminal at magbigay ng kasalukuyang hanggang sa 1A.
Ang pinagmulan ng kuryente para sa circuit na ito ay ang boltahe ng baterya, na may nakalakip na tagapagpahiwatig ng A / D para sa pandama ng VBAT sa pagsasaayos, katulad ng VBUS sensing circuit. Sa kasong ito, bahagyang magkakaiba ang mga kalkulasyon;
V (Battery-to-A / D) = 0.59V (Baterya); A / D (saklaw) ∈ [000H: C03H]
Power Supply Unit: -3.3V
Pinapayagan ka ng negatibong boltahe ng supply circuit na makabuo ng mga simetriko na form ng alon na may DC factor na 0V (ibig sabihin, ang average na halagang halaga ng alon ay maaaring maging 0V). Ang circuit na ito ay batay sa LM2662MX IC - DC / DC converter na nagpapatakbo sa isang "charge pump" na pamamaraan. Ang maximum na kasalukuyang output ng circuit ay 200mA na sapat para sa aming mga kinakailangan sa disenyo - limitado kami sa kasalukuyang output na 80mA mula sa channel ng bawat aparato.
Ginagawa ng IC ang lahat ng kinakailangang gawain, kaya ang mga bahagi lamang na kailangan namin upang ikabit ay dalawang electrolytic capacitor: C33 para sa paglipat at C34 para sa -3.3V bypass ng linya (pagsasaalang-alang sa pagbawas ng ingay). Ang dalas ng paglipat ay bale-wala sa disenyo kung inilalagay namin ang circuit na sapat na malayo mula sa mga bahagi ng henerasyon ng waveform (Tatalakayin namin ito sa hakbang ng PCB Layout).
Unit ng Microcontroller - MCU
Ito ang manager at ang CEO ng aming system - kontrol, paghawak ng network, paghahatid ng mensahe at suporta sa UI - lahat ay sa pamamagitan ng MCU.
Ang napili na MCU ay ang Atmel ATMEGA32L, kung saan ang L ay nangangahulugang suportado ang operasyon ng boltahe ∈ [2.7V: 5.5V]. Sa aming kaso, ang boltahe ng operating ay + 3.3V.
Isaalang-alang natin ang pangunahing mga bloke ng pagpapatakbo, na kinakailangan upang maunawaan, na gumagana sa MCU sa aming disenyo:
- Panlabas na Oscillator - Ay isang opsyonal na sangkap, dahil interesado kami sa dalas ng operating ng 8MHz
-
Peripheral Control, SPI Network - Ang lahat ng mga aparatong paligid (hindi kasama ang ESP32) ay nakikipag-usap sa MCU sa pamamagitan ng SPI. Mayroong tatlong mga ibinahaging linya para sa lahat ng mga aparato (SCK, MOSI, MISO) at bawat peripheral circuit ay may nakalaang linya na CS (Chip Select). Ang mga aparatong SPI na bahagi ng aparato:
- D / A para sa control ng amplitude - Channel A
- D / A para sa control ng amplitude - Channel B
- AD9834 aparato - Channel A
- AD9834 aparato - Channel B
- D / A para sa bias voltage control - Channel A
- D / A para sa kontrol sa boltahe ng bias - Channel B
- Digital Potentiometer para sa mga setting ng ningning / kaibahan ng LCD
- Suporta sa LCD - Dahil ang LCD ay isang generic na 20 x 4 character display, gumagamit kami ng 4-bit interface (Mga Linya D7: D4), mga control pin (Mga Linya RS, E) at kontrol ng ilaw / kaibahan (Mga Linya V0 at Anode)
- Suporta ng RGB LED - Opsyonal ang modyul na ito, ngunit may karaniwang cathode RGB LED konektor na may naaangkop na resistors, na konektado sa MCU.
-
Power Control - Gumagawa ang MCU ng pagsubaybay sa system ng kuryente sa real time mode, at hinahawakan ang lahat ng kinakailangang mga kaganapan sa kuryente:
- VBAT_ADC - Pagsubaybay sa boltahe ng baterya at pagtukoy ng estado nito (ADC0 Channel)
- PWR_IND - Indikasyon ng panlabas na koneksyon ng supply ng kuryente (ADC1 Channel)
- PS_HOLD - Pangunahing kapangyarihan ang nagbibigay-daan sa linya para sa lahat ng mga tinukoy na system. Kapag hinila pababa ng MCU, pinapagana ang aparato
- Makagambala sa terminal ng matalinong paglipat - Pagsubaybay ng estado ng push button
- Pamamahala sa WiFi Network - ESP32: Nakikipag-usap ang MCU sa ESP32 sa pamamagitan ng interface ng UART. Dahil pinapayagan kami ng 8MHz na ipatupad ang rate ng baud na 115200 na may isang maliit na error, maaari naming gamitin ang ESP32 sa circuit nang walang paunang kahulugan ng mga pagbabago sa rate ng baud.
Programmer ng AVR ISP
Ang aming MCU ay na-program sa pamamagitan ng SPI na may resetting line (/ RST) ay kailangang hilahin ng TAAS para sa isang wastong operasyon (kung hindi - makikita ng MCU ang kanyang sarili sa isang reset na estado magpakailanman).
Upang pahintulutan ang aparato na parehong ma-program at ma-charge sa pamamagitan ng USB, ikinabit ko ang AVR ISP programmer (Maliit na sukat na produkto, binili mula sa eBay). Upang mapanatili ang kumpletong suporta sa USB ng aparato, kailangang itali ang mga terminal ng USB Type-A (D +, D-, VBUS at GND) sa AVR ISP device.
Circuit ng Henerasyon ng Waveform
Ang core ng aparato ay ang mga circuit na ito. Ang AD9834 ay isang aparatong DDS na may mababang lakas na nagbibigay sa amin ng lahat ng mga waveform na nais naming makuha mula sa system. Naglalaman ang mga circuit ng dalawang independiyenteng AD9834 ICs na may hiwalay na panlabas na 50MHz oscillator (tulad ng makikita sa mga iskema). Ang dahilan para sa pinaghiwalay na oscillator ay isang pagsasaalang-alang sa pagbawas ng ingay sa digital, kaya't ang desisyon ay upang hawakan ang wastong mga linya ng 50MHz na may mga oscillator na nakalagay na katabi ng AD9834.
Ngayon tingnan natin ang ilang matematika:
Dahil ang aparato ng DDS ay nagpapatakbo sa teknolohiya ng Phase Wheel na may halaga ng output na gaganapin sa isang 28-bit na rehistro, maaari naming ilarawan ang henerasyon ng waveform na matematikal:
dP (phase) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2 ^ 28; ΔP ∈ [0: 2 ^ 28 - 1]
At ayon sa AD9834 datasheet, na isinasaalang-alang ang maximum na dalas, maaaring makuha ang resolusyon ng dalas ng output:
Δf = k * f (oscillator) / f (maximum) = 0.28 * 50M / 28M = 0.187 [Hz]
Ang AD9834 ICs ay nagbibigay ng isang kasalukuyang kasalukuyang output para sa triangle / sine wave (IOUT terminal) at digital output para sa square wave (SIGN_OUT terminal). Ang paggamit ng pag-sign bit ay medyo mahirap ngunit mahawakan namin ito - Sa tuwing ipinapasa ng DDS ang threshold ng halaga ng paghahambing, kumikilos nang naaayon ang SIGN_OUT. Ang isang 200Ohm risistor ay nakakabit sa output ng bawat channel, kaya ang output boltahe ay magkakaroon ng isang makabuluhang halaga:
I (solong channel) = V (output) / R (pagpili ng boltahe); V (output) = R (VS) * I (SS) = 200I (SS) [A]
Amplitude Control (D / A) Circuits
Ayon sa datasheet ng AD9834, ang amplitude nito ay maaaring maiakma sa pamamagitan ng pagbibigay ng kasalukuyang sa system ng buong sukat ng DDS, kaya sa tulong ng dalawahang D / A IC, makokontrol natin ang amplitude ng signal signal sa pamamagitan ng pag-aayos ng kasalukuyang ito. Muli, ilang matematika:
Ako (buong sukat) = 18 * (V_REF - V_DAC) / R_SET [A]
Ayon sa mga iskema at paglalagay ng ilang mga numero sa equation:
Ako (buong sukat) = 3.86 - 1.17 * V_DAC [A]
Ang D / A module na ginamit sa disenyo ay 12-bit MCP4922, kapag ang kasalukuyang nasa saklaw ng [0mA: 3.86mA] at ang linear amplitude function ay:
V (select amplitude) = 1 - [V (D / A) / (2 ^ 12 - 1)]
Waveform Multiplexing Circuit
Ang mga output ng henerasyon ng alon at sine / tatsulok na alon ay pinaghiwalay sa AD9834 samakatuwid kailangan naming gumamit ng isang mataas na bilis ng multiplexing circuit para sa parehong mga output upang payagan ang pagkuha ng lahat ng nais na mga waveform mula sa isang solong pinaghiwalay na channel. Ang multiplexer IC ay isang ADG836L analog switch na may napakababang paglaban (~ 0.5Ohm).
Ang talahanayan ng pagpili na ginagamit ng MCU para sa mga output tulad nito:
Pagpili ng Mode [D2: D1] | Output Channel A | Output Channel B
00 | Sine / Tatsulok | Sine / Triangle 01 | Sine / Tatsulok | Parisukat 10 | Parisukat | Sine / Triangle 11 | Parisukat | Kuwadro
Mga circuit ng Bias Voltage Control (D / A)
Ang isa sa mga pangunahing tampok ng waveform generator ay upang makontrol ang halagang DC nito. Sa disenyo na ito ay tapos na ito sa pamamagitan ng pagtatakda ng nais na boltahe ng D / A sa bawat channel, at ang mga bias voltase na ito ay naipagsama sa mga multiplexed na output na tinalakay natin nang medyo mas maaga.
Ang boltahe na nakuha mula sa D / A ay nakasalalay sa saklaw na [0V: + 3.3V] kaya't mayroong isang op-amp based circuit na nagma-map ang saklaw ng D / A sa [-3.3V: + 3.3V], pinapayagan ang aparato na magbigay ng buong saklaw ng nais na bahagi ng DC. Malalampasan namin ang nakakainis na analitik na matematika, at magtutuon lamang sa huling mga resulta:
V_OUT (channel B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (channel A) = V_BIAS_A (+) - V_BIAS_A (-)
Ngayon, ang saklaw ng bahagi ng DC na matatagpuan sa saklaw [-3.3V: + 3.3V].
Summing Circuits - Mga Component ng DC at Mga Output ng Waveform
Sa puntong ito mayroon kaming lahat na kailangan namin para sa tamang output ng aparato - Bias Voltage (bahagi ng DC) sa buong saklaw ng boltahe, at multiplexed na output ng AD9834. Gagawin namin iyon sa pamamagitan ng paggamit ng summing amplifier - op-amp config
Laktawan ulit ang matematika muli (Nasakop na natin ang maraming diskarte sa matematika) at isulat ang pangwakas na resulta ng output ng summing amplifier:
V (output ng aparato) = V (positibong bias) - V (negatibong bias) - V (multiplexed output) [V]
Samakatuwid:
V_OUT = ΔV_BIAS - V_AD9834 [V]
Ang mga konektor ng output ng uri ng BNC ay konektado sa isang pagpipilian ng resistors (R54, R55; R56, R57). Ang dahilan para doon ay na sa kaso na ang disenyo ay maaaring hindi gumana, maaari pa rin tayong pumili kung nais naming gumamit ng summing amplifier.
Mahalagang Tandaan: Ang mga network ng resistor ng pangwakas na mga amplifier na summing ay maaaring iakma ng isang taga-disenyo, upang mabago ang maximum na amplitude na maaaring makuha mula sa aparato. Sa aking kaso, lahat ng mga amp ay nagbabahagi ng parehong pakinabang = 1, sa gayon ang maximum na buffered amplitude ay 0.7Vpp para sa tatsulok / sine na alon at 3.3Vpp para sa square wave. Ang tiyak na diskarte sa matematika ay matatagpuan sa mga nakakabit na imahe ng hakbang.
Ang ESP32 Bilang Panlabas na Modyul
Nakikipag-usap ang MCU sa ESP32 sa pamamagitan ng interface ng UART. Dahil ginusto ko ang aking sariling PCB para sa ESP32, mayroong 4 na mga terminal na magagamit upang kumonekta: VCC, RX, TX, GND. Ang J7 ay isang konektor ng interface sa pagitan ng mga PCB, at ang ESP32 ay ilalaan bilang panlabas na module sa loob ng aparato.
User Interface - LCD at Speaker
Ang LCD na ginamit ay isang generic na 20 x 4 character display na may isang 4-bit interface, Tulad ng makikita mula sa disenyo mayroong isang SPI digital potentiometer na nakakabit sa mga LCD terminal na "A" at "V0" - ang layunin nito ay upang ayusin ningning at kaibahan ng LCD module na programmatically.
Nagbibigay ang speaker ng output ng tunog para sa gumagamit sa pamamagitan ng simpleng henerasyon ng square wave mula sa MCU. Kinokontrol ng BJT T1 ang kasalukuyang sa pamamagitan ng speaker na maaaring nasa dalawang estado lamang - ON / OFF.
Hakbang 5: Disenyo ng Hardware - Module ng ESP32
Ginamit ang ESP32 bilang isang panlabas na module para sa pangunahing PCB. Ang komunikasyon ng aparato ay batay sa mga utos ng AT, na magagamit sa firmware ng isang generic na aparato.
Walang gaanong mapapalawak sa disenyo na ito, ngunit may ilang mga tala para sa disenyo:
- Para sa kabiguan sa paghawak ng paggamit ng wastong module ng UART ng ESP32, na-attach ko ang tatlong mga resistors ng pagpili para sa parehong mga linya ng TX at RX. (0Ohm para sa bawat isa). Para sa karaniwang pagsasaayos, ang module ng UART2 ay ginagamit para sa mga AT command (R4, R7 dapat na solder)
- Ang aparato ay mayroong 4-line output - VCC, GND, TX, RX.
- Sinusuri ng mga pin ng IO0 at EN ang pagpapatakbo ng aparato at dapat na idinisenyo tulad ng ibinigay sa mga iskema
Ang lahat ng mga tampok ng PCB ay sasakupin namin sa sumusunod na hakbang.
Hakbang 6: Layout ng PCB
Ang mga layunin ng pagdidisenyo ng isang PCB
- Lumikha ng naka-embed na system para sa lahat ng mga integrated circuit sa parehong board
- Pagbutihin ang pagganap ng aparato sa pamamagitan ng pagdidisenyo ng isang pangunahing PCB
- Pagbawas ng gastos - kung nais mong tingnan ang mga presyo, ang mga disenyo ng murang gastos ay totoong mababang gastos
- I-minimize ang laki ng electronic board
- Madaling i-troubleshoot - Maaari naming gamitin ang TPs (Mga puntos sa pagsubok) para sa bawat posibleng linya na hindi gumana.
Mga Parameter na Teknikal
Ang parehong mga PCB: pangunahing at board ng ESP32 ay nagbabahagi ng parehong mga katangian para sa proseso ng pagmamanupaktura - mababang gastos at maaaring mapatakbo para sa aming mga layunin. Tingnan natin sila:
A - Pangunahing Lupon
- Laki: 10cm x 5.8cm
- Bilang ng mga Layer: 2
- Kapal ng PCB: 1.6mm
- Minimum na bakas / puwang ng bakas: 6 / 6mil
- Minimum sa pamamagitan ng diameter ng butas: 0.3mm
- Ang tanso sa gilid ng PCB minimum na distansya: 20mil
- Pagtatapos sa ibabaw: HASL (Medyo maganda ang hitsura ng kulay na pilak na murang uri)
B - Pangunahing Lupon
- Laki: 3cm x 4cm
- Bilang ng mga Layer: 2
- Kapal ng PCB: 1.6mm
- Minimum na bakas / puwang ng bakas: 6 / 6mil
- Minimum sa pamamagitan ng diameter ng butas: 0.3mm
- Ang tanso sa gilid ng PCB minimum na distansya: 20mil
- Pagtatapos sa ibabaw: HASL
Hakbang 7: 3D Enclosure
Hindi ko ito dinisenyo nang mag-isa, dahil sa oras na kinukumbinsi ko ang aparatong ito na gumana, kaya't hindi ko namalayan ang lahat ng mga pangunahing kaalaman sa pag-print ng 3D. Kaya ginamit ko ang isang proyekto ng SCAD mula sa Thingiverse, at nakakabit ng iba't ibang mga aperture sa mga hangganan, ayon sa mga pagtutukoy ng aking aparato.
- Pag-print ng Device: Creality Ender-3
- Uri ng Kama: Salamin, 5mm kapal
- Filament Diameter: 1.75mm
- Uri ng filament: PLA +
- Noeter Diameter: 0.4mm
- Paunang Bilis: 20mm / Sec
- Average na Bilis: 65mm / Sec
- Suporta: N / A
- Mag-infill: 25%
-
Temperatura:
- Kama: 60 (oC)
- Nozzle: 215 (oC)
- Kulay ng Filament: Itim
- Kabuuang Bilang ng mga Aperture: 5
-
Bilang ng Mga Panel ng Enclosure: 4
- TOP Shell
- Ibabang Shell
- Front Panel
- Back Panel
Hakbang 8: Pagpapatupad ng Software - MCU
Ang GitHub Link sa Android at Atmega32 Code
Algorithm ng Software
Ang lahat ng mga pagpapatakbo na isinagawa ng MCU, ay inilarawan sa mga nakakabit na flowchart. Bilang karagdagan sa na, mayroong isang nakalakip na code para sa proyekto. Saklawin natin ang mga pagtutukoy ng software:
Pag lakas
Sa yugtong ito, ginaganap ng MCU ang lahat ng mga pagkakasunud-sunod ng pagsisimula kasama ang pagpapasiya ng nakaimbak na uri ng komunikasyon sa Android aparato: Direktang WiFi o WLAN na komunikasyon sa network - ang data na ito ay nakaimbak sa EEPROM. Maaaring tukuyin ng gumagamit ang uri ng pagpapares ng Android device sa yugtong ito.
Direktang Pagpapares ng Device sa Android
Ang ganitong uri ng pagpapares ay batay sa paglikha ng WiFi network ng FuncGen device. Lilikha ito ng AP (Access Point) at isang server ng TCP sa isang lokal na aparato IP na may isang tukoy na SSID (pangalan ng network ng WiFi) at isang tukoy na numero ng port. Dapat hawakan ng aparato ang estado - bukas para sa mga koneksyon.
Kapag nakakonekta ang Android device sa FuncGen, ang MCU ay pumapasok sa ACTIVE mode, at tumutugon alinsunod sa mga tagubilin ng gumagamit mula sa Android device.
WLAN Pairing
Upang makipag-usap sa isang lokal na WiFi network, dapat magbigay ang MCU ng mga utos para sa ESP32 upang lumikha ng AP, makipag-usap sa Android device at ipagpalit ang mahalagang data ng network:
- Tumatanggap ang Android device mula sa FuncGen ng MAC address, iniimbak ito sa memorya.
- Ang FuncGen aparato ay tumatanggap ng form ng Android device na napiling mga parameter ng WLAN: SSID, uri ng seguridad at Password at iniimbak ito sa EEPROM.
Kapag ang mga aparato ay nakakonekta sa parehong WLAN, hahanapin ng Android device ang FuncGen sa pamamagitan ng pag-scan sa lahat ng mga MAC address ng mga aparato, na konektado sa WLAN. Kapag natutukoy ng Android device ang pagtutugma ng MAC, sinusubukan nitong makipag-usap.
Koneksyon at Pangangasiwa ng Estado - MCU
Kapag ang mga aparato ay nakikipag-usap sa bawat isa, ang protocol (Tingnan ang paunang hakbang na hakbang) ay mananatiling pareho, at ang flowchart ay pareho.
Monitoring ng Estado ng Device
Nagbibigay ang nagambala ng nagambala sa MCU mga kinakailangang detalye para sa paghawak ng estado. Nakagambala ang bawat pag-ikot ng timer, na-update ang sumusunod na listahan ng mga parameter:
- Panlabas na supply ng kuryente - Naka-on / Naka-off
- Estado ng boltahe ng baterya
- Pag-update ng UI para sa bawat pagpapasadya
- Push-Button: Pinindot / Hindi Pinindot
Hakbang 9: Pagpapatupad ng Software - Android App
Ang Android app ay nakasulat sa istilong Java-Android. Susubukan kong ipaliwanag ito sa parehong pamamaraan tulad ng mga nakaraang hakbang - sa pamamagitan ng paghahati ng algorithm sa magkakahiwalay na mga bloke ng code.
Power Up Sequence
Unang pagkakasunud-sunod ng aparato. Narito ang logo ng app na ipinakita kasama ang pagpapagana ng mga module ng GPS at WiFi ng Android device (Huwag mag-alala, kinakailangan ang GPS para sa tamang pag-scan ng mga network lamang ng WiFi).
Pangunahing Menu
Matapos ma-boot ang app, lilitaw ang apat na mga pindutan sa screen. Pagkilos ng mga pindutan:
- DIRECT CONNECTION: Inisyal ang koneksyon sa FuncGen's AP ng SSID ng IOT_FUNCGEN. Kung matagumpay ang koneksyon, ang aparato ay pumapasok sa pangunahing mode ng UI.
- Koneksyon sa WIFI: Sinusuri ng aparato kung may mga nakaimbak na mga parameter ng data sa memorya: wifi.txt, mac.txt. Kung walang nakaimbak na data, tatanggihan ng aparato ang kahilingan ng gumagamit at magbibigay ng pop-up na mensahe na kailangang gawin muna ang pagpapares ng WLAN.
- PAIRING: Ang pakikipag-usap kay FuncGen sa parehong paraan tulad ng DIRECT CONNECTION, ngunit sa halip na patuloy na pagpapalitan ng mensahe, mayroong isang solong pakikipagkamay. Sinusuri ng Android device kung nakakonekta na ito sa WiFi network, at hiniling para sa gumagamit na maglagay ng password. Kung matagumpay ang muling pagkakaugnay, ang Android aparato ay nag-iimbak ng SSID at passkey sa wifi.txt file. Matapos ang matagumpay na komunikasyon sa FuncGen, nag-iimbak ito ng natanggap na MAC address sa mac.txt file.
- Exit: Sapat na sinabi:)
Manager sa Pag-scan ng WiFi
Nais kong ang application ay maging lahat-ng-pagpapatakbo at walang mga pag-aayos ng off-app na magawa. Kaya, dinisenyo ko ang WiFi Scanner, na gumaganap ng lahat ng kinakailangang mga operasyon upang kumonekta sa WiFi network na may kilalang passkey at SSID.
Paghahatid ng Data at Komunikasyon sa TCP
Ito ang pangunahing bloke ng code sa app. Para sa lahat ng mga yunit ng UI mayroong isang tinukoy na mensahe sa isang tukoy na format (Paunang hakbang na hakbang), pinipilit ang FuncGen na magbigay ng nais na output para sa mga channel. Mayroong tatlong uri ng mga patlang ng UI sa aktibidad:
-
Maghanap ng Mga Bar: Dito namin tinutukoy ang real-range ng mga parameter ng output ng FuncGen
- Malawak
- DC Offset
- Liwanag ng LCD
- LCD Contrast
- Pag-edit ng Teksto: Upang mapanatili ang mahusay na natukoy at tumpak na mga halaga ng integer, ang input ng dalas ay ginagawa sa pamamagitan ng mga numero lamang ng mga kahon ng teksto
-
Mga Pindutan: Pagpili ng mga parameter mula sa mga magagamit na listahan:
-
Uri ng Waveform
- Sine
- Tatsulok
- DC
- Kuwadro
- PATAY
-
Kumuha ng Impormasyon
- Katayuan ng Baterya (Porsyento)
- Katayuan ng AC (External Power Supply)
-
Opsyon ng Boot (Para sa FuncGen MCU)
- Pagtatakda ng Pabrika
- I-restart
- Pag-shutdown
- Direkta - I-restart gamit ang direktang mode ng pagpapares
- WLAN - I-restart gamit ang mode ng pagpapares ng WLAN
- Lumabas sa Pangunahing Menu: Sapat na Sinabi:)
-