Table des matières:

Compteur d'indice Warmte : 11 étapes
Compteur d'indice Warmte : 11 étapes

Vidéo: Compteur d'indice Warmte : 11 étapes

Vidéo: Compteur d'indice Warmte : 11 étapes
Vidéo: Joscha Bach : Temps, hypothèse de simulation, existence 2024, Novembre
Anonim
Compteur d'indice de chaleur
Compteur d'indice de chaleur

Met deze instructable kun je je eigen warmte index mètre maken.

Een warmte index meter geeft de gevoelstemperatuur aan op base van de omgevingstemperatuur en de luchtvochtigheid.

Deze meter est bedoeld voor binnen maar kan buiten worden gebruikt mits er geen neerslag valt en er een windvrij plekje wordt gebruikt.

Fournitures

- Particle Photon rencontré planche à pain

- Capteur de température (TMP36)

- Afstandssensor voor afstanden tussen 10 en 20 cm.

- Banque d'alimentation

- Support 220 Ohm

- Planche à pain draadjes, 9+

- Téléphone mobile + Ordinateur

- Paardenhaar

- Hout en houtlijm

- Gereedschap: Boormachine/schroevendraaier, zaag en vijl

- Zeep

- 2 potloden - Kourk

- Kartonnen plaatje + wit papier

- Gewichtjes, denk aan kleine loodjes of metalen plaatjes

Optionnel:

- Écran LCD + potentiomètre 10k Ohm + cavaliers mâle/femelle, 12

- Luchtvochtigheidsmeter

- Températuurmètre - Rolmaat

Étape 1: De Photon Instellen

De Photon Instellen
De Photon Instellen
De Photon Instellen
De Photon Instellen

Benodigdheden:- Téléphone mobile

- Photon

- Ordinateur

Téléchargez l'application de particules op je telefoon en maak een account account.

Stop de usb-kabel van de photon in je computer, claim de photon en stel de wifi in.

Dit kan via setup.particle.io.

Étape 2: Paardenhaar

Paardenhaar
Paardenhaar

Benodigdheden:- Paard

Voor het maken van de haar-hydromètre heb je een ontvette paardenhaar nodig van bij voorkeur minimaal 60 cm

De haren kunnen worden afgeknipt, of uit de staart/manen worden getrokken (op eigen risico).

Étape 3: Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje

Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje
Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje
Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje
Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje
Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje
Maak Een Horizontale Opstelling a rencontré Daaraan Een Kastje

Benodigdheden:- Zeep

- Hout + lijm

- Gereedschap

Maak een ombouw waarbij de paardenhaar horizontaal kan worden gespannen en die tegelijkertijd enige bescherming biedt

Ontvet de paardenhaar

Span de haar horizontaal, bij voorkeur minimaal 50 cm. Zorg dat er genoeg haar over is om de hefboom en het gewicht te bevestigen (zie volgende stap)

Étape 4: Maak Een Kastje Voor De Photon En LCD-scherm

Maak Een Kastje Voor De Photon En LCD-scherm
Maak Een Kastje Voor De Photon En LCD-scherm

Benodigdheden:- Hout en houtlijm

- Gereedschap: zaag

Maak een simpele houten bak zonder deksel a rencontré een houten planche die in het midden staat als een diviseur. Op deze plank moet het breadboard a rencontré de photon passen als de bak op zijn zijkant wordt gezet. Daarnaa kan aan de onderkant van de bak een gat worden gemaakt voor het LCD-scherm. Dit gat moet parallel zijn met het plankje dat in de bak is gezet. Als de bak klaar est kan deze op zijn zijkant naast de haar worden gezet aan de kant waar de gewichtjes aan de haar hangen.

Étape 5: Maak Een Hefboom

Maak Een Hefboom
Maak Een Hefboom
Maak Een Hefboom
Maak Een Hefboom

Benodigdheden:- 2 potloden

- Kourk

- Kartonnen plaatje + wit papier

- Gewichtjes

- Gereedschap: vijl en boor

Boor een gat in het kastje en plaats het korte potlood. Het lange potlood dient uitgevijld te worden zodat deze op het korte potlood kan balanceren.

Plak een wit velletje papier onder een plaatje (in dit geval karton) en plaats deze aan het uiteinde van de hefboom.

