Cuprins:

Generator de funcții portabile pe WiFi și Android: 10 pași
Generator de funcții portabile pe WiFi și Android: 10 pași

Video: Generator de funcții portabile pe WiFi și Android: 10 pași

Video: Generator de funcții portabile pe WiFi și Android: 10 pași
Video: Internet mai rapid, GRATIS în doar 5 minute - Cavaleria.ro 2024, Iulie
Anonim
Generator de funcții portabile pe WiFi și Android
Generator de funcții portabile pe WiFi și Android
Generator de funcții portabil pe WiFi și Android
Generator de funcții portabil pe WiFi și Android
Generator de funcții portabil pe WiFi și Android
Generator de funcții portabil pe WiFi și Android
Generator de funcții portabil pe WiFi și Android
Generator de funcții portabil pe WiFi și Android

Aproape de sfârșitul secolului al XX-lea, au apărut diverse inovații tehnologice, în special în domeniul comunicațiilor; dar nu numai. Pentru noi, utilizatorii, consumatorii și inginerii au descoperit dezvoltarea rapidă a dispozitivelor electronice, care ne pot ușura viața: ceasuri inteligente, case inteligente, smartphone-uri etc.

Întrucât totul poate fi „inteligent” în zilele noastre, am decis să proiectez un dispozitiv super-util care să facă parte din echipamentele electronice esențiale de laborator - Generator de funcții portabile, controlabil prin smartphone bazat pe sistemul de operare Android prin WiFi direct sau rețea locală WiFi (WLAN)).

De ce ar trebui să construim acest dispozitiv?

Marea majoritate a echipamentelor de testare este destul de scumpă în zilele noastre. Și uneori, aceste dispozitive nu sunt portabile. Ca soluție pentru prețuri ridicate, lipsa de portabilitate și lipsa accesului la rețea, dispozitivul oferă un generator de forme de undă cu două canale, care este într-adevăr portabil și are acces nerestricționat la rețea - fie la internet, fie la nivel local.

Și, desigur, dispozitivul ar trebui construit din cauza entuziasmului, respectând principiile DIY - Uneori trebuie doar să facem lucrurile singuri pentru a ne simți bine:)

Caracteristici cheie

Alimentare electrică

  • Conector USB de tip A, atât pentru sistemele de alimentare cât și pentru programare
  • Sistem complet de gestionare a bateriei Li-Ion - Moduri de încărcare și stabile
  • Implementarea Smart Switch - nu este nevoie de comutator de comutare
  • Alimentare dublă: + 3,3V și -3,3V pentru generarea de formă de undă de tensiune simetrică

Generarea formei de undă

  • Implementarea nivelului de curent continuu la cascadă de ieșire - formă de undă polarizată între limitele de tensiune
  • Generare de 4 forme de undă bazate pe DDS - sinusoidal, triunghi, pătrat și continuu
  • Suport de frecvență de până la 10 MHz
  • Curent de ieșire de până la 80mA cu o putere maximă de 500mW
  • Canale separate pentru generarea formelor de undă - circuite separate bazate pe AD9834

Comunicare

  • Implementarea ESP32 - Capabilități WiFi aplicabile
  • Suport TCP / IP complet de către dispozitivul generator și smartphone-ul Android
  • Capacitatea de a stoca parametrii utilizatorului pentru fiecare ciclu de dispozitiv
  • Monitorizarea stării - ambele sisteme sunt conștiente de fiecare altă stare: FuncGen (să-l numim așa de acum înainte) și smartphone.

Interfața cu utilizatorul

  • LCD de 20 x 4 caractere cu interfață de date simplă pe 4 biți
  • Aplicație Android - control complet al utilizatorului asupra dispozitivului FuncGen
  • Circuit sonor - feedback sunet către utilizator

Pasul 1: Diagrama bloc - Hardware

Diagrama bloc - Hardware
Diagrama bloc - Hardware
Diagrama bloc - Hardware
Diagrama bloc - Hardware

Unitate de microcontroler - ATMEGA32L

Microcontrolerul este un cip programabil care constă din toate funcționalitățile computerului care se află într-un singur cip electronic. În cazul nostru, este „creierul” și o componentă centrală a sistemului. Scopul MCU este de a gestiona toate sistemele periferice, de a gestiona comunicarea dintre aceste sisteme, de a controla funcționarea hardware și de a oferi suport complet pentru interfața utilizatorului și interacțiunea acesteia cu un utilizator real. Acest proiect se bazează pe ATMEGA32L MCU, care poate funcționa pe 3.3V și o frecvență de 8MHz.

Comunicare SoC - ESP32

