Ciao a tutti, ho un bel problema con un sensore che non so come risolvere.
Faccio una piccola premessa per spiegare bene cosa mi serve:
Ho fatto un programma in vb.net che mi permette di connettermi in rs232 ad un sensore riftek rf603, il link sottostante manda alla pagina web del produttore e del prodotto:
questo sensore è un laser di triangolazione e mi permette di misurare con precisione la distanza tra esso e l'oggetto che ha difronte.
Nel mio programma eseguo continue letture e le salvo su disco, il laser è montato su una piccola cnc e mentre eseguo queste letture la cnc muove avanti e indietro il laser permettendomi di ottenere una scansione tridimensionale dell'oggetto.
Il fornitore mette a disposizione 2 librerie una compilata per VB e una .h per il C++
Il problema:
Quello che vorrei fare è connettere ad un arduino il laser e un interfaccia per sd card in modo che una volta dato il via alla scansione l'arduino esegua le continue letture e le salvi sull'sd, alla fine della scansione prendo l'sd la metto nel pc e scarico i dati.
Volendo il laser può dare la misura rilevata sia in rs232 che in 0-10V o 4-20mA, capisco bene che rilevare una tensione sarebbe molto più semplice ma il problema è che il laser ha un range di lavoro di 500mm e se leggo la tensione come valore analogico mi verrà diviso in 1024 unità quindi avrei una precisione di circa +/- 0.5mm a me però serve una precisione di 0.05 cosa che il laser mi riesce a dare in rs232.
PS.: Non sono espertissimo nè di elettronica nè di C++ e la libreria fornita dal costruttore in C++ non l'ho ancora affrontata quindi se ci fosse un sistema per acquisire in alta qualità il segnale utilizzando i 0-10V o i 4-20mA ben venga...
Accetto qualsiasi tipo di suggerimento, grazie a tutti anticipatamente.
Willy_80:
se ci fosse un sistema per acquisire in alta qualità il segnale utilizzando i 0-10V o i 4-20mA ben venga...
Con la risoluzione che richiedi non è fattibile in nessun modo direttamente con Arduino, serve un ADC da almeno 14 bit per arrivare a 0.05 mm.
Molto più semplice collegarsi alla RS232 e leggere i valori in formato digitale, sul manuale del sensore è spiegato il protocollo di comunicazione, abbastanza semplice, ti basta un'interfaccia RS232 per Arduino e sei a posto dal lato hardware.
Per il discorso scrittura software se la libreria C++ è in formato sorgente potrebbe essere abbastanza semplice integrarla in Arduino, altrimenti tocca studiarsi il protocollo e scrivere il relativo software.
ok grazie per la risposta, una domanda stupida, i pin rx e tx presenti sul mio arduino leonardo sono ricezione e trasmissione per rs232? o esiste una apposita scheda per rs232 da collegare a leo?
Willy_80:
ok grazie per la risposta, una domanda stupida, i pin rx e tx presenti sul mio arduino leonardo sono ricezione e trasmissione per rs232?
No sono a standard UART TTL, la RS232 usa tensioni diverse (tipicamente +/- 10V) e la logica è inversa.
Ti serve un MAX232, o più semplicemente una shield RS232.
penso che 3) non sia cosí facilmente fattibile. Secondo me devi scrivere lo sketch per arduino nuovo perché molto diverso da quello del PC.
Il compiatore che usa Arduino non é pienamente compatibile con C++, perché non haimplementato zutto del C++.
Ciao Uwe
Willy_80:
2) prendo una shield 232 la monto su arduino
3) adatto il programma per arduino e lo testo
Adattare il programma per pc la vedo difficile, ti tocca scrivere uno sketch per Arduino da quasi zero.
Il protocollo lo trovi sul manuale del sensore ed è abbastanza semplice da implementare.
ok ti ringrazio infinitamente ora sono un po incasinato e prevedo ci vorrà molto tempo ed una quantità infinita di pazienza... quindi ci proverò in un periodo un po più calmo grazie ancora