Controllare un nastro trasportatore fischertechnik con Arduino



Documenti analoghi
Controllo della stampatrice con nastro trasportatore a 24V di fischertechnik mediante il PLC Siemens S e il software Step 7 TIA Portal

TERMOSTATO CON REGOLAZIONE A TRIGGER DI SCHMITT

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Relazione Release Alpha 2.0

BARRIERE FOTOELETTRICHE PER MISURA AUTOMAZIONE CONTROLLO

TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA

NAO e Arduino si parlano!

Rossetto Flavio a.s. 2011/2012 classe 5E 2

MT2 e MT3: Schede e sistemi di controllo motori passo passo

KEYSTONE. OM8 - EPI 2 Modulo interfaccia AS-i Manuale di istruzione. Indice 1 Modulo Opzionale OM8: Interfaccia AS-i 1


MANUALE EDICOLA 04.05

Manuale WAGO DALI e morsetti V 0.2

Corso Base Arduino ed Elettronica

11^ parte : Come gestire i servomotori con Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

Da RS232/RS485 a LAN 10/100BaseT Ethernet. (Foto) Manuale d installazione e d uso V1.00

Da RS232/RS485 a LAN 10/100BaseT Ethernet

Programmatore per telaio scheller

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Manuale Software e Hardware Control lights music 1.0. Sommario. Introduzione

INTERFACCIA PER PC MEDIANTE PORTA SERIALE

NOTE GENERALI DI PROGRAMMAZIONE icon100

ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se

NTC E MISURA DELLA TEMPERATURA CON ARDUINO

Manuale d Uso della Centralina A Pulsanti e Led Spia

CORSO ARDUINO. Giulio Fieramosca Stefano Panichi. Corsi GOLEM 2014

Automobile Bluetooth

Indruduzione... 1 Il modulo Bluetooth HC Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android...

6^ parte : Acquisizione della temperatura con LM35. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Installazione di Zelio Soft 2 su Microsoft Windows Vista

Il sensore rilevatore di presenza modalità d uso

CORSO SERALE ( TDP ) DEMOBOARD FN1Z PER PIC 16F877/16F877A

Arduino: Programmazione

Invio SMS. DM Board ICS Invio SMS

LA SCHEDA RELÈ PLUS. Indice. Rev.0511 Pag.1 di 5

OPERA Specifiche tecniche per moduli telegestione Hardware, Quadri di campo e di rete FV

MONITORAGGIO ACQUEDOTTO MANUALE UTENTE

Procedura aggiornamento firmware. Prestige

Telecontrollo escavatore LEGO con board Arduino

DOCUMENTAZIONE J-BO. Progetto FabSchool ITE GINO ZAPPA CLASSE 4D

8^ parte : Pilotare Motori passo-passo bipolari usando l integrato L298N. Author: Ing. Sebastiano Giannitto (ITIS M.

Connessione di RStone al computer tramite RKey

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

ZIMO. Decoder per accessori MX81. Manuale istruzioni del. nella variante MX81/N per il formato dei dati NMRA-DCC

Sensori di temperatura a termocoppia K Guida Utente

Sistema di collegamento per elettrovalvole e distributori, compatibile con i bus di campo PROFIBUS-DP, INTERBUS-S, DEVICE-NET

Procedura aggiornamento firmware H02

Quindi ho fatto clic su HD Archivio a seguire clic su <foto panorami Argentini>

OSCILLOSCOPIO SOFTWARE

VRbot e ROBONOVA-I (rev. 1.2)

Università degli studi di Roma LA SAPIENZA

GESCO MOBILE per ANDROID

PANNELLO REMOTO PER BARRIERE 48BFC000 E 48BFC001

MODIFICA TRUE BYPASS DUNLOP CRY BABY GCB-95 ATTENZIONE

Arduino: domotica open source

minipic programmer / debugger per microcontrollori PIC Marco Calegari

Manuale d uso del rilevatore d Gas serie 500 G/E55

CLASSE VB1 ELETTROTECNICA E AUTOMAZIONE ITI P. HENSEMBEREGER. Ascensore a tre piani comandato da pannello operatore HMI

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisiti preliminari

Procedura aggiornamento firmware

10. Funzionamento dell inverter

IL SISTEMA PRATICO E VELOCE PER ANALISI DEL MOVIMENTO

Manuale IT_VNA by IZ1PMX

GUIDA RAPIDA. MICRO TELECAMERA PENNA DVR SU MEMORIE MICRO SD (nuovo modello con sovraimpressione di data e ora) (versione manuale 17/05/2010)

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Manuale Utente per la Domanda di Iscrizione nell Elenco Revisori degli Enti Locali

Semplice progetto con Arduino simpatico G-meter col quale misurare e registrare le accelerazioni del proprio veicolo

EM Caricabatterie universale per Laptop

TASTIERA DI COMANDO E CONTROLLO PER INVERTERS EL.-5000

MANUALE UTENTE VIVALDI MA-5240 MA-5120 MA-5060 MIXER AMPLIFICATO

Logica binaria. Porte logiche.

Diode Array 7440 SD. Apparecchio NIR per analisi in linea. Affidabile, Accurato, Immediato

Istruzioni Collegamenti da effettuare per la gestione del sistema By-me attraverso l applicativo per Microsoft Media Center.

Alimentatore con controllo remoto per Protezione Catodica Mod. CT36

HL 180 ID-Vision Manuale d uso. Versione 11/2013

LA SCHEDA DEL MODULO BLUETOOTH

Procedura aggiornamento firmware

Wallbox. Il sistema di ricarica per auto elettriche. Sistemi di Ricarica per Veicoli Elettrici - Bike & Car sharing

TEL32G Sistema di Allarme e Telecontrollo su rete GSM

Francesco Silvi IKØRKS e_mail Trasmettiamo con l interfaccia digitale (S.B.)

Datalogger web contaimpulsi

9^ parte : Come pilotare motori dc utilizzando il motor shield. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

GPS Personal Tracker Localizzatore Personale GPS GPS-TK90. Guida Rapida

Progetto Esami Di Stato Anno 2014/2015

Printer Driver. Questa guida descrive l installazione dei driver stampante per Windows Vista e Windows XP.

LeGGere tutte Le indicazioni Prima di avviarsi all installazione

Comandi fermodellistici Pittogrammi, Simboli circuitali, Codifica letterale

Sistemico Srl unip. Via Ceresani, Fabriano AN. Tel Powered by Sistemico

IRSplit. Istruzioni d uso 07/10-01 PC

Lettore di badge Nexus

ALBRE24R2M3A. Descrizione pagina 2. Specifiche tecniche pagina 3. Layout pagina 4, 5. Mappe di cablaggio pagine 6, 7. Dimensioni pagina 8

ISTRUZIONI DI INSTALLAZIONE

Encoder Encoder 1 su 15. Descrizione. Codifica filo per piano max. 15 piani + 2 frecce + segnale di movimento

2.7 La cartella Preparazioni e CD Quiz Casa

Videoproiettore Sanyo XU305 della sala consiglio - Brevi istruzioni d uso _ Versione 0 _ Brevi istruzioni. Dipartimento di Ingegneria

CNC Educazionale. Ref. 1107

Vivax Compact System WiFi

MANUALE DI INSTALLAZIONE

Transcript:

TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore fischertechnik (a 24 Volt) con una scheda Arduino (a 5 Volt) Pietro Alberti (Media Direct srl, Italia) pietro@mediadirect.it Wohlfarth Laurenz (fischertechnik GmbH, Germany) Dedicato alla mia famiglia: Marco, Luca, Chiara, Francesco e Maria 10-01-2013: Versione finale 1/12

fischertechnik: DESCRIZIONE DEL MODELLO Modello di nastro trasportatore: 275 mm di lunghezza, trasporta pezzi con un diametro fino a 29 mm. Possibilità di combinare assieme più nastri trasportatori. Dimensioni del modello: 275x210x70 mm. Il modello comprende: - 1 motore a corrente continua a 24V - 1 pulsante (libero da potenziale) utilizzabile come come start/stop o contatore di impulsi (essendo accoppiato all asse del motore psi può usare per misurare la distanza percorsa). - 2 barriere fotoelettriche (fototransistor e lampade lenticolari a 24V). - 1 pezzo cilindrico da trasportare (Ø 29 mm, h = 25 mm). Ingressi/Uscite: - 3 ingressi digitali (2 barriere fotoelettriche come fine corsa e 1 pulsante/contatore). - 1 uscita (1 motore per il moto del nastro trasportatore, comandabile mediante 2 uscite per la direzione avanti/indietro). 2/12

Il modello fischertechnik arriva già assemblato e con un foglietto che descrive precisamente la piedinatura dei contatti disponibili nella scheda per l interfacciamento: Il modello fischertechnik funziona a 24 Volt! motore 24 V: lampada 24 V: fototransistor 24 V: 3/12

Arduino: COMPONENTI ESCRIPTION 1 Arduino Duemilanove ma si può usare una qualsiasi delle analoghe schede (Arduino Uno Rev3, Arduino Leonardo, ): l importante è che abbiano almeno 3 ingressi analogici e 2 uscite digitali. 1 Shield TinkerKit Sensor: solo per semplificarmi il cablaggio (opzionale) 2 moduli relè TinkerKit: per azionare il motore (avanti e indietro) 2 potenziometri (10 kohm) per ridurre 24V 5V (dai fototransistor) Alimentazione (per Arduino) Arriva dal cavo USB collegato al computer. Una volta programmato Arduino, si può staccare il cavo e usare una batteria 9V. Arduino funziona a 5 Volt! 4/12

LA SFIDA Il modello di nastro trasportatore fischertechnik richiede 24V, essendo esso un TRAINING MODEL da controllare mediante dispositivi del mondo reale come i PLC industriali di Siemens. Quindi i motori e le lampade richiedono 24 V. Arduino può comandare il motore a 24V senza problemi: ho usato 2 relè. Fischertechnik ora offre due uscite per pilotare il motore: Q1 avanti; Q2 indietro: grande! Ma il segnale di input che arriva dalla barriera luminosa è a 24 V! Arduino accetta al massimo 5 V, no 24 V. La sfida è leggere il segnale dal fototransistor con Arduino! Si tratta di un problema di condizionamento del segnale (max: 5V, 40 ma). Ho usato un circuito molto semplice mediante un trimmer da a 10 KOhm. Attenzione: ho collegato la massa di fischertechnik (-) alla massa di Arduino (gnd): senza la massa comune, l ADC legge rumore. Prima di collegare i fili ad Arduino ho regolato manualmente il trimmer grazie ad un comune multimetro: mi sono fermato quando sono arrivato a 5 V. Da un punto di vista analitico: V out = V in *R 2 /( R 1 + R 2 ) V R 1+ R 2 R 2 V out = V in *R 2 /( R 1 + R 2 ) I MAX 0 V 10.000 Ω - 0 V 0 24 V 10.000 Ω 2.000 Ω 5 V 3 ma Quindi ora il voltaggio è di circa 5V e la corrente di pochi ma. Ho usato alcuni plug di fischertechnik per collegare il trimmer evitando di usare una basetta di prova e lo stagnatore: 5/12

SCHEMA DEI COLLEGAMENTI ELETTRICI Allego uno schema di collegamento elettrico. Potrebbe essere utile. Ho preferito usare carta e penna anche se forse avrei fatto prima a computer ;-) 6/12

COME FUNZIONA IL MODELLO: ALGORITMO Lo scopo è muovere avanti e indietro il cilindretto nero tra le due barriere luminose. Ho sviluppato un programma e l ho scaricato su Arduino mediante cavo USB. Quando si alimenta Arduino (mediante il cavo USB o una batteria esterna) il programma scaricato parte automaticamente. Il principio di funzionamento è descritto dalle seguenti azioni 1-3, ripetute all infinito (default): 1) Motore avanti (dalla barriera 1 alla 22): il cilindro deve essere posizionato a metà nastro (solo la prima volta) 2) quando il cilindro arriva alla barriera 2: ferma il motore, aspetta 3 s, motore indietro 3) quando il cilindro arriva alla barriera 1: ferma il motore, aspetta 3 s, motore avanti per 1.5 s, (riposizionamento iniziale) 4) ripeti il ciclo dal punto 1) PROGRAMMAZIONE DI ARDUINO (Processing) Ho usato Processing per programmare Arduino, in linguaggio C. Il programma è molto semplice, giusto per testare il sistema. Molte migliorie si possono fare. Ho programmato il sistema definendo la variabile di stato del sistema ( stato ), per capire a che punto siamo. stato = 0: cilindro in mezzo al nastro, motore avanti verso la barriera 2 stato = 1: cilindro arrivato alla barriera 2 (stop motore, attesa 3 s, motore indietro) stato = 2: cilindro arrivato alla barriera 1 (stop motore, attesa 3 s, motore avanti fino a metà) Ho inoltre usato lo Strumento > Monitor Seriale di Processing per mostrare a computer alcuni messaggi indicanti lo stato del sistema.. /* Uscite: pin 10: motore nastro trasp. indietro (uscita digitale: HIGH/LOW) pin 11: motore nastro trasp. avanti (uscita digitale: HIGH/LOW) Ingressi: pin A0: fine corsa 2 (ingresso analogico 0-5V) pin A1: fine corsa 1 (ingresso analogico 0-5V) */ 0V = oggetto presente (phototransistor non illuminato) 5V = object non presente (phototransistor illuminato) Ho deciso una soglia di 2.5V per decidere se l oggetto è presente o no. const int MotAvantiPin = 11; // USCITA DIGITALE: relè motore collegato a "OUTPUT 0" (pin 11) sullo shield-sensor const int MotIndietroPin = 10; // USCITA DIGITALE: relè motore collegato a "OUTPUT 1" (pin 10) sullo shield-sensor int stato; // stato del sistema int sensorvalue; // valore letto dal sensore: 0...1023 float voltage; // valore letto dal sensore, convertito in 0...5 Volt // la routine 'setup' viene eseguita per PRIMA e una sola volta, all'avvio o quando si preme il pulsante reset sulla scheda Arduino void setup() { Serial.begin(9600); // inizializza la comunicazione seriale a 9600 bps digitalwrite(motindietropin, LOW); // Avvia nastro trasportatore digitalwrite(motavantipin, HIGH); // Nastro avanti Serial.println("Nastro AVANTI"); Serial.println("Posizionare pezzo in mezzo al nastro"); stato=0; // 0 = avanzamento da fc1 -> fc2 } // la routine 'loop' viene eseguita all'infinito void loop() { if (stato==0) // Nastro AVANTI: attesa fc2 { sensorvalue = analogread(a0); // legge ingresso di tensione A0 (0 1023), FC2 voltage = sensorvalue * (5.0 / 1023.0); // converte da 0...1023 0...5V if (voltage < 2.5) { // Barriera fotoelettrica interrotta (presenza oggetto) 7/12

} } stato=1; // 1 = raggiunto fc2 digitalwrite(motavantipin, LOW); // Nastro stop Serial.println("Raggiunto fine corsa FC2: stop 3 s, poi indietro"); delay(3000); //pausa 3 secondi Serial.println("Nastro INDIETRO"); digitalwrite(motindietropin, HIGH); // Nastro indietro } if (stato==1) // Oggetto arrivato a FC2 e Nastro indietro: attesa fc1 { sensorvalue = analogread(a1); // legge ingresso di tensione A1 (0 1023), FC1 voltage = sensorvalue * (5.0 / 1023.0); // converte da 0...1023 0...5V if (voltage < 2.5) { // Barriera fotoelettrica interrotta (presenza oggetto) stato=2; // 2 = raggiunto fc2 digitalwrite(motindietropin, LOW); // Nastro stop Serial.println("Raggiunto fine corsa FC1: stop 3 s, poi riposiziona in centro"); delay(3000); //pausa 3 secondi digitalwrite(motavantipin, HIGH); // Nastro avanti delay(1500); //pausa 1.5 secondi Serial.println("---- POSIZONE INIZIALE ----"); digitalwrite(motavantipin, LOW); // Nastro STOP delay(5000); //pausa 5 secondi digitalwrite(motavantipin, HIGH); // Nastro AVANTI, riparte il ciclo stato=0; //ripristina stato iniziale, così riparte il tutto... } } 8/12

