Sisukord:

Kaasaskantav funktsioonigeneraator WiFi ja Androidis: 10 sammu
Kaasaskantav funktsioonigeneraator WiFi ja Androidis: 10 sammu

Video: Kaasaskantav funktsioonigeneraator WiFi ja Androidis: 10 sammu

Video: Kaasaskantav funktsioonigeneraator WiFi ja Androidis: 10 sammu
Video: Revolutionize Windows System Repair: Using SFC/DISM" 2024, Juuli
Anonim
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis
Kaasaskantav funktsioonigeneraator WiFi -s ja Androidis

Sajandi lõpus ilmusid mitmesugused tehnoloogilised uuendused, eriti side valdkonnas; aga mitte ainult. Meie jaoks tulid kasutajad, tarbijad ja insenerid esile elektrooniliste seadmete kiire areng, mis võib meie elu palju lihtsamaks muuta: nutikellad, nutikad kodud, nutitelefonid jne.

Kuna tänapäeval võib kõik olla "nutikas", olen otsustanud kavandada ülimalt kasuliku seadme, mis on oluliste elektrooniliste laboriseadmete osaks - kaasaskantav funktsioonigeneraator, mida saab juhtida Android OS -i põhise nutitelefoniga WiFi otse- või WiFi -kohtvõrgu (WLAN) kaudu).

Miks me peaksime selle seadme ehitama?

Enamik testimisseadmeid on tänapäeval üsna kallid. Ja mõnikord ei ole need seadmed kaasaskantavad. Lahendusena kõrgetele hindadele, teisaldatavuse puudumisele ja seadme võrgule juurdepääsu puudumisele pakub seade kahe kanaliga lainekuju generaatorit, mis on tõepoolest kaasaskantav ja millel on piiramatu juurdepääs võrgule - kas internetile või kohalikule.

Ja loomulikult tuleks seade ehitada entusiasmi tõttu, järgides isetegemise põhimõtteid - mõnikord peame lihtsalt ise asju tegema, et end õigesti tunda:)

Põhijooned

Toiteallikas

  • A-tüüpi USB-pistik, nii toitesüsteemide kui ka programmeerimise jaoks
  • Täielik liitiumioonaku juhtimissüsteem - laadimine ja stabiilsed režiimid
  • Smart Switchi rakendamine - pole vaja toitelülitit
  • Kahe toiteallikas: +3,3 V ja -3,3 V sümmeetrilise pinge lainekuju genereerimiseks

Lainekuju genereerimine

  • Alalisvoolu taseme rakendamine väljundkaskaadil - pingepiiride vahel kallutatud lainekuju
  • DDS -põhine 4 -tüüpi lainekuju genereerimine - siinus, kolmnurk, ruut ja alalisvool
  • Kuni 10MHz sageduse tugi
  • Väljundvool kuni 80 mA ja maksimaalne võimsus 500 mW
  • Eraldatud kanalid lainekuju genereerimiseks - jagatud AD9834 -ahelad

Suhtlemine

  • ESP32 rakendamine - rakendatavad WiFi -võimalused
  • Täielik TCP/IP tugi generaatoriseadme ja Android -nutitelefoni kaudu
  • Võimalus salvestada kasutajaparameetreid iga seadme tsükli jaoks
  • Seisundi jälgimine - mõlemad süsteemid on üksteisest teadlikud: FuncGen (nimetagem seda edaspidi) ja nutitelefon.

Kasutajaliides

  • 20 x 4 sümboliga LCD-ekraan lihtsa 4-bitise andmeliidesega
  • Androidi rakendus - täielik kasutaja kontroll FuncGen seadme üle
  • Summeri ahel - heli tagasiside kasutajale

Samm: plokkskeem - riistvara

Plokkskeem - riistvara
Plokkskeem - riistvara
Plokkskeem - riistvara
Plokkskeem - riistvara

Mikrokontroller - ATMEGA32L

Mikrokontroller on programmeeritav kiip, mis koosneb kõigist arvuti funktsioonidest, mis asuvad ühes elektroonilises kiibis. Meie puhul on see "aju" ja süsteemi keskne komponent. MCU eesmärk on hallata kõiki välisseadmeid, hallata nende süsteemide vahelist suhtlust, kontrollida riistvara toimimist ja pakkuda täielikku tuge kasutajaliidesele ja selle suhtlemisele tegeliku kasutajaga. See projekt põhineb ATMEGA32L MCU -l, mis võib töötada 3.3V ja 8MHz sagedusel.

Side SoC - ESP32

