Domanda

Ho un sensore IR che scrive le sue informazioni correnti su un token che poi interpreto in un'applicazione C #. Va tutto bene - nessun problema lì, ecco il mio codice:

SetLabelText(tokens [1],label_sensorValue);
sensorreading = Int32.Parse(tokens[0]);
sensordistance = (mathfunctionhere);

Grande. Quindi più lontano il sensore IR proviene da un oggetto, più bassa è la lettura del sensore (poiché meno luce viene riflessa e ricevuta dal sensore).

Il mio problema è interpretare quella lunghezza. Posso andare avanti e ottenere diciamo "110" come valore quando un oggetto è a 5 pollici di distanza, quindi "70" come valore quando un oggetto si trova a 6 pollici di distanza. Ora voglio essere in grado di calcolare la distanza di un oggetto usando queste costanti per qualsiasi lunghezza.

Qualche idea?

È stato utile?

Soluzione

Bene, la prima cosa che vorrei fare è prendere i dati a distanze fisse, ad es. 1 pollice, 1 piede, 2 piedi, 5 piedi, ecc. Poi traccerei quei dati in un programma come Excel e troverei il meglio curva di adattamento da cui è possibile derivare una funzione. Usa quella funzione nel tuo codice e inizia a testare a varie distanze.

Ora, potrebbe non essere così semplice. Le proprietà riflettenti dell'oggetto che stai cercando di misurare cambieranno le tue letture, così come altri fattori. Dal momento che non so quali siano le tue esigenze, è difficile per me dare consigli più specifici.

Altri suggerimenti

È più una questione di fisica che una di matematica!

Il suggerimento di Ed Swangren di creare tabelle con la registrazione di vari esperimenti è la strada da percorrere, a meno che non si possa anche fare affidamento sulle informazioni fornite dal produttore del sensore.

A parte l'intrinseca precisione e fedeltà del dispositivo, molti fattori possono interferire con l'efficacia quantità di energia (o qualunque cosa venga restituita e misurata); la lettura su questo particolare dispositivo o anche su oggetti simili e / o sui fondamentali degli effetti / dimensioni fisici in gioco può fornire ulteriori idee per la calibrazione.

Una volta che hai una tabella che associa le misure alla distanza (e forse criteri aggiuntivi temperatura, fattore riflettente ...), diventa un vero problema di matematica, ad esempio:

  • conferma la rilevanza statistica della precisione mirata
  • estrapola la lettura reale con la tabella discreta (sembra essere la domanda originale dell'OP)
  • trova la funzione di regressione e elimina l'approccio della tabella (dubito che sarebbe facile, come accennato nei commenti e che questo sarà ben lungi dall'essere lineare ...

L'IR riflesso viene spesso utilizzato per il rilevamento di oggetti. Ma, se la forma, l'angolo, le proprietà riflettenti dei tuoi bersagli non sono sempre le stesse, misurare l'intensità dell'IR riflesso non è un metodo affidabile per stimare la distanza.

  

Qualche idea?

Metodologia di rilevamento diversa. Che ne dici di un sensore di parallasse come questo: http: // www. acroname.com/robotics/info/articles/sharp/sharp.html .

approfondendo ulteriormente la funzione quadrata proposta da tom10 ...

supponiamo che la funzione dei tuoi dispositivi sia una curva quadrata, ovvero

distance = A + B * reading + C * reading^2

Ora dobbiamo scoprire A, B e C per convertire la lettura in una distanza, quindi ciò di cui abbiamo bisogno è una specie di analisi di regressione. Una curva quadrata è definita da esattamente 3 punti, quindi si misura in 3 punti (r1..r3) e si nota la distanza (d1..d3)

Ora hai 3 equazioni con tre incognite che puoi risolvere con qualsiasi mezzo, ad esempio

A + r1 * B + r1^2 * C = d1
A + r2 * B + r2^2 * C = d2
A + r3 * B + r3^2 * C = d3

Risolvi una volta per A, B e C che sarà la tua "curva di calibrazione" e sarà in grado di calcolare qualsiasi distanza sconosciuta usando la prima formula sopra. Ovviamente, se cambi hardware, dovrai ricalibrare la tua attrezzatura entro i limiti di eventuali variazioni del dispositivo.

È possibile estendere questo meccanismo a una curva di ordine cubico e persino superiore effettuando una quarta misurazione ed espandendo tutte le equazioni di cui sopra con una variabile D, ovvero

A + rx*B + rx^2*C + rx^3*D + ....

ecc. ma non aggiungerà molta precisione. Scoprirai che il fattore D per un rx ^ 3 e in seguito sarà molto piccolo.

Spero che questo aiuti

Buona fortuna MikeD

L'energia della fonte luminosa cadrà come 1/r2 (per una fonte relativamente piccola). Oltre a ciò, se tutto il resto viene mantenuto costante, l'unico problema potrebbe essere la non linearità nel sensore.

Per verificare ciò con i tuoi dati, ti aspetteresti E x r 2 = const, e questo vale approssimativamente per i tuoi dati:
110 x 5 2 = 2750 e
70 x 6 2 = 2520,
quindi questi sono entro il 10%, il che sembra abbastanza vicino, quindi sembra che la regola di base manterrà.

I sensori non lineari sono comuni, quindi dovresti essere sicuro di verificarlo su tutta la gamma che lo utilizzerai. Ma se si tratta di un sensore lineare, gli altri problemi citati dalle persone (ad es. Superfici riflettenti) non saranno un problema perché, per la trasmissione e la riflessione della luce, tutto (quasi) è lineare e quindi sarà intrinsecamente compensato da una singola costante di calibrazione. L'angolazione della sorgente luminosa, i materiali assorbenti, ecc., Non importerà finché non cambiano.

Se provi alcuni punti, inclusi gli estremi dell'intervallo a cui sei interessato, e segue la regola 1 / r 2 , sei a posto. Quindi, ovviamente, calcola cos'è la const e r = sqrt (const / E).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top