Utilizzo dei TSL1401 - TSL1402 per lettura cifre, lancette, tacchette

Buongiorno a tutti quanti,

sono giorni che cerco di capire qual'é il limite dei sensori lineari CCD come il TSL1401+Lens o il TSL1402 che viene presentato in questo Playground

Il mio obbiettivo l'ho già descritto qui, leggere i metri cubi che passano nei vecchi contatori,gas o acqua, privi di contatti a impulsione.

Chi sviluppa con i robot ha sicuramente usato questi componenti e mi saprebbe dire fino a che punto posso recuperare delle informazioni fruibili.
Sicuramente i problemi fondamentali restano l'illuminazione e la messa a fuoco... :roll_eyes:
Sono pronto per comprarne uno e iniziare a fare dei test ma non vorrei toppare l'acquisto :money_mouth_face:
Confido nei vostri consigli,

Simone

Attenzione; Quel sensore non é un CCD!
Non capisco in che modo lo vuoi utilizzare per ricavare un flusso di un gas.
Quel sensore legge una riga e non un immagine bidimensionale. Inioltre Arduino non é abbastanza potente da elaborare immagini menchmeno di decifrare dei numeri.
Ciao Uwe

Temo che ti sfugga un dettaglio ... "LINEAR CCD", significa che leggi una sola linea di pixel per ogni scansione ... quindi se anche li metti di fronte ai cilindri numerati di un contatore, l'unica cosa che vedrebbe e' una SINGOLA linea di pixel sul suo asse orizzontale, e non l'intero numero ... come nello schizzo che ti allego.

linearccd.png

Grazie per le riflessioni, sempre costruttive, sono più che cosciente che il sensore che voglio usare non è un vero CCD bidimensionale e che l'Arduino uno non è sufficientemente "potente" per analizzare delle immagini bidimensionali ma è proprio la possibilità descritta da Etemenanki che mi interessa maggiormente.

Ecco le due foto che ho fatto sui contatori che ho qui a casa in Francia, il primo Gas e il secondo Acqua:

Il mio obbiettivo non è leggere esattamente i caratteri della zona rossa tramite un post trattamento con un OCR tipo Tesseract ma bensì verificare il semplice passaggio delle tacchette bianche orizzontali o magari la rotazione della lancetta che ho evidenziato in blu. Quello che voglio è leggere il digit meno significativo per poter anche rilevare la portata "istantanea".

Il totale viene scritto nel programma al momento della messa in opera, poi ogni tanto ci verificherà se il conteggio è giusto e si corregge a mano... :grinning:

