Buonasera, sto lavorando e testando il sensore ad ultrasuoni HC SR04 che da quanto vedo in rete è diffusissimo per applicazioni Arduino friendly: ho scelto questo sensore in quanto da specifiche viene definito un range di monitoraggio fino a 5 metri.
Sfortunatamente ho visto che non solo non riesco ad avere rilevazioni di distanze superiori al 2.5 m (circa) ma che la lettura del sensore varia fortemente per distanze maggiori dei 120 cm (questo problema lo risolvo con tecniche di filtraggio).
Qualcuno di voi è riuscito mai ad avere stime stabili e portate fino a 5m come indicato dal datasheet?
Buongiorno, effettivamente con Arduino UNO arriva fino a 380 cm senza problemi.
Lo stavo usando con Arduino 101 e mi son fatto ingannare dal fatto che i pin in/out sono 5 V tolleranti, ma al di là di questo la tesione operativa dello stadio di acquisizione è a 3.3 V, per questo non riuscivo a sfruttare tutta la dinamica.
Per risolvere qualcosa penso che debba comprare dei traslatori di livello 5 V- 3.3 V oppure usare il pin AREF, impostarlo a 5 V, ed acquisire il sensore tramite i pin analogici.
Questa board pare che usi MAX232 come elevatore di tensione per far funzionare bene i trasduttori piezoelettrici. Il MAX232 funziona a 5V ma a quanto pare ci riesce, male, con tensioni più basse.
Uhm..il pin IOREF potrebbe essere quello che mi risolve il problema, tuttavia dovrebbe funzionare da quanto ho capito per un altro motivo e cioè per impostare la tensione di riferimento condivisa con opportuni Shield..non so se provare ad impostare il pin IOREF a 5 V ...qualcuno ha mai usato questo pin?
Ma la 101 ha il piedino che fornisce 5V! Dovresti usare quello.
IOREF dovrebbe essere un segnale per far capire allo shield che lo usa che tensioni usare per le comunicazioni.
Ciao, infatti io sto usando il piedino 5 V di Arduino 101 e ho problemi: penso che, poichè il pin di Echo ha un range fino a 5V , il pin di lettura è si tollerante ai 5 V ma nel senso che è protetto per sovratensioni fino a 5V, tuttavia la lettura del segnale ha un range fino a 3.3 V e per questo motivo la lettura del sensore è "sballata".
In sostanza il fondoscala del sensore non è lo stesso di quanto usato dal microcontrollore in Arduino 101
Potrebbe essere che la corrente fornita dal piedino è insufficiente, anche se mi sembra strano.
La comunicazione è totalmente digitale, tu dai un impulso e quindi aspetti l'impulso di ritorno su un altro piedino, a meno che hai la versione a 3 piedini. Le tensioni nei piedini di lettura dovrebbero andare bene lo stesso, c'è un piccolo intervallo da zero a 1V e qualcosa che viene interpretato come LOW e in intervallo da poco sotto i 3.3V (tipo 2.3V) fino a 3.3V (e oltre su quelli 5V tolerant) che viene interpretato come High.
Gli sketch comunemente usano la funzione PulseIn.
SukkoPera in primis calmo..ho usato un termine scorretto, la tensione operativa è diversa, ho un segnale che va tra 0 e 5 V e una scheda di acquisizione che opera a 3.3 V, ti TORNA ORA ?
Per quanto riguarda il tuo consiglio iniziale NO non basta alimentarlo a 5 V.
Zoomx grazie per la spiegazione: no non uso cavi molto lunghi saranno circa 6 cm: comunque ora mi sono dotato di un tester così mi rendo conto dei livelli di tensione in gioco.
Pierluca87:
SukkoPera in primis calmo..ho usato un termine scorretto, la tensione operativa è diversa, ho un segnale che va tra 0 e 5 V e una scheda di acquisizione che opera a 3.3 V, ti TORNA ORA ?
NO, non torna a me e stai dicendo un bel po' di inesattezze, quindi, prima a dire a Sukko di calmarsi, prova a rileggere bene quanto hai scritto !
Staimo parlando di un IMPULSO ... 0 ... 1 ... 0 ... quindi, di vera e propria "acquisizione", c'è ben poco, c'è, al limite un valore di soglia per il valote 0 ed uno per il valore 1, ma comunque, se il pin è 5V tolerant, va bene alimentare quell'oggetto a 5V e leggere la "durata" dell'impulso con un pin che "sopporta" i 5V ... dato che, appunto, NON stai misurando una "tensione", ma stai misurando un "periodo".
Del resto, che funzioni, posso assicuratelo dato che, su una scheda con dei PIC32MX, funzionanti a 3.3V, ma con alcuni pin 5V tolerant, il "fratello più intelligente" di quello (SFR05) mi funziona benissimo alimentandolo a 5V e collegando i pin di segnale sui pin a 3.3V.
E invece SÌ, basta alimentarlo a 5V. Ti stai intestardendo su un problema che non sussiste. analizziamo un punto alla volta:
Alimentazione: quel modulo richiede 5V, a 3.3V non è affidabile. È una cineseria, quindi di dati ufficiali e di certezze ce ne sono poche, ma ovunque su Internet si dice questo. Pare ne esista anche un modello che funziona già a 3.3V ma è meno diffuso.
Input: c'è un solo pin di input sul modulo, TRIG. È un segnale digitale e ovviamente andrebbe pilotato con 5V (ovvero la tensione di alimentazione), ma i 3.3 che gli fornisci sono comunque sufficienti per essere interpretati come livello logico alto, questo lo garantisce la logica CMOS.
Output: uno solo anche qua, ECHO. Ovviamente batterà fuori 5V, per cui normalmente non potresti collegarlo a qualcosa come la 101 che funzia 3.3V. Tuttavia abbiamo già detto che gli ingressi della 101 sono 5V-tolerant, per cui non serve fare altro. Sicuramente 5V sono interpretati come alto.
Tutto qua, a livello elettronico non serve tenere presente altro. Se non funziona bene o è un problema del modulo o del software che ci si interfaccia.
In ogni caso non aspettarti troppo da questo modulo, non sarà mai un campione di precisione.
SukkoPera:
In ogni caso non aspettarti troppo da questo modulo, non sarà mai un campione di precisione.
Esatto ... infatti, come hai visto, sopra io sto facendo funzionare a 5V e leggere a 3.3V degli SFR05 ...
... costano praticamente uguali o poco di più, ma sono di un altro livello (... sempre rimaneno su oggettini di questa fascia)
Guglielmo allora ho detto cose inesatte e sono arrivato a conclusioni affrettate sicuramente, però c'è modo e modo di dire le cose (poi boh la sensibilità è soggettiva..vedi tu). Comunque vi ringrazio, da quanto ho capito dovrebbe funzionare, cercherò di risolvere la cosa..
Si,ok. Mi scuso per le inesattezze ma dopo una decina di giorni che sto lavorando su arduino 101 e avevo fatto un filtro in modo tale da avere delle misure stabili fino a 240 cm, ieri per scrupolo ho provato il sensore su Ardunio UNO e la lettura sembra più stabile e corretta a portate maggiori. Ho fatto successivamente delle considerazioni tempestive ragionando come se fosse un'acquisizione analogica..cmq boh, il prossimo passo sarà acquistare un sensore come hai suggerito te
... se ti serve vera precisione (anche millimetrica) e distanze interessanti (anche oltre 7 mt), prova a guardare i sensori della MaxBotix.
Ho usato varie volte i MaxSonar, hai vari uscite a disposizione, inclusa quella seriale che ti invia gia il valore in cm
Ovvio ... NON sono cinesate come quelle di cui abbiamo parlato, e costano come costano tutti i prodotti professionali ... dalle 20 alle 100 volte volte di più di ciò di cui abbiamo parlato !
Il fatto è che al post #3 ho cercato di spiegarti che eri completamente fuori strada con le tue considerazioni analogiche. Al tuo post successivo hai completamente ignorato il mio suggerimento, continuando per la tua strada. Già questo non è molto carino, perché se uno perde del tempo a risponderti, gradirebbe per lo meno che si prenda in considerazione quel che dice (e se uno ha 3600+ post, ci sono buone probabilità che quello che dice abbia almeno un vago senso), ma in ogni caso a questo punto ero obbligato ad affermare il concetto con maggiore fermezza affinché mi ascoltassi, non trovi?