Acest SoC (System on Chip) oferă suport complet de comunicare pentru FuncGen - Acces la capabilități WiFi, inclusiv comunicare directă, locală sau prin internet. Scopurile dispozitivului sunt:

  • Gestionarea transmiterii datelor între aplicația Android și dispozitivul FuncGen
  • Gestionarea mesajelor de control / date
  • Suport pentru configurare continuă client-server TCP / IP

În proiectul nostru SoC este espressif ESP32, care este prea popular pentru a-l extinde și mai mult:)

Sistem de gestionare a bateriei Li-Ion

Pentru a transforma dispozitivul nostru într-unul portabil, dispozitivul conține un circuit proiectat de încărcare a bateriei Li-Ion. Circuitul se bazează pe MC73831 IC, cu curent de încărcare controlabil prin ajustarea valorii unui singur rezistor de programare (Vom acoperi acest subiect în etapa Schematics). Intrarea de alimentare a dispozitivului este un conector USB de tip A.

Circuit Smart Switch

Circuitul de control al puterii dispozitivului cu comutator inteligent asigură un control complet al software-ului asupra secvenței de oprire a dispozitivului și lipsa necesității unui comutator extern pentru întreruperea tensiunii bateriei dispozitivului. Toate operațiunile de alimentare se efectuează prin apăsarea butonului și a software-ului MCU. În unele cazuri, ar fi nevoie să opriți sistemul: tensiune redusă a bateriei, tensiune mare de intrare, eroare de comunicare și așa mai departe. Comutatorul inteligent se bazează pe IC-ul comutatorului inteligent STM6601, care este ieftin și foarte prietenos de jucat.

Unitatea principală de alimentare

