Analoge og digitale signaler

Et elektrisk signal er en spænding, der varierer over tid. Den grundlæggende forskel på analoge og digitale signaler er, at et analogt signal er kontinuert – det kan antage alle værdier inden for et interval – mens et digitalt signal er diskret – det kan kun antage et begrænset antal niveauer, i praksis næsten altid to: lav (0) og høj (1).

Analoge signaler

Et analogt signal varierer glat og uden spring. Mellem 0 V og 5 V findes uendeligt mange mulige værdier, for eksempel 1,37 V eller 3,982 V, og selv meget små ændringer bærer information.

Analogt signal der svinger kontinuert mellem 0 og 5 volt
Et analogt signal: kurven er kontinuert og kan antage alle værdier mellem 0 V og 5 V.

De fleste fysiske størrelser i den virkelige verden er analoge. Typiske eksempler er:

Fordi alle mellemværdier har betydning, er analoge signaler følsomme over for støj: en forstyrrelse, der lægger 50 mV oven i signalet, ændrer direkte på den målte værdi.

Digitale signaler

Et digitalt signal kender kun to niveauer: lavt (tæt på 0 V) og højt (tæt på forsyningsspændingen, for eksempel 5 V eller 3,3 V). Modtageren afgør niveauet med en tærskel: ligger spændingen under tærsklen, tolkes den som 0; ligger den over, tolkes den som 1.

Digitalt firkantsignal med niveauerne høj og lav samt en tærskel midt imellem
Et digitalt signal: kun to niveauer. Alt under tærsklen læses som 0, alt over som 1 – her bit-sekvensen 1 1 0 1 0 0 0 1.

Tærsklen gør digitale signaler robuste over for støj: lidt støj på forbindelsen ændrer ikke fortolkningen, så længe signalet bliver på den rigtige side af tærsklen. Til gengæld kan signalet kun sige "høj" eller "lav" – ingen mellemværdier.

Eksempler på digitale signaler:

Sammenligning

EgenskabAnalogt signalDigitalt signal
VærdierKontinuert: alle værdier i et intervalDiskret: typisk kun to niveauer (0/1)
InformationLigger i den præcise spændingsværdiLigger i mønsteret af høje og lave niveauer
StøjFølsom: støj ændrer direkte på værdienRobust: tærskler filtrerer moderat støj fra
EksemplerTemperatur, lys, lyd, joystickKnapper, LED, UART, I²C, SPI
Læsning på mikrocontrollerKræver ADC (fx analogRead())Læses direkte (fx digitalRead())

Fra analog til digital: ADC

En mikrocontroller arbejder internt digitalt, så et analogt sensorsignal skal konverteres, før programmet kan bruge det. Det gør en ADC (analog-til-digital-konverter) i to trin:

Antallet af niveauer bestemmes af ADC'ens opløsning \(N\) i bit. En \(N\)-bit ADC deler referencespændingen \(V_{\text{ref}}\) i \(2^N\) trin, og den målte spænding beregnes som:

\[ V \approx \frac{\text{værdi}}{2^N - 1}\cdot V_{\text{ref}} \]

På Arduino Uno R3 har ADC'en 10 bit, så analogRead() giver et heltal mellem 0 og 1023, hvor 1023 svarer til 5 V. På Uno R4 WiFi kan opløsningen sættes op til 14 bit med analogReadResolution(14), hvilket giver værdier fra 0 til 16383 og dermed finere trin.

PWM: digitalt signal med næsten-analog virkning

Hvad gør man, når en pin kun kan være høj eller lav, men enheden skal have "halv effekt"? Svaret er PWM (Pulse Width Modulation): signalet skifter hurtigt mellem høj og lav, og forholdet mellem høj-tid og periode – duty cycle \(D\) – bestemmer den gennemsnitlige spænding:

\[ V_{\text{middel}} = D \cdot V_{\text{H}} \]
PWM-signal med 25 procent duty cycle og middelværdi på 1,25 volt
PWM med 25 % duty cycle mellem 0 V og 5 V. Signalet selv er rent digitalt, men middelværdien bliver \(0{,}25\cdot 5\,\text{V}=1{,}25\,\text{V}\).

PWM er altså en digital måde at justere den gennemsnitlige effekt til en enhed: selve signalet er stadig kun høj eller lav, men fordi det skifter hurtigt, oplever en LED, en motor eller et varmelegeme det som et mellemniveau. Jo større duty cycle, jo mere gennemsnitlig effekt.

Det bruges typisk til at styre LED-lysstyrke, motorhastighed og servoer. Læs mere på siden om PWM.

Huskeregler