Aiuto con lettura sonar MB7078 XL-MaxSonar-WRCA

Ciao a tutti,

sto avendo dei grossi problemi a far funzionare correttamente tre sonar modello MB7078 XL-MaxSonar-WRCA sia con Arduino Mega che con Arduino Uno.
Questo è il datasheet dei sonar: http://www.maxbotix.com/uploads/MB7068-MB7078_Datasheet.pdf

Ho provato ad utilizzare sia l'analogico che il PWM ma con entrambi ottengo solo dei valori random, come se in realtà non avessi collegato nulla sul pin di arduino in questione.
Il sonar funziona perchè lo si sente pingare, però le letture sono tutte sfalsate.
Ho provato anche gli altri due ed è sempre la stessa cosa.

Il tutto dovrebbe essere molto semplice: dovrei leggere il valore dal pin analogico e poi fare la divisione per i centimetri corrispondenti, ma quando leggo la variable questa da sempre valori casuali.

int sensorPin = 0;    // select the input pin for the potentiometer
int sensorValue = 0;

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(sensorPin, INPUT);  
  Serial.begin(9600);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);    
  Serial.println(sensorValue);
  delay(125);             
}

I collegamenti li ho fatti collegando direttamente l'alimentazione a 5V, GND a GND di arduino e l'uscita analogica del sonar al PIN0 di arduino senza usare resistori o condensatori per attenuare i disturbi sulla linea.

Potreste aiutarmi?
Non credo sia rotto perchè anche gli altri due sonar (stesso modello) danno uscite casuali, quindi sto sbagliando io di sicuro.

nessun aiuto o idea? :frowning:

Che fretta hai? Solleciti giá dopo poco piú di 2 ore? Non Ti sembra esagerato?

vedo 2 cose:
con "pinMode(sensorPin, INPUT); " hai definito il pin D0 come entrata. A0 non necessita di pinMode percui funziona
Hai messo il pin 1 del Sensore a massa per abilitare l'uscita analogica e l'uscita PWM???

Ciao Uwe

Ho fatto l'up perchè sono un pò sconfortato: ho comprato tre sonar da 130 euro l'uno e non mi stanno funzionando.

Prima ho utilizzato tre sonar con bus i2c molto economici ma che funzionavano benissimo.
Ho preso questi per uso esterno con una banale uscita analogica e non riesco a farli funzionare!
Sono quasi nel panico.

Comunque, l'uscita 1 deve essere a massa per abilitare il PW sull'uscita 2, ma neanche così funziona.
Sia il PWM che l'analogico mi danno valori del tutto random.

Non riesco proprio a spiegarmelo.

Ho inviato una mail al supporto di Maxbotix, nel frattempo.

A me sembra molto strana la cosa, dato che tutti e tre i sonar danno gli stessi valori random sia con l'uscita analogica che con quella pwm, probabilmente occorre solo avere qualche accorgimento o abilitare qualcosa perchè è assurdo che tutti e tre i sonar siano rotti: sarebbe una possibilità remota.

Ho cercato in lungo e in largo in rete, ma nessuno ha utilizzato questi sonar con Arduino o forse nessuno ha mai avuto problemi prima d'ora :slight_smile:

Ho visto che nel forum ci sono stati altri topic con problemi del genere, ovvero, con letture analogiche random, ma poi nessuno ha detto come ha risolto.

Potrebbe essere che, come da datasheet, il sonar abbia bisogno di 100mA sull'uscita di 5V di Arduino e che quindi non riesca a prenderli ed il ping non vada a buon fine?
Però ho provato ad alimentarlo anche esternamente con un alimentatore e non ho visto grossi cambiamenti.

Non so proprio cosa pensare anche perchè tutti e tre i sonar danno lo stesso problema.

Se lo lascio fisso in una posizione senza che abbia niente davanti, mi da in uscita valori costanti per un certo intervallo di tempo che poi cambiano scendendo ad un valore più basso per poi ritornare a quello iniziale, ma questo senza che rilevi nulla.

Qualche input? :relaxed:

ciao
il collegamento dell'analogico è sul pin 0 come scrivi

...l'uscita analogica del sonar al PIN0 di arduino...

o il pin A0

potresti postare foto o schema delle connessioni,

stefano

Solo il MB7068 ha un uscita PWM sul pin 2. Il MB7078 che hai Tu da su quel pin una tensione proporzional al ampiezza del segnale acustico di ritorno.
Il pin 3 da un segnale analogico proporzionale alla distanza.
Il sensore consuma a 5V 2.1mA quando non manda un segnale acustico e 50mA durante la generazione del impulso acustico.
Non ho capito dove hai collegato il sensore, Il pin 5V da abbastanza corrente per alimentare il sensore.
Ciao Uwe

Ciao ragazzi,

questa è una foto e mostra il sonar collegato al pin A8 analogico di Arduino.

http://www.dronyx.com/IMAG0350.jpg

Dal datasheet, ho poi letto che il mio modello non ha il PWM, ma l'analog envelop.
Io comunque sto usando l'uscita 3 che è quella analogica e in ogni caso mi da sempre e solo valori del tutto casuali.
Non so proprio il perchè, spero possiate aiutarmi perchè sono disperato! :~

Nella foto che ho postato, avevo messo l'uscita analogica 3 del sensore su A8 perchè avevo supposto che l'ingresso A0 fosse danneggiato in qualche modo (tutti gli ingressi danno sempre valori casuali).

Non riesco a spiegarmi diversamente, dato che leggo sempre e solo valori del tutto random con tutti e tre i sensori.

P.S. Ma l'ingresso analogico 0 di Arduino non corrisponde ad A0

P.P.S. non è che alimentandolo a 5V, richiede più di mA di picco? perchè mi sembrava che i mA fossero per l'uscita a 3.3V e non per i 5V.

Allora a cosa corrisponde l'ingresso analogico 0?

Il datasheet del sensore dice a pagina 2 in fondo a destra:

Operates on 3.0V to 5.5V. The average (and peak) current draw for 3.3V
operation is 2.1mA (50mA peak) and 5V operation is 3.4mA (100mA peak)
respectively. Peak current is used during sonar pulse transmit.

Percui hai ragione. a 5V ha un picco di 100mA ma Arduino sa dare quella corrente.

Hai provato di misurare la tensione tra pin 3 e GND con un multimetro direzionando il sensore erso un muro a una distanza fissa diciamo ca 1 metro?

Ciao Uwe

Sì, praticamente col tester misuro circa 0.98V fissi (distanza circa due metri), se avvicino un oggetto, la tensione cala sui 0.24V.
Se sono 4,9mV al centimetro, forse per la prima lettura ci dovremmo essere, giusto?

Il fatto che scenda all'avvicinamento di un oggetto, sembra coerente, ma non so quei volt corrispondono poi alla distanza rilevata, a me non sembra.

I volt calavano e riaumentavano lentamente ma penso sia perchè il tester non rilevi velocemente il cambio di valore sull'uscita.

P.S. io us Arduino Mega ho tutti i pin analogici nominati come A0, A1.. A15; forse sbaglio, ma per me l'ingresso analogico 0 è A0.
Come dovrei considerarlo, altrimenti? sbaglio? mi sfugge qualcosa?

Altra prova: ho fissato il sonar a 70 cm da un muro ed ho questi risultati.

Arduino legge un valore di 69/70 mentre dal tester misuro circa 0,35V che diviso 4,9mV mi porta sempre i 70 centimetri circa.

Ora, il problema è che se gli avvicino la mano o un altro oggetto all'inizio mi segna un valore minore in accordo con la distanza, ma poi inizia a sballare ed a dare anche valori sul 100 / 120 che sono impossibili dato che c'è il muro a 70cm.
Soprattutto, se avvicino l'oggetto al sonar, è ancora peggio perchè i valori diventano ancora di più random.

ciao
ho trovato questo ma e' solo una supposizione

stefano

Il fatto è che io sto utilizzando questi sensori allo stesso modo in cui utilizzavo i tre sonar srf08 solo che questi ultimi erano su bus I2C.

Teoricamente, essendo la stessa applicazione, dovrebbero funzionare anche questi qui senza problemi di echi e ritorni di segnale.. ma non ci sto riuscendo proprio. :frowning:

Ho notato che per oggetti al di sotto dei 27 centimetri di distanza, il sonar tira fuori valori del tutto assurdi.

Stando al datasheet, dovrebbe continuare a misurare sempre al massimo 20 cm nel caso in cui gli oggetti siano ad una distanza minore e invece i miei sonar visualizzano dei valori a caso come 112, 121, 100.. che sono del tutto errati.

Senza contare che quando gli piazzo un oggetto davanti, a volte mi segnala una distanza corretta, a volte una distanza di molto maggiore e che, come nel caso del muro, è al di la di quella effettivamente plausibile.

Nuove informazioni dopo i test che ho effettuato:

  • se avvicino un oggetto a meno di 20 centimetri dal sonar, questi pone sull'uscita analogica del pin3 circa 0,50V pari a quasi un metro di distanza (totalmente assurdo)
  • in ambiente aperto, il sonar non "vede" MAI oltre i due metri anche se l'ambiente è libero da ostacoli e non c'è nulla intorno
  • se prendo un oggetto e lo interpongo tra il nulla e il sonar, quest'ultimo lo rileva ma con una distanza inesatta e con molta approssimazione
  • a volte il sonar mi fornisce circa 2,80V quando è in ambiente esterno ma poi l'uscita cade subito a meno di 1V anche se davanti non ci pongo nulla

Questo lo fanno tutti e tre i sonar.

Ho provato a mettere in serie all'uscita pin3 analogica anche un resistore da 10K ed inserire in parallelo all'alimentazione un condensatore, ma nulla è servito.

Ho ricontattato MaxBotix, ma senza successo.

Qualche suggerimento?

ciao
ho cercato di rileggere il datasheet ma purtroppo non comprendo bene l'inglese, io proverei anche a metter LOW il pin 4

stefano

No, se metto low il pin4, il sonar smette di funzionare :slight_smile:

Stavo pensando che tutte queste false letture potrebbero essere riferite ad un ping troppo veloce, forse dovrei abbassare la tensione di alimentazione :cold_sweat: