Interfacciamento arduino-plc

Ciao a tutti,
sono qui a chiedere consiglio su come eseguire una cosa ben specifica.

L'intento:
far comunicare arduino con un plc tramite ingressi/uscite digitali. Per fare ciò che ho in mente mi bastano 6 ingressi/6 uscite digitali per poter fare 64 comandi.

Il problema:
Arduino riceve gli input a 5V e attiva le uscite con 5V. Il plc invece lavora a 24V.

Il quesito:
Come posso fare in modo che le uscite dell'arduino passino da 5 a 24V e quelle del plc passino da 24 a 5V?

PS: l'ULN2003A potrebbe aiutare? Credo di non aver capito bene il collegamento...

Grazie mille a tutti

puoi usare i fotoaccopiatori

JACK86:
Ciao a tutti,

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

io proporrei, per i nuovi adepti, all'atto della registrazione un avviso automatico che li obblighi a presentarsi pena l'impossibilità di scrivere, ma solo leggere

[OT]
La presentazione diventa utile quando l'utente descrive al meglio le sue conoscenze, cosa fa nella vita, e che componenti hardware possiede, se scrive "ciao sono PincoPallino ho preso ieri arduino e presto vi chiederò aiuto" sai che ce ne facciamo ? niente...
Come questo e molti altri non specificano mai di quale arduino parlano.

Ci vorrebbe una scheda di tutti noi precompilata all'iscrizione con:

nickname
anni
titolo di studio
tipo di lavoro
passioni
conoscenza elettronica (scarsa/media/buona/sono un mostro/nisba)
conoscenza informatica (scarsa/media/buona/sono un mostro/nisba)
linguaggi programmazione conosciuti
lingue parlate
hardware in possesso

allora si che ti fai un idea e rispondi a tono :slight_smile:

Ma i collegamenti sono bidirezionali? Oppure basta ingresso o uscita?

Be', lui dice 6 ingressi e 6 uscite, quindi 12 opto con le relative resistenze mi sembrano la soluzione migliore, anche perche' cosi isola galvanicamente la macchina dalla logica e c'e' meno rischio di disastri :wink:

L'esempio che ti allego (un'ingresso ed un'uscita) e' per dei PLC standard, che hanno uscite che collegano a massa ed ingressi che devi mandare a massa per attivarli, e prevede invece logica positiva per arduino (uscite attivate mandandole alte, ed ingressi attivati mandandoli alti), se e' diversa la logica di pilotaggio basta modificare le connessioni ...

Scusate per le mie mancanze... :slight_smile:

Presentazione:
Allora mi chiamo Paolo Pegoraro, ho 29 anni e abito dalle parti di Padova.
Sono un perito elettrotecnico e lavoro da quasi dieci anni con i plc industriali, prevalentemente siemens e allen bradley. Sono quindi un programmatore industriale ma per conto mio sono ormai 8 anni che ho imparato a programmare in VB e ho fatto un paio di app per android. Di recente (6 mesi fa circa) ho preso un kit starter per arduino e mi sono messo a giocare un po' con esso... Mi sono concentrato particolarmente sulla gestione dei motori passo-passo e ho in mente di fare qualche progettino simpatico con essi...
Ma ho posticipato questi progetti per concentrarmi sulla costruzione della mia abitazione... La casa sarà gestita da un plc wago ma ritengo possa integrare determinate cose anche con l'arduino.
Infatti una cosa che farò sarà comandare la casa tramite telecomando con l'arduino e la possibilità di usare un trasmettitore per comandare determinati dispositivi multimediali tra cui amplificatore, tv, pc...

Tornando a noi:
Ed ecco il motivo della mia domanda. Inviare i comandi con il plc all'arduino per trasmettere l'infrarosso, e viceversa inviare i comandi ricevuti da un telecomando al plc. Forse la cosa più semplice sarebbe usare un arduino con l'ethernet, però mi interessava anche per un motivo didattico capire come farlo tramite i suddetti 6 ingressi e 6 uscite.

Proprio perchè ho usato dei motori passo passo, ho già a casa degli ULN2003A. Non sono adatti per svolgere il lavoro richiesto? (almeno per il passaggio 5V => 24V)
Per il passaggio 24V => 5V potrei usare dei partitori di tensione forse...?

Grazie mille dell'aiuto

Si, puoi tranquillamente usare gli ULN ed i partitori (ricordandoti di mettere degli zener da 5V fra pin e massa lato arduino, sui partitori, per sicurezza) se non ti serve l'isolamento galvanico fra i vari circuiti ... gli opto erano solo per isolare il tutto, ma se hai gli alimentatori gia tutti con le masse in comune, non avrebbe senso usarli ...

Grazie.
Per la parte da 24V a 5V, invece del partitore di tensione posso mettere sempre un ULN2003A? Ovviamente con 5V sul pin 9...

Ieri ho fatto una prova:

Uln2003A
Pin 1. 5V
Pin 8. Gnd. (negativo del 5 e del 24 V)
Pin 9. 24V

Misurando con il tester tra il pin 8 e il 16 mi aspettavo 24V invece ne ho 0.7... Cosa sbaglio? Perché manca il carico? Devo per forza collegare il plc?

Se togli i 5V dal pin1 hai i 24V tra pin8 e pin16... mi sembra regolare.

JACK86:
Grazie.
Per la parte da 24V a 5V, invece del partitore di tensione posso mettere sempre un ULN2003A? Ovviamente con 5V sul pin 9...

Ieri ho fatto una prova:

Uln2003A
Pin 1. 5V
Pin 8. Gnd. (negativo del 5 e del 24 V)
Pin 9. 24V

Misurando con il tester tra il pin 8 e il 16 mi aspettavo 24V invece ne ho 0.7... Cosa sbaglio? Perché manca il carico? Devo per forza collegare il plc?

Gli uln NON possono dare in uscita una tensione positiva.

In nessun modo.

Il pin 9 NON e' l'alimentazione positiva degli uln, e' il comune dei diodi di ricircolo e basta (e se non usi carichi induttivi, non si usa), ed anche se lo si usa non va mai collegato al positivo del pilota, ma al positivo del pilotato.

Con l'uln CHIUDI A MASSA l'uscita quando dai un positivo all'ingresso, altrimenti rimane volante.

Inoltre i 2003 non sono fatti per essere usati con 24V in ingresso, a meno che non metti in serie ad ogni ingresso una resistenza da almeno 10K

Scusate ma a questo punto non ho ancora chiaro come agire...

Per la parte 5V => 24V, dato che a plc arriva il positivo, devo usare transistor PNP?

Per la parte 24V => 5V userò partitore di tensione.

Grazie ciao

Google "arduino PLC 5v to 24v scheme" ... secondo me fai prima, vedo che ci sono un bel po' di opzioni, optoisolatori, convertitori già pronti DC-DC .....

Buongiorno a tutto il forum!
(se permesso, continuerei con questo post visto che l'argomento è identico, se no ditemi che lo sposto in un post nuovo... :wink: )
Come da mia presentazione, vorrei realizzare un interfacciamento con un PLC (ingressi / uscite 24V DC) solamente per quanto riguarda segnali in uscita, per realizzare un "datalogger" di eventi.
Per maggior sicurezza avrei pensato di realizzare un optoisolatore e, prendendo spunto dai numerosi esempi del forum, avrei pensato di realizzare il circuito secondo lo schema allegato (la parte contrassegnata in rosso è il circuito già esistente).
Potreste verificare la correttezza dei valori delle resistenze R1 e R2?
Essendo l'alimentazione +24DC, il diodo in parallelo all'ingresso del optoisolatore non è necessario?
Il tipo di optoisolatore è corretto?
Visto che i segnali da interfacciare dovrebbero essere in numero di 4-5, esistono integrati che racchiudano all'interno più optoisolatori?
Grazie in anticipo per i vs. interventi e a presto.

La R2 da 10K è troppo grossa... metti 2K2

Grazie marinaio67,
giusto per capire:
dato che I=V/R => (24v-1,8v)/10KOhm=2,22mA che effettivamente è una corrente troppo bassa anche per pilotare il led...
invece I=V/R => (24v-1,8v)/2,2KOhm=10mA; risulta sufficiente o è meglio portarla sui 15-20mA, abbassando ancora la resistenza?

per quanto riguarda invece il tipo di optoisolatore?
dato che me ne servirebbero 8, avrei pensato a questi che ne racchiudono 4 nello stesso integrato:
Vishay: ILQ615 http://www.vishay.com/docs/83652/ild615.pdf
Isocom: ISP847 http://www.isocom.com/images/stories/isocom/isocom_new_pdfs/ISP817X_827X_847X.pdf
Avago: ACPL-847 ACPL-8x7 Multi-Channel Full-Pitch Phototransistor Optocoupler Data Sheet

Grazie ancora per la pazienza e a risentirci.

In realtà è anche un pò meno di 10mA, perchè la somma delle cdt è circa 3V (1,2V l'opto e 1,8V il led). Dovrebbero bastare ma puoi anche scendere un altro pò con la R, magari provi con 1K8 o anche meno. Considera che per l'opto non c'è problemi fino a 50-60mA , il limite però te lo da il led esterno a cui non manderei più di 20mA. In pratica tieniti tra 1K e 1K8 in base a quanto vuoi far illuminare il led esterno. Gli array di opto vanno benissimo tutti e tre.

Grazie ancora marinaio67,
opterò per le 1k8 che ritengo un giusto compromesso...
Dal primo circuito non avevo tenuto conto che, ca22iatemi se sbaglio :stuck_out_tongue: , gli ingressi avrebbero funzionato in logica negativa ovvero se l'out del PLC era attivo => ingresso Yun stato Low...
Ho rifatto lo schema ed ora dovrebbe essere in logica positiva (ho aggiunto una resistenza da 47 come suggerito in uno schema di optoisolatore).
Inoltre ho aggiunto un secondo canale per iniziare a ragionare su più segnali in ingresso (nel totale dovranno essere 8-10...)
Per semplificare lo schema ho anche eliminato il componente "Yun" utilizzando solamente dei label per renderlo più leggibile.
Ancora una vs. ultima opinione su questo primo step e poi parto con la realizzazione!
Grazie e a risentirci.

Buongiorno a tutto il Forum,
riprendo il discorso degli opto isolatori allegando lo schema elettrico definitivo (mancano ancora 3-4 segnali ma il senso è quello)...
Come, spero, si possa vedere ho due tipi di segnali in uscita dal PLC: uscita a 24V che devo andare a "chiudere" su 0V e contatto "pulito"; per quest'ultimo, per poter ottenere il segnale da inviare all'ingresso Arduino e per avere ancora a disposizione sul PLC il segnale pulito per futuri utilizzi, ho pensato di inserire un relè come da schema annesso.
Prima di montare il tutto e fare danni, vorrei avere ancora un confronto con voi e sapere se sembra tutto ok.
Grazie ancora per la pazienza e a risentirci.