Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Mesure du rayonnement solaire avec Arduino

Composants et fournitures

Arduino UNO
× 1
Arduino Ethernet Shield 2
× 1
cellule solaire
× 1
Résistance 10k ohm
× 1

Outils et machines nécessaires

Multimètre numérique

À propos de ce projet

À propos

Il existe de nombreux capteurs disponibles pour mesurer toutes sortes de conditions météorologiques telles que la température, l'humidité, l'intensité lumineuse, etc., mais il n'existe pas de capteurs facilement disponibles pour mesurer les quantités de rayonnement solaire. En effet, le rayonnement solaire peut être difficile à mesurer, même si nous le ressentons tous les jours sur notre peau.

L'irradiance solaire est la puissance par unité de surface reçue du Soleil sous forme de rayonnement électromagnétique dans la gamme de longueurs d'onde de l'instrument de mesure. La large gamme de longueur d'onde du Soleil est un autre facteur qui le rend difficile à mesurer.

L'instrument de mesure du rayonnement solaire s'appelle un pyranomètre. Les pyranomètres peuvent coûter entre 200 $ et 800 $, même auprès de fournisseurs chinois, ce qui les rend inaccessibles pour l'amateur moyen. Vous pouvez en savoir plus à leur sujet ici :https://en.wikipedia.org/wiki/Pyranometer

J'envisageais récemment d'acheter un panneau solaire pour ma maison et je voulais savoir si cela en vaudrait la peine et je voulais donc estimer la quantité d'énergie solaire disponible là où je vis.

Je n'étais pas intéressé par l'achat d'un pyranomètre, alors j'ai pensé que je pourrais économiser de l'argent et m'amuser en même temps en fabriquant le mien.

C'est ainsi que j'en suis venu à fabriquer mon propre gadget sympa qui est beaucoup moins cher et qui peut aider à estimer la quantité de rayonnement solaire. Il utilise des composants facilement accessibles et l'Arduino pour les calculs. J'ai obtenu la plupart de mes composants auprès de Chinavasion, mais il existe de nombreux autres endroits où vous pouvez vous procurer les outils et l'équipement, car tous sont généralement disponibles.

Configuration

1. Votre cellule solaire doit avoir 2 fils, un à la terre (noir) et l'autre sous tension (rouge). Si vous avez des codes couleurs différents ou que vous ne pouvez pas les différencier, vérifiez avec votre multimètre. Connectez les sondes de votre multimètre aux deux fils, si la tension affichée est positive, alors le fil auquel votre sonde multimètre noire est connectée est la masse, tandis que le rouge est sous tension, si la tension est négative, c'est l'inverse autour.

2. Connectez le fil de terre de votre cellule solaire à la terre Arduino et le fil VCC à n'importe quelle broche analogique via la résistance que nous avons choisie. Pour ce projet, nous utiliserons la broche analogique A0. La résistance est très importante pour nos calculs car nous nous attendons à ce qu'elle soit plusieurs fois supérieure à la résistance interne de la cellule.

C'est tout ce dont nous avons besoin pour l'instant. Passons à la partie codage. Les cellules solaires génèrent de l'énergie en convertissant l'énergie solaire du Soleil en énergie électrique, plus l'énergie (rayonnement et énergie lumineuse) du Soleil est élevée. Plus la tension produite sera élevée. Nous utiliserons cette relation directement proportionnelle pour estimer le rayonnement solaire.

Les paramètres suivants seront nécessaires :

  • Tension de référence analogique Arduino = 5 V (peut-être différente sur votre carte)
  • Tension de sortie maximale de votre cellule solaire (Cela variera en fonction du panneau solaire que vous utilisez, vous devez vérifier pour confirmer cela car il est très essentiel pour notre calcul, pour la cellule solaire moyenne du calculateur, il est d'environ 5V) .
  • Dimension de la cellule solaire. Vous pouvez mesurer cela à l'aide d'une règle (longueur et avec ou tout paramètre dont vous avez besoin pour trouver la zone).

Nous allons donc estimer notre rayonnement solaire en calculant la puissance de la cellule solaire et en divisant par sa surface.

  • Puissance =pow (AnalogRead(A0), 2) / Résistance
  • Superficie =longueur * largeur ( en supposant que nous ayons un rectangle)
  • rayonnement solaire =puissance / surface

Voici l'exemple de code ci-dessous :

/*------------------------------------------- -------------------------------------------------- ----------------------------*/#define ANALOG_PIN A0 // Broche analogique#define RESISTANCE 10 // Résistance en milliers d'ohms# define PANEL_LENGTH 60 // Longueur de la cellule solaire en mm#define PANEL_WIDTH 20 // Largeur de la cellule solaire en mm Volatile float Surface;volatile float Puissance;volatile float Radiation;/** Fonction de configuration principale*/void setup() {// Begin communication sérieSerial.begin(9600);while(!Serial);delay(100);}/** Fonction de configuration principale*/void loop() {Zone =PANEL_LENGTH * PANEL_WIDTH / (100*100); // nous divisons par 10000 obtenir la superficie en mètres carrésPower =pow(analogRead( ANALOG_PIN ), 2) / RESISTANCE; // Calcul de powerRadiation =Power / Area;char *msg; sprintf(msg, " Le rayonnement solaire est de %f W/M2 ", Rayonnement); // Génération du message à imprimer Serial.println(msg);delay(1000);}/*---------------------------- -------------------------------------------------- -----------------------------------------------*/

Les valeurs moyennes d'irradiance pour une journée normale peuvent aller de 150 à 300 W/M2. Mais cela variera considérablement en fonction de votre emplacement. Il peut atteindre 900 par une journée ensoleillée ou dans les zones autour de l'équateur.

Pour ajouter des fonctionnalités Internet, nous pouvons utiliser le shield Ethernet. Nous n'avons pas à faire d'autres nouvelles connexions, il suffit de monter le blindage sur l'Arduino et de placer les broches dans leurs positions correspondantes sur le blindage (c'est-à-dire que la broche 1 sur l'Arduino reste la broche 1 sur le blindage)

Code

  • exemple de code pour pyranomètre
  • Code de fonction Ethernet
exemple de code pour pyranomètreArduino
#define ANALOG_PIN A0 // Broche analogique
#define RESISTANCE 10 // Résistance en milliers d'ohms
#define PANEL_LENGTH 60 // Longueur de la cellule solaire en mm
#define PANEL_WIDTH 20 // Largeur de la cellule solaire en mm

zone flottante volatile;
flotteur volatil Puissance;
flotteur volatil Rayonnement;

/*
* Fonction de configuration principale
*/
void setup() {
// Commencer la communication série
Serial.begin(9600);
while(!Série);

retard (100);
}


/*
* Fonction de configuration principale
*/
boucle vide() {

Aire =PANEL_LENGTH * PANEL_WIDTH / (100*100); // nous divisons par 10000 obtenir la superficie en mètres carrés

Puissance =pow(AnalogRead( ANALOG_PIN ), 2) / RESISTANCE; // Calcul de la puissance

Rayonnement =Puissance / Surface ;

char *msg;

sprintf(msg, " Le rayonnement solaire est de %f W/M2 ", Rayonnement); // Génération du message à imprimer

Serial.println(msg);

retard(1000);
}
Aucun aperçu (téléchargement uniquement).
Code de fonction EthernetArduino
#include
#include

#define ANALOG_PIN A0 // Broche analogique
#define RESISTANCE 10 // Résistance en milliers d'ohms
#define PANEL_LENGTH 60 // Longueur de la cellule solaire en mm
#define PANEL_WIDTH 20 // Largeur de la cellule solaire en mm

zone flottante volatile;
flotteur volatil Puissance;
flotteur volatil Rayonnement;


// Entrez une adresse MAC et une adresse IP pour votre contrôleur ci-dessous.
// L'adresse IP dépendra de votre réseau local :
octet mac[] ={
0xDE, 0x0D, 0x8E, 0xEF, 0xFE, 0xED
} ;
Adresse IP ip (192, 168, 1, 177);

// Initialisation de la bibliothèque du serveur Ethernet
// avec l'adresse IP et le port que vous souhaitez utiliser
// (le port 80 est par défaut pour HTTP) :
serveur EthernetServer (80) ;

void setup() {
// Ouvrir les communications série et attendre que le port s'ouvre :
Serial.begin(9600);
tandis que (!Série) {
; // attend que le port série se connecte. Nécessaire pour le port USB natif uniquement
}


// démarre la connexion Ethernet et le serveur :
Ethernet.begin(mac, ip);
serveur.begin();
Serial.print("le serveur est à ");
Serial.println(Ethernet.localIP());
}


boucle vide() {

Aire =PANEL_LENGTH * PANEL_WIDTH / (100*100); // nous divisons par 10000 obtenir la superficie en mètres carrés
Puissance =pow(AnalogRead( ANALOG_PIN ), 2) / RESISTANCE; // Calcul de la puissance
Rayonnement =Puissance / Surface ;
char *msg;
sprintf(msg, " Le rayonnement solaire est de %f W/M2 ", Rayonnement); // Génération du message à imprimer


// écouter les clients entrants
client EthernetClient =serveur.disponible();
si (client) {
Serial.println("nouveau client");
// une requête http se termine par une ligne vide
booléen currentLineIsBlank =true;
while (client.connected()) {
si (client.disponible()) {
char c =client.read();
Serial.write(c);
// si vous êtes arrivé à la fin de la ligne (reçu un saut de ligne
// caractère) et la ligne est vide, la requête http est terminée,
// vous pouvez donc envoyer une réponse
if (c =='\n' &¤tLineIsBlank) {
// envoyer un en-tête de réponse http standard
client.println("HTTP/1.1 200 OK");
client.println("Type de contenu :text/html");
client.println("Connexion :fermer"); // la connexion sera fermée une fois la réponse terminée
client.println("Actualiser :5"); // rafraichir la page automatiquement toutes les 5 secondes
client.println();
client.println("");
client.println("");

/*
* Envoyer un message au client
*/
client.print(msg);
client.println("
");

client.println("");
Pause;
}
si (c =='\n') {
// vous commencez une nouvelle ligne
currentLineIsBlank =true ;
} else if (c !='\r') {
// vous avez un caractère sur la ligne courante
currentLineIsBlank =false;
}
}
}
// donne au navigateur Web le temps de recevoir les données
retard(1) ;
// ferme la connexion :
client.stop();
Serial.println("client déconnecté");
}
}
Aucun aperçu (téléchargement uniquement).

Schémas

Schéma du panneau solaire, de la résistance et des connexions

Processus de fabrication

  1. Mesure de la température avec RASPBERRY PI
  2. Surveillance du CO2 avec le capteur K30
  3. Communication sourds-aveugles avec 1Sheeld/Arduino
  4. Contrôler l'accepteur de pièces avec Arduino
  5. Arduino avec Bluetooth pour contrôler une LED !
  6. Capteur d'empreintes digitales capacitif avec un Arduino ou ESP8266
  7. Jouer avec Nextion Display
  8. Bras robotique contrôlé par Nunchuk (avec Arduino)
  9. Solar Tracker V2.0