Detecteur DYP-ME007y et longueur de cable

En 2015 j'ai présenté une detection de niveau pour une citerne eau de pluie ; on peut facilement retrouver le projet en tapant "pierrelec"
Tout a bien fonctionné jusqu'à présent quand je l'ai démonté juste pour faire un repérage de câble depuis je n'arrive plus à avoir une mesure correcte si je le rebranche sur le cable en provenance de la citerne. Par contre la mesure de distance est bonne si j'utilise un dyp-me007 avec son cable de connexion d'origine.... Avec la longueur du cable de la citerne j'obtiens une mesure qui tourne autour de 20cm. Meme problème avec un cable rallonge de 3.5m. A l'origine en 2015, je pouvais ajuster la mesure dans /usr/share/arduino/libraries/sonic/ultrasonic.cpp que je ne retrouve plus. Voilà j'ai besoin de votre aide bienveillante . Y a -t-il un moyen de modifier un fichier pour qu'il tienne compte de la longueur du cable meme par essais successifs , car je conçois bien que que cette distance fait bien partie de la mesure. mais c'est un problème qui n'était pas du tout présent quand j'ai réaliser le projet en 2015.
Merci à vous.

Re bonjour,

Je suis toujours sans solution pour ce détecteur de niveau et je suis désolé de le voir sans réaction à la cave . j’avais réalisé 2 version l’une avec l’ultrasonic à 2 module mais qui trésentait des problème d’étanchéité et le 2ième avec le DYP-ME007 qui a fonctionné plusieurs années jusqu’à ce que je le démonte pour analyser le câblage. Et voila il reste figé sur 20 cm alors j’ai tout soupçonné jusqu’au fait qu’entre temps il y a eu plusieurs versions de logiciel Arduino qui se sont succédés. j’ai testé la plupart d’entre eux mais sans résultat ça fonctionne avec la longueur du câble fourni avec le détecteur DYP …. mais dès que l’on passe à 5 ou 7 m la mesure reste figée !!! et maintenant j’ai une autre erreur pendant la compilation CaptNiveau_ME007_LCD_jm.ino je reçois qu’il ne trouve pas le dossier ping alors qu’il n’est pas utilisé dans le programme ??? Un truc que j’aimerais comprendre, lors du passage de la version HC-SR04 à la version avec le DPY "include <Ultrasonic …. est passé en include #include <SoftwareSerial.h> et bien ce .h je n’arrive à le retrouver nullepart. Etre peut-être que là-dedans on pourrait trouver un paramètre à ajuster à la longueur du câble entre l’arduino et la capteur.
Il y a-t-il parmi vous une bonne âme qui pourrait m’aider en copiant -collant CaptNiveau_ME007_LCD_jm.ino repris sur le site ( faites une recherche avec “pierrelec” ) et le tester avec une longueur de câble d’au moins 7m. il faut juste disposer du capteur je suis même disposé à vous en envoyer un.
Grand merci de d’avoir pris le temps de lire la prose d’un vieil homme de 78 ans.
Bien à vous.
Pierre.

Salut gamin.
J'en ai un de plus.

Déjà avec plus de paragraphes et des sauts de lignes ta prose ferait moins mal aux vieux yeux et sera plus facile à lire.

Je pense que tu confusionnes.
include <Ultrasonic …. .h> est pour inclure la bibliothèque qui gére le capteur que tu utilises.
include <SoftwareSerial.h> est pour ajouter une liaison série 'logicielle'.

Les fichiers en *.h sont les fichiers d'en tête des bibliothèques.
L'IDE a un répertoire dans lequel sont stockés toutes les bibliothèques installées par l'utilisateur.
Quand le compilateur trouve une ligne :
include<machin.h>
Il sait qu'il doit aller chercher dans le répertoire idoine de l'ide tous les fichiers de la bibliothèque machin.
Parce qu'une bibliothèque est constituée de nombreux fichiers *.h, *.c ou *.cpp.

Il faut s'assurer que la bibliothèque "machin" a bien été installée par le gestionnaire de bibliothèque de l'IDE.
Ou que, depuis le temps des premiers essais, il n'y ait pas eu de mise à jour qui ait fait disparaître ces fichiers.

Il se peut aussi qu'une bibliothèque ait été modifiée et n'est plus compatible ou a changé de nom, Dallas n'était rien en regard du terrible univers Arduino :grinning_face:.

Si les fichiers sont toujours bien présents, a ta place je ne mettrais à jour la bibliothèque qu'en dernier ressort.

Tu peux faire référence à des anciennes discussions, s'il te plaît, mets un lien direct, tu sais où chercher, pas nous.

Je pense que le mieux serait de mettre le code (entre balises) que tu utilises actuellement.
Un rappel du schéma d'installation ne ferait pas de mal non plus.

Oui, c'est normal ce nouveau capteur utilise une interface série.
Tu ne trouves pas le fichier en question car il est installé avec le package Arduino et ne se trouve donc pas dans le répertoire où sont installées les librairies tierces.


Un truc qui fonctionnait, que tu démontes et qui ne fonctionne plus.

  1. Tu cherches le câble abîmé dans le démontage
  2. La connexion mal faite au remontage.
  3. L'erreur lorsque tu as remonté le tout.

Pourquoi vouloir recompiler le code s'il fonctionnait et que le matériel n'a pas changé.


Je ne comprends pas bien cette histoire de résultat de la mesure lié à longueur du câble.
Le capteur donne toujours une mesure par rapport à sa face avant et la longueur du câble n'intervient pas là-dedans.
Au pire si le câble est trop long la liaison série peut ne pas fonctionner. Mais si elle fonctionnait précédemment et que par ailleurs rien n'a été modifié il n'y a pas de raison que cela ne fonctionne plus.

Bonjour et grand merci de ta réponse …

Voilà le lien ou tout a commencé

et le programme qui fonctionnait si bien :


//////////////////// include the library code:

#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

#define rxPin 10
#define txPin 7

SoftwareSerial mySerial = SoftwareSerial(rxPin,txPin); // RX, TX

byte mesHigh = 0;
byte mesLow = 0;
byte start =0;
byte sum = 0;

int mesure; // valeur de sortie brute du capteur en mmint index=0;  //numero d'ordre de l'octet courant du message

// initialize the lcd library with the numbers of the interface pins

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {// set up the LCD's number of columns and rows:lcd.begin(16, 2);

mySerial.begin(9600);

}

void loop() {// set the cursor to column 0, line 0// (note: line 0 is the first row, since counting begins with 0):lcd.setCursor(0, 0);

int niveau, volume, mesurecm ;

mySerial.flush();delay(100);

if (mySerial.available() >= 4) {

start=mySerial.read();
mesHigh=mySerial.read();
mesLow=mySerial.read();
sum=mySerial.read();

mesure = (mesHigh * 256) + mesLow;


mesurecm = mesure/10;
lcd.home();
//lcd.println(mesure);
//lcd.print("      ");
//lcd.home();

 }
 delay(1000);
  niveau = 265-mesurecm; // 204 + réhausse + Espace inter niv-capteur


volume = niveau *10* 1.17*1.17*3.14;
//delay(1000);
lcd.print(mesurecm);
lcd.print(" CM ");
lcd.print("Niv:");
lcd.print(niveau);
lcd.print(" CM");
lcd.setCursor(0, 1);
lcd.print(volume);
lcd.print(" Litres");

}

Pour le schéma il est tout simple . En venant de l’arduino , il y a une petite interface circuit imprimé du côté de l’arduino, connecteur à 4 pôles ( Gnd, Rxpin, Txpin, +5V) et du côté capteur 2 pin (Sign, Gnd) et un câble (dont la longueur est à rallonger ) puis le capteur.

Je certifie encore que le montage tel que décrit a fonctionné plusieurs années sans soucis jusqu’à ce que j’ouvre le boîtier et démonte les connections pour y répérer le câblage , dans le but de faire un double. Le double identique n’a pas fonctionné avec un long câble alors que c’était bon avec le câble d’origine du capteur. Je remonte le tout dans mon boîtier à la cave , même soucis , si je laisse pendre un capteur DYP …. avec son câble d’origine ça fonctionne si je rebranche le câble de +/- 5 m qui vient de la citerne , le display est figé à 21cm . et le problème est reproductible à l’infini.

Si tu veux suivre le lien, tu verras j’ai même mis des photos du bazar dans origine, j’étais fier en ayant cru que ça pouvait apporter un aide à d’autres mais maintenant c’est plus le cas .

Encore merci pour VOTRE aide.

J'ai dû reprendre ton post.

  • Pour insérer une URL il suffit juste de faire un copié/collé de celle-ci (pas de guillemets autour).

  • Pour coller du code, cliquer sur l'icône <code/> dans le haut de la fenêtre d'édition et coller l'ensemble du code à la place de la ligne type or paste code here.

Je ne comprends pas, coté capteur (DYP-ME007Y) l'interface est (voir ci-dessous) donc pourquoi parler de seulement 2 fils coté capteur????

Label Name Description
1 VCC Power Input
2 GND Ground
3 RX Function Pin
4 TX UART Output

Tu as un capteur et un écran.
Qu'est-ce qui te permet de dire que ce n'est pas l'écran qui a un problème.

Par principe, en cas de problème, je n'évacue jamais une source, même si les apparences semblent montrer que son bon fonctionnement serait évident.
C'est pour cela qu'il serait bien si tu faisais des sorties avec Serial.print().
Au moins on serait assuré que le problème ne provient que du capteur et sa liaison filaire.

A quoi correspond le signal "SIGN" ?
Comment sont constitué les deux câbles ?

Sur le programe il y a quelque chose que je ne comprends pas (je ne dis pas que c'est faux, je dis que je n'ai jamais vu) :

`byte mesHigh = 0;`
`byte mesLow = 0;`
`byte start =0;`
`byte sum = 0;`

Quel est le rôle des apostrophes en début et en fin de ligne.

Je pense que c'est le passage par une application tierce avant de faire le copié/collé du style lecture du code avec un traitement de texte et copié/collé depuis celui-ci.
Le code était bourré d'apostrophes et de backsticks qui encadraient les lignes.

Pour mieux comprendre j'ai retrouvé une doc intéressante sur le DYP-ME007 , je la joint.
Le signal SIGN c'est le signal qui émet et qui rapatrie le signal ultra-son entre l'interface et le capteur.
Tu parles de l'écran il s'agit du petit display lcd à 2 lignes piloté par ultrasonic.h et le display réagit toujours
lorsque je reconnecte le câble d'origine et un câble plus long, donc il n'y a pas de coupure entre l'arduino et le display.
J'ai un soucis : j'ai 2 capteurs avec leur câbles mais je n'arrive plus a retrouver leur petite interface car je
voulais vérifier si la led flaschait à l'alimentation ce qui veut dire qu'il serait bien en mode série. (voir la doc.)
Sinon je vais recommander 2 interfaces sans les capteurs si ça existe.
Bien à vous.
Pierre

(attachments)

capteur DYP-ME007.pdf (156 KB)