AN 1005: Conversione dell'angolo di inclinazione in gradi

Descrizione

Questa nota applicativa spiega come convertire in gradi l'uscita grezza di un sensore di inclinazione elettrolitico.

Portata lineare e campo operativo dei sensori di inclinazione

Il campo di misura di un sensore di inclinazione elettrolitico può essere descritto in due modi: campo lineare e campo di funzionamento. Il campo operativo è il campo oltre il quale il sensore darà un'uscita monotona, ma per il resto non ha caratteristiche definite (è non lineare). Il campo lineare è la porzione del campo operativo in cui l'uscita è lineare fino ad una certa percentuale. La Figura 1 mostra la differenza fra i due campi.

 

 

 

 

 

 

 

 

Figura 1 Gamma lineare (sinistra) e gamma operativa (destra).

Approssimazione lineare

Per trovare l'angolo di inclinazione all'interno del campo lineare, è necessario trovare una funzione lineare che corrisponda all'uscita del sensore. Questa sarà la funzione della linea nel grafico a sinistra in figura 1. Questa funzione è riportata di seguito:

L'uscita del sensore grezzo in questa formula è l'uscita del sensore. Questa è di solito in conteggio, ma altre unità possono essere usate a seconda di come viene letta l'uscita del sensore.

Gli altri due valori richiedono il prelievo di campioni del sensore a determinate angolazioni. Questi angoli possono essere determinati utilizzando un altro sensore, un goniometro digitale o qualsiasi altro metodo per determinare gli angoli. L'uscita del sensore grezzo a 0° è solo l'uscita quando il sensore è in piano.

I conteggi per grado (che è la pendenza della linea) sono calcolati con la seguente formula:

Il campo lineare si ricava dal datasheet del sensore. Le uscite grezze saranno l'uscita del sensore ai bordi del campo lineare. Per esempio, per un sensore con un campo lineare di ±25°, le uscite grezze saranno campionate a +25° e -25°. Si noti che questi campioni dovranno essere prelevati solo una volta per creare la funzione; la conversione dell'inclinazione può poi essere fatta usando i valori campionati.

Diciamo che abbiamo un sensore 0717-4319-99 con un'uscita a 16 bit (da 0 a 65535) che vorremmo convertire in gradi. Si tratta di un sensore a doppio asse con un campo lineare di ±20°. Trattandosi di un sensore a doppio asse, avremo bisogno di 2 formule: una per l'asse X e una per l'asse Y. Per prima cosa, troveremo la formula dell'asse X. Iniziamo a prelevare campioni a 0° e ±20° e troviamo le seguenti misure.

Inclinazione dell'asse X a -20° = 26055

X Inclinazione dell'asse a 0° = 33234

X Inclinazione dell'asse a ±20° = 40379

Ora possiamo usare questi campioni per calcolare i conteggi per grado:

I conteggi per grado e per campione di zero possono poi essere inseriti nella formula per dare la conversione di seguito riportata:

Se è necessaria una misurazione dell'asse Y, seguire di nuovo questi passi con i campioni dell'asse Y.

Ora, ogni volta che abbiamo una misura da questo sensore che vorremmo convertire in gradi, possiamo usare questa nuova formula. Per esempio, se abbiamo un'uscita X di 29655, possiamo usare la formula per determinare l'angolo di inclinazione:

Conteggi approssimativi per grado

A causa di leggere variazioni causate dal processo di produzione, la funzione di conversione deve essere calcolata per ogni specifico sensore. Tuttavia, questo non è sempre possibile. La tabella seguente fornisce i conteggi medi per grado e i valori di 0° che possono essere utilizzati nei calcoli. Si noti che l'uso di questi valori comporterà misurazioni meno accurate rispetto alla creazione di una funzione per il sensore specifico. Tutti i valori sono per un'uscita a 16 bit (0-65535). I sensori non presenti nella tabella richiederanno all'utente di seguire la procedura sopra descritta per trovare una conversione.

Sensore Conteggi per grado Zero gradi
0703-1602-99, 0729-1765-99 976 32768
0703-0711-99 17582 32768
0717-4303-99 736 32768
0717-4304-99 268 32768
0717-4305-99 188 32768
0717-4306-99 188 32768
0717-4311-99 268 32768
0717-4313-99 342 32768
0717-4314-99 335 32768
0717-4316-99 756 32768
0717-4317-99 569 32768
0717-4318-99, 0729-1751-99,
0729-1752-99, 0729-1753-99,
0729-1754-99, 0729-1755-99,
0729-1759-99, 0729-1760-99
284 32768
0717-4319-99 363 32768
0717-4321-99 758 32768
0717-4322-99 594 32768
0737-0101-99 2887 32768
0737-1203-99 12765 32768

Interpolazione a più punti

Il metodo dell'interpolazione multipunto utilizza campioni prelevati in anticipo per ricavare la misura in gradi. La precisione di questo metodo dipenderà dal numero e dalla distribuzione dei campioni; tuttavia, anche prendendo 3 campioni si ottiene generalmente un risultato migliore di un'approssimazione lineare.

La distribuzione del campione è uno dei fattori più importanti per raggiungere una conversione accurata. Le conversioni vicine ai campioni saranno più accurate. Per questo motivo, i campioni prelevati più vicini tra loro daranno luogo a conversioni più accurate. Questi campioni dovrebbero essere prelevati su tutta la gamma del sensore. A seconda dell'applicazione, essi possono essere distribuiti in modo uniforme su tutta la gamma o concentrati in una regione dove è necessaria la precisione.

