Tilbake til tidslinjen
skole apr 2024

En signalnivågenerator med en ESP32

Designprosjekt 1 på NTNUs kurs i elektroniske systemer. Oppgaven: ta inn et analogt sinusformet signal X₁(t) og produsere en utgang X₂(t) = A·X₁(t), der A settes med et hjul brukeren kan vri på. Hele forsterkningsstyringen går gjennom en ESP32 midt i kjeden: analog inn, analog ut, programvare i mellom.

Pipelinen

  • Inn: en sinus på 229 Hz med 75 mV amplitude.
  • Et analogt forsterker- og nivåskifttrinn mapper det bipolare signalet inn i ESP32-ens ADC-vindu på 0–3,3 V.
  • Inne i ESP32-en: les sampelet og potensiometerposisjonen; multipliser; skriv til den 8-bits DAC-en.
  • Ut: samme sinus, dempet eller forsterket etter posisjonen på hjulet til enhver tid.
Blokkdiagram av signalnivågeneratoren. Inn 75 mV → LM741 22× forsterker → 1650 mV bipolar → nivåskift til 0–3,3 V → ESP32 ADC + DAC styrt av et potensiometer → ut.
Hele kjeden. LM741 dytter signalet inn i ADC-vinduet, ESP32 multipliserer sampel × pot, DAC rekonstruerer utgangen.

Tall

  • Maks forsterkning: 3300/(75·2) = 22 (≈ 26,85 dB).
  • Maks demping: (3300/255)/150 = 0,086 (≈ −21,28 dB).
  • Oppløsning: potensiometeret leses gjennom en 12-bits ADC (4096 steg), så forsterkningsstyringen har et teoretisk steg på (26,85 − (−21,28))/4096 ≈ 0,0118 dB.
  • SNR: målt på den analoge front-end-en til omtrent 24–28 dB, hovedsakelig begrenset av inngangstrinnet og ikke ESP32-en selv.

Den varme løkka er én linje, med vilje:

void loop() {
  dacWrite(25, ((int)analogRead(35) * (int)analogRead(potPin)) >> 16);
}

Cast til int32 før multiplikasjonen og deretter bitshift 16 plasser holder resultatet innenfor DAC-ens 0–255-område uten å bruke en divisjon. Hele greia kjører så fort ADC-en tillater.

Detaljert skjema som viser LM741-koblingen, 22k- og 20k-tilbakekoblingsmotstander, ESP32-strømskinner og potensiometeret på pinne 13.
Endelig kobling. LM741 med 22k/20k-tilbakekobling, ESP32 ADC på det bipolart skiftede signalet, pot inn på pinne 13.
Bygget på koblingsbrett: ESP32, op-amp, potensiometer og en Digilent Analog Discovery-kabel.
Benkebygg. ESP32, LM741, potensiometer, Digilent Analog Discovery mater inngangen.

Der det svikter, og neste steg

Ved veldig lav forsterkning dominerer kvantiseringen i DAC-en, og utgangen ser ut som en trapp mellom 0 og 6,47 mV. Et passivt utjevningstrinn på utgangen ville ryddet betydelig opp i det, og er det åpenbare neste steget.

Oscilloskop: jevn oransje inngangssinus; blå DAC-rekonstruksjon følger den tett, men med synlige trappetrinn på toppene.
Utgang ved middels forsterkning. DAC-stegene er synlige på toppene, men formen følger.
Samme skopbilde ved lav forsterkning: DAC-utgangen er en grov trapp som svinger mellom kun et par kvantiseringsnivåer.
Utgang ved lav forsterkning, der trappekvantisering dominerer. Passiv utjevning på utgangen er den åpenbare neste iterasjonen.

Rapport

Tilbake til tidslinjen