Interfacciamento parallela

Salve a tutti, scusate se vi pongo qualche quesito abbastanza banale ma sono ancora una neofita...

Devo interfacciare un sensore di temperatura collegato ad un convertitore A/D con il PC tramite la porta parallela. Uso una sonda LM35 e un ADC0804... e fin qui tutto ok. Poi mi è stato detto di usare un optoisolatore onde evitare danni alla porta del PC, e mi è stato detto anche che esistono degli integrati con 8 optoisolatori, adatti alla parallela... E' davvero utile/necessario usarlo? Qualcuno mi saprebbe indicare qualche sigla di questi integrati?

Altra domanda: come potrei alimentare questo circuito? Mi è stato vivamente consigliato di usare l'alimentazione esterna (cioè non prelevandola dalla porta) a 5V per tutto il circuito e poi alimentare gli optoisolatori a 12V (in quanto forniti di transistor) in modo da condizionare già il segnale per la parallela... Cosa ne pensate? Potrei usare una pila a 12V oppure non basta? Poi per ricavare i 5V dovrei usare l'apposito integrato, di cui mi sfugge la sigla (7XXX)...

Ultima domanda: qualcuno di voi ha mai lavorato su cose del genere? Così da avere qualche consiglio/aiuto... E nessuno di voi ha mai sviluppato software per queste applicazioni con Visual Basic o C++?

Ringrazio anticipatamente tutti coloro che presteranno attenzione a questo topic e avranno voglia di aiutarmi...

PiPPo

-------------------------------- Inviato via

formatting link

Reply to
PiPPo
Loading thread data ...

"PiPPo" ha scritto nel messaggio news: snipped-for-privacy@usenet.libero.it...

sono

ADC0804...

degli

vivamente

per

la

da

software

Ciao. Provo a risponderti io

Per quanto riguarda la protezione della porta ho usato dei 74HC244-74HCT245. Uno dei due è monodirezionale l'altro è bidirezionale (non ricordo quale, devi guardare il datasheet). Non sono optoisolatori ma sono dei buffer che devono essere alimentati a 5V e che funzionano con la logica TTL. Per quanto riguarda l'alimentazione ti conviene usarne una esterna. Il componente che ti serve è il 7805 che fornisce in uscita 5V stabili ma deve essere alimentato almeno con 3V in più. Devi anche mettere dei condensatori per evitare le oscillazioni. Sul datasheet trovi tutto (eventualmente chiedi senza problemi). Ho sviluppato un paio di applicazioni (di prova) per gestire le porte del pc (parallela e joystick). Che sistema operativo usi?

Reply to
d_daves

guarda se qui c'è quello che cerchi:

formatting link

ciao Stefano

Reply to
SB

ciao, sto lavorando per realizzare una piccola interfaccia di I/O per la parallela, per cui mi sono documentato. Gli optoisolatori in linea teorica non sono *necessari*, nel senso che se tutto funziona correttamente è come se non ci fossero. La loro utilità sta nel fatto che se sbagli qualche collegamento, il che può succedere con dei circuiti autocostruiti, senza gli optoisolatori rischi di danneggiare la parallela, e se la lpt è integrata nella motherboard rischi di danneggiare anche quest'ultima. Con gli optoisolatori sei abbastanza sicuro di non rovinare niente. Per la mia interfaccia ho previsto di metterli, e per un paio di integrati in più decisamente consiglierei di farlo. Integrati con 8 optoisolatori non ne conosco, però ne conosco con 4. Si chiamano TLP504-A2. Se qualcuno ne conoscesse da 8 farebbe cosa gradita segnalandoli qui :) (e anche se sa dove trovare i tlp504 a Milano, pare non siano molto conosciuti... ci sono solo su RS, solo che le spese di spedizione sono più alte del costo degli integrati :-))

