Sovol 3D (Lavage de résin) "Upgrade"
Dans ce projet, on cherche à trouver une solution à la machine de lavage Sovol 3D qui s'arrête après quelques essais. Pour cela, on envisage à changer la méchanisme de bouton (qui est actuellement faite avec une bouton de commutation) et la remplacer avec une système de bouton poussoire.
Il y a deux composants principaux de la machine qui semblent défectueux :
- Le moteur, au centre, qui est activé via le "bouton" de démarrage fixé à droite de la machine.
- Après de multiples essais, il semble que le mécanisme moteur fonctionne bien, même s'il se met parfois à tourner sans même appuyer sur le bouton de démarrage...
- Soit, le deuxième composant est la carte fixée sous les "boutons" externes,
- Cela semble être le composant qui cause réellement le problème, car il semble y avoir un mécanisme non naturel de boutons "sans contact" qui activent certaines fonctionnalités de la machine, à savoir les boutons de démarrage, de réinitialisation et de minuterie. Le système de bouton en général semble être composé d'un ressort qui détecte le mouvement (destiné à un doigt mais semble que tout fonctionne vraiment) pour activer ladite fonction.
Le projet peut alors s'articuler autour de la recherche d'un moyen de tester les relais entre les boutons et le moteur, et peut-être d'un moyen de remplacer les boutons de type ressort par de véritables boutons cliquables.
On utilise un Arduino Nano 328 comme base de notre projet, et pour le codage on se base sur des recherches conduites sur Internet et les forums de Github.
Première ébauche (22.3.2023)
const int startBouton = 2; // un bouton sur la broche 2
const int resetBouton = 3; // un bouton sur la broche 3
const int timerBouton = 4; // un bouton sur la broche 4
const int moteurPin = 5; // un moteur sur la broche 5
void setup()
{
// on met le bouton en entrée
pinMode(startBouton, INPUT_PULLUP);
pinMode(resetBouton, INPUT_PULLUP);
pinMode(timerBouton, INPUT_PULLUP);
pinMode(moteurPin, OUTPUT);
}
int start_etat;
int reset_etat;
int timer_etat;
int t = 1;
void loop()
{
start_etat = digitalRead(startBouton);
reset_etat = digitalRead(resetBouton);
timer_etat = digitalRead(timerBouton);
if(start_etat == HIGH)
actionAppuiStart(); // le bouton est appuyé
if(reset_etat == HIGH)
break; // peut-être pas la meilleure solution : ajouter une fonction interrupt qui peut se faire même pendant le delay
if(timer_etat == HIGH)
actionAppuiTimer(); // le bouton est appuyé
delay(10);
}
void actionAppuiTimer(){
if (t = 3)
t = 1;
else
t += 1;
}
void actionAppuiStart(){
if (t = 1)
digitalWrite(moteurPin,HIGH); // le moteur tourne pendant 5 minutes
delay(300000);
digitalWrite(moteurPin,LOW);
if (t = 2)
digitalWrite(moteurPin,HIGH); // le moteur tourne pendant 10 minutes
delay(600000);
digitalWrite(moteurPin,LOW);
else
digitalWrite(moteurPin,HIGH); // le moteur tourne pendant 15 minutes
delay(900000);
digitalWrite(moteurPin,LOW);
}
Ce code est relativement simple : on est allé chercher une algorithme de « comptage » sur Youtube. Nous nous sommes croisés avec un tutoriel d’Arduino qui permet de réaliser une programme qui effectue le comptage requise pour la partie « Timer » de la machine, car nous avons l’idée que c’est la fonction celui-ci qui pose problème pendant l’exécution de la session voulue (5,10,15 min).
Après avoir appris comment faire le code sur Arduino IDE, notre prochain étape était de trouver quels « ports » à utiliser sur la carte Arduino, car apparemment notre système requiert une module qui se connecte à la première sortie à droite de la carte. Dans le tutoriel, toutes les connections nécessaires sont introduites, et nous nous sommes débrouillés pour déterminer lesquels à utiliser dans notre cas.