Această unitate este formată din două circuite de alimentare alimentate de la baterie - + 3,3V pentru toate circuitele de alimentare digitale / analogice și -3,3V pentru ieșirea simetrică FunGen relativ la potențialul 0V (adică forma de undă generată poate fi setată în [-3,3V: 3,3V] regiune.

  • Circuitul de alimentare principal se bazează pe regulatorul de tensiune liniar 1A LD3875-3.3 LDO (low dropout) 1A.
  • Circuitul de alimentare secundar se bazează pe IC LM2262MX, care efectuează conversia de tensiune negativă DC-DC prin condensator-încărcare-pompă - sistem pe care se bazează IC.

Sistem de generatoare de forme de undă

Sistemul a fost proiectat cu accent pe circuite integrate DDS (sinteză digitală directă) separate, care permit controlul complet al generării formelor de undă prin SPI (interfață periferică serială) a MCU. Circuitele care au fost utilizate în proiectare sunt Analog Devices AD9834 care pot furniza diferite tipuri de forme de undă. Provocările pe care trebuie să le confruntăm în timp ce lucrăm cu AD9834 sunt:

  • Amplitudinea formei de undă fixă: Amplitudinea formei de undă este controlată de modulul DAC extern
  • Nu se ține cont de nivelul de offset DC: implementarea circuitelor de însumare cu valorile de offset DC dorite
  • Ieșiri separate pentru undă pătrată și undă triunghi / sinusoidală: implementarea circuitului de comutare de înaltă frecvență, astfel fiecare ieșire cu un singur canal poate oferi toate undele dorite: sinus, triunghi, pătrat și DC.

Ecran cu cristale lichide

Ecranul LCD face parte din interfața de utilizare (interfața cu utilizatorul), iar scopul său este de a permite utilizatorului să înțeleagă ce face dispozitivul în modul în timp real. Interacționează cu utilizatorul la fiecare stare a dispozitivului.

Buzzer

Circuit generator de ton simplu pentru feedback suplimentar de la dispozitiv la utilizator.

Programator ISP integrat

Există o problemă persistentă pentru fiecare inginer atunci când vine vorba de procesul de programare: există întotdeauna cea mai gravă nevoie de a dezasambla produsul pentru a-l reprograma cu un nou firmware. Pentru a depăși acest inconvenient, programatorul ISP AVR a fost atașat la dispozitiv din interior, în timp ce datele USB și liniile de alimentare sunt legate de conectorul USB de tip A al dispozitivului. În această configurație, trebuie doar să ne conectăm FuncGen prin cablu USB, fie pentru programare, fie pentru încărcare!

Pasul 2: Diagrama bloc - Rețea

Diagrama bloc - Rețea
Diagrama bloc - Rețea

Generator de funcții cu două canale

Dispozitivul principal. Cel pe care l-am analizat în pasul anterior

ESP-WROOM-32

System-on-Chip integrat cu capabilități WiFi și BLE. SoC este atașat la placa principală (Vom acoperi acest lucru în pasul schemei) prin modulul UART și acționează ca un transmițător de mesaje între dispozitivul principal și smartphone-ul Android.

Rețea locală WiFi

Smartphone-ul și dispozitivul vor comunica prin rețea WiFi directă sau locală, pe baza configurației TCP server / client. Când dispozitivele se recunosc reciproc pe WiFi, dispozitivul principal creează server TCP cu parametrii corespunzători și este capabil să trimită / primească mesaje. Dispozitivul acționează ca un secundar față de smartphone. Pe de altă parte, dispozitivul Android se conectează la serverul TCP ca dispozitiv de rețea client, dar este considerat ca un transmițător principal de mesaje - smartphone-ul este cel care inițiază un ciclu complet de comunicare: Trimiterea mesajului - primirea răspunsului.

Smartphone Android

Dispozitiv smartphone bazat pe sistemul de operare Android care rulează pe aplicația FuncGen

Pasul 3: piese, instrumente, IDE și lista materialelor

Piese, instrumente, IDE și lista de materiale
Piese, instrumente, IDE și lista de materiale
Piese, instrumente, IDE și lista de materiale
Piese, instrumente, IDE și lista de materiale
Piese, instrumente, IDE și lista de materiale
Piese, instrumente, IDE și lista de materiale

Numărul de materiale (a se vedea tabelul XLS atașat)

UI și conexiuni de sistem

  • 1 x 2004A Char-LCD 20x4 Albastru
  • 1 x conector USB tip B.
  • 1 x 10 set Mini Micro JST XH 2,54mm 4 pini
  • 1 x 6buc momentan SW

Comandarea PCB (conform Seeed Studio)

Material de bază FR-4

Nr. Straturi 2 straturi

Cantitatea PCB 10

Nr. De modele diferite 1

Grosime PCB 1,6 mm

Culoare PCB albastru

Finisaj de suprafață HASL

Baraj pentru mască de lipit minim 0,4 mm ↑

Greutate cupru 1oz

Dimensiunea minimă a găurii de găurire 0,3 mm

Lățimea / distanța urmelor 6/6 mil

Semi-găuri placate / găuri înclinate Nr

Controlul impedanței nr

Instrumente

  • Pistol de lipit fierbinte
  • Pensetă
  • Cutter
  • ~ 22AWG fir pentru manipularea defecțiunii
  • Fier de lipit / statie
  • Cutie de lipit
  • Stație de prelucrare SMD (opțional)
  • Imprimantă 3D (opțional)
  • Fișier extrudat
  • Programator ISP AVR
  • Convertor USB în serie (opțional, în scop de depanare)

Mediu de dezvoltare integrat (IDE) și software

  • Autodesk EAGLE sau Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (Opțional)
  • Ultimaker Cura (opțional)
  • Saleae Logic (Pentru depanare)
  • Atmel Studio 6.3 sau o versiune ulterioară
  • Android Studio sau Eclipse IDE
  • Docklight Serial Monitor / Alt software de monitorizare port COM
  • ProgISP pentru programarea blițului AVR ATMEGA32L

Pasul 4: Proiectare hardware - Placă principală

Proiectare hardware - placă principală
Proiectare hardware - placă principală
Proiectare hardware - placă principală
Proiectare hardware - placă principală
Proiectare hardware - placă principală
Proiectare hardware - placă principală

Circuitul de gestionare a bateriei

Circuitul de încărcare a bateriei se bazează pe MCP7383 IC, care ne permite să selectăm un curent de încărcare dorit pentru bateria Li-Ion - 3,7 V cu o capacitate de 850 mAh. Curentul de încărcare este setat prin programarea valorii rezistorului (R1) în cazul nostru

R1 = 3KOhm, I (încărcare) = 400mA

Tensiunea USB VBUS este filtrată de filtrul π (C1, L3, C3) și acționează ca o sursă de alimentare pentru circuitul de încărcare.

Circuitul divizor de tensiune (R2, R3) permite MCU să indice dacă sursa externă de alimentare USB este conectată sau nu, furnizând următoarea tensiune la canalul A / D MCU:

V (indicație) ~ (2/3) V (BUS)

Deoarece A / D-ul nostru de ATMEGA32L este de 12 biți, putem calcula intervalul digital:

A / D (interval) = 4095V (indicație) / V (REF).

A / D ∈ [14AH: FFFH]

Unitate de alimentare Smart Switch

Circuitul permite sistemului să controleze alimentarea cu energie a fiecărui bloc proiectat atât de la buton, cât și de la software pe MCU și se bazează pe comutatorul inteligent STM6601 cu opțiune POWER în loc de RESET. Terminalele pe care vrem să le luăm în considerare sunt următoarele:

  • PSHOLD - Linie de intrare, care definește starea dispozitivului: dacă este trasă LOW, dispozitivul dezactivează toate unitățile de alimentare secundare (+ 3,3 V și -3,3 V). Dacă este ținut HIGH - dispozitivul menține starea ON.
  • nSR și nPB - Linii de intrare. Terminalele butonului. Când marginea de cădere este detectată pe acești pini, dispozitivul încearcă să intre în modul de pornire / coborâre
  • nINT - Linie de ieșire. Trăsit LOW de fiecare dată când este apăsat butonul
  • EN - Linia de ieșire, este utilizată ca putere de alimentare pentru unitățile de alimentare secundare. În timp ce este ținut LOW, ambele surse de alimentare secundare sunt dezactivate

Există câteva note importante înainte de a trece la proiectarea finală:

  • PSHOLD ar trebui să fie ridicat la 3,3 V, deoarece există cazuri în care MCU-urile forțează toate I / O să se afle în starea HIGH-Z. În acest caz, starea PSHOLD din MCU este necunoscută și poate afecta dramatic procesul de programare a dispozitivului.
  • STM6601 ar trebui comandat cu o opțiune de ajustare EN la apăsarea lungă, în loc de opțiunea RESET (am căzut în acea).

Unitate de alimentare: + 3.3V

Alimentare principală pentru toate sistemele din proiectul nostru. Când linia + 3,3V este menținută la nivelul GND (adică nu există tensiune), toate circuitele IC, cu excepția comutatorului inteligent, sunt dezactivate. Circuitul se bazează pe LDO LP-3875-3.3 IC, cu capacitatea de a fi controlat prin intermediul terminalului EN și de a furniza curent de până la 1A.

Sursa de alimentare pentru acest circuit este tensiunea bateriei, cu indicator A / D atașat pentru detectarea VBAT în configurație, similar circuitului de detectare VBUS. În acest caz, calculele diferă ușor;

V (baterie-la-A / D) = 0,59V (baterie); A / D (interval) ∈ [000H: C03H]

Unitate de alimentare: -3,3V

Circuitul de alimentare cu tensiune negativă ne permite să generăm forme de undă simetrice cu un factor de curent continuu de 0V (adică valoarea medie a formei de undă poate fi 0V). Acest circuit se bazează pe LM2662MX IC - convertor DC / DC care funcționează pe o metodă "pompă de încărcare". Curentul maxim de ieșire al circuitului este de 200 mA, ceea ce este suficient pentru cerințele noastre de proiectare - suntem limitați cu un curent de ieșire de 80 mA de la canalul fiecărui dispozitiv.

IC efectuează toate lucrările necesare, deci numai piesele pe care trebuie să le atașăm sunt două condensatoare electrolitice: C33 pentru comutare și C34 pentru by-line de linie -3,3V (considerente de reducere a zgomotului). Frecvența comutării este neglijabilă în proiectare dacă plasăm circuitul suficient de departe de piesele de generare a formelor de undă (îl vom discuta la pasul Layout PCB).

Unitate de microcontroler - MCU

Acesta este managerul și CEO-ul sistemului nostru - control, gestionare a rețelei, transmisie de mesaje și suport pentru UI - totul este de către MCU.

MCU-ul ales a fost Atmel ATMEGA32L, unde L reprezintă operația de tensiune suportată ∈ [2,7V: 5,5V]. În cazul nostru, tensiunea de funcționare este de + 3,3V.

Să luăm în considerare principalele blocuri de funcționare, care sunt necesare pentru a înțelege, lucrând cu MCU în proiectarea noastră:

  • Oscilator extern - Este o componentă opțională, deoarece ne interesează frecvența de operare de 8 MHz
  • Control periferic, rețea SPI - Toate dispozitivele periferice (cu excepția ESP32) comunică cu MCU prin SPI. Există trei linii partajate pentru toate dispozitivele (SCK, MOSI, MISO) și fiecare circuit periferic are linia dedicată CS (Chip Select). Dispozitivele SPI care fac parte din dispozitiv:

    1. D / A pentru controlul amplitudinii - Canalul A
    2. D / A pentru controlul amplitudinii - Canalul B
    3. Dispozitiv AD9834 - Canalul A
    4. Dispozitiv AD9834 - Canalul B
    5. D / A pentru controlul tensiunii de polarizare - Canalul A
    6. D / A pentru controlul tensiunii de polarizare - Canalul B
    7. Potențiometru digital pentru setări de luminozitate / contrast LCD
  • Suport LCD - Deoarece LCD este un afișaj generic de 20 x 4 caractere, utilizăm interfață pe 4 biți (Liniile D7: D4), pini de control (Liniile RS, E) și controlul luminozității / contrastului (Liniile V0 și Anod)
  • Suport LED RGB - Acest modul este opțional, dar există un conector LED RGB catodic comun cu rezistențe adecvate, conectat la MCU.
  • Power Control - MCU efectuează monitorizarea sistemului de alimentare în modul în timp real și gestionează toate evenimentele de alimentare necesare:

    1. VBAT_ADC - Monitorizarea tensiunii bateriei și determinarea stării acesteia (ADC0 Channel)
    2. PWR_IND - Indicarea conexiunii externe de alimentare (canal ADC1)
    3. PS_HOLD - Linia de activare a alimentării primare pentru toate sistemele definite. Când este tras de MCU, dispozitivul este oprit
    4. Terminal de întrerupere a comutatorului inteligent - Monitorizarea stării butonului
  • Gestionarea rețelei WiFi - ESP32: MCU comunică cu ESP32 prin interfața UART. Întrucât 8MHz ne permite să implementăm rata baud de 115200 cu o eroare relativ mică, putem folosi ESP32 în circuit fără definiții prealabile ale modificărilor ratei baud.

Programator ISP AVR

MCU-ul nostru este programat prin SPI cu linia de resetare (/ RST) trebuie trasă la HIGH pentru o funcționare corectă (dacă nu - MCU se va regăsi pentru totdeauna într-o stare de resetare).

Pentru a permite programarea și încărcarea dispozitivului prin USB, am atașat programator AVR ISP (produs de dimensiuni mici, cumpărat de pe eBay). Pentru a menține suportul USB complet al dispozitivului, este necesar să conectați terminalele USB de tip A (D +, D-, VBUS și GND) cu dispozitivul ISP AVR.

Circuit de generare a formelor de undă

Miezul dispozitivului este aceste circuite. AD9834 este un dispozitiv DDS de putere redusă care ne oferă toate formele de undă pe care am dori să le preluăm din sistem. Circuitele conțin două circuite integrate AD9834 independente cu oscilatoare externe de 50 MHz separate (așa cum se poate vedea în schemă). Motivul oscilatorului separat este considerentele de reducere a zgomotului circuitelor digitale, deci decizia a fost de a gestiona linii adecvate de 50 MHz cu oscilatoare amplasate adiacent AD9834.

Acum să ne uităm la câteva matematici:

Deoarece dispozitivul DDS funcționează pe tehnologia Phase Wheel cu valoarea de ieșire păstrată într-un registru de 28 de biți, putem descrie generarea formelor de undă matematic:

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

Și conform fișei tehnice AD9834, luând în considerare frecvența maximă, rezoluția frecvenței de ieșire poate fi obținută:

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

IC-urile AD9834 furnizează o ieșire analogică de curent pentru triunghi / sinusoidală (terminal IOUT) și ieșire digitală pentru undă pătrată (terminal SIGN_OUT). Utilizarea bitului de semn este puțin dificilă, dar suntem capabili să o gestionăm - De fiecare dată când DDS trece pragul valorii de comparație, SIGN_OUT se comportă corespunzător. Un rezistor de 200 Ohm este atașat la ieșirea fiecărui canal, astfel încât tensiunea de ieșire ar avea valori semnificative:

I (canal unic) = V (ieșire) / R (selecție tensiune); V (ieșire) = R (VS) * I (SS) = 200I (SS) [A]

Circuite de control al amplitudinii (D / A)

Conform fișei tehnice AD9834, amplitudinea acestuia poate fi ajustată prin furnizarea de curent sistemului DDS la scară completă, astfel încât, cu ajutorul unui IC D / A dual, putem controla amplitudinea semnalului de ieșire ajustând acel curent. Încă o dată, ceva matematică:

I (scară completă) = 18 * (V_REF - V_DAC) / R_SET [A]

Conform schemelor și punerea unor numere la ecuație:

I (scară completă) = 3,86 - 1,17 * V_DAC [A]

Modulul D / A utilizat în proiectare este MCP4922 pe 12 biți, când curentul este în intervalul [0mA: 3,86mA] și funcția de amplitudine liniară este:

V (selectare amplitudine) = 1 - [V (D / A) / (2 ^ 12 - 1)]

Circuit de multiplexare a formelor de undă

Ieșirile de generare a undelor pătrate și sinusurilor / triunghiurilor sunt separate la AD9834, prin urmare trebuie să folosim un circuit de multiplexare de mare viteză pentru ambele ieșiri, pentru a permite recuperarea tuturor formelor de undă dorite dintr-un singur canal separat. Multiplexorul IC este un comutator analog ADG836L cu o rezistență la pornire foarte mică (~ 0,5 Ohm).

Tabelul de selecție pe care MCU îl folosește pentru ieșiri așa cum este:

Selectarea modului [D2: D1] | Canal de ieșire A | Canal de ieșire B.

00 | Sinus / Triunghi | Sinus / Triunghi 01 | Sinus / Triunghi | Piața 10 | Pătrat | Sinus / Triunghi 11 | Pătrat | Pătrat

Circuite de control al tensiunii polarizate (D / A)

Una dintre principalele caracteristici ale generatorului de forme de undă este de a controla valoarea sa DC. În acest design, se realizează prin setarea tensiunii D / A dorite pentru fiecare canal, iar aceste tensiuni de polarizare sunt însumate cu ieșiri multiplexate pe care le-am discutat puțin mai devreme.

Tensiunea preluată de la D / A se află în intervalul [0V: + 3,3V], deci există un circuit bazat pe amplificator operațional care mapează gama D / A la [-3,3V: + 3,3V], permițând dispozitivului să ofere o gamă completă componentei DC dorite. Vom sări peste matematica analitică enervantă și ne vom concentra doar asupra rezultatelor finale:

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

Acum, gama de componente DC situată în intervalul [-3,3V: + 3,3V].

Circuite sumare - componente DC și ieșiri de formă de undă

În acest moment avem tot ce avem nevoie pentru ieșirea corespunzătoare a dispozitivului - tensiune de polarizare (componentă continuă) în domeniul de tensiune completă și ieșiri AD multiplexate AD9834. Vom realiza acest lucru utilizând amplificatorul sumator - configurația op-amp

Să omitem din nou matematica (am abordat deja o mulțime de abordări matematice) și să notăm rezultatul final al ieșirii amplificatorului sumator:

V (ieșire dispozitiv) = V (polarizare pozitivă) - V (polarizare negativă) - V (ieșire multiplexată) [V]

Prin urmare:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Conectorii de ieșire de tip BNC sunt conectați cu rezistențe de selecție (R54, R55; R56, R57). Motivul pentru aceasta este că, în cazul în care proiectarea poate fi disfuncțională, putem alege în continuare dacă dorim să utilizăm amplificatorul sumator.

Notă importantă: Rețelele de rezistențe ale amplificatoarelor finale de însumare pot fi ajustate de un proiectant, pentru a modifica amplitudinea maximă care poate fi recuperată de pe dispozitiv. În cazul meu, toți amplificatorii au același câștig = 1, astfel amplitudinea tamponată maximă este de 0,7Vpp pentru triunghi / undă sinusoidală și 3,3Vpp pentru undă pătrată. Abordarea matematică specifică poate fi găsită printre imaginile atașate ale pasului.

ESP32 ca modul extern

MCU comunică cu ESP32 prin interfața UART. Din moment ce îmi doream propriul PCB pentru ESP32, există 4 terminale disponibile pentru conectare: VCC, RX, TX, GND. J7 este un conector de interfață între PCB-uri, iar ESP32 va fi alocat ca modul extern în interiorul dispozitivului.

Interfață utilizator - LCD și difuzor

Ecranul LCD care a fost utilizat este un afișaj generic de 20 x 4 caractere cu o interfață de 4 biți. După cum se poate vedea din design, există un potențiometru digital SPI atașat la terminalele LCD „A” și „V0” - scopul său este de a regla luminozitatea și contrastul modulului LCD programat.

Difuzorul oferă ieșire de sunet utilizatorului prin generarea simplă de undă pătrată de la MCU. BJT T1 controlează curentul prin difuzor, care poate fi doar în două stări - PORNIT / OPRIT.

Pasul 5: Proiectare hardware - modul ESP32

Proiectare hardware - modul ESP32
Proiectare hardware - modul ESP32

ESP32 este utilizat ca modul extern pentru PCB-ul principal. Comunicarea dispozitivului se bazează pe comenzi AT, care sunt disponibile pe firmware-ul unui dispozitiv generic.

Nu există prea multe de extins pe acest design, dar există câteva note pentru design:

  • Pentru gestionarea defecțiunilor utilizării modulului UART adecvat al ESP32, am atașat trei rezistențe de selecție atât pentru liniile TX, cât și pentru cele RX. (0 Ohm pentru fiecare). Pentru configurația standard, modulul UART2 este utilizat pentru comenzile AT (R4, R7 trebuie lipit)
  • Dispozitivul are ieșire pe 4 linii - VCC, GND, TX, RX.
  • Pinii IO0 și EN evaluează funcționarea dispozitivului și ar trebui să fie proiectați așa cum este furnizat în schemă

Toate caracteristicile PCB le vom acoperi în pasul următor.

Pasul 6: Aspect PCB

Aspect PCB
Aspect PCB
Aspect PCB
Aspect PCB
Aspect PCB
Aspect PCB

Obiectivele proiectării unui PCB

  1. Creați un sistem încorporat pentru toate circuitele integrate de pe aceeași placă
  2. Îmbunătățiți performanța dispozitivului prin proiectarea unui singur PCB principal
  3. Reducerea costurilor - dacă doriți să căutați prețurile, modelele low-cost sunt cu adevărat low-cost
  4. Minimizați dimensiunea plăcii electronice
  5. Ușor de depanat - Putem folosi TP-uri (puncte de testare) pentru fiecare posibilă linie de funcționare defectuoasă.

Parametri tehnici

Ambele PCB-uri: placa principală și placa ESP32 au aceleași caracteristici pentru procesul de fabricație - cost redus și funcțional pentru scopurile noastre. Să le vedem:

A - Consiliul principal

  • Dimensiune: 10cm x 5.8cm
  • Număr de straturi: 2
  • Grosime PCB: 1,6 mm
  • Spațiu / lățime minimă de urmărire: 6 / 6mil
  • Diametrul minim al orificiului: 0,3 mm
  • Cupru până la marginea distanței minime PCB: 20mil
  • Finisarea suprafeței: HASL (destul de arătos, de culoare argintie, tip ieftin)

B - Consiliul principal

  • Dimensiune: 3cm x 4cm
  • Număr de straturi: 2
  • Grosime PCB: 1,6 mm
  • Spațiu / lățime minimă de urmărire: 6 / 6mil
  • Diametrul minim al orificiului: 0,3 mm
  • Cupru până la marginea distanței minime PCB: 20mil
  • Finisarea suprafeței: HASL

Pasul 7: Carcasă 3D

Carcasă 3D
Carcasă 3D

Nu l-am proiectat de unul singur, pentru că în acel moment am convins acest dispozitiv să funcționeze, așa că nu eram deloc conștient de toate elementele de bază ale imprimării 3D. Astfel, am folosit un proiect SCAD de la Thingiverse și am atașat diferite deschideri la limite, în conformitate cu specificațiile dispozitivului meu.

  1. Dispozitiv de imprimare: Creality Ender-3
  2. Tip pat: sticlă, grosime 5 mm
  3. Diametrul filamentului: 1,75 mm
  4. Tip filament: PLA +
  5. Diametrul duzei: 0,4 mm
  6. Viteza inițială: 20mm / Sec
  7. Viteza medie: 65 mm / sec
  8. Suport: N / A
  9. Umplere: 25%
  10. Temperatura:

    • Pat: 60 (oC)
    • Duza: 215 (oC)
  11. Culoare filament: negru
  12. Număr total de diafragme: 5
  13. Număr de panouri de incintă: 4

    • TOP Shell
    • Coaja de jos
    • Panoul frontal
    • Panoul din spate

Pasul 8: Implementarea software-ului - MCU

Implementare software - MCU
Implementare software - MCU
Implementare software - MCU
Implementare software - MCU
Implementare software - MCU
Implementare software - MCU

GitHub Link către Android și codul Atmega32

Algoritm software

Toate operațiunile efectuate de MCU sunt descrise în organigramele atașate. În plus, există un cod atașat pentru proiect. Să acoperim specificațiile software:

Pornire

În acest stadiu, MCU efectuează toate secvențele de inițializare împreună cu determinarea tipului de comunicație stocată cu dispozitivul Android: comunicație directă în rețea WiFi sau WLAN - aceste date sunt stocate în EEPROM. Utilizatorul poate redefini tipul de asociere a dispozitivelor Android în această etapă.

Împerecherea directă a dispozitivelor Android

Acest tip de asociere se bazează pe crearea rețelei WiFi de către dispozitivul FuncGen. Acesta va crea AP (Access Point) și un server TCP pe un dispozitiv local IP cu un SSID specific (numele rețelei WiFi) și un număr de port specific. Dispozitivul trebuie să mențină starea - deschisă pentru conexiuni.

Când dispozitivul Android este conectat la FuncGen, MCU intră în modul ACTIV și răspunde conform instrucțiunilor utilizatorului de pe dispozitivul Android.

Asociere WLAN

Pentru a comunica pe o rețea WiFi locală, MCU ar trebui să furnizeze comenzi pentru ca ESP32 să creeze AP, să comunice cu dispozitivul Android și să schimbe datele esențiale ale rețelei:

  • Dispozitivul Android primește de la FuncGen adresa MAC, o stochează în memorie.
  • Dispozitivul FuncGen primește parametrii WLAN selectați de pe dispozitivul Android: SSID, tip de securitate și Parolă și îl stochează în EEPROM.

Când dispozitivele sunt într-adevăr conectate la aceeași WLAN, dispozitivul Android va căuta FuncGen scanând toate adresele MAC ale dispozitivelor conectate la WLAN. Când dispozitivul Android determină potrivirea MAC, încearcă să comunice.

Conexiune și manipulare de stat - MCU

Când dispozitivele comunică între ele, protocolul (vezi pasul pre-final) rămâne același, iar organigrama este aceeași.

Monitorizarea stării dispozitivului

Întreruperea temporizată furnizează MCU detaliile necesare pentru gestionarea stării. Fiecare ciclu de întrerupere a temporizatorului, se actualizează următoarea listă de parametri:

  • Alimentare externă - Pornit / Oprit
  • Starea tensiunii bateriei
  • Actualizare UI pentru fiecare personalizare
  • Buton: Apăsat / Nu apăsat

Pasul 9: Implementarea software-ului - Aplicația Android

Implementare software - aplicație Android
Implementare software - aplicație Android
Implementare software - aplicație Android
Implementare software - aplicație Android
Implementare software - aplicație Android
Implementare software - aplicație Android
Implementare software - aplicație Android
Implementare software - aplicație Android

Aplicația Android este scrisă în stil Java-Android. Voi încerca să-l explic în același mod ca și pașii anteriori - împărțind algoritmul în blocuri de cod separate.

Secvență de pornire

Prima secvență a dispozitivului. Aici este prezentată sigla aplicației împreună cu activarea modulelor GPS și WiFi ale dispozitivului Android (Nu vă faceți griji, GPS-ul este necesar doar pentru scanarea în rețele WiFi adecvate).

Meniu principal

După ce aplicația este pornită, patru butoane vor apărea pe ecran. Butoane de acțiune:

  1. CONEXIUNE DIRECTĂ: inițializarea conexiunii la AP-ul FuncGen de către SSID-ul IOT_FUNCGEN. Dacă conexiunea are succes, dispozitivul intră în modul UI principal.
  2. CONEXIUNEA WIFI: Dispozitivul verifică dacă există parametri de date stocate în memorie: wifi.txt, mac.txt. Dacă nu există date stocate, dispozitivul va respinge cererea utilizatorului și va afișa mesajul pop-up conform căruia mai întâi trebuie efectuată asocierea WLAN.
  3. ASOCIERE: Comunicarea cu FuncGen în același mod ca CONEXIUNEA DIRECTĂ, dar în loc de schimb continuu de mesaje, există o singură strângere de mână. Dispozitivul Android verifică dacă este deja conectat la rețeaua WiFi și solicită utilizatorului să introducă parola. Dacă reconectarea are succes, dispozitivul Android stochează SSID și cheie de acces în fișierul wifi.txt. După o comunicare reușită cu FuncGen, acesta stochează adresa MAC primită în fișierul mac.txt.
  4. Ieșire: Suficient spus:)