se usi gli optoisolatori è opportuno usare una alimentazione separata in modo da avere il totale disaccoppiamento elettrico tra PC e il resto del mondo. In ogni caso dalla lpt non potresti prelevare che pochi mA (a parte il fatto che, per quanto ne so, sulla parallela non esiste un pin dedicato all'alimentazione a 5V). Non avendo ancora comprato i TLP sto facendo delle prove su breadboard con dei 4N25 (optoisolatori da 1 per integrato). Li alimento a 5V e funzionano perfettamente.

dipende dal circuito :) io prevedo di usare il mio alimentatore da laboratorio. Comunque la parallela usa segnali a 5V, non a 12 (a meno che i 12V non ti servano per qualche altra cosa).

7805

di software per cose del genere ne capisco abbastanza :) ne capisco meno di VisualBasic, ho sempre lavorato in C/C++. Se serve, fai un fischio :)

Documentazione sulla parallela, molto chiara ed esauriente:

formatting link

ciao Fabio(lo)

Reply to
Fabiolo

X Daves: uso win2k... perchè me lo chiedi? So che con il C++ Builder è abbastanza facile usare la parallela sfruttando le API di win... xò non ho mai sentito che ci siano differenze tra un sistema operativo e un altro...

x Stefano: ho visto il progettino però non è proprio quello che cerco, perchè vorrei usare (x semplicità) la parallela anzichè la seriale...

X Fabio: ora mi informo x vedere cosa trovo... non mi sono mai documentato sulla parallela, ma conosco abbastanza bene la seriale e so che fa +-12V, quindi credevo fosse la stessa cosa per la parallela...

X tutti: grazie x l'aiuto che mi state dando!!! volevo anche sapere se è necessario usare i segnali di controllo della parallela o basta semplicemente leggere gli 8 bit...

grazie ancora! PiPPo

-------------------------------- Inviato via

formatting link

Reply to
PiPPo

"PiPPo" ha scritto nel messaggio news: snipped-for-privacy@usenet.libero.it...

Se usi win2k/XP hai le porte "chiuse". Con VB non riesci ad accedere. Esiste un programma che apre queste porte e da li in poi non hai più problemi. Se invece usi sistemi come il 95/98/ME le porte sono già aperte. Il programma si chiama UserPort ed è gratuito. Prova a cercarlo con google. Se non trovi niente fai un fischio.

Puoi usare tranquillamente solo gli 8 bit della porta. Eventualmente puoi utilizzare in uscita anche alcuni pin di controllo (guarda la piedinatura per sapere quali sono) con indirizzo porta+1.

Ricordati che la parallela lavora in TTL, quindo lo 0 logico corrisponde a

0V, mentre l'1 logico corrisponde a +5V (questi dati sono semplificativi).

Figurati.

Ciao

Reply to
d_daves

Il 06 Mag 2004, 08:43, "d_daves" ha scritto:

FALSO!

Idem come sopra!

Scaricati la libreria WINIO da

formatting link
e ci riesci (PROVATO e TESTATO su WIN XP PRO... tanto per la cronaca!)

E nel file ci sono pure i sorgenti!

Davide B.

-------------------------------- Inviato via

formatting link

Reply to
Davide B.

le differenze stanno nel fatto che alcuni sistemi operativi non ti permettono di trafficare direttamente con l'hardware, ma devi scrivere dei driver (con tutte le complicazioni del caso). Win98 ti fa fare quello che vuoi (credo), win2k e xp mi sembra di no (ma non sono molto esperto di findus), su Linux e QNX devi far girare i processi come root ed usare delle opportune funzioni che ti permettono di accedere alle porte di I/O.

no, la seriale è abbastanza diversa anche a livello elettrico. La parallela lavora tutta a 5V.