See SoC (System on Chip) pakub FuncGenile täielikku suhtlust - Juurdepääs WiFi võimalustele, sealhulgas otsene, kohalik või Interneti -side. Seadme eesmärgid on järgmised:

  • Andmeedastuse käsitlemine Android -rakenduse ja FuncGen -seadme vahel
  • Juhtimis-/andmesõnumite haldamine
  • Pideva TCP/IP kliendi-serveri konfiguratsiooni tugi

Meie projektis on SoC espressif ESP32, mis on liiga populaarne, et seda veelgi laiendada:)

Li-Ion akuhaldussüsteem

Selleks, et muuta meie seade kaasaskantavaks, sisaldab seade disainitud Li-Ion aku laadimisahelat. Vooluahel põhineb MC73831 IC -l koos reguleeritava laadimisvooluga, reguleerides ühe programmeerimistakisti väärtust (seda teemat käsitleme skeemi etapis). Seadme toiteallika sisend on A-tüüpi USB-pistik.

Nutikas lülitusskeem

Nutika lülitiga seadme toitejuhtimisahel pakub täielikku tarkvara juhtimist seadme väljalülitamisjärjestuse üle ja seadme aku pinge katkestamiseks vajaliku välise lülituslüliti puudumist. Kõik toiteoperatsioonid tehakse vajutades nuppu ja MCU tarkvara. Mõnel juhul on vaja süsteem välja lülitada: madal aku pinge, kõrge sisendpinge, sideviga jne. Nutikas lüliti põhineb STM6601 nutilüliti IC -l, mis on odav ja väga sõbralik mängimiseks.

Peamine toiteallikas

See seade koosneb kahest patareitoitega toiteahelast - +3,3 V kõikide digitaalsete / analoogsete toiteahelate jaoks ja -3,3 V FunGeni sümmeetrilise väljundi suhtes 0 V potentsiaali suhtes (st genereeritud lainekuju saab seadistada [-3,3 V: 3,3 V)] piirkond.

  • Peamine toiteahel põhineb LP3875-3,3 LDO (madal väljalangemine) 1A lineaarse pinge regulaatoril.
  • Sekundaarne toiteahel põhineb LM2262MX IC-l, mis teostab alalis-alalisvoolu negatiivse pinge muundamise kondensaatori-laadimispumba kaudu-süsteem, millel IC põhineb.

Lainekuju generaatorite süsteem

Süsteem on välja töötatud rõhuasetusega eraldi DDS (otsene digitaalsüntees) integraallülitustele, mis võimaldavad täielikku lainekuju genereerimist MCU SPI (jada perifeerne liides) abil. Projekteerimisel kasutatud ahelad on analoogseadmed AD9834, mis võivad pakkuda erinevat tüüpi lainekuju. Väljakutsed, millega peame AD9834 -ga töötades silmitsi seisma, on järgmised:

  • Fikseeritud lainekuju amplituud: Lainekuju amplituudi juhib väline DAC -moodul
  • Ei arvestata alalisvoolu nivooga: summeerimisahelate rakendamine soovitud alalisvoolu nihke väärtustega
  • Eraldi väljundid ruutlaine ja kolmnurga/siinuslaine jaoks: Kõrgsagedusliku lülitusahela rakendamine, nii et iga kanali üks väljund võib pakkuda kõiki soovitud lainekuju: siinus, kolmnurk, ruut ja alalisvool.

Vedelkristallekraan

LCD on kasutajaliidese osa ja selle eesmärk on võimaldada kasutajal mõista, mida seade reaalajas teeb. See suhtleb kasutajaga igas seadme olekus.

Sumin

Lihtne toonigeneraator, mis annab lisateavet seadmest kasutajale.

Integreeritud ISP programmeerija

Programmeerimisprotsessis on iga inseneri jaoks jätkuv probleem: alati on kõige hullem vajadus toode lahti võtta, et see uue püsivaraga ümber programmeerida. Nende ebamugavuste ületamiseks ühendati AVR ISP programmeerija seadmega seestpoolt, samas kui USB-andmed ja toiteliinid on seotud seadme A-tüüpi USB-pistikuga. Selles konfiguratsioonis peame lihtsalt programmeerimiseks või laadimiseks ühendama oma FuncGeni USB -kaabli kaudu!

2. samm: plokkskeem - võrgustike loomine

Plokkskeem - võrgustik
Plokkskeem - võrgustik

Kahe kanaliga funktsioonigeneraator

Peamine seade. See, mille oleme eelmises etapis üle vaadanud

ESP-WROOM-32

Integreeritud süsteem-kiip WiFi ja BLE võimalustega. SoC on kinnitatud emaplaadile (käsitleme seda skemaatilises etapis) UART -mooduli kaudu ja toimib sõnumite saatjana põhiseadme ja Android -nutitelefoni vahel.

WiFi kohalik võrk

