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 :
- Une Arduino Nano + Shield
- Un capteur de pression atmosphérique (-100 / 0 kPa)
- Une mini-pompe à air DC 4.5V
- Une électrovanne 3.7V(ou 4.5V)
- Une alimentation 5V
- Une ventouse
- Du tube flexible
Les composants marchent avec une alimentation 5V
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
Connexion de l'Arduino
Connexion des composants
É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.