In questa pagina sperimenteremo l'uso di due linee di trasmissione con impulsi digitali: un doppino CAT5 ed un cavo coassiale RG58. I risultati sono analoghi a quanto descritto in questa pagina.
Per effettuare questa prova è utile disporre di (nota 1):
Le forme d'onda mostrate in seguito sono state ottenute con un generatore di impulsi Iwatsu PG-230 (un po' vintage...) con un tempo di salita di 5 ns ed un oscilloscopio Picoscope 3405A con un tempo di salita di 3.5 ns; questi strumenti possono essere visti "in opera" nella fotografia di apertura; con essi è possibile sperimentare l'uso di linee anche di soli pochi metri di lunghezza, cioè con tempi di propagazione dell'ordine di poche decine di nanosecondi; quanto di seguito mostrato utilizza invece una matassa di ben 100 m di cavo RG58 e quindi è possibile utilizzare strumenti di fascia inferiore.
L'immagine seguente mostra un doppio impulso trasmesso dal generatore di impulsi (in blu) ed il segnale ricevuto al termine di un cavo lungo circa 100 m e correttamente terminato (in rosso); il tempo impiegato dal segnale è di poco più di 500 ns.
Nel caso di linea non terminata sono presenti riflessioni. Di seguito due esempi, rispettivamente nel caso di circuito aperto;
e di cortocircuito:
Potete anche consultare una relazione con l'esperienza che un collega che insegna nella mia scuola proponeva quasi venti anni fa alle classi seconde dell'indirizzo elettronico (www.fisicachimica.it).
Per questa prova utilizzeremo Arduino come generatore di segnali da trasmettere lungo un doppino di qualche decina di metri di lunghezza. In alternativa è possibile utilizzare un microcontrollore PIC18 oppure un Rapsberry Pi.
Anche in questo caso è opportuno, se possibile, disporre di un oscilloscopio da 100 MHz a quattro o più canali.
Arduino possiede al proprio interno un modulo di comunicazioni SPI in grado trasmettere o ricevere un byte fino alla frequenza di clock di 8 MHz (o anche più, in alcuni modelli). Il codice di trasmissione che utilizzeremo è piuttosto semplice:
#include <SPI.h>
void setup() {
SPI.begin();
SPI.beginTransaction(SPISettings (8000000, MSBFIRST, SPI_MODE0));
}
void loop() {
SPI.transfer(0x01);
// SPI.transfer(0xFE);
}
L'esempio mostrato trasmette continuamente alla velocità di 8 Mbps il byte 0x01 (oppure 0xFE). Rispetto al normale uso di SPI non viene gestito da questo codice né il segnale MISO trasmesso dal dispositivo slave né al segnale SS di selezione delle periferiche in quanto non rilevanti in questo contesto.
Come driver utilizzeremo un trasmettitore/ricevitore (transceiver) differenziale per linee RS485, adatto a funzionare alla frequenza di clock scelta, per esempio un SN65HVD08 o un MAX485. Siamo interessati al solo segnale MOSI (pin D11 di Arduino Nano); lasceremo il trasmettitore, a sinistra nello schema, sempre attivo ed il ricevitore, a destra, sempre attivo.
Si noti la presenza dei due resistori di terminazione R1 ed R2 agli estremi della linea.
La fotografia seguente mostra come è stato realizzato il circuito usando una breadboard:
Di seguito i segnali presenti nel caso di trasmissione di un solo zero, cioè di 0xFE (nota 3), su una linea molto breve:
Dall'alto abbiamo:
La linea di trasmissione è costituita da circa 25 metri di cavo CAT5e, normalmente utilizzato per realizzare reti locali. Per il corretto funzionamento è necessario terminare ai due estremi la linea con una resistenza di 100 Ω, pari alla Z0 del cavo.
Di seguito i segnali presenti:
Dall'alto abbiamo:
I cursori mettono in evidenza un tempo di propagazione di quasi 195 ns, somma del tempo di propagazione del trasmettitore, del ricevitore (già visti poco sopra) e della linea di trasmissione.
Pagina creata nel gennaio 2021
Ultima modifica: 26 gennaio 2021
Appunti scolastici - Versione 0.1026 - Agosto 2024
Copyright 2012-2024, Vincenzo Villa (https://www.vincenzov.net)
Creative Commons | Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)