Nutitelefon ja seade suhtlevad TCP -serveri/kliendi konfiguratsiooni alusel otse WiFi või kohtvõrgu kaudu. Kui seadmed tunnevad WiFi -s üksteist ära, loob põhiseade sobivate parameetritega TCP -serveri ja suudab sõnumeid saata/vastu võtta. Seade toimib nutitelefoni teisejärgulisena. Teisest küljest ühendab Android -seade TCP -serveriga kliendivõrguseadmena, kuid seda peetakse esmaseks sõnumi saatjaks - nutitelefon on see, kes algatab täieliku suhtlustsükli: sõnumi saatmine - vastuse saamine.

Android nutitelefon

Android -operatsioonisüsteemil põhinev nutitelefon, mis töötab FuncGeni rakenduses

3. samm: osad, tööriistad, IDE ja materjalide arve

Osad, tööriistad, IDE ja materjalide nimekiri
Osad, tööriistad, IDE ja materjalide nimekiri
Osad, tööriistad, IDE ja materjalide nimekiri
Osad, tööriistad, IDE ja materjalide nimekiri
Osad, tööriistad, IDE ja materjalide nimekiri
Osad, tööriistad, IDE ja materjalide nimekiri

Materjalide arve (vt lisatud XLS -tabelit)

Kasutajaliides ja süsteemiühendused

  • 1 x 2004A Char-LCD 20x4 sinine
  • 1 x USB -tüüpi B -pistik
  • 1 x 10 komplekt Mini Micro JST XH 2,54 mm 4 tihvti
  • 1 x 6tk hetke SW

PCB tellimine (vastavalt Seeed Studio andmetele)

Alusmaterjal FR-4

Kihtide arv 2 kihti

PCB kogus 10

Erinevate kujunduste arv 1

PCB paksus 1,6 mm

PCB värv Sinine

Pinnaviimistlus HASL

Minimaalne jootmismaski tamm 0,4 mm ↑

Vase kaal 1 oz

Minimaalne puuraugu suurus 0,3 mm

Jälje laius / vahe 6/6 milj

Plaaditud poolavad / kastellitud augud nr

Impedantsi kontroll nr

Tööriistad

  • Kuum liimipüstol
  • Pintsetid
  • Lõikur
  • ~ 22AWG juhe tõrgete käsitlemiseks
  • Jootekolb/jaam
  • Jootmisvorm
  • SMD ümbertöötlusjaam (valikuline)
  • 3D -printer (valikuline)
  • Ekstrudeeriv fail
  • AVR ISP programmeerija
  • USB -jadamuundur (valikuline, silumiseks)

Integreeritud arenduskeskkond (IDE) ja tarkvara

  • Autodesk EAGLE või Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (valikuline)
  • Ultimaker Cura (valikuline)
  • Saleae Logic (tõrkeotsinguks)
  • Atmel Studio 6.3 või uuem
  • Android Studio või Eclipse IDE
  • Docklight Serial Monitor / muu COM -pordi jälgimistarkvara
  • ProgISP AVR ATMEGA32L välgu programmeerimiseks

4. samm: riistvara disain - põhiplaat

Riistvara disain - põhiplaat
Riistvara disain - põhiplaat
Riistvara disain - põhiplaat
Riistvara disain - põhiplaat
Riistvara disain - põhiplaat
Riistvara disain - põhiplaat

Aku juhtimisahel

Aku laadimisahel põhineb MCP7383 IC -l, mis võimaldab meil valida soovitud laadimisvoolu Li -Ion aku jaoks - 3,7 V mahuga 850 mAh. Laadimisvool seadistatakse meie puhul takisti väärtuse (R1) programmeerimisega

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

USB-pinge VBUS filtreeritakse π-filtri (C1, L3, C3) abil ja toimib laadimisahela toiteallikana.

Pingejaotusahel (R2, R3) võimaldab MCU -l näidata, kas väline USB -toiteallikas on ühendatud või mitte, pakkudes MCU A/D kanalile järgmist pinget:

V (näidik) ~ (2/3) V (BUS)

Kuna meie ATMEGA32L A/D on 12-bitine, saame arvutada digitaalse vahemiku:

A / D (vahemik) = 4095 V (näidik) / V (viide).

A/D ∈ [14AH: FFFH]

Smart Switch toiteplokk

Vooluring võimaldab süsteemil juhtida iga kavandatud ploki toiteallikat nii nuppude kui ka MCU tarkvara abil ning põhineb STM6601 Smart-Switchil, millel on POWER, mitte RESET. Terminalid, mida tahame kaaluda, on järgmised:

  • PSHOLD - sisendliin, mis määrab seadme oleku: kui seda tõmmatakse LOW, lülitab seade välja kõik sekundaarsed toiteplokid (+3,3 V ja -3,3 V). Kui hoiate HIGH - seade hoiab olekut ON.
  • nSR ja nPB - sisendliinid. Nuppude klemmid. Kui nendel tihvtidel tuvastatakse langev serv, proovib seade siseneda toite üles / alla režiimi
  • nINT - väljundliin. Tõmmatakse LOW iga kord, kui vajutate nuppu
  • ET - Väljundliin, kasutatakse sekundaarsete toiteallikate toiteallikana. Kui seda hoitakse madalal, on mõlemad sekundaarsed toiteallikad välja lülitatud

Enne lõpliku kujunduse juurde asumist on mõned olulised märkused:

  • PSHOLD tuleks tõmmata kuni 3,3 V-ni, sest on juhtumeid, kus MCU-d sunnivad kõik sisend-/väljundid olema HIGH-Z olekus. Sel juhul pole MCU PSHOLD -i olek teada ja see võib seadme programmeerimisprotsessi dramaatiliselt mõjutada.
  • STM6601 tuleks tellida EN -reguleerimisvalikuga pikal vajutamisel, mitte RESET -valiku asemel (olen sellesse langenud).

Toiteplokk: +3.3V

Põhitoiteallikas kõigi meie projekti süsteemide jaoks. Kui +3,3 V liini hoitakse GND tasemel (st pinget pole), on kõik IC välja arvatud nutikas lüliti keelatud. Vooluahel põhineb LDO LP-3875-3.3 IC, mida saab juhtida EN-terminali kaudu ja pakkuda voolu kuni 1A.

Selle vooluahela toiteallikaks on aku pinge, millele on lisatud A/D indikaator VBAT -i tuvastamiseks konfiguratsioonis, sarnaselt VBUS -ahelaga. Sellisel juhul erinevad arvutused veidi;

V (Aku-A/D) = 0,59 V (aku); A/D (vahemik) ∈ [000H: C03H]

Toiteplokk: -3.3V

Negatiivse pinge toiteahel võimaldab meil luua sümmeetrilisi lainekuju, mille alalisvoolu tegur on 0 V (st lainekuju keskmine väärtus võib olla 0 V). See vooluring põhineb LM2662MX IC - DC/DC muunduril, mis töötab "laadimispumba" meetodil. Vooluahela maksimaalne väljundvool on 200mA, mis on meie disaininõuetele piisav - oleme piiratud 80mA väljundvooluga iga seadme kanalist.

IC täidab kõiki vajalikke töid, nii et ainult osad, mida peame kinnitama, on kaks elektrolüütkondensaatorit: C33 lülitamiseks ja C34 -3,3 V liini ümbersõit (müra vähendamise kaalutlused). Lülitamise sagedus on konstruktsioonis tühine, kui paigutame vooluahela lainekuju genereerivatest osadest piisavalt kaugele (arutame seda PCB paigutuse etapis).

Mikrokontroller - MCU

See on meie süsteemi haldur ja tegevjuht - juhtimine, võrgutöötlus, sõnumiedastus ja kasutajaliidese tugi - kõik on MCU poolt.

Valitud MCU on Atmel ATMEGA32L, kus L tähistab toetatud pingetööd ∈ [2.7V: 5.5V]. Meie puhul on tööpinge +3,3 V.

Mõelgem põhilistele tööplokkidele, mida on vaja mõista, töötades MCU -ga meie disainis:

  • Väline ostsillaator - on valikuline komponent, kuna oleme huvitatud 8MHz töösagedusest
  • Perifeerne juhtimine, SPI -võrk - kõik välisseadmed (välja arvatud ESP32) suhtlevad MCU -ga SPI kaudu. Kõigi seadmete (SCK, MOSI, MISO) jaoks on kolm jagatud liini ja igal välisseadmel on oma CS (Chip Select) liin. Seadme osaks olevad SPI -seadmed:

    1. D/A amplituudi juhtimiseks - kanal A
    2. D/A amplituudi juhtimiseks - kanal B
    3. AD9834 seade - kanal A
    4. AD9834 seade - kanal B
    5. D/A eelpinge juhtimiseks - kanal A
    6. D/A eelpinge juhtimiseks - kanal B
    7. Digitaalne potentsiomeeter LCD heleduse/kontrastsuse seadistamiseks
  • LCD tugi - kuna LCD on üldine 20 x 4 tähemärgiga ekraan, kasutame 4 -bitist liidest (read D7: D4), juhtnuppe (read RS, E) ja heleduse/kontrastsuse juhtimist (read V0 ja anood)
  • RGB LED -tugi - see moodul on valikuline, kuid MCU -ga on ühendatud tavaline katoodiga RGB LED -pistik koos vastavate takistitega.
  • Toitejuhtimine - MCU jälgib reaalajas režiimis toitesüsteemi ja tegeleb kõigi vajalike toitesündmustega:

    1. VBAT_ADC - aku pinge jälgimine ja oleku määramine (ADC0 kanal)
    2. PWR_IND - Välise toiteühenduse märge (ADC1 kanal)
    3. PS_HOLD - esmane toiteallikas kõigi määratletud süsteemide jaoks. Kui MCU tõmbab madalale, lülitatakse seade välja
    4. Nutika lüliti katkestusklemm - nuppude oleku jälgimine
  • WiFi võrguhaldus - ESP32: MCU suhtleb ESP32 -ga UART -liidese kaudu. Kuna 8MHz võimaldab meil suhteliselt väikese veaga rakendada andmeedastuskiirust 115200, saame kasutada vooluahelas ESP32 ilma edastuskiiruse muutuste eelmääratlemiseta.

AVR ISP programmeerija

Meie MCU on programmeeritud SPI kaudu ja lähtestusjoon (/RST) tuleb nõuetekohaseks toimimiseks KÕRGE tõmmata (kui mitte - MCU leiab end igaveseks lähtestamise olekusse).

Seadme programmeerimiseks ja USB kaudu laadimiseks olen lisanud AVR ISP programmeerija (väikese suurusega toode, ostetud eBayst). Seadme täieliku USB toe säilitamiseks on vaja siduda A-tüüpi USB (D+, D-, VBUS ja GND) terminalid AVR ISP seadmega.

Lainekuju genereerimise ahel

Seadme tuum on need ahelad. AD9834 on väikese võimsusega DDS-seade, mis pakub meile kõiki lainekuju, mida tahaksime süsteemist alla laadida. Vooluahelad sisaldavad kahte sõltumatut AD9834 IC -d, millel on eraldatud välised 50 MHz ostsillaatorid (nagu on näha skeemidel). Eraldatud ostsillaatori põhjuseks on digitaalsete vooluahelate müra vähendamise kaalutlused, mistõttu otsustati käsitleda korralikke 50MHz liine, mille ostsillaatorid olid paigutatud AD9834 kõrvale.

Nüüd vaatame natuke matemaatikat:

Kuna DDS-seade töötab Phase Wheel-tehnoloogiaga, mille väljundväärtus on 28-bitises registris, saame lainekuju genereerimist kirjeldada matemaatiliselt:

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

Ja vastavalt AD9834 andmelehele, võttes arvesse maksimaalset sagedust, võib saada väljundsageduse eraldusvõime:

Δf = k * f (ostsillaator) / f (maksimaalne) = 0,28 * 50M / 28M = 0,187 [Hz]

AD9834 IC -d pakuvad analoogvoolu väljundit kolmnurga/siinuslaine jaoks (IOUT -terminal) ja digitaalset väljundit ruutlaine jaoks (terminal SIGN_OUT). Märgibiti kasutamine on natuke keeruline, kuid saame sellega hakkama - iga kord, kui DDS ületab võrdlusväärtuse läve, käitub SIGN_OUT vastavalt. Iga kanali väljundile on kinnitatud 200 Ohmi takisti, nii et väljundpingel oleks olulised väärtused:

I (ühe kanaliga) = V (väljund) / R (pinge valik); V (väljund) = R (VS)*I (SS) = 200I (SS) [A]

Amplituudi juhtimise (D/A) ahelad

Vastavalt AD9834 andmelehele saab selle amplituudi reguleerida, andes voolu DDS täisskaala süsteemile, nii et kahekordse D/A IC abil saame väljundsignaali amplituudi reguleerida, reguleerides seda voolu. Taaskord natuke matemaatikat:

I (täisskaala) = 18 * (V_REF - V_DAC) / R_SET [A]

Skeemide kohaselt ja mõned numbrid võrrandisse pannes:

I (täisskaala) = 3,86 - 1,17 * V_DAC [A]

Disainis kasutatav D/A moodul on 12-bitine MCP4922, kui vool on vahemikus [0mA: 3,86mA] ja lineaarse amplituudi funktsioon on:

V (amplituudi valimine) = 1 - [V (D / A) / (2^12 - 1)]

Lainekuju multipleksimisahel

Ruutlaine ja siinuse/kolmnurga laine genereerimise väljundid on eraldatud aadressil AD9834, seega peame mõlema väljundi jaoks kasutama kiiret multipleksimisahelat, et võimaldada kõigi soovitud lainekuju hankimist ühest eraldatud kanalist. Multiplekseri IC on ADG836L analooglüliti, millel on väga madal takistus (~ 0,5 Ohm).