Verbind de paardenhaar aan de hefboom en balancer deze uit met een gewichtje (zie afbeelding 3 ringen).

Étape 6: Plaats De Afstandmeter Onder Het (kartonnen) Plaatje

Plaats De Afstandmeter Onder Het (kartonnen) Plaatje
Plaats De Afstandmeter Onder Het (kartonnen) Plaatje
Plaats De Afstandmeter Onder Het (kartonnen) Plaatje
Plaats De Afstandmeter Onder Het (kartonnen) Plaatje

Benodigdheden:

- Afstandsensor

- Opzetstukje (optionnel)

- Jeu de draad et de soudure supplémentaires (optionel)

Bij voorkeur met een afstand van minimaal 12 cm bij een relatieve luchtvochtigheid van +- 60%.

Indien nodig op een opzetstukje.

Als de bedrading van de afstandssensor niet de houten bak halen zullen deze eerst verlengd moeten worden.

Étape 7: Codez Schrijven

Benodigdheden: - Compte de particules rencontré par ordinateur

Ga naar build.particle.io et maak een nieuwe app aan. Noem deze bijvoorbeeld HeatIndex.

Onder bibliothèques, zoek LiquidCrystal et import deze in de app.

Dan kan de volgende code gekopieerd worden dans l'application:

Lees de comments goed door als je wilt begrijpen wat elk stukje code precies doet.

Ook als er een problem optreedt is het goed om de comments te raadplegen.

// Inclut les bibliothèques suivantes:#include #include

// Les broches de lecture analogiques pour tous les capteurs de cette version:

int tempSensor = A0; int disSensor = A1;

// Règles de publication:

// Le délai et le nom de l'événement pour la publication. // Délai en millisecondes. int delayTime = 15000; String eventName = "Actual_Temperature";

/////////////////////////////////////////////////

// Code d'affichage à cristaux liquides //////////// ////////////////////////////// ///////////////// // Initialiser l'affichage avec les broches de données LiquidCrystal lcd(D5, D4, D3, D2, D1, D0);

// Configurer les limites pour les valeurs d'indice de chaleur

int prudence = 27; int eCD = 33; danger entier = 40; entier extrême = 52;

// Renvoie un message pour une valeur d'indice de chaleur spécifique.

String message(int hI) { if(hI < attention) { return "Pas d'avertissement. "; } if(hI < eCD) { return « Attention ! »; } if(hI < danger) { return "Extrême prudence !"; } if(hI < extreme) { return "Danger !! "; } return "DANGER EXTRÊME !!"; }

// Le message sur la deuxième ligne de l'affichage.

Chaîne message2 = "T réel: ";

//////////////////////////////////////////////////////

// Code capteur de distance /////////////////////////// //////////////// //////////////////////////////////// // Valeurs brutes minimales et maximales renvoyées par le capteur. int minD = 2105; int maxD = 2754;

// Valeurs brutes réelles renvoyées par le capteur tous les 5 mm.

entier dix = 2754; int dixP = 2691; int onze = 2551; int onzeP = 2499; int douze = 2377; int douzeP = 2276; int treize = 2206; int treizeP = 2198; int quatorze = 2105;

// Renvoie la distance en cm qui appartient à une valeur brute tous les 5 mm.

float getDis(int number) { switch(number){ case 2754: return 10; cas 2691: retour 10,5; cas 2551: retour 11; cas 2499: retour 11.5; cas 2377: retour 12; cas 2276: retour 12,5; cas 2206: retour 13; cas 2198: retour 13,5; cas 2105: retour 14; } }

// Calcule la distance réelle en cm capturée par le capteur de distance.

float calculateDis(int start, float stop, int mesure) { float distance = getDis(start); pas flottant = (arrêt - démarrage)/10; for(int i = 0; i < 5; i++) { if(measurement = (start-step)){ return distance; } début = début - étape; distance = distance + 0,1; } }

// Vérifie les grandes limites entre lesquelles se trouve le capteur de distance.

