a porte RS-232 e dispositivi PS/2- v. 1.1 Siete il
visitatore n.
Pagina ottimizzata per risoluzione 1024x768 |
||
![]() |
![]() |
Un PIC 16F877 interfacciato con un mouse PS/2 con un PC; il circuito (sulla destra nelle due immagini) è la versione successiva (v. 2.1) di quello qui presentato, con un maggior numero di canali TX/RX e alcuni LED, ed è al momento sotto test; sullo schermo dell'oscilloscopio sono visibili i segnali PS/2 data e clock |
Torna alla Home Page | Argomenti
simili su questo sito: PIC 16F877 Development Board v. 1.2 Connessione e comunicazione PIC-mouse PS/2 Keypad 4x5 per microcontrollore |
Caratteristiche del circuito
In questa pagina viene presentato un semplice circuito che permette l'interfacciamento di un microcontrollore con un dispositivo PS/2 e con la porta seriale di un PC funzionante con i livelli previsti dallo standard RS-232. Sulla basetta trovano posto anche 4 tasti, il cui valore logico può essere letto dal microcontrollore e quindi utilizzato come input da parte dell'utente. Il circuito è stato progettato per il microcontrollore PIC 16F877 per quanto riguarda il valore dei resistori di protezione verso il connettore PS/2 e verso l'adattatore di livelli logici fra RS-232 e TTL (vedi schema elettrico più avanti). Data comunque la semplicità del circuito e il valore non critico delle resistenze, dovrebbe comunque andare bene anche per altri PIC e altri microcontrollori. Faremo riferimento in questa pagina all'utilizzo con il PIC 16F877. Il circuito deve essere alimentato a +5 V; nel caso l'alimentazione avesse valori diversi, l'interfaccia per RS-232 potrebbe non funzionare affatto e potrebbe provocare danni alla seriale del PC ed eventualmente al microcontrollore; danni potrebbero aversi anche per il mouse PS/2 collegato all'omonimo connettore. Il microcontrollore e il circuito devono essere inoltre connessi ai medesimi terminali di alimentazione (Vdd = +5 V, GND); se il microcontrollore fosse alimentato con tensioni diverse, le sue porte collegate al circuito potrebbero infatti subire danni. Per qualche informazione sulla comunicazione con un mouse PS/2, potete leggere l'articolo Connessione e comunicazione PIC-mouse PS/2 su questo stesso sito. Per la comunicazione con la porta seriale RS-232 viene impiegato il classico MAX232, adattatore di livelli elettrici TTL/RS-232. I canali utilizzabili sono quattro, due in ingresso e due in uscita. Il microcontrollore può essere interfacciato alla seriale 232 con la massima libertà, in quanto i 9 segnali RS-232 sono presenti su due connettori del circuito; i quattro canali di I/O del MAX 232 sono anch'essi accessibili su due connettori; in tal modo, con dei semplici fili, saldati, volanti o con terminazioni a piacere, è possibile connettere quattro porte TTL del microcontrollore ai segnali desiderati della RS232 (2 in ingresso e due in uscita). Tipicamente, due canali saranno TD e RD; gli altri due canali disponibili possono ad esempio essere utilizzati per gestire i segnali RTS e CTS, DTR e DSR o DCD, RI. La presenza dei connettori permette inoltre di effettuare l'handshake simulato, connettendo fra loro ad esempio DTR e DSR, ecc..
Riconoscimenti e avvertenze I
nomi Microchip e PIC sono marchi registrati. Lo schema elettrico,
il layout del circuito e tutte le informazioni contenute in questa
pagina sono fornite così come sono, senza alcuna forma di
garanzia. Non mi assumo naturalmente alcuna responsabilità
per danni diretti o indiretti a persone o a cose derivanti dalle
informazioni contenute in questo articolo. In ogni caso, siate sempre certi di sapere con esattezza ciò che state facendo! Il circuito è stato disegnato con TARGET 3001! Light (licenza 400 pin). Si tratta di un CAD per il disegno di PCB a basso costo e nello stesso molto funzionale. Il circuito Nota: le immagini visibili in questa pagina sono in bassa risoluzione (100 dpi). Per avere le stesse immagini, ma a 300 dpi, in una nuova finestra, da dove potrete stamparle o salvarle, potete fare click direttamente su quelle visibili qui sotto o sui link sottostanti. Più avanti, nella sezione "Immagini per la realizzazione", vengono riportati tutti insieme i link per salvare le immagini a 300 dpi. Come si può notare nell'immagine qui sotto, al connettore K5 sono connessi i 9 fili della seriale. I versi del segnale sono indicati dalle frecce vicine ai vari terminali dei connettori stessi. Fra K5 e K6 sono montate resistenze di protezione da 330 Ohm. I segnali di K6 che si desidera connettere al microcontrollore devono essere collegati agli opportuni terminali di K7 e K8 (livelli RS-232); su K9 e K10, connessi al MAX 232 attraverso resistenze di protezione, sono presenti i segnali TTL corrispondenti a quelli su K7 e K8. Il microcontrollore dovrà dunque essere connesso a K9 e K10. I due connettori K5 e K6 permettono inoltre di effettuare opportune connessioni per l'handshake simulato: ad esempio, si potrebbe connettere DTR su K6 a DSR su K6 o su K5, interponendo quindi fra DTR e DSR nel primo caso una resistenza di 2*330 Ohm e nel secondo caso una resistenza di 330 Ohm. Leggi più avanti le note sui resistori di protezione. Qui l'immagine di piste e componenti a 300 dpi Al
connettore K3 va connessa l'alimentazione a +5V, la stessa del
microcontrollore. Come anticipato, se l'alimentazione applicata alla
basetta non è uguale a quella del microcontrollore (stessi
terminali Vdd e Vss), il microcontrollore stesso potrebbe subire dei
danni. Se l'alimentazione utilizzata è diversa da +5 V,
potrebbe aversi malfunzionamento dei dispositivi interfacciati, ovvero
il mouse PS/2 e la seriale del PC, ad eventualmente dei danni agli
stessi. Il connettore K12 permette di portare l'alimentazione ad altri
circuiti. Sul connettore K2 sono presenti i segnali Clock e Data per la comunicazione PS/2. Sul connettore K11 sono presenti i ivelli logici relativi ai quattro pulsanti; normalmente essi sono alti, per la presenza dei pull-up; premendo un pulsante, il corrispondente pin va a livello logico basso. Note sui resistori di protezione Resistori di protezione R1, R2, R13, R14, R15, R16, R17, R18, R19, R20. Essi limitano la corrente erogata/assorbita da ciascuna porta del microcontrollore nel caso di collegamento errato o programmazione errata dei pin di I/O; il valore massimo di tale corrente è di circa 5 V/ 330 Ohm = 15 mA. Se il vostro microcontrollore non può erogare/assorbire tale corrente, aumentate il valore delle resistenze. Per alcuni microcontrollori si deve rispettare anche un valore massimo di corrente erogabile/assorbibile totale o per un determinato set di porte: ad esempio, con connessioni errate e con errori di programma, facendo erogare/assorbire 15 mA alle 10 porte del microcontrollore che in totale possono essere connesse a questo circuito, si potrebbe superare il limite di corrente consentito. Resistori di protezione da R5 a R12. Le specifiche dello standard RS-232 prevedono che un cortocircuito debba essere tollerato dai dispositivi, e che in tale evenienza la corrente sia limitata. In teoria, dunque, i resistori di protezione da R5 a R12 dovrebbero essere superflui. Per motivi precauzionali, comunque, ho deciso di inserire tali resistori, il cui valore (330 Ohm) deve essere considerato di indirizzo, e non un valore corretto per ogni porta seriale 232. Si tenga presente che, utilizzando per l'handshake simulato opportune connessioni direttamente fra i pin del connettore K5, in caso di errore si potrebbe connettere un piedino di output della seriale a massa o ad un altro piedino di output, ottenendo ad esempio la connessione diretta fra +15 V circa e -15 V circa. I driver 232 della seriale del PC dovrebbero in tal caso limitare la corrente circolante, ma, a motivo precauzionale, è meglio eseguire le connessioni per l'handshake simulato fra i terminali del connettore K6, o fra K6 e K5. Stessa cosa per i segnali che vanno connessi a K7 e K8, che, provenendo da K6 anziché da K5, possono passare attraverso le resistenze di protezione da R5 a R12. NOTA BENE: il valore massimo della corrente circolante in seguito ad una connessione errata può essere dell'ordine di (15 - (-15) ) V / 330 Ohm, ovvero 90 mA; se il driver limita la corrente (per cui probabilmente non c'è neppure bisogno dei resistori di protezione), allora non vi saranno conseguenze; se il driver non limita la corrente, allora il valore di 90 mA potrebbe essere troppo elevato per il driver stesso. E' necessario in tal caso aumentare il valore delle resistenze di protezione. Le resistenze di protezione agiscono come indicato anche per il MAX 232. Attenzione, però: aumentare troppo il valore delle resistenze di protezione da R5 a R12 potrebbe portare ad errori nella interpretazione del segnale ricevuto; lo standard RS-232 prevede infatti una impedenza di ingresso dei ricevitori fra 3 KOhm e 7 KOhm; volendo connettere ad esempio DTR e DSR, e utilizzando un resistore di protezione da 3 KOhm, la tensione su DSR potrebbe arrivare a essere la metà di quella su DTR, magari uscendo dai noise margins; nel caso di errata connessione, comunque, la corrente sarebbe limitata a circa 30 V / 3 KOhm = 10 mA. A voi dunque stabilire il valore adatto alla vostra applicazione in dipendenza dai driver 232 del PC e dell'adattatore TTL-232 da voi utilizzato. Per verificare l'eventuale alterazione delle forme d'onda introdotta dai resistori di protezione, ho provato a convertire TD su livelli TTL, a reinviarlo sul primo canale di input TTL connettendo fra loro i due pin di K9, e a connettere ad RD il primo canale di uscita del MAX232, ovvero, in pratica, a riportare TD su RD dopo una doppia conversione. La comunicazione seriale è stata testata nella seguente modalità: resistori di protezione da 330 Ohm, 115200 bps, TD su K6 connesso a K7 (1 <--), pin 1 <-- di K9 (ovvero TD trasformato in livello TTL) connesso a 1--> di K9, e 1--> di K7 (ovvero TD nuovamente su livelli 232) connesso a RD di K6; l'oscilloscopio ha mostrato una lieve alterazione della forma d'onda di RD, ma assolutamente non sufficiente a uscire dai noise margins, e, su centinaia/migliaia di byte testati, in ricezione si è avuto esattamente quanto trasmesso (01010101 B). Qui lo schema elettrico a 300 dpi Elenco dei componenti Nota: tutti i resistori
hanno tolleranza del 5%. C1-C2-C5
10µF ELKO2.5-6 50 V |
Immagini per la
realizzazione
Se volete costruire questo circuito (dopo aver letto in particolare la sezione "Riconoscimenti e avvertenze"), potete trovare qua sotto i links per salvare le immagini necessarie (risoluzione 300 dpi), accessibili comunque anche in altri punti di questa pagina. Disposizione
dei componenti e disegno delle piste a 300 dpi (187 KB) |
Buon lavoro! |
|
Ultimo aggiornamento: 17 Novembre 2003 |