Valikutabel, mida MCU kasutab väljundite jaoks sellisena:

Režiimi valik [D2: D1] | Väljundkanal A | Väljundkanal B

00 | Siinus/kolmnurk | Siinus/kolmnurk 01 | Siinus/kolmnurk | Ruut 10 | Ruut | Siinus/kolmnurk 11 | Ruut | Ruut

Bias Voltage Control (D/A) ahelad

Lainekuju generaatori üks peamisi omadusi on selle alalisvoolu väärtuse juhtimine. Selles konstruktsioonis tehakse seda, seades iga kanali jaoks soovitud D/A pinge ja need eelpinged summeeritakse multipleksitud väljunditega, mida oleme veidi varem arutanud.

D/A-st saadud pinge on vahemikus [0V: +3,3 V], seega on olemas op-amp-põhine vooluahel, mis kaardistab D/A vahemiku [-3,3 V: +3,3 V], võimaldades seadmel pakkuda täielikku vahemikku soovitud alalisvoolu komponendist. Jätame tüütu analüütilise matemaatika vahele ja keskendume ainult lõpptulemustele:

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

Nüüd on alalisvoolu komponentide vahemik vahemikus [-3,3 V: +3,3 V].

Kokkuvõtlikud ahelad - alalisvoolu komponendid ja lainekuju väljundid

Praegu on meil kõik, mida vajame seadme õigeks väljundiks - eelpinge (alalisvoolukomponent) kogu pingevahemikus ja multipleksitud AD9834 väljundid. Selle saavutame, kasutades summeerimisvõimendit - op -amp konfiguratsiooni

Jätame nüüd matemaatika vahele (oleme juba palju matemaatilist lähenemist käsitlenud) ja kirjutame kokku võimendi väljundi lõpptulemuse:

V (seadme väljund) = V (positiivne eelarvamus) - V (negatiivne eelarvamus) - V (multipleksitud väljund) [V]

Seega:

V_OUT = ΔV_BIAS - V_AD9834 [V]

BNC tüüpi väljundühendused on ühendatud valiktakistustega (R54, R55; R56, R57). Selle põhjuseks on asjaolu, et juhul, kui disain võib olla düsfunktsionaalne, saame siiski valida, kas soovime kasutada summeerimisvõimendit.

Oluline märkus: lõpliku summeerimisvõimendi takisti võrke saab disainer reguleerida, et muuta seadmest maksimaalset amplituudi. Minu puhul on kõigil võimenditel sama võimendus = 1, seega on maksimaalne puhverdatud amplituud kolmnurga/siinuslaine korral 0,7 Vpp ja ruutlaine korral 3,3 Vpp. Konkreetse matemaatilise lähenemisviisi leiate sammu lisatud piltide hulgast.

ESP32 välismoodulina

MCU suhtleb ESP32 -ga UART -liidese kaudu. Kuna soovisin ESP32 jaoks oma PCB -d, on ühendamiseks saadaval 4 terminali: VCC, RX, TX, GND. J7 on PCB -de vaheline liideseühendus ja ESP32 eraldatakse seadme sees välise moodulina.

Kasutajaliides - LCD ja kõlar

Kasutatud vedelkristallekraan on üldine 20 x 4 tähemärgiline 4 -bitise liidesega ekraan. Nagu disainist näha, on LCD -klemmide "A" ja "V0" külge kinnitatud SPI digitaalne potentsiomeeter - selle eesmärk on reguleerida LCD -mooduli heledus ja kontrastsus programmiliselt.

Kõlar pakub kasutajale heliväljundit lihtsa ruutlaine genereerimise kaudu MCU -st. BJT T1 juhib voolu läbi kõlari, mis võib olla kahes olekus - ON / OFF.

5. samm: riistvara disain - ESP32 moodul

Riistvara disain - ESP32 moodul
Riistvara disain - ESP32 moodul

ESP32 kasutatakse peamise PCB välismoodulina. Seadmeside põhineb AT -käskudel, mis on saadaval seadme üldises püsivaras.

Selle disaini osas pole palju laiendada, kuid disaini kohta on mõned märkused:

  • ESP32 korraliku UART -mooduli kasutamise tõrgete käsitlemiseks olen lisanud kolm valiktakistust nii TX- kui ka RX -liinidele. (0Ohm iga). Standardkonfiguratsiooni jaoks kasutatakse AT -käskude jaoks UART2 moodulit (R4, R7 peab olema joodetud)
  • Seadmel on 4 -realine väljund - VCC, GND, TX, RX.
  • IO0 ja EN tihvtid hindavad seadme tööd ning need tuleks kavandada vastavalt skeemile

