Aumentare risoluzione ANALOG INPUT

Salve!

Voglio costruire un nuovo braccio robotico e sto valutando se valga la pena controllare la posizione di ogni asse tramite un semplice potenziometro resistivo.

Se lo collego ai pin analogici avrò una misura compresa tra 0 e 1023 (ovvero da 0° a 360° circa).
Questo significa che posso ambire al massimo ad una risoluzione di 360/1023 = 0,35°.
Potrebbe già bastarmi, ma se avessi bisogno di aumentarla potrei farlo?

Muovendo il potenziometro manualmente ottengo una misura stabile, questo mi porta a pensare che (forse) se invece di 1023 usassi un numero più grande potrei ottenere delle misure più precise e comunque coerenti.
Quel 1023 è figlio dei 10 bit che arduino dedica agli ANALOG INPUT. C'è modo di aumentarli?
Vi vengono in mente altri modi per incrementare la risoluzione della misura analogica?
Secondo voi è possibile/opportuno farlo?

Grazie mille per l'aiuto :wink:

No

Ne per la stabilità del segnale
Ne per la stabilità dei potenziometri

1 Like

Se vuoi provare, basta usare un ADC I2C esterno, per esempio un ADS1115 a 16 bit, che trovi a poco più di 2€ da Aliexpress.

1 Like

Grazie ad entrambi per le risposte celeri!
Se avrò bisogno proverò ad usare un ADC (anche se potrebbe non funzionare a causa dei limiti del potenziometro)

Il sistema che di solito si usa e' quello di usare un'encoder, o uno con molti step (ma sono costosi), oppure uno con pochi step ma cablato sul motore invece che sul braccio, cosi si sfrutta la demoltiplica per incrementare la risoluzione (ad esempio, usare un'encoder con 20 passi sul braccio sarebbe inutile, ma se lo si mette sul motore e se il motore ha una demoltiplica 100 ad 1 i 20 passi diventano 2000 :wink: )

Ovviamente serve anche uno "zero", ma le forcelline ottiche sono abbastanza precise.

1 Like

in effetti quello era il piano A (ho provato motori con encoder a effetto hall integrato), però mi sono incartato nel codice e nel cablaggio.
6 encoder richiedono 6 pin di interrupt che scattano ciascuno centinaia di volte al secondo. Ho paura che un solo Arduino non sia sufficiente e questo complica le cose.
In pratica sono in quella fase in cui si è disposti a sacrificare la qualità del progetto pur di vedere qualcosa muoversi :sweat_smile:

Beh io un braccio robotico lo feci qualche anno fa, ed usai proprio dei piccoli trimmer montati in asse.
Considera comunque per prima cosa che se l'input analogico va da 0 a 1023 non devi dividere per 1023 ma per 1024.

Poi un trimmer non ruota di 360 gradi ma siamo sui 270 circa, per cui la risoluzione sarebbe 270/1024 = 0.26 gradi. Se poi, come nel mio caso, il movimento di un singolo snodo è di circa 180 gradi, la risoluzione diventa 180/1024 = 0.17 gradi.
Ammettendo una certa imprecisione del trimmer stesso e dell'input analogico, diciamo che siamo sui 2 o 3 decimi di grado, che è più che sufficiente per un braccio robotico diciamo "amatoriale" (dipende poi dalla dimensione e peso del braccio stesso, e dal tipo di movimenti che richiedi).

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.