Aller au contenu


Photo

Préhenseur pneumatique

Préhenseur pneumatique Arduino Nano Capteur de pression XGZ6847

  • Veuillez vous connecter pour répondre
Aucune réponse à ce sujet

#1 Niri_4

Niri_4

    Nouveau membre

  • Membres
  • 1 messages
  • Gender:Male

Posté 19 février 2025 - 03:18

Bonjour à tous !
 
L'objectif de ce projet est de récupérer un objet puis de le relâcher à l'aide d'une ventouse contrôlée par un Arduino.
 
Nb: Il existe un projet avec l'ancien kit préhenseur pneumatique, attrapeur d'écoCup à ventouse
 
Matériel
 
Pour réaliser ce projet, nous aurons besoin de :
Les composants marchent avec une alimentation 5V
 
attrapeurAventouse_1.jpg
Remarque : Ce système peut être réalisé sans capteur de pression. Cependant, dans ce cas, il perd la capacité de détecter si l'objet a bien été saisi ou si le vide est insuffisant.
 
Étape 1 : Câblage
 
attrapeurAventouse_3A.jpg
Connexion de l'Arduino
 
image_2025-02-19_151712963.png
Connexion des composants
 
image_2025-02-19_151820843.png
Étape 2 : Programmation
 
Objectif du programme
L'objectif du code est de générer un vide dans le système afin de saisir un objet, puis de le relâcher sur commande.
 
Pour ce faire, nous utilisons :
  • Une pompe à air pour générer le vide,
  • Une électrovanne pour ouvrir et fermer le circuit,
  • Un capteur de pression pour surveiller l'état du système,
  • Un Arduino Nano pour gérer l'ensemble des composants.
 
Code source
// Définition des connexions
const int motorPin = 5;    // Broche de contrôle de la pompe
const int valvePin = 6;    // Broche de contrôle de l'électrovanne
const byte capteurPin = A5; // Broche du capteur de pression

// Définition des seuils de pression
const int seuilMin = 500;  // Doit être > 0
const int seuilMax = 800;  // Doit être < 1023 et > seuilMin

// États du système
const int INIT = 0;   // Démarrage du système
const int ARRET = 1;  // Pompe arrêtée
const int OUVERT = 2; // Ouverture de l'électrovanne (relâchement de l'objet)
const int FERMER = 3; // Fermeture de l'électrovanne (aspiration active)

// Variables globales
int var = INIT;
int cap = (seuilMin + seuilMax) / 2;

void setup() {
  pinMode(motorPin, OUTPUT);
  pinMode(valvePin, OUTPUT);
  pinMode(capteurPin, INPUT);

  Serial.begin(9600); // Initialisation du port série pour le débogage
}

void loop() {
  // Lecture de la valeur du capteur de pression
  cap = analogRead(capteurPin);
   
  // Vérification des seuils de pression pour ajuster l'état du système
  if (cap > seuilMax && var != FERMER) {
    var = INIT;  // Remise à l'état initial si la pression dépasse le seuil maximal
  }

  if (cap < seuilMin) {
    var = ARRET;  // Arrêt de la pompe si la pression descend en dessous du seuil minimal
  }
    
  // Lecture de la commande via le port série
  if (Serial.available() && var != FERMER) {
    var = OUVERT;  // Passage à l'état d'ouverture sur réception d'une commande série
  }
    
  // Gestion des différents états
  switch (var) {
    case INIT:
      digitalWrite(motorPin, HIGH); // Activation de la pompe pour créer le vide
      break;
        
    case ARRET:
      digitalWrite(motorPin, LOW); // Arrêt de la pompe
      break;
        
    case OUVERT:
      Serial.read();  // Lecture et suppression de la commande reçue
      Serial.println(analogRead(capteurPin)); // Affichage de la pression actuelle
      digitalWrite(valvePin, HIGH); // Activation de l'électrovanne (libération de l'objet)
      var = FERMER;  // Passage à l'état de fermeture pour attendre une nouvelle commande
      break;
        
    case FERMER:
      if (Serial.available()) {
        Serial.read();  // Lecture et suppression de la nouvelle commande
        digitalWrite(valvePin, LOW); // Fermeture de l'électrovanne
        Serial.println("!!!FINISH!!!"); // Indication de la fin de l'opération
        var = INIT; // Retour à l'état initial
      }
      break;
    }
}
Explication du Code
  • Les broches numériques de l'Arduino sont utilisées pour contrôler la pompe et l'électrovanne.
  • Aucune modulation de puissance n'est nécessaire, on les active ou désactive simplement.
  • La lecture du capteur de pression se fait via une entrée analogique pour obtenir une mesure continue.
  • Un seuil minimal et un seuil maximal sont définis pour gérer l'activation et l'arrêt du système.
  • Le programme utilise une commande série pour relâcher l'objet et relancer la succion.
  • L'état du système est géré par une machine à états (`switch...case`), simplifiant la gestion des transitions.
 
Conclusion et Améliorations Possibles
 
Avantages du système :
  • Détection automatique du vide et ajustement du fonctionnement.
  • Commande simple via le port série.
  • Possibilité de personnaliser les seuils pour s'adapter à différents objets.
Améliorations suggérées :
  • Remplacer la commande série par un bouton-poussoir, télécommande ou a l'aide d'une fonction.






Aussi étiqueté avec au moins un de ces mots-clés : Préhenseur pneumatique, Arduino Nano, Capteur de pression, XGZ6847

1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users