Bouton tactile instable

Bonjour,

J'essai de commander une électrovanne (ouverture/fermeture) avec une seul bouton, mais ce bouton doit être tactile.
J'ai volontairement mis des résitances d'assez grand valeur (5MOhm) pour augmenter la sensibilité afin que l'utilisateur ne touche pas directement le récepteur (le circuit sera dans une boîte étanche). J'ai augmenté la surface de captation en ajoutant un bout de papier d'alu

Pour simuler, j'ai remplacé l'électrovanne par une LED et je constate que la LED s'allume et s'éteint de manière erratique. De plus j'ai l'impression qu'il y a comme une sorte de rebond du signal.
Pour éviter que la LED ne passe son temps à s'allumer et s'éteindre de façon un peu aléatoire, vaut-il mieux que j'augment la valeur dans

  onOffBPBuse = capSenseBPBuse.capacitiveSensor(30); 

pour rendre le bouton moins sensible ? Ou plutôt que je rajoute une sorte de tempo disant "si dépassement du seuil pendant X secondes alors on considère que le bouton est bien enclenché" ? Ou est-ce que c'est parce que la résistance de 5MOhm rend le bouton trop sensible ?
J'ai fais quelques essais avec 1MOhm et j'ai toujours cette instabilité, moins importante mais quand même.

#include <CapacitiveSensor.h>

const int EVBuse = 8;
CapacitiveSensor capSenseBPBuse = CapacitiveSensor(11,12);
CapacitiveSensor capSenseATGen = CapacitiveSensor(11,13);
bool etatBPBuse = false;
int long onOffBPBuse = 0;
int long ATGen = 0;
byte autorisationBuse = 0;
byte etatPrecedentBPBuse = 0;
byte allumageBuse = 0;


void setup() {
  pinMode(EVBuse, OUTPUT);
  digitalWrite(EVBuse, LOW);
  Serial.begin(115200);
}

void loop() {
  int seuil = 200;
  onOffBPBuse = capSenseBPBuse.capacitiveSensor(30); 
  if(onOffBPBuse > seuil){
    etatBPBuse = true;
  }
    else{
      etatBPBuse = false;
    }
  delay(1);

  if(etatBPBuse != etatPrecedentBPBuse){
    if(etatBPBuse == true){
      allumageBuse = !allumageBuse;
    }
    if(allumageBuse == 1){
      digitalWrite (EVBuse, HIGH);
    }
      else{
        digitalWrite (EVBuse, LOW);
      }
  }
  etatPrecedentBPBuse = etatBPBuse;

  ATGen = capSenseATGen.capacitiveSensor(30); 
  if(ATGen > seuil){
    digitalWrite (EVBuse, LOW);
  }
}

Voilà le schéma du montage
Et voilà ma breadboard

Le second bouton capSenseATGen est un bouton d'arrêt général du système. Il arrête tout le système et pas uniquement l'électrovanne.

Bonjour,

Pour avoir déja testé ce genre de montage, et comme c'est expliqué ici

L'efficacité du systéme est directement relié à sa et votre mise à la Terre.

l'Arduino par son alimentation, vous par vos chaussures.

Moi j'avais constaté que si vous mettiez par exemple 1 doigt d'une main sur la masse métalique du connecteur USB de l'Arduino, (qui est relié au 0V de l'Arduino, du PC, et selon l'alimentation du PC, à la Terre) et 1 autre doigt de l'autre main sur le capteur sensitif, vous aviez une meilleur sensibilité.

Pour ce qui est de la réponse erratic, lu sur l'article en piéce jointe,

Use smoothing in your code.

If you followed the tutorial in step 3, you'll notice that the signal from a cap sensor can be highly erratic. Therefore it's a good idea to use some kind of smoothing function in your code. We used this one and it did a great job in stabilising the signal.

Super ! Le lien Instructable est au final assez dense en information. Je sais pas dans quoi j'ai mis les pieds mais bon pas le choix :sweat_smile:

Pour ce qui est de la fonction "smoothing" qui est donné dans le tuto, jai l'impression que la librairie CapSense l'intègre déjà avec l'argument que l'on choisi dans le cans code suivant

  onOffBPBuse = capSenseBPBuse.capacitiveSensor(30); 

Je n'ai pas encore essayé de modifier cette valeur (30), je me suis contenté de modifier la valeur des résistances (entre 1 et 5MOhms) ainsi que la valeur de seuil de déclenchement (je variais entre 50 et 200).

Comme la mise à la terre semble jouer un rôle très important, je me demande si je ne pourrais pas utiliser mon installation pour l'augmenter. Mon circuit sera placé dans une boîte en plastique, mais cette boîte sera elle-même encastrée dans une paroi. Cette paroi est en dilite, un panneau composite ayant la composition suivante : peinture - feuille d'alu - plastique - feuille d'alu - peinture. Je me demande si en mettant à la même masse la carte électronique et le panneau (je fraise le panneau pour découvrir l'alu, je place une cosse plate que je fixe sur la paroi, je peint la connexion pour protéger d'une quelconque corrosion et je relie tout ça à la masse de la carte). Un peu comme sur les avions de ligne où tout est mis à la masse. Sachant que la paroi fait 80*200cm, je me dit que ça pourrait avoir une incidence. Mais laquelle ? :sweat_smile:

En tout cas merci pour le lien.

vous pouvez trouver des composants (par exemple TTP223 Capacitive Touch Switch Button) qui sont plus stables que le montage avec juste une grosse résistance sur votre Arduino

ça coûte à l'unité ~20 centimes d'euros frais d'envoi compris si vous les achetez par 10 en Asie. (parfois on trouve des promos encore moins chères)

vous trouverez aussi d'autres offres de la part de Adafruit , DFRobot ( Capteur tactile capacitif DFR0030) etc... les prix varient suivant le fournisseur. l'avantage c'est que ça se comporte comme un bouton physique.

Je l'ai déja écris ici sur d'autre post, et chez moi avec mon vieux PC portable qui est mit à la terre par son alim, le 0V de mon Arduino est relié à la Terre et ça marche très bien.

Un conseil, fait des essais, et relie aussi ta carcasse à la Terre

ton montage serra sûrement + efficace.

Bonjour @J-M-L,
Les TTP223 sont-ils sujet aux rebonds, comme de simples boutons poussoirs mécaniques ?
Je n'ai pas trouvé de lecture là dessus, mais j'imagine que oui, logiquement.

Cordialement
Pandaroux007

Les rebonds ont une cause mécanique. Dans les "interrupteurs" tactiles il n'y a pas de mécanique donc il n'y a, à priori, aucune raison pour qu'il y ait des rebonds.
Par contre, suivant les réglages, le circuit peu réagir à un touché fugitif (mode fast) ou pas (mode slow).

J'ai réussi à résoudre le problème. Je pense que ça venait de petits faux contacts avec la feuille d'alu car le montage n'était pas très robuste.

Je me posait la question car la LED de test tressautait au moment de l'activation, comme lorsque le contact d'un bouton poussoir ne se fait pas très bien ou bien remonte.
En tout cas plus de problème. Merci pour votre aide.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.