float distance(int Measurement) { // Si le capteur de distance n'était pas compris entre 10 et 14 cm, // on ne connait pas la distance réelle et on retourne 10. if(measure maxD) { return 10.0; } if(mesure <= treizeP) { return calculateDis(treizeP, quatorze, mesure); } if(mesure <= treize) { return calculateDis(treize, treizeP, mesure); } if(mesure <= douzeP) { return calculateDis(douzeP, treize, mesure); } if(mesure <= douze) { return calculateDis(douze, douzeP, mesure); } if(mesure <= onzeP) { return calculateDis(onzeP, douze, mesure); } if(mesure <= onze) { return calculateDis(onze, onzeP, mesure); } if(mesure <= dixP) { return calculateDis(tenP, onze, mesure); } if(mesure <= dix) { return calculateDis(dix, dixP, mesure); } // Le code ne devrait jamais arriver ici. retour -2; }

///////////////////////////////////////////////////////////////////////////////////////

// Code capteur de température /////////////////////////////////////////// ///////////// /////////////////////////////////// /////////////////////////////////////////////////////////////// / // La tension maximale en mV utilisée pour le capteur de température. flottant maxV = 3300,0;

// La tension de base et la température d'accompagnement que le capteur de température renvoie.

// La tension est en mV. int baseV = 750; int baseT = 25;

// Calcule la température à partir de la valeur mesurée sur la broche analogique.

float calculateTemp (mesure int) { tension flottante = ((maxV/4096)*mesure); float diff = baseV - tension; float temp = baseT - (diff/10); température de retour; }

///////////////////////////////////////////////////

// Calculs d'humidité /////////////////////// //////////////////// ///////////////////////////// // Les variables pour les calculs d'humidité, // proviennent de capteurs d'humidité réels. flottant h15 = 10,0; flottant h30 = 10,5; flotteur h60 = 11,5; flottant h75 = 12,0; flotteur h90 = 12,5; pas flottant H = 0,167;

// Renvoie l'humidité relative pour une plage de distance spécifique.

int calculateHum(float dis, float lowH, float highH, int start) { float diff = dis - lowH; float i1 = diff/stepH; entier i = rond(i1); int sortie = (début + (5*i)); sortie de retour; }

// Renvoie l'humidité relative.

int humidité(float dis) { if (dis <= h30) { return calculateHum(dis, h15, h30, 15); } if (dis <= h60) { return calculateHum(dis, h30, h60, 30); } if (dis <= h75) { return calculateHum(dis, h60, h75, 60); } if (dis <= h90) { return calculateHum(dis, h75, h90, 75); } renvoie 100; }

///////////////////////////////////////////////////

// Formule de l'indice de chaleur /////////////////////////// //////////////// ///////////////////////////////// // Constantes utilisées dans la formule d'indice de chaleur float c1 = -8.78469475556; flottant c2 = 1.61139411; flottant c3 = 2,33854883889; flottant c4 = -0,14611605; flottant c5 = -0,0123008094; flottant c6 = -0,0164248277778; flottant c7 = 0,002211732; flottant c8 = 0,00072546; flottant c9 = -0.000003582;

// La formule de l'indice de chaleur qui prend une température et une humidité relative.

float heatIndex(float t, int h) { return c1 + (c2*t) + (c3*h) + (c4*t*h) + (c5*t*t) + (c6*h*h) + (c7*t*t*h) + (c8*t*h*h) + (c9*t*t*h*h); }

///////////////////////////////////////////////////////////////////////////////

// Autres fonctions/variables ////////////////////////////////////////// ////// ////////////////////////////////////////// ///////////////////////////////// // Renvoie une représentation sous forme de chaîne d'un flottant arrondi à une décimale inférieure. String rOne(float num) { int value = round(num*10); Sortie de chaîne = valeur (chaîne); char end = sortie[strlen(sortie)-1]; int gauche = valeur/10; Début de la chaîne = (chaîne) gauche; retour début + "." + fin; }

//////////////////////////////////////////////////////////////////////////////

/ Tout le code ici doit être exécuté une fois sur le photon avant le démarrage des fonctions de bouclage.

void setup() { // Configure le nombre de colonnes et de lignes de l'écran LCD: lcd.begin(16, 2); }

// Tout le code ici est en boucle et doit contenir des données à récupérer, à affiner et à mettre en ligne.

void loop() { // Récupère la température et l'humidité. float temp = calculateTemp(analogRead(tempSensor)); float dis = distance(analogRead(disSensor)); int hum = humidité(dis); Chaîne humide = (chaîne) bourdonnement; // Calcule l'indice de chaleur. float hI = heatIndex(temp, hum); // Configurez la chaîne de sortie et imprimez tous les messages sur l'écran LCD. Sortie de chaîne = rOne(hI); lcd.setCursor(0, 0); lcd.print(message(rond(hI))); lcd.setCursor(0, 1); lcd.print(message2 + sortie + "C "); sortie = sortie + " " + humide; // Publiez les valeurs de l'indice de chaleur en ligne et attendez avant de recommencer la boucle. Particle.publish(eventName, sortie); delay(delayTime); }

Étape 8: Verbind De Photon

Verbind De Photon
Verbind De Photon
Verbind De Photon
Verbind De Photon
Verbind De Photon
Verbind De Photon
Verbind De Photon
Verbind De Photon

Benodigdheden:

- Photon et planche à pain

- Capteur de température

- Support 220 Ohm

- Afstandssensor

- LCD-scherm et potentiomètre 10k Ohm (optionel)

- Planche à pain Genoeg draadjes, 9+

- Pull draadjes mâle/femelle, 12 (optionel)

Verbindt de 3.3V van de photon met de + rails aan dezelfde kant en verbindt de ground aan de - rails.

Verbindt de 5V van de photon aan de andere kant aan de + rails aan die kant.

Stop de temperatuursensor ergens met genoeg ruimte eromheen in het breadboard.

Verbindt de sortie analogique van de temperatuursensor rencontré A0 van de photon en de sol avec rails de sol.

Zet de weerstand voor de input van de sensor et verbindt de weerstand met de 3.3V rails.

De afstandssensor kan verbonden worden door de input in de 3.3V rails te stoppen, de ground in ground rails and de analog output in A1 van de photon te stoppen.

Als je een LCD-scherm wilt aansluiten werkt dat als volgt:

1. Verbindt de potentiometer aan het breadboard a rencontré 5V en de ground.

2. Verbindt de volgende jumper draadjes aan het LCD-scherm waarbij pin 1 het dichtsbij de rand van het scherm is.

Pin 1, 5 et 16 van de LCD naar masse. Broche 2 et 15 à 5V.

Verbindt de sortie analogique du potentiomètre, de la broche médiane, rencontré la broche 3 de l'écran LCD.

3. Verbindt de volgende photon pins naar LCD pins rencontré jumper draadjes.

Broche D5 à côté de Broche 4

Broche D4 à côté de Broche 6

Broche D3 à côté de Broche 11

Broche D2 à côté de Broche 12

Broche D1 à côté de Broche 13

Broche D0 à côté de Broche 14

Als de photon nu aanstaat en er aan de potentiometer gedraaid wordt moeten er op het LCD-scherm blokjes verschijnen.

Étape 9: Plaats De Photon En Het LCD-Scherm in De Opstelling

Plaats De Photon En Het LCD-Scherm à De Opstelling
Plaats De Photon En Het LCD-Scherm à De Opstelling

Benodigdheden:- Powerbank (optionel)

Nu de photon klaar voor gebruik est kan deze op het plankje in de bak geplaatst worden en het LCD-scherm kan tegen het gat geplakt worden. Nu is het een goed moment om de photon de laten draaien op een powerbank maar dit is natuurlijk niet verplicht.

Étape 10: Kalibreren (optionnel)

Benodigdheden:

- Luchtvochtigheidssensor

- Températuurmètre

- Rolmaat

- Sortie de code voor rauwe waarden van de sensoren die gekalibreerd moeten worden

Als de software niet goed blijkt te werken met de sensoren kan er voor gekozen worden om de sensoren zelf de kalibreren.

De temperatuurmeter kan vrij makkelijk gekalibreerd worden door metingen met een temperatuurmeter te vergelijken met de sensor.

Voor de luchtvochtigheid zal eerst de afstandssensor gekalibreerd moeten worden op afstand met behulp van een rolmaat en daarna zal het pas mogelijk zijn om de luchtvochtigheid goed te meten en te vergelijken met een senschtigmeter

In de bijgeleverde code zitten comments die aangeven waar dit soort kalibratie variabelen staan.

Étape 11: Le compteur d'indice De Warmte est Klaar Voor Gebruik

Veau plezier !

Conseillé: