Ciao a tutti.
Come scritto nella presentazione ho l'hobby dell'autocostruzione di apparecchi subacquei, che uso nelle mie immersioni, Sto ultimando un sommergibilino a due posti e, tra le varie apparecchiature installate, sarebbe di grande aiuto realizzare un Sonar (basico) che serve da anticollisione con ostacoli sommersi.
Sono assoluto neofita di arduino, me ne hanno regalato uno oggi e devo cominciare a studiare, la domanda che vorrei porre è, in sostanza, questa.
Supponendo di realizzare un generatore di impulsi intorno ai 240 Khz, completamente indipendente dalla scheda di Arduino, che abbia un cono di propagazione abbastanza ampio, è possibile realizzare una serie di sensori (almeno 5 sfalsati di qualche decina di gradi uno dall'altro) collegati ad Arduino in modo da rilevare l'echo di ritorno (e quindi l'ostacolo) con la relativa posizione?
Premetto che non serve una portata eccessiva, direi che circa 20 mt lineari sarebbero sufficenti per evitare l'ostacolo o cambiare direzione (la visibilità non è mai soddisfacente sott'acqua).
La rappresentazione, salvo altri suggerimenti, si potrebbe realizzare con un piccolo monitor grafico, dove magari far apparire 5 barre, una per sensore, che a seconda dell'intensità del segnale ricevuto aumentano o diminuiscono (stile v-meter per capirsi).
Tutta la parte relativa alla costruzione dei necessari contenitori stagni non è un problema, avrei però necessità di eventuali idee e suggerimenti per favore, vi ringrazio in anticipo.
In linea di massima penso sia fattibile, ma il primo punto è capire quale hardware/sensore usare ovviamente (come in qualsiasi progetto), l'unica cosa che devi tenere presente è come si debba collegare ad Arduino e quindi quali possano essere le difficoltà "elettriche".
Ad esempio vedi questo video:
Non so se il sensore mostrato sia adatto ad andare su un mini sommergibile, quindi è possibile che tu debba cercare sensori realmente subacquei. Però non ne vedo molti, e non mi sembra costino poco. Ad esempio questo che costa 31€ (e tu ne vorresti 5...), ha un range di soli 5 metri e non 20...
Una volta che avrai identificato i sensori adatti a te (ossia collegabili ad Arduino e che rientrino nel tuo budget...) si potrà parlare di codice.
Ma considera che, per il codice, se sei veramente a digiuno ti conviene andare per gradi, ossia iniziare a fare pratica con il linguaggio C (non so quale esperienza tu abbia in C o nei linguaggi di programmazione in generale), con Arduino (non so se hai acquisito i concetti base di questo microcontrollore), e sperimentare con i normali sensori ultrasonici (trovi tanti esempi in rete, anche se io ti consiglio di usare gli SRF05 e non gli SR04, più comuni ma per mia esperienza più spesso "difettosi") e qualche codice di base che man mano potrai personalizzare ad esempio introducendo prima un paio di sensori, per arrivare ai 5 sensori che desideri e farci i calcoli.
Una volta che avrai fatto questo, se nel frattempo il problema "hardware" ossia sensori subacquei lo avrai chiarito e risolto, potrai iniziare a sperimentare con quelli.
Ma non pensare di fare "il salto della quaglia" e buttarti a cercare di sviluppare senza prima aver fatto pratica con il C, con Arduino, e almeno con i sensori ultrasonici...
Gentile DOCDOC
Innanzi tutto grazie della risposta, ho guardato il video velocemente, ora lo riguardo con maggiore attenzione, però grazie comunque.
Rispondo alle tue giuste osservazioni non in ordine, per semplicità:
Non so assolutamente nulla del linguaggio C o di altri tipi, ho un Kit completo di Arduino che mi hanno regalato due giorni fa e stavo pensando di utilizzarlo per questo scopo e forse anche per altro. Diciamo che spero di ricevere aiuto da questo forum e da alcuni amici che potrebbero assistermi per la compilazione del codice.
Ora veniamo alla parte "hardware" del progetto, faccio alcune considerazioni "a ruota libera" poichè ci penso da qualche giorno.
Il trasduttore (attivo o passivo che sia) per quella frequenza non è un problema, è sufficente adattare un piezoelettrico e farlo lavorare immerso in resina epossidica, in modo da garantire l'impermeabilità anche a pressioni elevate. I sensori degli ecoscandagli professionali sono fatti così. Qui però sorgono alcuni problemi:
i trasduttori collegati alla parte logica (Arduino) lavorano solo in ascolto, per questo la portata di tutto l'apparato dipende dal trasmettitore a impulsi, quest'ultimo tecnicamente non è di difficile realizzazione, ci sono dei moduli già pronti che emettono un segnale a onda quadra che deve solo essere amplificato ulteriormente, con un semplice circuito ampli il gioco è fatto. La scheda di Arduino lavora solo in ascolto, non in trasmissione, questo in teoria semplifica tutto (non è del tutto vero, in realtà può essere un problema).
il software dovrebbe essere in grado di fare una corretta comparazione tra i vari segnali in ingresso provenienti dai "microfoni" (chiamiamoli così per semplicità) al fine di riuscire a definire la direzione di provenienza (analisi del ritardo o dell'intensità del segnale o entrambi).
La trasmissione del segnale, anche posizionata il più possibile distante dalla cortina di microfoni, può saturare l'ingresso rendendo la cortina stessa cieca (...o meglio sorda), forse si potrebbe "insegnare" al software ad ignorare la trasmissione principale e affidarsi magari alle armoniche (non lo so, ci sto pensando, magari sto dicendo caz...te).
I microfoni della cortina sono molto vicini, un segnale di ritorno arriva con quasi la stessa intensità a tutti i micro, riesce un software ad effettuare una corretta comparazione?
Altra considerazione di carattere "hardware", un microfono è a banda piuttosto larga, per evitare falsi allarmi occorre interporre un filtro notch molto molto stretto tra il microfono, un eventuale amplificatore o un DAC ( credo, a meno di non utilizzare gli ingressi analogici, nel caso non c'è bisogno), se non viene filtrato a dovere qualunque rumore subacqueo (e ce ne sono tantissimi) genera falsi allarmi.
In definitiva, dopo questo sproloquio di considerazioni, ancora da approfondire, la sostanza è che non penso ci siano problemi per la parte hardware, credo che la domanda principale sia: Si può fare con una logica così "stringata" una cosa del genere? se la risposta è si, allora vale la pena di studiare tutto il possibile per raggiungere il fine, se la risposta è negativa invece lascio stare e adatto un semplice fishfinder economico senza scomodare voi e arduino.
Ringrazio moltissimo DocDoc e chiunque mi sappia dare dei suggerimenti relativi a questo progetto.
Ciao, buona serata
(questo sotto è il minisom, ancora in lavorazione)
Beh, intanto complimenti per il progetto di questo sommergibile, bellissimo! Ma che dimensioni ha? Pensavo fosse un modellino...
Per renderlo impermeabile potrebbe andare, ma non so, "a naso" direi che la resa di un trasduttore immerso in resina potrebbe crollare drammaticamente, soprattutto alle frequenze più alte (120 kHz, mentre i sensori ad ultrasuoni classici lavorano in aria a 40 kHz). Se è per evitare di spendere 30€ a trasduttore è una prova che potresti fare e verificare se funzioni correttamente, ma se anche fose ci sono varie cose prima di questa.
In realtà se vuoi misurare una distanza, come sai, tu dovresti conoscere con precisione il momento in cui viene emesso un impulso (il "ping", ad una certa frequenza) dal trasmittente e calcolare quindi il tempo di ritorno sul ricevente ("echo").
Con i normali sensori ultrasonici tipo SRF05 ad esempio, le capsule trasmittente e ricevente sono sullo stesso circuito e sono controllate da Arduino che "accende" la capsula trasmittente per un tempo molto breve (es. 10 us) e poi contare in quanto tempo si riceve il primo "echo". Se separi questi circuiti devi anche informare Arduino di quando è partito il "ping" per ognuno dei 5 trasmittenti, ma a quel punto fai prima a farli controllare direttamente da lui, anche per sincronizzare i "ping" (ne avresti 5, che tra l'altro credo che non dovrebbero lavorare contemporaneamente).
Quindi no, Arduino in realtà non lavora "solo in ascolto". ![]()
Tra l'altro vedo anche un altro aspetto che va tenuto in considerazione: per calcolare la distanza (dell'ostacolo più vicino quantomeno) si misura il tempo tra il "ping" e l'"echo", ma questo dipende dalla velocità del segnale nel fluido. In aria ed a livello del mare è praticamente fisso, ma nel tuo caso dato che la velocità del suono in acqua si basa sia sulla temperatura sia sulla pressione dell'acqua (ma anche sulla salinità, ma tralasciamo questo aspetto ed assumiamolo costante), in un sommergibile dovresti anche "informare" Arduino di tali parametri per evitare "derive" di valori in base alla profondità...
Tutto più o meno corretto, questa ed anche le successive considerazioni che hai fatto (analisi dei segnali, loro correlazione, eventuali filtri software o hardware).
Ma proprio perché hai Arduino da 2 giorni e non hai alcuna esperienza di programmazione, quello che ti consiglio è di non pensare di poter pensare di realizzare questa cosa senza prima costruirti un minimo di esperienza, sia per il linguaggio C, sia per capire come funzionano le interazioni di Arduino col "mondo esterno" dal punto di vista hardware ed anche software (es. librerie). Una volta che avrai un minimo di queste basi ti consiglio di iniziare per gradi valutando in che modo Arduino possa fare una cosa simile, ma usando in prima battuta i normali sensori ultrasonici (quindi in aria), e per gradi: prima con uno solo, poi due, eventualmente arrivando poi a 5 per "simulare" in aria quello che vorresti fare per il tuo progetto in acqua.
Questo ti serve per capire sia come gestire queste cose con Arduino, sia se, in base a come vorrai poi sviluppare il tutto, siano necessari circuiti addizionali (es. amplificatori di segnale). E, se ne valuterai la fattibilità, iniziare acquistando un sensore già progettato per lo scopo, o cercando di usare qualche sensore da rendere impermeabile (ma resto scettico sulla possiblità di usare un normale piezo "annegato" nella resina) e verificare le caratteristiche ed adeguare il codice di conseguenza, all'inizio per un solo sensore (coppia trasduttori trasmettitore e ricevitore).
Tutte cose che, al di là del consigliartele, è difficile che io possa fare altro, mi spiace. L'unica sarebbe trovare qui qualcuno che abbia fatto qualcosa almeno simile e che quindi possa darti indicazioni specifiche, ma non ho idea se ci sia.
Al limite aspetta qualche giorno (nel frattempo comunque potresti iniziare a fare pratica con il kit Arduino che sicuramente include anche un sensore ultrasonico ed alcuni esempi di codice, e dda qui entrare nella programmazione), poi se non dovessi trovare qui risposte, prova a spostare l'argomento in una delle aree internazionali (ovviamente scrivendo il tutto in inglese) per avere più potenziale "pubblico" e maggiori probabilità di trovare consigli specifici. Ad esempio l'area Sensors potrebbe forse andare.
(PS: per "spostare" intendo dire che questo thread andrebbe chiuso e poi scritto il nuovo post nell'area interazionale, perché nel forum il cross-posting è vietato
)
Buongiorno,
il sommergibile è lungo 4,70 mt. e largo circa 1.30 mt senza considerare i piani di coda (timoni) che devo ancora montare, è del tipo "bagnato" ovvero i due subacquei sono seduti all'interno ma a contatto con l'acqua, quindi indossano mute e autorespiratori (se dovesse interessarti la costruzione, cerca "01diver02" (zerounodiverzerodue) su youtube).
Venendo a noi, ti ringrazio delle osservazioni che sono corrette, ma soprattutto utili.
I sensori piezo lavorano bene affogati nella resina (c'è una azienda dalle mie parti che li realizza per uso militare, ho visto come lavorano), però sorge un ulteriore problema che non avevo considerato prima, la costanza di rendimento. Se utilizzo un solo trasduttore, o più trasduttori collegati a logiche separate e usate singolarmente, posso ignorare il rendimento diverso, ma se allaccio una serie di sensori che penso siano uguali e poi non lo sono la resa è diversa, a questo punto diventa troppo complesso tararli singolarmente (per questo le cortine SONAR "vere" costano uno sproposito).
La tua osservazione sull'utilizzo di un trasmettitore separato è più che giusta, senza la sincronia tra impulso trasmesso ed echo ricevuto non vado da nessuna parte (ho scritto una cavolata nel precedente post e mi scuso).
Generalmente le variabili quali temperatura, salinità, pressione ect vengono prese in considerazione solo per sistemi che richiedono una precisione fuori dalla mia portata, ad esempio e soprattutto durante l'estate vi sono diversi termoclini (strati a temperatura differente) che incidono molto sulla conducibilità del suono. Per curiosità basti pensare che in Mediterraneo, all'incirca sui 90 mt di profondità, c'è uno di questi strati quasi costante nel corso dell'anno, questa "barriera" veniva usata dai sommergibili durante la guerra per "nascondersi" dai sonar nemici. Questo per dire che l'errore indotto da queste differenze per i mie scopi diventa trascurabile, (e poi non vado a 90mt).
In sostanza, per non essere prolisso, a me serve un "accrocchio" (termine tecnico di alto livello) che mi eviti di sbattere contro uno scoglio sommerso se non lo vedo in tempo, la precisione della misura non è critica.
Comprendo la tua giusta insistenza sul fare esperienza con il microcontrollore, non pretendo la pappa pronta, comincerò a studiare, speravo che qualcuno avesse già affrontato cose simili e avesse qualche indicazione da darmi.
Intanto, seguendo il tuo suggerimento, provo a leggermi qualcosa nell'area che mi hai indicato, vediamo se trovo qualche idea.
Grazie ancora di tutti i tuoi suggerimenti e ti auguro una buona giornata.
Diciamo che le "sfide tecniche" e sorattutto "scientifiche" mi stimolano, sarà la mia formazione di base scientifica e la passione, per cui provo sempre a capire... ![]()
Mah, non credo, questa cosa si può compensare via software, previa taratura "una tantum", considerando lineare l'andamento nell'errore, ed usando quindi un fattore di correzione, di base unitaria, che applicherai moltiplicandolo ad ogni lettura alla distanza rilevata.
Ad esempio direi che facendo una prova sensore per sensore con un "target" fisso ad esempio a 2 metri di distanza da ogni sensore: se uno leggesse 2.01 il fattore di correzione sarà praticamente 1, ma se un altro leggesse 2.30 basta considerare un fattore 2/2.3=0.87, così come per 1.92 sarà 1.04. Una volta determinati i 5 fattori di compensazione avrai le letture più coerenti possibili.
Immagino. Assumendo salinità costante, ho letto che nell'acqua la velocità del suono è dell'ordine di 1480 m/s ed aumenta di 0,18 m/s ogni 10 metri di profondità, quindi direi che si, la pressione è irrilevante per un sommergibile "amatoriale". ![]()
Visto che più o meno sembra che tu sia convinto, rinnovo l'invito ad iniziare a studiare Arduino ed il linguaggio C, con i primi esperimenti. Poi penserai ad iniziare a fare test con i sensori che avrai scelto, non prima.
Concordo,
intanto ti ringrazio delle tue risposte che, ad ogni buon fine, mi hanno aiutato a riconsiderare tutta la questione.
Anche io amo le sfide, però so di essere molto ignorante in molteplici settori e quindi chiedo, sono contento di aver trovato una persona che mi ha aiutato a pensare alle possibili soluzioni tecniche.
Di nuovo grazie, buona serata
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