FOTO E ANNOTAZIONI 1 a versione: Nastro trasportatore fischertechnik + Arduino Duemilanove Cavi connessi al volo, versione alfa ma molto chiara. Cavi connessi alla morsettiera con contatti a molla sulla scheda fischertechnik. 2 a versione: Ho usato un cavo flat (piattina) con connettore IDC 26P, per un cablaggio migliore e per facilitare lo sgancio tra il modello fischertechnik e il mondo Arduino. I 24 V arrivano da un alimentatore della Siemens che ho usato in passato per interfacciare i PLC Siemens con i modelli industriali (Training Models) di fischertechnik. Particolare del collegamento del potenziometro usato per abbassare a 5V i 24V che arrivano dalla barriera fotoelettrica. Versione finale: Ho realizzato un box di interfacciamento tra Arduino e fischertechnik: - basetta millefiori (a saldare) - 3 trimmer 10 Kohm - 2 relè tinkerkit - 1 connettore 8 pin (lato Arduino) - 1 connettore 8 pin (lato fischertechnik) - morsettiera per 2 fili (per alimentazione 24V) Inoltre ho implementato un contatore di impulsi provenienti dallo switch I3 accoppiato all asse del motore (tipo encoder), visualizzando questo dato nella seriale. Infine ho interfacciato il sistema con l ambiente Processing, sincronizzando le informazioni mediante trasmissione seriale. 9/12

ULTIMO AGGIORNAMENTO: 10-01-2013 Ho deciso di chiudere il progetto cercando di realizzare un sistema il più possibile chiaro. Ho realizzato un box di interfacciamento tra Arduino e fischertechnik: - basetta millefiori (a saldare) - 3 trimmer 10 Kohm - 2 relè tinkerkit - 1 connettore 8 pin (lato Arduino) - 1 connettore 8 pin (lato fischertechnik) - morsettiera per 2 fili (per alimentazione 24V) Nel software di gestione di Arduino ho implementato un contatore di impulsi provenienti dallo switch I3 accoppiato all asse del motore (tipo encoder), visualizzando questo dato nella seriale. Interessante è stata la soluzione software per evitare l effetto rimbalzo nella commutazione degli ingressi digitali. Stati: 0,1,2,3 Impulsi: 100 + nr_impulsi_reali Infine ho interfacciato il sistema con l ambiente Processing, sincronizzando le informazioni mediante trasmissione seriale e con visualizzazione grafica dello stato dei sensori e del motore del nastro trasportatore. Processing riceve via seriale da Arduino dei dati numerici che rappresentano lo stato (valori: 0,1,2,3,4) o il numero di impulsi contati dal sensore I3 (valore aumentato di 100). 10/12

SCHERMATE COL SOFTWARE PROCESSING STATO 0 Il pezzo (cerchio verde) avanza da sx verso dx Schermata di Processing 1 Il pezzo (cerchio verde) ha raggiunto il fine corsa a destra: - led sensore dx acceso - visualizzazione Numero di Impulsi 2 Il pezzo (cerchio verde) avanza da dx verso sx 3 Il pezzo (cerchio verde) ha raggiunto il fine corsa a sinistra: - led sensore sx acceso - visualizzazione Numero di Impulsi Riparte il ciclo da stato=0 11/12

CONSIDERAZIONI FINALI All inizio pensavo fosse un progetto troppo semplice (solo 3 ingressi e 2 uscite). Poi invece si è rivelato molto interessante e ricco di aspetti tecnici hardware/software e di spunti per miglioramenti da implementare in seguito. Ecco alcune idee. Hardware: - Adattamento elettrico da 24 5 Volt. Notare che la mia soluzione è probabilmente la più semplice ed economica. Sicuramente si può migliorare il circuito utilizzando amplificatori operazionali, diodi, ecc. - Numero di Ingressi/Uscite: si potrebbe aumentare il numero di ingressi/uscite (usando quindi più relè, magari più piccoli) e quindi poter gestire anche i modelli più complessi di fischertechnik a 24V (braccio robotico, nastro trasportatore, stazione pneumatica, ) - Software: Il software che ho realizzato è essenziale, giusto per mettere in funzione il sistema. Ma tante idee mi sono venute come possibili completamenti e/o varianti: - inserire pulsanti a video per lo start/stop del modello (usando la comunicazione seriale) - inserire suoni/animazioni correlati allo stato del sistema - usare altro ambiente di sviluppo, magari Visual Basic/C - controllare il sistema via Web, usando una scheda Arduino Ethernet (esiste eventualmente anche un apposito shield) e utilizzandola come server Web - Grazie per la vostra attenzione! Pietro Alberti pietro@mediadirect.it 10 Gennaio 2013 Disclaimer: il sottoscritto declina ogni responsabilità per eventuali danni a persone e/o cose derivanti dall uso del presente documento. 12/12