Per convertire un valore grezzo in gradi, identificare due campioni di riferimento. Questi sono i due campioni più vicini alla misurazione in ogni direzione. Quindi, trovare un'approssimazione lineare tra i due campioni e mappare l'output grezzo su questa approssimazione. Il punto su questa linea darà l'inclinazione del sensore in gradi. Il grafico in figura 2 mostra una visualizzazione di questo concetto.

Figura 2 Grafico che mostra i campioni, i campioni di riferimento e la misurazione.

La formula di questa conversione è riportata di seguito.

Supponiamo di avere una misura grezza di 56412 da un sensore di inclinazione con un campo operativo di ±60°. Inoltre, supponiamo di aver già prelevato campioni a intervalli di 5° da utilizzare per la conversione. Confrontando 56412 con i campioni, determiniamo che i nostri due punti di riferimento saranno a 50° (54213) e 55° (5787878). Possiamo quindi utilizzare la formula per calcolare l'angolo:

Pertanto, la nostra misurazione finale è di 53°.

Questo metodo può essere usato per convertire in gradi le misure da qualsiasi punto all'interno del campo operativo del sensore. Raggiungerà anche una migliore precisione rispetto all'approssimazione lineare. Tuttavia, richiede un gran numero di campioni accurati per ottenere i migliori risultati.

Interpolazione polinomiale

L'interpolazione polinomiale può essere utilizzata per ottenere misure accurate senza dover prelevare molti campioni. Questo metodo utilizzerà dei campioni per trovare un'equazione polinomiale che fornirà una conversione accurata attraverso il campo operativo del sensore.

I campioni prelevati saranno utilizzati per sviluppare un'equazione polinomiale che descriverà l'uscita del sensore. Come minimo, saranno necessari campioni N-1 per ricavare un polinomio di grado N. Ad esempio, 7 campioni creeranno un polinomio di grado 6. Si possono anche usare più campioni per creare un polinomio di grado inferiore, ma questo avrà generalmente una precisione inferiore rispetto alla creazione di un polinomio di grado superiore con gli stessi punti.

È possibile utilizzare qualsiasi numero di campioni, ma si consiglia di prelevare almeno 3 campioni. L'utilizzo di 2 campioni funzionerebbe, ma darà luogo ad un'approssimazione lineare. Si noti che il miglioramento dell'accuratezza dei polinomi di grado 7 o superiore è minimo.

Mentre il polinomio può essere determinato manualmente, è molto più facile calcolarlo con un software. Un metodo semplice è quello di utilizzare la linea di Microsoft Excel che si adatta al meglio; tuttavia, ciò potrebbe non essere abbastanza preciso per una conversione utilizzabile. Wolfram Alpha è un'opzione più precisa, ma l'equazione dovrà comunque essere risolta manualmente. L'opzione migliore è quella di utilizzare una libreria di programmazione. Per esempio, si può usare il metodo Polynomial.fit() della libreria NumPy Python. Il codice sottostante mostra come questo può generare un polinomio del 6° ordine a partire da 7 punti:

importare polinomio.polinomio.intorpidito.polinomio.d'importazione
coefficienti = numpy.polynomial.polynomial.fit(
[56668, 46553, 36140, 32845, 31207, 21913, 9586], # valori grezzi
[60, 42, 12, 0, -6, -36, -60], # valori angolari corrispondenti ai valori grezzi
6) # ordine di polinomio
stampa(coefficienti)
# Uscita:
# [-7.88427627e+01 2.57631617e-03 -7.71958174e-08 -1.75354175e-13
# 2.17551410e-16 -5.89635260e-21 4.45379575e-26]

Si noti che quando si utilizza una funzione come questa, è importante specificare correttamente l'ordine. Ad esempio, 4 campioni genereranno un polinomio di 3° ordine. Tuttavia, se 4 è dato come ordine, la libreria farà un'ipotesi casuale per creare un'equazione. Questo risulterà in conversioni meno accurate.

L'array restituito da Polynomial.fit() sono i coefficienti del polinomio. In base all'output di cui sopra, l'equazione sarebbe:

Angolo = (4,45e-26)x6- (5,89e-21)x5+ (2,17e-16)x4- (1,75e-13)x3- (7,72e-8)x2+ (2,57e-3)x1- 78,84

Questa funzione può essere usata per risolvere angoli sconosciuti inserendo il valore grezzo di x. Per esempio, diciamo che abbiamo la funzione di cui sopra, e abbiamo una misura grezza di 41643. Possiamo trovare l'angolo usando i seguenti calcoli:

Angolo = (4,45e-26)(41643)6 - (5,89e-21)(41643)5 + (2,17e-16)(41643)4 - (1,75e-13)(41643)3 - (7,72e-8)(41643)2 + (2,57e-3)(41643)1 - 78,84

Angolo = 232.264 - 738.402 + 654.227 - 12.663 - 133.868 + 107.285 - 78.842 = 30.002°.

Se si utilizza la libreria NumPy mostrata sopra, questo può essere fatto con il metodo polyval().

print(numpy.polynomial.polynomial.polyval(41643, coefficients.convert(.coef))
# Output: 30.001695321007

Si noti che il risultato di questo calcolo è molto sensibile a qualsiasi cambiamento di input. Per esempio, se i coefficienti di cui sopra sono arrotondati a 3 cifre significative (come scritto), il risultato dell'equazione è di 31°. Per questo motivo, è importante non arrotondare alcun valore durante il calcolo dell'angolo con questo metodo.