Per quello non serve un CCD (il cui segnale di uscita dovresti comunque elaborare, ed e' qui che Arduino non ce la fa), ti bastano dei piccoli sensori IR a riflessione, magari con un'ottica e delle finestrelle per renderli il piu "direzionali" possibile e restringere la zona di lettura, e tarati per discriminare le tacchette bianche dallo sfondo rosso (nel primo caso) e la punta rossa della freccia dallo sfondo nero (nel secondo caso) ... :wink:

Questo è usato nei robot line follower
--> SparkFun Line Sensor Breakout - QRE1113 (Digital) - ROB-09454 - SparkFun Electronics

Mi rimane difficile pensare che anche un Arduino Due non ce la faccia a recuperare i dati come nel Playground dell'uno metterli in qualche array e fare la differenza tra un'acquisizione e l'altra... bisogna immaginare i diversi casi e buttare giù il buon algoritmo.
Anche Kevin Gordon ha fatto qualcosa con questo componente e a messo del codice qui c'é anche il link a la sua esperienza..

Devo capire bene che c'ha fatto... in inglese mi ci vuole un po di più... :sunglasses:

E' il concetto che e' diverso ... il valore di un numero assegnato ad una variabile e l'immagine dello stesso numero, sono due cose moooooolto diverse, per una MCU ... :wink:

potresti usare questo:
FAST EnergyCam su http://fastforward.ag/eng/index.html
Legge le cifre e le converte in numeri.
Ciao Uwe

Etemenanki:
E' il concetto che e' diverso ... il valore di un numero assegnato ad una variabile e l'immagine dello stesso numero, sono due cose moooooolto diverse, per una MCU ... :wink:

Certo che si, grazie, ma come ti dicevo non devo riconoscere la cifra ma bensì le variazioni/spostamenti delle tacche che attraversano verso il basso, previa illuminazione adatta, la zona di rilevamento.
La soluzione con i sensori IR non li credo cosi sensibili, sarei distante rispetto la superficie dei rulli.
Devo pensare anche all'autonomia futura visto che i contatori in questione sono quasi sempre all'esterno.

Caricando un primo sketch durante la messa in opera potrei "vedere" sul serial monitor esattamente cosa recupera il sensore mentre lo centro sul punto che mi interessa e poi caricare lo sketch del conteggio.

Conosco anche io delle soluzioni OCR come questa...

Chi ha mai usato questi sensori lineari?

Ok visto che nessuno ha mai fatto questa prova compro due sensori e li testo.

Dove mi consigliate di acquistarli... sto in Francia! :grin: Servira un sito americano o cinese?

A livello software il void getCamera() richiamato qualche volta / secondo dovrebbe essere sufficiente per catturare la linea , a livello hardware non sò se riflessione della luce di un led bianco garantirà la corretta proiezione della linea sul sensore , forse è il caso di prevedere una lente davanti, prima di tutto una volta letti i 128 sensori dovresti inviarli ad una seriale al PC e con processing o altro programma visualizzare il grafico di lettura dei 128 valori analogici , quando hai questi puoi fare tutte le prove di riflessione, con led bianco , led rosso, con lente , con filtro etc..

Grazie Icio per i consigli, ti terrò al corrente, oggi ho fatto l'ordine su Mouser, ho preso il Tsl1401 e il tsl1402.

Visto ché Natale mi son regalato anche tre moduli XBEE...

Auguri a tutti quanti! :stuck_out_tongue:

Auguri, :slight_smile: facci sapere se sei riuscito

Buon Natale a tutti!
Aspettando il materiale mi interesso al codice del Playground:

Le prime linee mi sono oscure...

// Define various ADC prescaler:
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

se provo la compilazione sul Mega2560 no problem ma sull'Arduino Due big error!

Cosa fare con gli ADPS0, ADPS1, ADPS2?

Non puoi creare codice con l'uso dei registri e sperare che sia portabile su micro completamente diversi. :roll_eyes:

Fantastico.... i primi test li faro' con il Mega2560, se per caso ci sono esempi di come configurare l'ADC del Due ne sarei sollevato!
Ho trovato qualcosa in questo Topic ma non mi aiuta più di tanto... :sweat_smile:

Ah! Babbo Natale Mouser è arrivato!

La differenza tra i due sensori é di taglia!!! il Tsl1401CL é un SMD mentre il Tsl1402R é un classico componente traversante a 14 pin

Spero di poter riuscire a cablare il più piccino... :fearful:

Salve a tutti,
ho trovato sul AUG di Roma delle soluzioni per disegnare con KST e RealTerm cosa mi rimanda il sensore, penso che per ora sia sufficiente.
Qualcuno sa con che potrei visualizzare in formato video quello che mi potrebbe uscire sulla seriale1 del MEGA?

Mi sto preparando per poi fare tutti i test necessari appena un'amico mi porterà dei vecchi contatori dell'acqua che equipaggero di piccoli motori DC... mettermi per strada o sul pianerottolo non é pratico! :roll_eyes:

Kst e realterm vanno bene ma considera che l'esempio di AUG roma con CSV per 128 campioni prende un massimo di circa 1152bytes che a 9600bps significa un aggiornamento del DB ogni secondo circa , se la lineetta permane per un tempo minore di 1 secondo potrebbe venire persa,

naturalmente dopo aver testato la corretta procedura di aquisizione non servirà più utilizzare la rs232 e il suo relativo collo di bottiglia perchè la discriminazione della lineetta sarà fatta all'interno di arduino quindi la frequenza di aquisizione passerà da 1 hz a 100 hz circa

Grazie Icio,
allora potrei provare con Processing? Lo scarico e lo installo, cercherò poi lo sketchbook che mi potrebbe aiutare per visualizzare direttamente quello che vede il sensore...
C'è qualcuno che ha già usato Processing? :confused: