Lettura sensore ultrasuoni 3-pin ITEAD SDM-IO

Salve a tutti,
mi trovo a dover implementare il sensore in oggetto (nome completo "ITEAD - NON BLIND ZONE ULTRASONIC MODULE SDM-IO") simpaticamente sprovvisto di qualsiasi tipo di datasheet/esempio ecc.
La caratteristica più evidente del sensore è l'aver un solo pin per l'interfacciamento, siglato TRIG (gli altri due son di alimentazione).
L'ho trattato come il classico ping della Parallax (anch'esso tre pin):

  pinMode(Sens_pin, OUTPUT);
  delay (10); //Delay di 10mS fra ultimo echo e successivo trigger
  digitalWrite(Sens_pin, LOW);      
  delayMicroseconds(2);
  digitalWrite(Sens_pin HIGH);
  delayMicroseconds(10);
  digitalWrite(Sens_pin, LOW);
    delayMicroseconds(150); 

  pinMode(Sens_pin, INPUT); 
  long duration = pulseIn(Sens_pin,HIGH); //Misuro la pulsazione
  long currentRead = duration/29/2L;   //ms -> cm

   Serial.println (currentRead);

Risultato: currentRead sempre uguale a 0.
Gli unici dati tecnici disponibili del componente sono i seguenti:
Supply voltage 3.8 - 5.5 V
Global Current Consumption 8 mA
Ultrasonic Frequency 40k Hz
Maximal Range 500 mm
Minimal Range 0 cm
Resolution 3 mm
Trigger Pulse Width 10 ?s
Operation Level Digital 5V Power
Supply External 5V
Sensor Angle 15 degrees
Dal "Trigger Pulse Width 10 ?s" intuisco che il sensore non s'interfacci via seriale (ho comunque provato, ma non ricevo dati)

Nella speranza che qualc'un altro sia incappato in questo rettangolino di infelicità :wink:

Ciao

Sono da poco incappato nello stesso rettangolino d'infelicita' ... hai per caso risolto il problema?
Per chi volesse aiutare, allego foto del sensore e tutto quanto si puo' trovare in internet a proposito, cioe' molto poco.

Saluti

Dettagli

Non Blind Zone Ultrasonic Module SDM-IO is a stable and measure the distance accurately ultrasonic module which provides 0cm - 1500mm non-contact measurement function,the ranging accuracy can reach to 3mm. Its performance can compare with SRF05/SRF02 ultrasonic distance measuring module, also it has non-blind (From 0-1cm the measurement results are not accurate when we test, but more than 1cm are accurate) design and fast response.

Specification

Supply voltage 3.8 - 5.5 V
Global Current Consumption 8 mA
Ultrasonic Frequency 40k Hz
Maximal Range 500 mm
Minimal Range 0 cm
Resolution 3 mm
Trigger Pulse Width 10 μs
Operation Level Digital 5V
Power Supply External 5V
Sensor Angle 15 degrees
Board Size 3.7x2.0x1.5 cm
Version 1.0

Specifiche
Part. No. : IM120628006
Interfacce : Pulse Width
Utilizzo : Interno

Nuovamente salve a tutti:

Ho scritto alla ITEAD e dopo uno scambio di e-mail mi hanno inviato questo codice. Che ho provato e FUNZIONA!! Innanzi tutto voglio ringraziare il servizio tecnico di ITEAD che si e' dimostrato molto efficiente e diponibile, poi posto sul forum il tutto nel caso che altri si trovino ad avere a che fare con lo stesso rettangolino di EX-INFELICITA' :smiley: :smiley:

I wrote to ITEAD and after some e-mail exchange they sent me this code. Which I tested and WORKS!!
Firstly I'd like to thank the guys from the ITEAD technical service which have been extremely efficient and helpful. Then i post everything on this forum in case somebody else meets the same problems with this sensor.

int pin = 8; // connected to the Trig on the module, this serves as both Trigger and Echo
unsigned long time;
unsigned long sizeofpulse;
float cm;
 
void setup()
{
Serial.begin(9600);
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH); // Trig pin is normally HIGH
}
 
void loop()
{
pinMode(pin, OUTPUT); //return digital pin to OUTPUT mode after reading
digitalWrite(pin, LOW);
delayMicroseconds(25);
digitalWrite(pin, HIGH); //Trig pin pulsed LOW for 25usec
time = micros(); //record timer
pinMode(pin, INPUT); //change pin to INPUT to read the echo pulse
sizeofpulse = pulseIn(pin, LOW, 18000); //should be approx 150usec, timeout at 18msec
time = micros() - time - sizeofpulse; // amount of time elapsed since we sent the trigger pulse and detect the echo pulse, then subtract the size of the echo pulse
cm=(time*340.29/2/10000)-3; // convert to distance in centimeters
Serial.println("sc;");
  Serial.println("sd0,0;");
  Serial.println("ssSDM-IO:;");
 // Serial.println("sd1,0;");
 Serial.print("ss");
Serial.print(cm);
Serial.println(";");
  Serial.println("ssCM;");
  delay(1000);
}

Questo e' il risultato ottenuto: (c'e' un po' di pulizia da fare nel codice, l'ho provato cosi' come me lo hanno inviato)

sc;
sd0,0;
ssSDM-IO:;
ss26.03;
ssCM;
sc;
sd0,0;
ssSDM-IO:;
ss25.98;
ssCM;
sc;
sd0,0;
ssSDM-IO:;
ss25.67;
ssCM;
sc;

Selkaine:
Ciao, ...

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

il codice è praticamente lo stesso suggerito al link seguente:

http://scuola.arduino.cc/lesson/b75edfa/Misuratore_di_distanza_con_sensore_ad_ultrasuoni_SRF05

saluti
Luca

mi correggo, c'è una differenza.
il codice suggerito nel'articolo di arduino scuola attende un impulso LOW mentre quello suggerito da ITEAD attende un HIGH

saluti
Luca