stavo disperatamente cercando di creare un "sistema" con arduino in grado di rilevare il movimento di un corpo che attraversasse due sensori e finalmente ci sono riuscito, il problema è che il passaggio del corpo che mi aspettavo di rilevare doveva avvenire sotto acqua, perchè sarebbe stato un pesce. Pensavo che gli HC-SR04 oltrepassassero l'acqua (perdonate tale ignoranza) ma solo provandoli mi sono accorto che non è così, anche l'acqua diventa un ostacolo e di conseguenza l'onda sonora torna indietro senza raggiungere il fondo.
DOMANDA: Quali componenti di arduino posso acquistare per sostituire gli HC-SR04 per rilevare il movimento sotto acqua?
Se intendi prodotti gia fatti, dubito che ce ne siano ... potresti in teoria sostituire le capsule per aria con un paio di capsule stagne, tipo ad esempio queste o simili, spaziandole in modo diverso e ricalcolando la circuiteria per tenere conto del nuovo ambiente di funzionamento (la velocita' del suono in acqua e' maggiore dei "classici" 340m/s che si usano come media in aria, quindi anche tutti i tempi sarebbero diversi ed i vari valori andrebbero ricalcolati ed adattati ... e non e' comunque detto che funzioni poi correttamente)
Inoltre in acqua i trasduttori ultrasonici hanno un cono anche maggiore di quelli in aria (secondo i modelli, da 60 a 90 gradi), per cui per ottenere una certa direzionalita' servirebbe un'array di piu elementi posizionati in "cancellazione di fase" per i lobi laterali, tranne che per il lobo frontale, che verrebbe aumentato ... e ti garantisco che e' tutto tranne che facile ...
uwefed:
Dubito fortemente che dei sensori per ultrasuoni funzionano sotto acqua solo perché sono stagni. Serve un sensore per sonar.
Potresti usare una fotocella, ma dovresti darci piú informazioni su come e cosa fanno i pesci.
Ciao Uwe
Allora vi spiego, praticamente dovrei rilevare il passaggio di un pesce attraverso un cilindro (ovviamente dalle basi aperte) e per farlo avevo pensato di mettere due sensori HC-SR04 alle estremità del cilindro perchè succede questo: Quando il pesce intende attraversare il cilindro verrà "agganciato" dal primo sensore, a quel punto se, prima dei 10 secondi, viene agganciato anche il secondo sensore (quindi il pesce ha attraversato il cilindro e si trova alla seconda estremità) allora avrò rilevato il movimento (primo aggancio t=millis(), secondo aggancio t1=millis(), tempo=t1-t e se tempo>0 ho il movimento ma non il codice il problema, quello IN ARIA funziona). Ignorantemente pensando che l'ultrasuono oltrepassasse l'acqua e che quindi raggiungesse il fondo (quindi l'ultrasuono nella mia testa avrebbe dovuto segnarmi, con acqua compresa, la profondità della vasca) con le dovute differenze altezzavasca-diametroBaseCilindro avrei rilevato il mio bel pesciolino.
PROBLEMA: Gli ultrasuoni, che non si trovano in acqua ma soli 3 cm più in alto del livello dell'acqua non segnano l'altezza di tutta la vasca ma 3 cm, ossia la distanza fra loro e il livello dell'acqua. Avrei bisogno quindi, anche cambiando hardware di avere dei sensori, con funzionamento simile a quello degli SR04 ma che funzionino o direttamente in acqua oppure che da fuori le loro onde riescano ad oltrepassare anche l'acqua e non lo rilevino come un ostacolo.
Il suono e ache l' ultrasuono viene rilesso in parte ad ogni cambio di densitá del materale de deve attraversare. Un passaggio tra aria e acqua basta giá per far riflettere un gran parte del suono e percui rilevare la distanza sensore acqua. Anche se una piccola parte del suono entra in acqua e viene riflesso poi dal suolo o in minima parte dal pesce (che poi non ha una densitá molto diversa dell acqua) non viene rilevato perché il sensore ha giá rilevato la distanza dal primo eco che riceve.
Quanto grandi sono i pesci e quanto grande é il tubo?
I pesci sono piccoli, sono i classici pesci rossi, ma non di quelli grandi, penso non superino i 5 cm di lunghezza e 2 cm di larghezza, un pesciolino rosso insomma... Il tubo che devono attraversare invece è di 3/4 cm
Scordati di usare gli ultrasuoni in acqua, almeno non senza spendere molto visto che servono appositi trasduttori, però visto il piccolo diametro del tubo puoi rilevare il passaggio del pesce tramite un griglia di sensori ottici, basta che la distanza tra i singoli elementi sia minore delle dimensioni del pesce.
joe95it:
I pesci sono piccoli, sono i classici pesci rossi, ma non di quelli grandi, penso non superino i 5 cm di lunghezza e 2 cm di larghezza, un pesciolino rosso insomma... Il tubo che devono attraversare invece è di 3/4 cm
Ma se il tubo è trasparente (o puoi fare in modo che lo sia sostituendolo almeno nei punti di rilevamento) non potresti usare un sensore ottico (un LED da un lato e un sensore dall'altro, es. fotoresistenza o meglio fototransistor)?
docdoc:
Ma se il tubo è trasparente (o puoi fare in modo che lo sia sostituendolo almeno nei punti di rilevamento) non potresti usare un sensore ottico (un LED da un lato e un sensore dall'altro, es. fotoresistenza o meglio fototransistor)?
Credo sia molto meglio visto che, a quanto ho capito, utilizzano la luce per rilevare un ostacolo e non l'acqua, ma non conoscevo completamente l'esistenza di questi hardware per cui posso chiedervi dei tutorial su come utilizzare questi componenti?
P.S. Se possibile anche dei link in cui acquistarli
joe95it:
Credo sia molto meglio visto che, a quanto ho capito, utilizzano la luce per rilevare un ostacolo e non l'acqua
Si, ovviamente devi rilevare la diminuzione di intensità della luce della tua sorgente (il LED messo dal lato opposto del tubo).
ma non conoscevo completamente l'esistenza di questi hardware per cui posso chiedervi dei tutorial su come utilizzare questi componenti?
Uh? Beh i LED penso tu li conosca, per il sensore devi prendere "qualcosa" che sia in grado di rilevare la luce, anche una semplice fotoresistenza va bene, ma consiglierei un fotodiodo o un fototransistor. Questi ultimi hanno spesso anche una lente frontale, ma in ogni caso io li metterei dentro ad un tubicino per evitare di catturare luce diversa da quella emessa dal LED.
In genere per sensori di prossimità o di passaggio si usano sensori (sempre accoppiata LED-qualcosa) ad infrarossi, puoi anche provare ma temo che con l'acqua l'efficienza sia pessima, consiglierei quindi qualcosa di attivo non IR. Ad esempio qualcosa come QUESTO.
Dove acquistarli, beh, su eBay ci sono tanti rivenditori di componenti, ti consiglio di sceglierli italiani (tempi di spedizione minori, migliore certezza di sostituzioni) e che vedi con buon feedback (dell'ordine di migliaia e 100% positivi o giù di lì).
Ti riporto alcuni negozi eBay dalla mia lista di "spacciatori" di componenti e circuiti, dove puoi trovare quasi tutto (ovviamente questi sono i miei fornitori abituali, non vendo io;) ):
Vista la scarsa distanza (parla di tubo da 3 / 4 cm di diametro), l'attenuazione dell'infrarosso da parte dell'acqua sara' praticamente ininfluente, quindi puo usarlo tranquillamente ... invece, a livello di "ferramenta" (hardware :D) vedo un'altro possibile problema (cioe', un'altro oltre alla necessita' di impermeabilizzare tutto, intendo ;)), e cioe' il fatto che l'angolo di emissione dei led sara' molto pui elevato una volta immersi in acqua, rispetto a quello che avrebbero in aria ...
Il corpo del led funziona da lente a causa della differenza di densita' fra l'aria ed il materiale che lo compone, ma immergendolo in acqua, tale effetto e' molto piu ridotto, quindi i led avranno un'emissione piu ampia ... pero' date sempre le scarse distanze, questo potrebbe persino risultare un vantaggio ... si mette un led in un foro del tubo, ed affacciati dall'altra parte due fotodiodi distanziati di un centimetro circa, cosi si copre uno spicchio piu ampio dello spazio interno del tubo, e magari non serve neppure creare una matrice, ma con due led IR e 4 fotodiodi si risolve il problema ...
Se poi si usa luce modulata ed un'accoppiamento AC dal lato ricevente, si elimina anche parecchia interferenza dovuta a luce esterna (a meno che il sistema non sia in pieno sole, allora servira' schermare i fotodiodi con dei tubetti)