Bonjour a toutes/tous
Je suis un débutant un peu dépassé par sont projet.
Je dois faire un compteur avec un arduino (jusque là, ca va encore ^^).
Les contraintes :
J'ai un arduino uno et un capteur inductif industriel. C'est tout pour le matériel
Les données doivent être récupérées ou récupérables facilement (type excel)
mon avancée :
Je lis les données du capteur et je compte les impulsions.
J'ai une macro excel qui enregistre mes données.
mon problème :
La macro écrit sur tous les excel ouvert et ca a mis le bazard dans les fichiers de production...(merci les sauvegardes...)
La carte est liée au fichier excel et ce n'est pas pratique pour etudier les autres postes de l'atelier surtout qu'ils n'ont pas tous un pc.
Mon souhait :
J'aimerais avoir une carte autonome (achat d'un ou plusieurs Shield ?)
Me débarrasser de la maccro excel pour supprimer le problème ^^
Je suis complètement largué, je ne sais pas vers quoi m'orienter ni si des solutions existent déjà.
J'espère que quelqu'un pourra m'aider
Évidemment je suis ouvert à toutes les solutions, tant que j'ai un compteur a la fin,
Je ne fais pas mon difficile.
Est-ce que l'enregistrement sur carte SD et relecture de cette carte sur un PC est suffisant comme autonomie ou les données doivent être accessibles en tout temps?
L'enregistrement sur carte SD est tout a fait envisageable.
Il faudra juste que je trouve le moyen d'enregistrer les séries de données sur des fichiers différents pour éviter de mélanger les données de production.
Il suffit de nommer les fichiers en fonction de la date ou de l'heure ou du lieu de mesure ou des 3 en même temps.
Les autres alternatives d'accession aux données, pourraient être via Intranet, le montage servant de serveur et un navigateur ou via Bluetooth et un smartphone ou une tablette. Dans ces deux cas, Intranet et Bluetooth, le montage pourrait se faire autour d'un ESP32 du genre M5StickC
Je ne connaissais pas du tout ! Ils sont super sympa !
Du coup, le service info n'est pas très ouvert sur les appareils en réseau pour les données de production, donc si je devais choisir, se serait le second pour la carte SD
Je ne suis pas sûr d'avoir tout compris sur les compatibilité du code arduino ^^ (je suis vraiment perdu quand ca touche à ça....je me demande encore pourquoi j'ai hérité de ce projet )
Mais en tout merci! C'est déjà une belle piste de recherche
Je ne sais pas si ce sera ma solution finale mais en tout cas elle ressemble beaucoup à ce que je recherche
Ca se développe avec l'environnement Arduino, comme un Arduino via son IDE.
Pourrais-tu être plus précis pour ce qui est des mesures.
Y as t-il un montage par site de production?
Quel rythme de capture?
Quel fréquence de relevé de données.
Je mesure des déplacements de vérin
En très résumé : l'opérateur sertie a l'aide d'un vérin et j'ai mon capteur qui est proche de la butée qui détecte la tête du vérin.
Un capteur inductif qui est branché en analogique sur ma carte -> quand la valeur lu est supérieur a ... alors le compteur prend 1 et écrit l'heure.
Les mesures sont relativement lentes : entre 3 et 10 secondes entre les mesures en fonction des produits. Aujourd'hui mon programme a une routine qui vérifie les valeurs toutes les 1,5s a peu près.
Je n'ai qu'un site de production mais j'ai 4 postes à équiper. Cependant aucune liaison n'est obligatoire entre les postes, ils peuvent rester indépendants les uns des autres.
Donc on peut imaginer un fichier dans lequel il y aurait des enregistrements qui se composent de:
l'identité du poste, la date YYYY.MM.DD, l'heure HH:MM:SS. compteur
Le non du fichier a peu d'importance du fait que toute l'information se trouve sur chaque enregistrement.
Pour le relevé des données, entre 2 mesures, il suffirait d'extraire la carte SD en cours et d'introduire une nouvelle.
En soit oui, la donnée qui m'intéresse est le temps total est le temps entre chaque mesure (enfin dans un premier temps ^^).
la solution de changer de carte n'est pas très pratique mais elle a le mérite d'être efficace.
en écrivant je me rends compte que l'idéal serait de pouvoir lire quelques données mais ça peut être simple avec un petit écran je verrai en temps voulu pour ça ^^
Voici mon code, dans cette version le compteur indique toujours 1 et c'est voulu, ce n'est pas un oubli
De plus il est fait pour tourner avec une macro PLX-DAQ sur excel
//programme avec condition pour compter un seul sertissage si détection longue par le capteur
int LED = LED_BUILTIN;
int etat = A0;
bool sertissage = false;
int unique = 0;
int x = 1;
int row = 0; // initialise la ligne à 0
/*-------------------------------------------------------------------------------*/
void setup() {
Serial.begin(9600); //lien série sur 9600
pinMode(LED, OUTPUT); //Initialise la LED 13 en OUTPUT
Serial.println("CLEARDATA"); //effacer les données de la feuille
Serial.println("LABEL,Heure sertissage,Nbr,Jour"); //titres des colonnes dans Excel
}
/*-------------------------------------------------------------------------------*/
void loop() {
int sensorValue = analogRead(etat); //lire la valeur de etat
delay(100); //délai
sertissage = (sensorValue <=800)? false : true; //test sur la valeur du capteur
/*-------------------------------------------------------------------------------*/
if ((sertissage == true) && (unique == 0)) //boucle condition sertissage en cours
{
Serial.print("DATA,TIME,"); //fonction écrire mais je comprends pas tout
Serial.print(x);
Serial.println(",DATE"); //écrire la valeur de x + retour a la ligne
digitalWrite(LED, HIGH); //allumer LED
delay(400); //délai
digitalWrite(LED, LOW); //éteindre LED
unique = 1; //détrompeur passe à 1
row++; //permet de changer de ligne dans le fichier excel
//x++; //incrémente x de 1 -> sertissage n°...
}
/*-------------------------------------------------------------------------------*/
if ((sertissage == true) && (unique == 1)) //boucle anti-double comptage si détrompeur =1
{
delay(100); //délai dans une boucle vide pour stabilité programme
}
/*-------------------------------------------------------------------------------*/
else //"sinon"->boucle par défaut
{
unique = 0; //détrompeur repasse à 0 pour relancer la boucle normal
delay(500); //délai pour stabilité programme
}
/*-------------------------------------------------------------------------------*/
}