Manager scanare WiFi

Am vrut ca aplicația să fie complet operațională și să nu se facă ajustări în afara aplicației. Deci, am proiectat WiFi Scanner, care efectuează toate operațiunile necesare pentru a vă conecta la rețeaua WiFi cu o parolă și SSID cunoscute.

Transmiterea datelor și comunicarea TCP

Acesta este blocul principal de cod din aplicație. Pentru toate unitățile UI există un mesaj definit într-un format specific (pasul pre-final), care îl obligă pe FuncGen să furnizeze ieșirea dorită pentru canale. Există trei tipuri de câmpuri UI în activitate:

  1. Seek Bars: Aici definim gama reală a parametrilor de ieșire FuncGen

    1. Amplitudine
    2. DC Offset
    3. Luminozitate LCD
    4. Contrast LCD
  2. Editarea textului: pentru a menține valorile întregi bine definite și precise, introducerea frecvenței se face numai prin casete text
  3. Butoane: Selectarea parametrilor din listele disponibile:

    1. Tipul formei de undă

      1. Sinus
      2. Triunghi
      3. DC
      4. Pătrat
      5. OPRIT
    2. Obtine informatii

      1. Starea bateriei (procentaj)
      2. Stare AC (sursă de alimentare externă)
    3. Opțiune de încărcare (pentru FuncGen MCU)

      1. Setările din fabrică
      2. Repornire
      3. Închide
      4. Direct - Reporniți cu modul de asociere directă
      5. WLAN - Reporniți cu modul de asociere WLAN
    4. Ieșiți în meniul principal: Destul de spus:)

Pasul 10: Testarea

Recomandat: