I am working on a production line tracking project with all or nothing sensors (E18-D80NK) and an M-DUINO PLC Arduino Ethernet 21 I/Os Analog/Digital PLUS. The project involves counting the number of bottles produced by the production line. You should know that I use 7 sensors placed at different places of the product line (under after a machine of the production line, the purpose being to locate and calculate where there is more loss). I’m uploading his data to google data studio and thingspeak.
My problem is that my sensors do not give me the true values (each machine on the line has a reliable counter).
Also I can not use my sensors in all or nothing but instead I use them in analog (when I try to read the value in digital I receive only 0 ).
I’m sending you my code so you can help me.
Thank you in advance
Bonjour
Je travaille sur un projet de suivie de ligne de production avec des capteurs tout ou rien (E18-D80NK) et un M-DUINO PLC Arduino Ethernet 21 I/Os Analog/Digital PLUS. Le projet consiste à compter le nombre de bouteilles produites par la ligne de production. Il faut savoir que j'utilise 7 capteurs placés à différents endroits de la ligne de produit (sous après une machine de la ligne de production, le but étant de localiser et de calculer là où il y'a plus de perte). J'envoie ses données sur google data studio et thingspeak.
Mon problème est que mes capteurs ne me donnent pas les vraies valeurs (chaque machine de la ligne a un compteur fiable).
Aussi je n'arrive pas à utiliser mes capteurs en tout ou rien mais par contre je les utilise en analogique (quand j'essaie de lire la valeur en numérique je reçois que des 0 ).
Je vous envoie mon code pour que vous m'aider.
Merci d'avance
#include <ThingSpeak.h>
#include <SPI.h>
#include <Ethernet2.h>
#include <EthernetClient.h>
/*
Brown: 5V DC
Blue: GND
Black: Signal, to PIN 2 PWM
*/
const char WEBSITE[] = "api.pushingbox.com"; //pushingbox API server
const String devid = "vC0529F1CD7A8HGT"; //device ID from Pushingbox
//Variables
//minute
int SqzBocaux=0, Doseuse=0,Bouchonneuse=0,Dateuse=0,ApresFour=0;
int Etiquetteuse=0, Encartonneuse=0;
float TRS=0;
// chaque 10 minutes
int compt10SqzBocaux=0, compt10Doseuse=0,compt10Dateuse=0,compt10Bouchonneuse=0,compt10ApresFour=0,compt10Etiquetteuse=0, compt10Encartonneuse;
float compt10TRS=0;
//Heure
int comptHeureSqzBocaux=0, comptHeureDoseuse=0,comptHeureBouchonneuse=0,comptHeureDateuse=0,comptHeureApresFour=0,comptHeureEtiquetteuse=0,comptHeureEncartonneuse,perteMinute,perteHeure;
int comptJourSqzBocaux=0, comptJourDoseuse=0,comptJourBouchonneuse=0,comptJourDateuse=0,comptJourApresFour=0,comptJourEtiquetteuse=0,comptJourEncartonneuse;
float TRSJour=0, rendementJour=0;
//FMT
// Parametrages ThingSpeak et ethernet
//production
unsigned long channelID = 823933;
const char * writeAPIKey = "1CZSOAYNNHBJ8YM14"; // API key pour le canal ThingSpeak quantité produite
//TRS
unsigned long channeLive = 833763;
const char * writeAPIKeyLive = "TDVWPOKJ65YRTSJG"; // API key pour le canal ThingSpeak TRS
const char* server = "api.thingspeak.com"; // Adresse du serveur ThingSpeak
EthernetClient client;
EthernetClient clientG;
byte mac[]={0xDE,0xAC,0xDA,0xCF,0xCD, 0xAD};
// capteurs
#define capteurSqzBocaux 54
#define capteurDoseuse 55
#define capteurDateuse 57
#define capteurApresFour 58
#define capteurEtiquetteuse 59
#define capteurEncartonneuse 56
//initialisation des valeurs des capteurs
int IA=0, IB=0,IC=0,ID=0,IE=0,IF=0;
//temps d'envoie
unsigned long previousHeure=0;
unsigned long previousMinute=0;
unsigned long previous10Minute=0;
//Intervalle entre chaque envoie
const long intervalHeure= 28000000;
const long intervalMinute = 60000;
const long interval10Minute =600000;
void setup() {
// put your setup code here, to run once:
// put your setup code here, to run once:
Serial.begin (9600L);
char erreur =0;
erreur = Ethernet.begin(mac);
if (erreur==0)
{
Serial.println("Echec de la configuration DHCP");
delay (200);
Ethernet.begin(mac);
Serial.println("initialisation");
delay (100);
}
else
{
Serial.println("Reussite de la configuration DHCP Ethernet");
}
delay(500); // on se laisse le temps de souffler
// entrées des signaux
pinMode(capteurSqzBocaux, INPUT);
pinMode(capteurDoseuse, INPUT);
pinMode(capteurEncartonneuse, INPUT);
pinMode(capteurDateuse, INPUT);
pinMode(capteurApresFour, INPUT);
pinMode(capteurEtiquetteuse, INPUT);
delay(10);
}
void loop() {
if(analogRead(capteurDoseuse)==0 && IA==0)
{
IA=1;
//comptage
Doseuse++;
comptHeureDoseuse++;
compt10Doseuse++;
comptJourDoseuse++;
Serial.println("\n Production doseuse FMT : \n"); // pour debogage
// pour debogage
Serial.println(Doseuse);
Serial.println(comptHeureDoseuse);
Serial.println(compt10Doseuse);
Serial.println(comptJourDoseuse);
delay(10);
}
if(analogRead(capteurDoseuse)!=0)
{
IA=0;
}
if(analogRead(capteurDateuse)==0 && IB==0)
{
IB=1;
//comptage
Dateuse++;
comptHeureDateuse++;
compt10Dateuse++;
comptJourDateuse++;
Serial.println("\n Production Sortie Dateuse : \n"); // pour debogage
// pour debogage
Serial.println(Dateuse);
Serial.println(comptHeureDateuse);
Serial.println(compt10Dateuse);
Serial.println(comptJourDateuse);
delay(10);
}
if(analogRead(capteurDateuse)!=0)
{
IB=0;
}
if(analogRead(capteurEtiquetteuse)==0 && IC==0)
{
IC=1;
//comptage
Etiquetteuse++;
comptHeureEtiquetteuse++;
compt10Etiquetteuse++;
comptJourEtiquetteuse++;
Serial.println("\n Production Sortie Etiquetteuse : \n"); // pour debogage
// pour debogage
Serial.println(Etiquetteuse);
Serial.println(comptHeureEtiquetteuse);
Serial.println(compt10Etiquetteuse);
Serial.println(comptJourEtiquetteuse);
TRS= float ((Etiquetteuse/850)*100); // en %
TRSHeure= float ((comptHeureEtiquetteuse/5100)*100); // en %
TRSJour= float ((comptHeureEtiquetteuse/30600)*100); // en %
if (current10Minute - previous10Minute >= interval10Minute)
{
previous10Minute=current10Minute;
sendToPushingBox();
//RESET TOUTES LES 10 MINUTES
SqzBocaux=0;
Doseuse=0;
Bouchonneuse=0;
Dateuse=0;
Etiquetteuse=0;
ApresFour=0;
Encartonneuse=0;
TRS=0;
}
//Envoie quantité produite CHAQUE 8H
if (currentHeure - previousHeure >= intervalHeure)
{
previousHeure=currentHeure;
ThingSpeak.setField(5, comptJourDoseuse);
ThingSpeak.setField(6, TRSJour);
ThingSpeak.setField(7, comptJourEtiquetteuse);
ThingSpeak.setField(8, comptJourEncartonneuse);
ThingSpeak.writeFields(channelID, writeAPIKey);
Serial.println("connected thingspeak heure");
comptJourDoseuse =0;
comptJourDateuse=0;
comptJourBouchonneuse=0;
comptJourEtiquetteuse=0;
comptJourApresFour=0;
comptJourEncartonneuse=0;
TRSJour=0;
comptJourSqzBocaux=0;
}
}
void sendToPushingBox()
{
clientG.stop();
//Start or API service using our WiFi Client through PushingBox
if (clientG.connect(WEBSITE, 80))
{
Serial.println("connected google");
clientG.print("GET /pushingbox?devid=" + devid
+ "&SqzBocaux=" + (String) SqzBocaux
+ "&Doseuse=" + (String) Doseuse
+ "&Bouchonneuse=" + (String) Bouchonneuse
+ "&Dateuse=" + (String) Dateuse
+ "&ApresFour=" + (String) ApresFour
+ "&Etiquetteuse=" + (String) Etiquetteuse
+ "&Encartonneuse=" + (String) Encartonneuse);
clientG.println(" HTTP/1.1");
clientG.print("Host: ");
clientG.println(WEBSITE);
clientG.println("User-Agent: test_Service/1.0");
clientG.println("Connection: close");
clientG.println();
}
else
{
Serial.println ("pas de connexion");
}
}
M-duino projet
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.