Ciao!
Oggi vi parlerò di Controllino (controllino.biz), per chi non lo conoscesse è un PLC basato sulla piattaforma open source Arduino.
In questo post vedremo come configurare il software Arduino (scaricabile gratuitamente qui), per iniziare subito a programmare il nostro PLC.
Sono disponibili 3 versioni di Controllino, il Mini, il Maxi e il Mega. Vediamo le specifiche tecniche del medio di gamma, il Maxi (nella foto sopra).
Per ora è tutto, ma prossimamente pubblicherò aggiornamenti su questo ottimo dispositivo.
Per qualsiasi domanda lasciate un commento qui sotto!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
Oggi vi parlerò di Controllino (controllino.biz), per chi non lo conoscesse è un PLC basato sulla piattaforma open source Arduino.
In questo post vedremo come configurare il software Arduino (scaricabile gratuitamente qui), per iniziare subito a programmare il nostro PLC.
Sono disponibili 3 versioni di Controllino, il Mini, il Maxi e il Mega. Vediamo le specifiche tecniche del medio di gamma, il Maxi (nella foto sopra).
- Alimentazione 12V (10.8V-13.2V) o 24V (21.6V-26.4V), max 20A
- 10 uscite a relè – max 6A a 230V
- 12 Ingressi Analogici/Digitali
- 12 Uscite Digitali – max 2A a 24V o 12V
- 1 interfaccia RS485
- 1 interfaccia SPI
- 1 interfaccia i2c
- RTC
- Connettore Ethernet
- Protezione da corto circuito. sovraccarico e cariche elettrostatiche.
- Possibilità di collegarsi direttamente al micro tramite connettore sul fronte.
- Microcontrollore: ATmega2560 (lo stesso della Arduino Mega)
Cominciamo subito a configurare la nostra Controllino Maxi!
Aprite il software Arduino, dovremo aggiungere le schede Controllino a quelle già supportate.Per farlo andate su "File", "Impostazioni", nel campo "Url aggiuntive per il gestore schede", scrivere "https://raw.githubusercontent.com/CONTROLLINO-PLC/CONTROLLINO_Library/master/Boards/package_ControllinoHardware_index.json", cliccate su ok.
Poi andate in "Strumenti", "scheda.......", "gestore schede",
scrivete "controllino" ed installate la scheda.
Ad installazione finita potrete selezionare la scheda Controllino che volete utilizzare (nel mio caso la Maxi).
Scaricate ed installate (copiando nella cartella "libraries" di Arduino) la libreria di Controllino che trovate qui.
Ora possiamo iniziare a programmare il nostro Controllino.
Per questo esempio ho collegato una lampadina a 220v ad un'uscita relè, farò lampeggiare la lampadina variando la frequenza del lampeggio grazie ad un potenziometro collegato ad un ingresso analogico.
Ecco lo schema elettrico:
Per effettuare il lampeggio ho evitato l'uso del "delay()" che mette in pausa il micro non consentendoci di fare altre operazioni, ho preferito la funzione "millis()", che restituisce in ogni istante il tempo dall'accensione della scheda (espresso in millisecondi).
Quando avvio il contatore mettendo ad 1 "start_contatore1", catturo il valore di "millis" memorizzandolo in "mem_tempo1".
"millis()" continuerà ad incrementare il suo valore, quando supererà "mem_tempo1" del parametro "tempo_cont" allora verrà messo ad 1 "stop_contatore1", indicandomi che il tempo è stato raggiunto.
Il ciclo "lampeggio" è il cuore del programma, li viene attivato e disattivato il relè grazie al ritardo creato nella funzione "contatore", ho separato i vari passaggi grazie alla variabile "flag_step" in modo da evitare che venga eseguita un'operazione nel momento sbagliato.
Ed ecco il programma da caricare nel nostro Controllino Maxi tramite il cavo usb.
Scaricate ed installate (copiando nella cartella "libraries" di Arduino) la libreria di Controllino che trovate qui.
Ora possiamo iniziare a programmare il nostro Controllino.
Per questo esempio ho collegato una lampadina a 220v ad un'uscita relè, farò lampeggiare la lampadina variando la frequenza del lampeggio grazie ad un potenziometro collegato ad un ingresso analogico.
Ecco lo schema elettrico:
Per effettuare il lampeggio ho evitato l'uso del "delay()" che mette in pausa il micro non consentendoci di fare altre operazioni, ho preferito la funzione "millis()", che restituisce in ogni istante il tempo dall'accensione della scheda (espresso in millisecondi).
Quando avvio il contatore mettendo ad 1 "start_contatore1", catturo il valore di "millis" memorizzandolo in "mem_tempo1".
"millis()" continuerà ad incrementare il suo valore, quando supererà "mem_tempo1" del parametro "tempo_cont" allora verrà messo ad 1 "stop_contatore1", indicandomi che il tempo è stato raggiunto.
Il ciclo "lampeggio" è il cuore del programma, li viene attivato e disattivato il relè grazie al ritardo creato nella funzione "contatore", ho separato i vari passaggi grazie alla variabile "flag_step" in modo da evitare che venga eseguita un'operazione nel momento sbagliato.
Ed ecco il programma da caricare nel nostro Controllino Maxi tramite il cavo usb.
Per ora è tutto, ma prossimamente pubblicherò aggiornamenti su questo ottimo dispositivo.
Per qualsiasi domanda lasciate un commento qui sotto!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
finalmente una pagina in italiano. Per me un grosso aiuto visto che con l'inglese ho qualche problema. Grazie
RispondiEliminaDi niente, spero che il post ti possa essere utile!
EliminaCiao Daniele, ho inserito il linck per la ricerca della scheda come da te descritto ma non trovo la scheda controllino, come mai? Hai una soluzione?
EliminaGrazie.
io ho preso un MINI e ci sto sperimentando un po sopra
RispondiEliminanon proprio un vero plc se i delay mi mette in pausa l'intero ciclo...
RispondiEliminaÈ vero, però è programmabile anche con altri software oltre ad Arduino, che potrebbero "mascherare" questo problema.
EliminaSi può parzialmente ovviare al problema utilizzando i due ingressi ad interrupt.
EliminaOppure scrivendo tutto il loop come una macchina a stati finiti, che è sempre un buon approccio di programmazione, per questo tipo di applicazioni
L'innovazione é proprio questa, poter contare sulla robustezza di un hardware industriale con un approccio alla programmazione da microcontrollore con tutti i vantaggi che ne derivano
EliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaScusa, una domanda banale: come può controllino potenziare e agevolare la rete ethernet di casa?
RispondiEliminaGrazie Ottimo lavoro
Buongiorno Daniele, una domanda: tu hai (o hai avuto) rapporti con Controllino e la Conelcom (l'azienda collegata al progetto...)? Abbiamo acquistato un Controllino a luglio per lo sviluppo di un prototipo di un progetto ed ora che dovremmo mandarlo in produzione acquistando altri Controllino non riusciamo più a comunicare con loro in nessun canale di quelli pubblici (mail, telefono e fb...)
RispondiEliminaSai aiutarci in qualche modo a contattarli?
Buongiorno, purtroppo no, però so che ci sono anche altri prodotti simili a controllino, probabilmente riuscite a mantenere una compatibilità del codice.
RispondiEliminaCiao Daniele, al momento sei l'unico che ho trovato che ha pubblicato un esempio di utilizzo di controllino. Vorrei sapere da parte tua se i sensori di temperatura come il dht22 e il ds18b20, che vengono utilizzati spesso con arduino, si possono utilizzare anche con controllino, visto che ha tensioni di lavoro per al di sopra dei 5v.
RispondiEliminaGrazie
Ciao, se non sbaglio la doppia fila di pin sul fronte di controllino riporta esattamente i pin di Arduino. Quindi potresti collegarti li. Ciao
EliminaGrazie, molto gentile per la risposta. Ti ho posto questa domanda perchè vorrei creare un controllo centralizzato di riscaldamento con controllino, utilizzando dei sensori di temperatura come i ds18b20. Il bello di controllino è che ha già la certificazione per essere utilizzato in impianti elettrici. Tu che dici?
EliminaPerché no!
EliminaFai attenzione alla distanza e ai disturbi che possono essere indotti collegando i sensori lontano.
Ciao come collego un display da 7"su controllino mega,5v 4Amp
RispondiEliminaGrazie
Salve complementi per il post interessante, volevo chiedere una cosa ,ma quali sono i pin RX e TX? corrispondono sempre a 0 e a 1?
RispondiEliminaBuon giorno, complimenti per l'ottimo tutorial. La mia domanda è questa: per quanto ne so io, controllino Max ha incorporato un RTC, non si potrebbe usare quest'ultimo per temporizzare il lampeggio? Se si, potresti fare un tutorial su come sfruttare l'RTC?
RispondiElimina