Esistono due modi per gestire la parallela: SPP (standard parallel port) ed EPP (Enhanced p.p.). SPP è più semplice ma più lento, e non ha segnali di controllo (o meglio ci sono ma sono del tutto utilizzabili a piacimento, e volendo puoi anche non utilizzarli). EPP è più veloce e ha un sistema di handshaking hardware al quale le periferiche si devono attenere (anche se ci sono dei trucchi per semplificarne la gestione). Inoltre è sicuramente bidirezionale, mentre la SPP in teoria no (anche se impostando un certo bit di un certo registro dovrebbe diventarlo, ma nei miei esperimenti non ci sono ancora riuscito). L'essere SPP o EPP dipende dal fatto che il pc (o la scheda parallela) sia più o meno recente e dalle impostazioni del bios.

In modalità SPP per scrivere o leggere un dato basta scrivere o leggere gli opportuni registri che mappano l'I/O. Attenzione al fatto che mentre l'output è su 8 bit, in input puoi leggere 4 bit alla volta, e che questi bit non sono quelli di dato ma alcune linee che originariamente servirebbero al controllo delle stampanti. Ripeto che anche per la SPP dovrebbe esistere una modalità bidirezionale che permette di leggere gli 8 bit di dato in un colpo solo, ma io personalmente non ci sono ancora riuscito (però non ho fatto esperimenti approfonditi). In modalità EPP l'I/O è bidirezionale sugli

8 bit di dato (tutti i dettagli li trovi nella pagina di VincenzoV che ho segnalato).

Fabio(lo).

Reply to
Fabiolo

Il 06 Mag 2004, 11:12, snipped-for-privacy@yahoo.com (Fabiolo) ha scritto:

Si, ma questo è un bene... e non un male!

molto vero... purtroppo!

Quasi vero. In realtà ti puoi scrivere una boiata di driver e fare tutto tramite quello. Ci si impiega solo più tempo!

Davide B.

-------------------------------- Inviato via

formatting link

Reply to
Davide B.

Rieccomi... ringrazio di nuovo chi mi sta seguendo. Ho trovato qui un po' di info:

formatting link
Si parla anche di SPP bidirezionale mettendo a 1 un bit (il bit 5 di qualche registro) solo che questa funzione è supportata solo dai pc IBM PS/2... che vuol dire??!!?? Qualcuno ne sa qualcosa? Perchè altrimenti dovrei usare un multiplexer a bordo del circuito e controllarlo con qualche segnale... Da quanto ho capito se usassi la EPP dovrei gestire l'handshake anche dal circuito... o sbaglio? Cosa che per me risulterebbe abbastanza "incasinata"! Voi che esperienze avete di tutto questo con Visual Basic? Nelle librerie che mi avete consigliato (devo ancora scaricarle e vederle) si possono gestire anche i singoli segnali di controllo? Poi mi è stato detto che esiste un programma (UserPort) che "apre" le porte a qualsiasi sitema operativo...

A questo punto che mi consigliate di fare? Usare la SPP con il multiplexer (se si possono manipolare i segnali di controllo) oppure la EPP? Mi è venuta in mente una cosa, che alla fine è solo una cazzata, dipendente però dal fatto che si possano controllare i segnali singolarmente: potrei collegare 4 bit all'IN della SPP e altri 4 bit (o 3) collegarli al posto dei segnali di controllo e leggerli da software... Boh, ditemi voi, io non so da dove cominciare!

Ho visto inoltre che è abbastanza complicato trovare gli optoisolatori, gli unici che si trovano sono gli 4N25, ma sarebbe brutto metterne 8 nel circuito... e ho trovato molto buona l'idea di usare un buffer 74LS244 (mi sembra).

Aspetto i vostri consigli/risposte! Grazie ancora.

PiPPo

(p.s.: questo mi serve per la tesina di maturità... poi vi farò sapere com'è andata ed eventualmente vi ringrazierò a dovere! ;-))

-------------------------------- Inviato via

formatting link

Reply to
PiPPo

gli IBM PS/2 sono dei vecchi pc di un pò di anni fa, architettura x86 con qualche variante. Se vuoi dargli un'occhiata:

formatting link

esattamente, proprio come sto facendo io. E' abbastanza semplice.

confermo, e dovrebbe essere un handshaking hardware. Ho visto un circuito in cui il segnale di READ (o WRITE) viene negato e portato in input al WAIT (eventualmente con un pò di ritardo), in modo che la parallela si faccia l'handshaking "da sola". E' un trucco ma penso funzioni.

Il problema è che non hai altri 4 (o 3) bit di ingresso (almeno che io sappia). La documentazione che ho visto io parla di alcuni bit di controllo bidirezionali ma che non sarebbero comunque standard.

Se non hai problemi di spesa la cosa migliore sarebbero i TLP che ti ho segnalato io. Li trovi su RS, non costano molto (1.7 euro l'uno mi sembra, a te ne servirebbero 2 o 3), sono più le spese di spedizione che il prezzo dei componenti. Considerando che è comunque una cifra molto ragionevole io lo farei (se poi è per la maturità puoi farli acquistare alla scuola, non andrà in rovina per 15 neuro).

è buona dal punto di vista funzionale ma non ti garantisce la sicurezza assoluta (per carità, anche se metti la 220V all'ingresso di un optoisolatore non so cosa succede... però ti mette al sicuro dagli errori più ... normali).

Fabio(lo)

Reply to
Fabiolo

Io per un camioncino filocomandato via computer ho usato 4 conduttori della parallela in modalità SPP sola uscita; poi ho portato l'1 logico da +5V a

+9V (usati nel mio circuito) con un fotoaccoppiatore a 4 vie Telefunken CNY74-4, e 4 pull-down per lo 0 logico. Per l'alimentazione ho usato 2 batterie da 4,5V in serie (per il circuito ed uno dei motori) e in alternativa (per l'altro motore, funzionante a 4,5V).

Per quanto io sia fan del VB-power, l'interfacciamento lo farei in C++ per la maggior facilità di manipolazione dei bit con questo linguaggio e per la possibilità di usare l'intera API di Win32 senza limitazioni. Il mio programma cmq girava sotto DOS, ed era scritto in C con delle mie librerie in assembly che si appoggiavano ai servizi della ROM BIOS.

-- ColdShine

"L'esperienza è un'insegnante severa: prima ci esamina e solo dopo ci fa lezione." - legge di Vernon Sanders

Reply to
ColdShine

"Davide B." ha scritto nel messaggio news: snipped-for-privacy@usenet.libero.it...

FALSO!

FALSO!

Se leggi il messaggio bene ho specificato che ti serviva un programmino chiamato userport. Se poi tu usi altre librerie che praticamente fanno la stessa cosa è un altro discorso. Il fatto è che comunque hai bisogno di "pezzi" esterni al linguaggio VB per "aprire" le porte.

Anche utilizzando UserPort.

Reply to
d_daves

Il 07 Mag 2004, 12:16, snipped-for-privacy@yahoo.com (Fabiolo) ha scritto:

qualche

che

potrei

dei

gli

Eccomi qui!!! Dopo due giorni di studio forzato (preparazione agli esami!) sono tornato... Sono andato un po' avanti con il circuito e la sua alimentazione... tutto ok, sia a batterie che con l'alimentatore! Ho letto con calma il tutorial su

formatting link
e credo che la cosa migliore, a questo punto, sia proprio quella di impostare la SPP come bidirezionale ed usare il multiplexer 74x157, come suggerito lì... Questo casualmente ce l'ho anche a casa. Basterebbe montare il TLP per sicurezza ed il circuito dovrebbe essere finito... Per caso tu hai qualche esempio di codice VB di qualche tuo progetto, giusto x vedere qualcosa? Perchè ho scaricato le librerie e le ho guardate di sfuggita ma mi sembra di non aver visto niente su come leggere e/o scrivere i bit singolarmente o 4 alla volta... in C++ non avrei nessun problema a fare questo, in visual non saprei da dove partire! quindi se avete esempi, routine ecc sarei veramente grato se me le mandaste! vorrei un consiglio da voi: il mio circuito ha un led per l'alimentazione, cosa ne pensate se ne mettessi uno anche sul segnale che uso per controllare il mux? farebbe figo? che altro si potrebbe aggiungere?

altra domanda: che programma usate voi x disegnare i vostri circuiti? che programma è stato usato per disegnare i circuiti di

formatting link

grazie!!! se a qualcuno non dispiace può anche mandarmi un'e-mail con il proprio indirizzo così ci sentiamo via e-mail senza stare qui ogni volta a controllare il newsgroup...

grazie ancora! PiPPo

-------------------------------- Inviato via

formatting link

Reply to
PiPPo

Il 10 Mag 2004, 09:36, "d_daves" ha scritto:

Programmino? Vorrai dire un driver di periferica! Non sono la stessa cosa. Scrivere un driver non è come scrivere un programmino.

Si.. ma WINIO funziona anche su 2k/XP

Si, e la cosa mi sembra normale visto che WINZ è nato, tra le altre cose, per fornire un Framework Hardware Indipendent. In realtà, mentre con il win 95/98 puoi usare le istruzioni asm per comunicare con l'hardware, (in ed out... o come diavolo si chiamano), la stessa cosa non funziona in sistemi operativi più seri... semplicemente perchè la struttura del s.o. è diversa. E, santo cielo, è normale che ti serva una libreria (in realtà un driver più la libreria di comunicazione con il driver... se le cose sono fatte bene). Ma se guardi bene, ti occorre una libreria pure per aprire una finestra. Di per se stesso, sarebbe pure possibile bypassare il tutto usando l'api ed aprendo e scrivendo e leggendo dalla LPT1: (sfrutto lo stesso sistema per leggere e scrivere dalla seriale perchè non voglio usare l'mscomm32... e lo sfruttavo per pilotare le stampanti ad aghi in modalità testo!) Mi prometto di provarci... anche se la cosa non dovrebbe dare grossi problemi.

Prometto di guardare anche UserPort.

Davide B.

-------------------------------- Inviato via

formatting link

Reply to
Davide B.

Il 12 Mag 2004, 08:22, snipped-for-privacy@ciao.libero.it (Davide B.) ha scritto:

Guardato. Si, funziona... Però tu guarda anche winio. Noterai che c'è un po' di differenza!

Davide B.

-------------------------------- Inviato via

formatting link

Reply to
Davide B.

mi dispiace, sono iscritto alla lega per l'abolizione del visual basic :)))

io uso Eagle

formatting link

ciao Fabio(lo)

PS: scrivendo sul ng invece che mail privata si condividono le informazioni con tutti.

Reply to
Fabiolo

Il 11 Mag 2004, 22:47, falcon snipped-for-privacy@libero.it (PiPPo) ha scritto: [MegaCuttone]

Gli esempi allegati a WINIO non ti bastano?

Guarda, che sappia io le and e le or si fanno sempre nello stesso modo sia in VB che in C, C++ ed altri linguaggi (a parte il dialetto diverso...)

Ha una qualche utilità pratica? Se no... lascia perdere!

L'epoca di supercar è finita da un pezzo:)

Che altro devi fare?

Protel (versione 2004)

Davide B.

-------------------------------- Inviato via

formatting link

Reply to
Davide B.

Davide B. ha scritto:

Anche io uso WinIo da parecchio tempo con soddisfazione.

E mi consente di usare le istruzioni I/O di VC++ anche sotto WinXP/NT/2k ! ;-)

Reply to
/* frank */

Fabiolo ha scritto:

Qualcosa di well-documented per Scemal Basic? :-)

formatting link

Reply to
/* frank */

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.