Kõiki PCB funktsioone käsitleme järgmises etapis.

6. samm: trükkplaatide paigutus

PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus

PCB kavandamise eesmärgid

  1. Looge sisseehitatud süsteem kõigi sama plaadi integraallülituste jaoks
  2. Parandage seadme jõudlust, kujundades ühe peamise trükkplaadi
  3. Kulude vähendamine - kui soovite hindu otsida, on odavad kujundused TÕESTI madalad
  4. Minimeerige elektroonilise plaadi suurus
  5. Lihtne tõrkeotsing - iga võimaliku rikke korral saame kasutada TP -sid (testpunkte).

Tehnilised parameetrid

Mõlemal PCB -l: põhi- ja ESP32 -plaadil on tootmisprotsessis samad omadused - odav ja meie eesmärkidel kasutatav. Vaatame neid:

A - põhiplaat

  • Suurus: 10 cm x 5,8 cm
  • Kihtide arv: 2
  • PCB paksus: 1,6 mm
  • Minimaalne jälgimisruum/laius: 6/6mil
  • Minimaalne ava läbimõõt: 0,3 mm
  • Vask PCB servani minimaalne kaugus: 20mil
  • Pinnaviimistlus: HASL (päris hea välimusega hõbedane odav tüüp)

B - põhiplaat

  • Suurus: 3 cm x 4 cm
  • Kihtide arv: 2
  • PCB paksus: 1,6 mm
  • Minimaalne jälgimisruum/laius: 6/6mil
  • Minimaalne ava läbimõõt: 0,3 mm
  • Vask PCB servani minimaalne kaugus: 20mil
  • Pinnaviimistlus: HASL

Samm 7: 3D -ümbris

3D ümbris
3D ümbris

Ma ei kujundanud seda ise, sest tol ajal veensin seda seadet tööle, nii et ma ei olnud üldse kursis kõigi 3D -printimise põhitõdedega. Seega olen kasutanud Thingiverse'i SCAD -projekti ja lisanud piiridele erinevad avad vastavalt oma seadme spetsifikatsioonidele.

  1. Trükiseade: Creality Ender-3
  2. Voodi tüüp: klaas, paksus 5 mm
  3. Hõõgniidi läbimõõt: 1,75 mm
  4. Hõõgniidi tüüp: PLA+
  5. Düüsi läbimõõt: 0,4 mm
  6. Esialgne kiirus: 20 mm/sek
  7. Keskmine kiirus: 65 mm/sek
  8. Toetus: puudub
  9. Täidis: 25%
  10. Temperatuur:

    • Voodi: 60 (oC)
    • Düüs: 215 (oC)
  11. Hõõgniidi värv: must
  12. Avauste koguarv: 5
  13. Korpusepaneelide arv: 4

    • TOP Shell
    • Alumine kest
    • Esipaneel
    • Tagapaneel

8. samm: tarkvara juurutamine - MCU

Tarkvara juurutamine - MCU
Tarkvara juurutamine - MCU
Tarkvara juurutamine - MCU
Tarkvara juurutamine - MCU
Tarkvara juurutamine - MCU
Tarkvara juurutamine - MCU

GitHubi link Androidile ja Atmega32 koodile

Tarkvara algoritm

Kõik toimingud, mida MCU teeb, on kirjeldatud lisatud vooskeemidel. Lisaks sellele on projektile lisatud kood. Vaatame tarkvara spetsifikatsioone:

Sisselülitamine

Selles etapis teostab MCU kõik initsialiseerimisjärjestused koos salvestatud sidetüübi määramisega Android -seadmega: Otsene WiFi või WLAN -võrgu side - need andmed salvestatakse EEPROM -i. Kasutaja saab selles etapis Android -seadme sidumistüübi uuesti määratleda.

Otsene Android -seadme sidumine

Seda tüüpi sidumine põhineb WiFi -võrgu loomisel FuncGen -seadme poolt. See loob AP (pääsupunkt) ja TCP -serveri kohaliku seadme IP -le, millel on konkreetne SSID (WiFi -võrgu nimi) ja konkreetne pordi number. Seade peaks hoidma olekut - ühenduste jaoks avatud.

Kui Android -seade on FuncGeniga ühendatud, lülitub MCU ACTIVE režiimi ja reageerib vastavalt Android -seadme kasutaja juhistele.

WLAN -i sidumine

Kohalikus WiFi -võrgus suhtlemiseks peaks MCU andma ESP32 -le käske AP -i loomiseks, Android -seadmega suhtlemiseks ja oluliste võrguandmete vahetamiseks:

  • Android -seade võtab FuncGenilt vastu oma MAC -aadressi ja salvestab selle mällu.
  • FuncGeni seade saab Android -seadme valitud WLAN -parameetritelt: SSID, turvatüüp ja parool ning salvestab selle EEPROM -is.

