HW e SW per iniziare

Buongiorno
sono un programmatore di PLC, ho la necessità di fare una serie di applicazioni dove necessito di un hardware com max 8 ingressi e 8 uscite, , ho bisogno di sapere quale hardware avrei bisogno, quali software ho bisogno per programmare arduino.
Inoltre gli ingressi e uscite digitali a quanti volt funzianano, le uscite sono PNP ,NPN o 5 Volt.
L'alimentazione della CPU quali valori può vere
Grazie per l'aiuto è la prima volta che mi addentro in quest' ambiente.

Buonasera e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

P.P.S.: e, visto quanto chiedi, prova a vedere quanto indicato al punto 16.1 del REGOLAMENTO ... ci sono varie letture che puoi fare.

Intanto benvenuto.
8 ingressi digitali o analogici?
In ogni caso la scheda Arduino UNO R3 è consigliata per chi inizia da zero.

La UNO (e tutte le altre schede che montano una MCU della famiglia ATmega, come Arduino nano, Arduino mega) hanno uscite a mezzo ponte. La tensione di uscita quando il pin è HIGH è di ~5V e ~0V quando LOW. Tuttavia questi livelli dipendono dalla tensione di alimentazione della MCU, che può anche essere inferiore a 3.3V. La UNO R4 lavora alla tensione di 5V, ma la MCU può lavorare a tensione inferiore.

Altra informazione fondamentale riguarda la corrente massima che un pin può erogare. La corrente dipende dalla MCU, ad esempio per la famiglia ATmega siamo attorno 35mA, ma la somma delle correnti di tutti i pin non deve superare 200mA.
Non ci sono circuiti esterni connessi ai pin della MCU, per cui in molti casi pratici serve documentarsi leggendo il datasheet, al fine di tenersi sotto i valori specificati come Absolute Maximum Rating.

Per il software si parte solitamente da l'ambiente di sviluppo Arduino 1.8.19. Poi si scopre che è possibile usare altri ambienti di sviluppo perdendo però la semplificazione offerta dalle API e dalle librerie di estensione. Il linguaggio è il C++, e il compilatore è derivato da GNU-gcc.

Ciao.

quale hardware avrei bisogno

Una qualsiasi scheda con il processore base ATMEGA328P a 5V va bene, ad esempio ArduinoUno R3 o Arduino Nano, con cui hai di base 17 ingressi/uscite liberamente utilizzabili (e qualcuno in più con qualche accortezza). Ho messo i link allo store ufficiale dove ci sono anche caratteristiche e schemi. Naturalmente da altri siti si possono acquistare cloni a meno di un sesto del prezzo (che possono presentare qualche difficoltà di percorso, come bootloader mancante o regolatore di tensione interno in grado di reggere non più di 10V).

quali software ho bisogno per programmare arduino.

In C/C++ il suo IDE, eventualmente i driver USB (se usi Linux, per lo meno Ubuntu e derivate, non servono) e un cavetto USB. Per ora l'IDE 2.x è ancora un po' "acerbo" e si consiglia il precedente 1.8.19 (si trova più in basso nella pagina indicata).

Se invece si vuole programmare (sempre in C/C++) l'Arduino industriale Finder Opta serve l'IDE 2.x. Mentre l'ambiente grafico PLC IDE è stato trovato da chi ci ha provato ancora troppo poco usabile e ha abbandonato.

Inoltre gli ingressi e uscite digitali a quanti volt funzianano, le uscite sono PNP ,NPN o 5 Volt.

I terminali possono essere configurati a piacere come ingressi o come uscite, e sono segnali logici 5V in grado di gestire in modo continuo diciamo una decina di mA. Un ATMEGA328P può arrivare a circa 40 mA massimi, ma con oltre 1V di caduta di tensione (ho misurato una resistenza di uscita di circa 27 Ω) e stress delle porte.

L'alimentazione della CPU quali valori può vere

La CPU (intesa non in senso PLC modulo CPU, ma microcontroller interno) funziona tipicamente a 5V (si può alimentare dal pin 5V o tramite USB), oppure si può sfruttare i regolatore lineare interno ed entrare sul pin Vin (o su jack alimentazione se presente) con 8..12V (consigliati 9). Ci sono poi altre schede, come quelle che montano i micro ESP8266 o ESP32 con alimentazione, logica, e ingressi/uscite a 3,3V.


Però... il "problema" è che Arduino non è un PLC, non è progettato per superare i test EMC ed è molto sensibile ai disturbi condotti. Bisogna aggiungere "a mano" tutto il contorno che serve per renderlo usabile (come un PLC) in ambiente reale (alimentazione filtrata, disaccoppiamento di ingressi e uscite dal campo, collegamenti delle masse adeguati). Altrimenti si incorre nel problema (comune a qualsiasi circuito logico di base senza "protezioni") di vedere Arduino impallarsi o resettarsi casualmente quando si commutano i carichi esterni. In sostanza è un nucleo elaborativo logico di base, attorno a cui va aggiunta di volta in volta l'elettronica (anche poca) necessaria per l'applicazione specifica.

Esempio tipico di no buono: configuro un pin come ingresso con resistenza di pull-up interna attivata, e semplicemente lo collego a un pulsante che si trova a dieci metri di distanza (magari collegato con un cavetto che passa nei corrugati dell'impianto). Ogni volta che parte il frigo non solo quel pin riceverà un bel segnale, ma potrebbe anche bloccarsi la porta di ingresso e/o resettarsi il micro. Mai collegare i pin della logica direttamente al campo! Invece i terminali di un PLC sono adatti per questi compiti, perché il disaccoppiamento è già realizzato all'interno del PLC stesso.

Grazie per le risposte esaustive , l' utilizzo che ne devo fare io non è di tipo industriale, esistono delle interfacce con relè , magari statici, comandati a 5 volt che commutano carichi da 24Vcc? Intendo componenti arduino compatibili non autoscostruite, in oltre mi hanno detto che esistono dei compilatori che compilano linguaggio ladder. Se è vero si trovano? e per ultimo avrei la necessità di poter interfacciare arduino con un telecomando per poter dare dei comandi e scaturire una serie di sequenze delle uscite (accendere dei led) esiste qualcosa già di fatto come hardware?

esistono delle interfacce con relè , magari statici, comandati a 5 volt che commutano carichi da 24Vcc?

www.google.com/search?q=arduino+mosfet+module

mi hanno detto che esistono dei compilatori che compilano linguaggio ladder. Se è vero si trovano?

autonomylogic.com/docs/

Però leggo sul forum di parecchi problemi, legati non tanto al progetto, ma al fatto che il runtime richiesto va a occupare tutte le risorse, oltre al fatto che la mappatura di ingressi e uscite è fissa (EDIT: si può cambiare), quindi addio alla flessibilità e controllo totale che si può avere scrivendo in C/C++. La "semplificazione" introdotta dal ladder (che è un "linguaggio" specific purpose nato per emulare relé e temporizzatori) si paga con forti limiti: mappatura terminali fissa, non ci comandi display, non leggi real time clock o periferiche i2c, non leggi encoder, non fai calcoli in virgola mobile e...

poter interfacciare arduino con un telecomando

...appunto, men che meno ci leggi telecomandi

In ogni caso Arduino non è nato come sistema modulare, industriale o consumer che sia, pronto, con componenti solo da assemblare e da usare. Bisogna crearsi (se non c'è) sia l'hardware che serve che il software.

Se poi si vuole "ragionare in ladder" come metodo, nulla vieta di farlo anche col C (che essendo un linguaggio generic purpose può emulare qualsiasi cosa):

|       A           B                Q         |
|------] [---------]/[--------------( )--------|
|                                              |

Si traduce con: Q = A && !B;

Grazie sei stato molto esauriente, devo comprare una CPU ed iniziare, mi sembra di capire che mi consigliate di programmare in C, giusto?

Di sicuro x Arduino in C/C++ trovi molti esempi e siti di documentazione

1 Like