Kui seadmed on tõepoolest ühendatud sama WLAN -iga, otsib Android -seade FuncGeni, skannides kõik WLAN -iga ühendatud seadmete MAC -aadressid. Kui Android -seade määrab MAC -i vaste, proovib see suhelda.

Ühendus ja olekukäsitlus - MCU

Kui seadmed omavahel suhtlevad, jääb protokoll (vt viimast etappi) samaks ja vooskeem on sama.

Seadme oleku jälgimine

Ajastatud katkestus annab MCU -le oleku käsitlemiseks vajalikud üksikasjad. Iga taimeri katkestamise tsüklit värskendatakse järgmist parameetrite loendit:

  • Väline toide - sisse/välja
  • Aku pinge olek
  • UI värskendus iga kohandamise jaoks
  • Nupp: vajutatud/mitte vajutatud

9. samm: tarkvara juurutamine - Androidi rakendus

Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus
Tarkvara juurutamine - Androidi rakendus

Androidi rakendus on kirjutatud Java-Androidi stiilis. Püüan seda selgitada samamoodi nagu eelnevaid samme - jagades algoritmi eraldi koodiplokkideks.

Sisselülitamise jada

Seadme esimene jada. Siin esitatakse rakenduse logo koos Android -seadme GPS -i ja WiFi -moodulite lubamisega (ärge muretsege, GPS on vajalik ainult WiFi -võrkude õigeks skannimiseks).

Peamenüü

Pärast rakenduse käivitamist ilmuvad ekraanile neli nuppu. Nuppude toiming:

  1. OTSE ÜHENDUS: FuncGeni AP -ga ühenduse loomine IOT_FUNCGEN SSID abil. Kui ühendus õnnestub, lülitub seade kasutajaliidese põhirežiimi.
  2. WIFI -ÜHENDUS: Seade kontrollib, kas mällu on salvestatud andmeparameetreid: wifi.txt, mac.txt. Kui andmeid pole salvestatud, lükkab seade kasutaja taotluse tagasi ja kuvab hüpikteate, et kõigepealt tuleb teha WLAN-i sidumine.
  3. PAARISTAMINE: FuncGeniga suhtlemine samamoodi nagu DIRECT CONNECTION, kuid pideva sõnumivahetuse asemel toimub üks käepigistus. Android -seade kontrollib, kas see on juba WiFi -võrguga ühendatud, ja palub kasutajal parooli sisestada. Kui uuesti ühendamine õnnestub, salvestab Android -seade SSID ja parooli wifi.txt -faili. Pärast edukat suhtlust FuncGeniga salvestab see vastuvõetud MAC -aadressi mac.txt -faili.
  4. Väljumine: Piisavalt öeldud:)

WiFi skaneerimise haldur

Tahtsin, et rakendus oleks täielikult töökorras ja ilma rakendusesiseste kohandusteta. Niisiis, olen loonud WiFi skanneri, mis teostab kõik vajalikud toimingud WiFi -võrguga ühenduse loomiseks teadaoleva parooli ja SSID -ga.

Andmeedastus ja TCP -side

See on rakenduse peamine koodiplokk. Kõigi kasutajaliidese üksuste jaoks on määratletud sõnum kindlas vormingus (viimane etapp), mis sunnib FuncGeni pakkuma kanalitele soovitud väljundit. Tegevuses on kolme tüüpi kasutajaliidese välju:

  1. Otsinguribad: Siin määratleme FuncGeni väljundparameetrite reaulatuse

    1. Amplituud
    2. Alalisvoolu nihe
    3. LCD heledus
    4. LCD kontrast
  2. Teksti redigeerimine: selleks, et täisarvud oleksid täpselt määratletud ja täpsed, sisestatakse sagedus ainult numbrite tekstikastide kaudu
  3. Nupud: parameetrite valik saadaolevatest loenditest:

    1. Lainekuju tüüp

      1. Siinus
      2. Kolmnurk
      3. DC
      4. Ruut
      5. VÄLJAS
    2. Hankige teavet

      1. Aku olek (protsent)
      2. Vahelduvvoolu olek (väline toiteallikas)
    3. Alglaadimisvõimalus (FuncGen MCU jaoks)

      1. Tehase seadistus
      2. Taaskäivita
      3. Lülita välja
      4. Otsene - taaskäivitage otsese sidumisrežiimiga
      5. WLAN - taaskäivitage WLAN -i sidumisrežiimis
    4. Peamenüüst väljumine: piisavalt öeldud:)

10. samm: testimine

Soovitan: