Station de mesure de la vitesse et de la direction du vent

Une station météorologique ordinaire de marque ou maison mesure deux températures-humidité (dans une pièce et dans la rue), la pression atmosphérique et dispose en outre d'une horloge avec un calendrier. Cependant, une vraie station météorologique a bien plus - un capteur de rayonnement solaire, un pluviomètre et tout ce qui, en général, n'est requis que pour les besoins professionnels, à une exception près. Un instrument de mesure des paramètres du vent (vitesse et, surtout, direction) est un ajout très utile pour une maison de campagne. De plus, les capteurs de vent de marque sont assez chers même sur Ali Baba, et il est logique de chercher des solutions faites maison.

Je dois dire tout de suite que si je savais à l'avance combien de travail manuel et d'argent dépensé pour les expériences donneraient mon idée, je ne commencerais peut-être pas. Mais la curiosité l'emportait, et les lecteurs de cet article ont une chance d'éviter ces pièges que j'ai dû trébucher.

Pour mesurer la vitesse du vent (anémométrie), il existe des centaines de méthodes dont les principales sont:

- fil chaud,
- mécanique - avec une hélice (plus précisément une hélice ) ou une hélice à cupule horizontale ( anémomètre à cupule classique) .La mesure de la vitesse dans ces cas équivaut à mesurer la vitesse de l'axe sur lequel l'hélice ou l'hélice est montée.
- ainsi que les ultrasons, combinant des mesures de vitesse et de direction.
Pour mesurer moins la direction des méthodes:
- échographie mentionnée;
- girouette mécanique avec suppression électronique de l'angle de rotation. Il existe également de nombreuses façons de mesurer l'angle de rotation: optique, résistif, magnétique, inductif, mécanique. Il est possible, en passant, de simplement attacher une boussole électronique à la girouette - ce sont des méthodes fiables et simples (pour les répétitions à hauteur de genou) pour transmettre des lectures à partir d'un axe tournant de manière aléatoire. Par conséquent, nous choisissons en outre la méthode optique traditionnelle.

Si vous répétez indépendamment l'une de ces méthodes, vous devez garder à l'esprit les exigences de consommation d'énergie minimale et d'exposition 24 heures sur 24 (et peut-être toute l'année?) Au soleil et à la pluie. Le capteur de vent ne peut pas être placé sous le toit à l'ombre - au contraire, il doit être aussi éloigné que possible de tous les facteurs parasites et «ouvert à tous les vents». Un emplacement idéal est l'arête du toit de la maison ou, au pire, une grange ou un belvédère, éloigné des autres bâtiments et des arbres. De telles exigences nécessitent une alimentation autonome et, évidemment, un canal de données sans fil. Ces exigences sont responsables de certains des «cloches et sifflets» de la conception, qui est décrite ci-dessous.

À propos de la consommation d'énergie minimale
Au fait, quelle est la consommation électrique minimale? Sur la base de piles domestiques ordinaires de type AA, la consommation moyenne du circuit ne devrait idéalement pas dépasser 1 à 2 mA. Comptez pour vous-même: la capacité d'un élément alcalin décent de taille AA est d'environ 2,5-3 Ah, c'est-à-dire qu'un circuit avec la consommation indiquée fonctionnera pendant environ 1500-2500 heures, ou 2-3 mois. En principe, c'est aussi un peu, mais relativement acceptable - vous ne pouvez rien faire de moins: faire faillite ou utiliser des batteries qui devront être rechargées plus souvent que de changer les batteries. Pour cette raison, lors de l'élaboration d'un tel schéma, nous sommes obligés d'attraper les miettes: le mode d'économie d'énergie obligatoire, les circuits soigneusement pensés et la séquence d'actions dans le programme. De plus, nous verrons que dans la conception finale, je ne répondais toujours pas aux exigences nécessaires et je devais utiliser la batterie.


Une histoire cognitive sur la façon dont j'ai essayé de reproduire la méthode la plus moderne et la plus avancée - l'échographie, et a échoué, je raconterai une autre fois. Toutes les autres méthodes impliquent une mesure séparée de la vitesse et de la direction, j'ai donc dû clôturer deux capteurs. Ayant étudié théoriquement les anémomètres à fil chaud, je me suis rendu compte que nous ne pourrions pas obtenir un élément sensible prêt à l'emploi d'un niveau amateur (ils sont disponibles sur le marché occidental!), Mais pour l'inventer moi-même - pour m'impliquer dans la R&D régulière avec la perte de temps et d'argent correspondante. C'est pourquoi, après réflexion, j'ai décidé de réaliser une conception unifiée pour les deux capteurs: un anémomètre à godet avec mesure optique de la vitesse de rotation et une girouette avec mesure électronique de l'angle de rotation basée sur un disque de codage (encodeur).

Modèles de capteurs


L'avantage des capteurs mécaniques est qu'aucune R&D n'y est requise, le principe est simple et clair, et la qualité du résultat ne dépend que de la précision de l'exécution d'une conception mûrement réfléchie.

Il semblait donc théoriquement, en pratique, que cela entraînait un tas de travaux mécaniques, dont certains devaient être commandés sur le côté, en raison du manque de machines de tournage et de fraisage à portée de main. Je dois dire tout de suite que je n'ai jamais regretté d'avoir misé dès le début sur une approche capitaliste et de ne pas avoir commencé à faire des constructions en matériaux improvisés.

Pour une girouette et un anémomètre, les pièces suivantes sont nécessaires, qui devaient être commandées auprès d'un tourneur et d'un opérateur de fraiseuse (la quantité et le matériau sont indiqués immédiatement pour les deux capteurs):

image
Les axes, notons-le, sont nécessairement tournés sur un tour: il est pratiquement impossible de faire un axe avec un point exactement au centre sur un genou. Et le placement de la pointe exactement le long de l'axe de rotation est ici un facteur déterminant de succès. De plus, l'axe doit être parfaitement droit, aucun écart n'est autorisé.

Capteur mécanique de direction du vent - girouette électronique


La base de la girouette (ainsi que le capteur de vitesse ci-dessous) est un support en U en duralumin D-16, illustré sur le dessin en haut à gauche. Un morceau de plastique fluoré est pressé dans l'évidement inférieur, dans lequel un évidement étagé est réalisé séquentiellement avec des forets de 2 et 3 mm. Un axe est inséré dans cette cavité avec une extrémité pointue (pour une girouette - en laiton). Par le haut, il passe librement à travers un trou de 8 mm. Au-dessus de ce trou, des vis M2 fixent au support une pièce rectangulaire du même fluoroplastique de 4 mm d'épaisseur de manière à chevaucher le trou. Un trou est réalisé dans le fluoroplastique exactement le long du diamètre de l'axe de 6 mm (situé exactement le long de l'axe général des trous - voir le schéma de montage ci-dessous). Ftoroplast au-dessus et en dessous joue le rôle de paliers lisses.
image
L'axe à la place du frottement contre le photoplastique peut être poli, et la zone de frottement peut être réduite en contrant le trou dans le fluoroplastique. ( Voir à ce sujet ci-dessous UPD du 13/09/18 et 06/05/19 ). Pour la girouette, cela ne joue pas un rôle particulier - une certaine «inhibition» lui est même utile, et pour l'anémomètre, vous devrez essayer de minimiser le frottement et l'inertie.

Parlons maintenant de la suppression de l'angle de rotation. L' encodeur Gray classique avec 16 positions dans notre boîtier ressemble à celui illustré dans la figure:
image
La taille du disque a été choisie sur la base d'une isolation optique fiable des paires émetteur-récepteur les unes des autres. Avec cette configuration, les fentes de 5 mm de large sont également espacées de 5 mm et les paires optiques sont espacées exactement de 10 mm. Les dimensions du support auquel est fixée la girouette ont été calculées précisément sur la base d'un diamètre de disque de 120 mm. Tout cela, bien sûr, peut être réduit (surtout si vous choisissez des LED et des photodétecteurs du plus petit diamètre possible), mais la complexité de fabrication de l'encodeur a été prise en compte: il s'est avéré que les fraiseuses ne prenaient pas un travail aussi délicat, il a donc fallu le couper manuellement avec une lime. Et puis, plus les dimensions sont grandes, plus le résultat est fiable et moins de tracas.

Le schéma d'assemblage ci-dessus montre le montage du disque sur l'axe. Un disque soigneusement centré est fixé avec des vis M2 sur le moyeu caprolon. Le manchon est placé sur l'axe de sorte que le jeu en haut soit minimal (1-2 mm) - de sorte que l'axe en position normale tourne librement, et pendant la révolution, la pointe ne tombe pas de la douille en dessous. Des blocs de photodétecteurs et d'émetteurs sont attachés au support en haut et en bas du disque, plus précisément sur leur conception.

L'ensemble de la structure est placé dans un boîtier plastique (ABS ou polycarbonate) 150 × 150 × 90 mm. Assemblé (sans couvercle et girouette), le capteur de direction est le suivant:

image

Notez que la direction sélectionnée vers le nord est indiquée par une flèche, elle devra être observée lors de l'installation du capteur en place.

En haut de l'axe, la girouette réelle est fixée. Il est réalisé sur la base du même axe en laiton, dans la découpe du côté émoussé dont une tige en laiton est soudée. À l'extrémité pointue, un fil M6 est coupé à une certaine longueur, et une charge ronde de contrepoids, moulée à partir de plomb, est fixée dessus à l'aide d'écrous:

image

La charge est conçue pour que le centre de gravité tombe exactement sur le lieu de fixation (en le déplaçant le long du fil, vous pouvez obtenir un équilibre parfait). La palette est fixée à l'axe à l'aide d'une vis en acier inoxydable M3, qui traverse le trou dans l'axe de la palette et est vissée dans le filetage coupé dans l'axe de rotation (la vis de fixation est visible sur la photo ci-dessus). Pour une orientation précise, le haut de l'axe de rotation a un évidement semi-circulaire dans lequel se trouve l'axe de la girouette.

Capteur de vitesse du vent bricolage - Anémomètre de coupe bricolage


Comme vous l'avez déjà compris, la base du capteur de vitesse à des fins d'unification a été choisie la même que pour la girouette. Mais les exigences de conception ici sont quelque peu différentes: afin de réduire le seuil de démarrage, l'anémomètre doit être aussi léger que possible. Par conséquent, en particulier, son axe est en duralumin, le disque avec des trous (pour mesurer la vitesse) est de diamètre réduit:

image

Si quatre optocoupleurs sont nécessaires pour un codeur Gray à quatre bits, il n'y en a qu'un pour un capteur de vitesse. 16 trous ont été forés sur la circonférence du disque à une distance égale, donc une révolution du disque par seconde équivaut à 16 hertz de la fréquence provenant de l'optocoupleur (plus de trous sont possibles, moins sont possibles - la seule question est l'échelle de conversion d'énergie et d'économie d'énergie pour les émetteurs).

Un capteur fait maison se révélera encore assez rude (le seuil de démarrage n'est pas inférieur à un demi-mètre par seconde), mais il ne peut être réduit que si la conception est radicalement modifiée: par exemple, au lieu d'un plateau tournant à tasse, mettez une hélice. Dans une centrifugeuse à gobelets, la différence dans les forces de résistance à l'écoulement, qui détermine le couple, est relativement faible - elle est obtenue uniquement en raison de la forme différente de la surface rencontrant le flux d'air entrant (par conséquent, la forme des gobelets doit être aussi rationalisée que possible - idéalement, c'est un demi-œuf ou une boule). L'hélice a beaucoup plus de couple, elle peut être rendue beaucoup plus petite et, enfin, la fabrication elle-même est plus simple. Mais l'hélice doit être installée dans le sens du flux d'air - par exemple, en la plaçant à l' extrémité de la même girouette .

La question est: comment transmettre des lectures à partir d'un capteur tournant au hasard autour d'un axe vertical? Je ne pouvais pas le résoudre, et à en juger par le fait que les constructions de coupes professionnelles sont toujours répandues, cela n'est en aucun cas décidé à partir d'un demi-coup de pied (nous ne prenons pas en compte les anémomètres manuels - ils sont orientés manuellement en fonction du débit d'air).

Ma version de l'anémomètre à cupule est réalisée sur la base d'un disque laser. La vue de dessus et de dessous est montrée sur la photo:

image
image

Les tasses sont faites de fonds de bouteilles sous l'eau de bébé Agusha. Le fond est soigneusement coupé, et tous les trois - à la même distance, afin qu'ils aient le même poids, se réchauffent localement au centre (en aucun cas ne chauffez pas le tout - il se déformera de manière irréversible!) Et le dos de la poignée en bois se plie vers l'extérieur pour la rendre plus rationalisée. Vous répéterez - faites le plein de plus grandes bouteilles de cinq ou six pièces, vous pourrez probablement en faire trois plus ou moins la même tasse. Dans les coupelles réalisées, une découpe est réalisée sur le côté et elles sont fixées le long du périmètre du disque à 120 ° les unes par rapport aux autres à l'aide de colle-mastic étanche. Le disque est strictement centré autour de l'axe (je l'ai fait à l'aide d'une rondelle métallique emboîtée) et est monté sur le moyeu caprolon avec des vis M2.

Conception générale et installation de capteurs


Les deux capteurs, comme déjà mentionné, sont placés dans des boîtiers en plastique de 150 × 150 × 90 mm. Le choix du matériau du boîtier doit être abordé avec soin: l'ABS ou le polycarbonate ont une résistance aux intempéries suffisante, mais le polystyrène, le plexiglas et surtout le polyéthylène ne conviendront pas ici (et il sera difficile de les peindre pour se protéger du soleil). S'il n'est pas possible d'acheter une boîte d'entreprise, il est préférable de souder le boîtier à partir d'une feuille de fibre de verre puis de le peindre pour le protéger de la corrosion et lui donner un aspect esthétique.

Un trou de 8-10 mm est fait dans le couvercle exactement au point de sortie de l'axe, dans lequel un cône en plastique découpé dans une buse à partir d'un vaporisateur avec un mastic de construction ou de la colle est collé avec le même mastic adhésif:

image

Pour centrer le cône le long de l'axe, utilisez une pince pour fixer un morceau de bois au bas du couvercle, marquez le centre exact sur celui-ci et allez un peu plus loin avec un foret à plumes de 12 mm, en faisant un évidement annulaire autour du trou. Le cône doit y entrer exactement, après quoi il peut être enduit de colle. Il peut en outre être fixé en position verticale pendant la période de solidification avec la vis et l'écrou M6.

Le capteur de vitesse lui-même recouvre l'axe avec ce cône, comme un parapluie, empêchant l'eau de pénétrer dans le corps. Pour une girouette, il est nécessaire de placer en plus un manchon sur le cône, ce qui permettra de combler l'écart entre l'axe et le cône de l'écoulement direct de l'eau (voir photo de la vue générale des capteurs ci-dessous).

Les fils des optocoupleurs sont acheminés vers un connecteur séparé de type D-SUB (voir photo du capteur de direction ci-dessus). La contrepartie avec le câble est insérée à travers un trou rectangulaire dans la base du boîtier. Le trou est ensuite recouvert d'un couvercle avec une fente pour le câble, qui empêche le connecteur de tomber. Les supports en duralumin sont vissés à la base du boîtier pour une fixation en place. Leur configuration dépend de l'emplacement des capteurs.

Une fois assemblés, les deux capteurs se présentent comme suit:

image

Ici, ils sont montrés déjà installés en place - sur la crête du gazebo. Veuillez noter que les évidements pour les vis de fixation du couvercle sont protégés contre l'eau par des bouchons en caoutchouc brut. Les capteurs sont installés strictement horizontalement au niveau, pour lequel j'ai dû utiliser des revêtements en morceaux de linoléum.

Partie électronique


La station météo dans son ensemble se compose de deux modules: une unité distante (qui sert à la fois des capteurs de vent et prend également des lectures à partir d'un capteur de température-humidité externe) et le module principal avec des écrans. L'unité distante est équipée d'un émetteur sans fil pour envoyer des données installées à l'intérieur (l'antenne dépasse du côté). Le module principal reçoit les données de l'unité distante (le récepteur, pour la commodité de son orientation, est placé sur un câble dans une unité séparée), et prend également des lectures du capteur de température-humidité interne et affiche tout cela sur les écrans. Un composant séparé de l'unité principale est une horloge avec un calendrier qui, pour la commodité de la configuration générale de la station, est desservie par un contrôleur Arduino Mini séparé et possède ses propres écrans.

Module à distance et circuit de mesure des capteurs de vent


En tant qu'émetteurs photo, les LED IR AL-107B ont été sélectionnées. Ces LED vintage, bien sûr, ne sont pas les meilleures de leur catégorie, mais elles ont un boîtier miniature avec un diamètre de 2,4 mm et sont capables de transmettre du courant jusqu'à 600 mA par impulsion. Soit dit en passant, lors des tests, il s'est avéré que l'échantillon de cette LED vers 1980 (dans le cas rouge) a environ deux fois plus d'efficacité (exprimée dans la plage de fonctionnement fiable du photodétecteur) que les copies modernes achetées dans Chip-Dip (elles ont un transparent corps vert jaunâtre). Il est peu probable qu'en 1980 les cristaux soient meilleurs que maintenant, bien que diable ne plaisante pas? Il est possible, cependant, que la matière soit sous différents angles de diffusion dans ces deux conceptions.

Un courant constant d'environ 20 mA (résistance 150 Ohm avec une alimentation de 5 volts) a été passé à travers une LED dans le capteur de vitesse, et un courant pulsé (méandre avec un rapport cyclique de 2) d'environ 65 mA (les mêmes 150 Ohms avec une alimentation de 12 volts) a été passé dans le capteur de direction. Dans ce cas, le courant moyen à travers une LED du capteur de direction est d'environ 33 mA, sur seulement quatre canaux - environ 130 mA.

Comme photodétecteurs, des phototransistors L-32P3C dans un boîtier d'un diamètre de 3 mm ont été choisis. Le signal provient d'un collecteur chargé sur une résistance de 1,5 ou 2 kOhm à partir d'une alimentation de 5 V. Ces paramètres sont sélectionnés de manière à ce qu'à une distance de ~ 20 mm entre le photo-émetteur et le récepteur, un signal logique pleine grandeur à des niveaux de 5 volts arrive immédiatement à l'entrée sans amplification supplémentaire . Les courants qui apparaissent ici peuvent vous sembler disproportionnellement importants, en fonction de la consommation minimale d'énergie indiquée ci-dessus, mais comme vous le verrez, ils apparaissent dans chaque cycle de mesure pendant un maximum de plusieurs millisecondes afin que la consommation totale reste faible.

La base de montage des récepteurs et des émetteurs était les segments du canal de câble (visible sur la photo des capteurs ci-dessus), coupés de manière à former des «oreilles» pour le montage sur le support à la base. Pour chacun de ces déchets, une plaque en plastique a été collée sur le couvercle de verrouillage de l'intérieur, d'une largeur égale à la largeur du canal.Les LED et les phototransistors étaient fixés à la bonne distance dans les trous percés dans cette plaque de sorte que les fils se trouvaient à l'intérieur du canal, et seuls les renflements à l'extrémité des coquilles dépassaient vers l'extérieur. Les conclusions sont soudées conformément au schéma (voir ci-dessous), les conclusions externes sont faites par des morceaux de fil flexible multicolore. Les résistances pour les émetteurs du capteur de direction sont également situées à l'intérieur du canal, une conclusion générale en est tirée. Après le dessoudage, le couvercle s'enclenche, toutes les fentes sont scellées avec de la pâte à modeler et un ruban adhésif supplémentaire, qui ferme également le trou sur le côté opposé aux bornes, et toute la structure est remplie d'époxy. Les conclusions externes, comme on peut le voir sur la photo des capteurs, sont affichées sur le bornier monté à l'arrière du support.

Schéma du circuitL'unité de traitement des capteurs de vent ressemble à ceci:

image

À propos de l'origine de la puissance 12-14 volts, voir ci-dessous. En plus des composants indiqués sur le schéma, l'unité distante contient un capteur de température-humidité, qui n'est pas représenté sur le schéma. Le diviseur de tension connecté à la borne A0 du contrôleur est conçu pour contrôler la tension de l'alimentation pour un remplacement rapide. La LED connectée à la borne traditionnelle 13 (borne 19 du boîtier DIP) est super brillante, pour sa lueur normale et non éblouissante, suffisamment de courant dans une fraction de milliampère est suffisant, ce qui est fourni par une résistance inhabituellement élevée de 33 kOhm.

Le schéma utilise un contrôleur Atmega328 «nu» dans un boîtier DIP, programmé via Uno et monté sur un socket. De tels contrôleurs avec un chargeur Arduino déjà enregistré sont vendus, par exemple, en Chip-Dip (ou vous pouvez enregistrer le chargeur vous-même ). Un tel contrôleur est commodément programmé dans un environnement familier, mais, dépourvu de composants sur la carte, il est, d'une part, plus économique, et d'autre part, il prend moins de place. Un mode d'économie d'énergie à part entière pourrait être obtenu en se débarrassant également du chargeur de démarrage (et en peignant généralement tout le code dans l'assembleur :), mais ici, il n'est pas très pertinent et la programmation est inutilement compliquée.

Dans le diagramme, des rectangles gris sont encerclés autour de composants liés séparément aux canaux de vitesse et de direction. Considérez le fonctionnement du circuit dans son ensemble.

Le fonctionnement du contrôleur dans son ensemble est contrôlé par le temporisateur de surveillance WDT, qui est activé en mode d'appel d'interruption. WDT sort le contrôleur du mode veille à intervalles définis. Si le temporisateur redémarre dans l'interruption appelée, il ne redémarre pas de zéro, toutes les variables globales restent à leurs valeurs. Cela vous permet d'accumuler des données de l'éveil à l'éveil et, à un moment donné, de les traiter - par exemple, de faire la moyenne.

Au début du programme, les déclarations de bibliothèques et de variables globales suivantes ont été faites (afin de ne pas encombrer le texte des exemples déjà détaillés, tout ce qui concerne le capteur de température-humidité a été publié ici):

#include <VirtualWire.h> #include <avr/wdt.h> #include <avr/sleep.h> . . . . . #define ledPin 13 //  (PB5  19 ATmega) #define IR_Pin 10 //  IRLU (PB2  16 Atmega) #define in_3p 9 //   3 #define in_2p 8 //   2 #define in_1p 7 //   1 #define in_0p 6 //   0 #define IR_PINF 5 //(PD5,11)   -  #define IN_PINF 4 //(PD4,6)    volatile unsigned long ttime = 0; //   float ff[4]; //      char msg[25]; //  byte count=0;// int batt[4]; //   byte wDir[4]; //   byte wind_Gray=0; //    

Les procédures suivantes sont utilisées pour lancer le mode veille et le WDT (réveil toutes les 4 s):

 //      void system_sleep() { ADCSRA &= ~(1 << ADEN); //. cbi(ADCSRA,ADEN);   set_sleep_mode(SLEEP_MODE_PWR_DOWN); //   sleep_mode(); //   sleep_disable(); //      watchdog ADCSRA |= (1 << ADEN); /. sbi(ADCSRA,ADEN);   } //**************************************************************** // ii: 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms // 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec void setup_watchdog(int ii) { byte bb; if (ii > 9 ) ii=9; bb=ii & 7; if (ii > 7) bb|= (1<<5); // bb -   bb|= (1<<WDCE); MCUSR &= ~(1<<WDRF); //   WDTCSR |= (1<<WDCE) | (1<<WDE); //      WDTCSR = bb; WDTCSR |= (1<<WDIE); // WDT } //**************************************************************** //     ISR(WDT_vect) { wdt_reset(); } 

Le capteur de vitesse donne la fréquence d'interruption du canal optique, l'ordre de grandeur est de quelques dizaines de hertz. La mesure de cette valeur est plus économique et plus rapide après un certain temps (c'était le sujet de la publication de l'auteur " Evaluation des méthodes de mesure des basses fréquences sur l'Arduino "). Ici, la méthode est sélectionnée via la fonction pulseInLong () modifiée, qui ne lie pas la mesure à des sorties de contrôleur spécifiques (le texte de la fonction periodInLong () se trouve dans la publication).

Dans la fonction setup (), les directions de sortie sont déclarées, la bibliothèque d'émetteurs 433 MHz et le temporisateur du chien de garde sont initialisés (la ligne pour IN_PINF est fondamentalement superflue et insérée pour la mémoire):

 void setup() { pinMode(IR_PINF, OUTPUT); //  pinMode(IN_PINF, INPUT); //     pinMode(13, OUTPUT); // vw_setup(1200); //   VirtualWire vw_set_tx_pin(2); //D2, PD2(4)   VirtualWire // Serial.begin(9600); // Serial-     setup_watchdog(8); //WDT  4 c wdt_reset(); } 

Enfin, dans le cycle principal du programme, nous commençons chaque fois que nous nous réveillons (toutes les 4 secondes) nous lisons la tension et calculons la fréquence du capteur de vitesse du vent:

 void loop() { wdt_reset(); //  digitalWrite(ledPin, HIGH); //    batt[count]=analogRead(0); //      /*===  ==== */ digitalWrite(IR_PINF, HIGH); // -   float f=0; //   ttime=periodInLong(IN_PINF, LOW, 250000); // 0,25  // Serial.println(ttime); //    if (ttime!=0) {//    f = 1000000/float(ttime);} //      digitalWrite(IR_PINF, LOW); // - ff[count]=f; //     . . . . . 

Le temps de gravure de la LED IR (consommant, je me souviens, 20 mA) ici, comme vous le voyez, sera maximum en l'absence de rotation du disque du capteur et dans cette condition sera d'environ 0,25 seconde. La fréquence minimale mesurée sera donc de 4 Hz (un quart de tour de disque par seconde avec 16 trous). Comme cela s'est avéré lors de l'étalonnage du capteur (voir ci-dessous), cela correspond à environ 0,2 m / s de vitesse du vent. Nous soulignons qu'il s'agit de la plus petite valeur mesurable de la vitesse du vent, mais pas une résolution et pas un seuil de démarrage (qui s'avérera être beaucoup plus élevé). S'il y a une fréquence (c'est-à-dire lorsque le capteur tourne), le temps de mesure (et, par conséquent, le temps de gravure des LED, c'est-à-dire la consommation de courant) sera proportionnellement réduit et la résolution augmentera.

Les procédures suivantes sont effectuées tous les quatre réveils (c'est-à-dire toutes les 16 secondes). La valeur de la fréquence du capteur de vitesse à partir des quatre valeurs accumulées que nous transmettons n'est pas moyenne, mais maximale - comme l'expérience l'a montré, il s'agit d'une valeur plus informative. Pour plus de commodité et d'uniformité, chacune des valeurs, quel que soit son type, est convertie avant la transmission en un entier positif de 4 décimales. La variable de comptage est surveillée par la variable de comptage:

 // 16        //  4- : if (count==3){ f=0; //  for (byte i=0; i<4; i++) if (f<ff[i]) f=ff[i]; //    int fi=(int(f*10)+1000); //  4 .    int volt=0; //  for (byte i=0; i<4; i++) volt=volt+batt[i]; volt=volt/4+100; //   100  = 3 . volt=volt*10; // 4 .  . . . . . 

Vient ensuite la définition de la direction du code Gray. Ici, pour réduire la consommation, au lieu de constamment sur les LED IR, une fréquence de 5 kHz est fournie aux quatre canaux simultanément via un transistor à effet de champ clé en utilisant la fonction tone (). La présence d'une fréquence à chacune des décharges (sorties in_0p - in_3p) est détectée à l'aide d'une méthode similaire à l'anti-rebond lors de la lecture des lectures d'un bouton pressé. Tout d'abord, dans le cycle, nous attendons de voir s'il y a un niveau élevé sur la sortie, puis vérifions-le après 100 μs. 100 μs est une demi-période d'une fréquence de 5 kHz, c'est-à-dire que s'il y a une fréquence au moins à partir de la deuxième fois, nous retomberons à un niveau élevé (juste au cas où, répétez quatre fois) et cela signifie qu'elle est définitivement là. Nous répétons cette procédure pour chacun des quatre bits de code:

 /* ===== Wind Gray ==== */ //: tone(IR_Pin,5000);// 5    boolean yes = false; byte i=0; while(!yes){ // 3 i++; boolean state1 = (digitalRead(in_3p)&HIGH); delayMicroseconds(100); //   100  yes=(state1 & !digitalRead(in_3p)); if (i>4) break; //   } if (yes) wDir[3]=1; else wDir[3]=0; yes = false; i=0; while(!yes){ // 2 i++; boolean state1 = (digitalRead(in_2p)&HIGH); delayMicroseconds(100); //   100  yes=(state1 & !digitalRead(in_2p)); if (i>4) break; //   } if (yes) wDir[2]=1; else wDir[2]=0; yes = false; i=0; while(!yes){ // 1 i++; boolean state1 = (digitalRead(in_1p)&HIGH); delayMicroseconds(100); //   100  yes=(state1 & !digitalRead(in_1p)); if (i>4) break; //   } if (yes) wDir[1]=1; else wDir[1]=0; yes = false; i=0; while(!yes){ // 0 i++; boolean state1 = (digitalRead(in_0p)&HIGH); delayMicroseconds(100); //   100  yes=(state1 & !digitalRead(in_0p)); if (i>4) break; //   } if (yes) wDir[0]=1; else wDir[0]=0; noTone(IR_Pin); //  //     : wind_Gray=wDir[0]+wDir[1]*2+wDir[2]*4+wDir[3]*8; //   .  int wind_G=wind_Gray*10+1000; //  4- .  . . . . . 

La durée maximale d'une procédure sera en l'absence de fréquence au niveau du récepteur et égale à 4 × 100 = 400 microsecondes. Le temps de gravure maximum de 4 LED de direction sera quand aucun récepteur n'est allumé, c'est-à-dire 4 × 400 = 1,6 millisecondes. Par ailleurs, l'algorithme fonctionnera exactement de la même manière, si au lieu d'une fréquence dont la période est un multiple de 100 μs, il est simple d'appliquer un niveau élevé constant aux LED. S'il y a un méandre au lieu d'un niveau constant, nous économisons simplement la nourriture de moitié. Nous pouvons encore économiser si nous démarrons chaque LED IR via une ligne distincte (respectivement, via une sortie distincte du contrôleur avec son propre transistor à clé), mais en même temps le circuit, le câblage et le contrôle sont compliqués, et le courant est de 130 mA pendant 2 ms toutes les 16 secondes - ça, tu vois, un peu.

Enfin, le transfert de données sans fil . Pour transférer les données du site d'installation du capteur vers le tableau de bord de la station météo, la méthode la plus simple, la moins chère et la plus fiable a été choisie: une paire émetteur / récepteur à une fréquence de 433 MHz . Je conviens que la méthode n'est pas la plus pratique (en raison du fait que les appareils sont conçus pour transmettre des séquences de bits, pas des octets entiers, vous devez affiner votre esprit sur la conversion des données entre les formats nécessaires), et je suis sûr que beaucoup de gens voudront discuter avec moi en termes de fiabilité. La réponse à la dernière objection est simple: «vous ne savez tout simplement pas comment les cuisiner!

Le secret est qu'il reste généralement dans les coulisses de diverses descriptions d'échanges de données sur le canal 433 MHz: ces appareils étant purement analogiques, l'alimentation du récepteur doit être très bien nettoyée de toute pulsation étrangère. En aucun cas, vous ne devez alimenter le récepteur à partir du stabilisateur Arduino 5 volts interne! L'installation d'un stabilisateur basse puissance séparé pour le récepteur (LM2931, LM2950 ou similaire) directement à proximité de ses bornes, avec les circuits de filtrage corrects à l'entrée et à la sortie, augmente radicalement la plage de transmission et la fiabilité.

Dans ce cas, l'émetteur fonctionnait directement à partir de la tension de la batterie de 12 V, le récepteur et l'émetteur étaient équipés d'antennes maison standard sous la forme d'un morceau de fil de 17 cm de long (je rappelle que le fil d'antenne ne convient qu'à un seul cœur, et il est nécessaire de placer les antennes dans un espace parallèle les uns aux autres.) Un paquet d'informations de 24 octets (tenant compte de l'humidité et de la température) sans aucun problème a été transmis en toute confiance à une vitesse de 1200 bits / s en diagonale à travers une parcelle de jardin de 15 acres (environ 40 à 50 mètres), puis à travers trois journaux des murs à l'intérieur de la pièce (dans lesquels, par exemple, un signal cellulaire est reçu très difficilement et pas partout). Conditions pratiquement inaccessibles pour toute méthode standard à 2,4 GHz (comme Bluetooth, Zig-Bee et même le Wi-Fi amateur), malgré le fait que la consommation de l'émetteur ici est misérable de 8 mA et uniquement au moment de la transmission réelle, le reste du temps que l'émetteur consomme centimes. L'émetteur est placé structurellement à l'intérieur de l'unité distante, l'antenne dépasse horizontalement du côté.

Nous combinons toutes les données dans un seul paquet (dans une station réelle, la température et l'humidité y seront ajoutées), constituées de parties uniformes de 4 octets et précédées de la signature «DAT», l'envoyons à l'émetteur et terminons tous les cycles:

 /*=====Transmitter=====*/ String strMsg="DAT"; // -  strMsg+=volt; //  4  strMsg+=wind_G; // wind 4  strMsg+=fi; //  4  strMsg.toCharArray(msg,16); //    // Serial.println(msg); //  vw_send((uint8_t *)msg, strlen(msg)); //   vw_wait_tx(); //    - ! delay(50); //+      count=0; //  }//end count==3 else count++; digitalWrite(ledPin, LOW); //   system_sleep(); // —   } //end loop 

La taille du paquet peut être réduite si vous refusez l'exigence de présenter chacune des valeurs de différents types sous la forme d'un code uniforme à 4 octets (par exemple, pour le code Gray, bien sûr, un octet suffit). Mais pour des raisons d'universalisation, j'ai tout laissé tel quel.

Caractéristiques nutritionnelles et de conception de l'unité distante . La consommation de l'unité distante est calculée de cette manière:

- 20 mA (émetteur) + ~ 20 mA (contrôleur avec circuits auxiliaires) pendant environ 0,25 s toutes les quatre secondes - une moyenne de 40/16 = 2,5 mA;
- 130 mA (émetteurs) + ~ 20 mA (contrôleur avec circuits auxiliaires) pendant environ 2 ms toutes les 16 secondes - une moyenne de 150/16/50 ≈ 0,2 mA;

Après avoir calculé sur ce calcul la consommation du contrôleur lors de la prise de données du capteur de température-humidité et lorsque le transmetteur fonctionne, nous pouvons en toute sécurité ramener la consommation moyenne à 4 mA (à un pic d'environ 150 mA, attention!). Les piles (qui, incidemment, nécessiteront jusqu'à 8 pièces pour fournir à l'émetteur une tension maximale!) Devront être changées trop souvent, donc l'idée était d'alimenter l'unité distante à partir de piles 12 volts pour un tournevis - je n'en avais que deux supplémentaires. Leur capacité est encore inférieure au nombre correspondant de piles AA - seulement 1,3 A • heures, mais personne ne prend la peine de les changer à tout moment, en tenant une seconde chargée prête. Avec la consommation indiquée de 4 mA, la capacité de 1300 mA • heures suffit pour environ deux semaines, ce qui n'est pas trop gênant.

Notez que la tension d'une batterie fraîchement chargée peut aller jusqu'à 14 volts. Un stabilisateur d'entrée de 12 volts a été installé dans ce cas - afin d'éviter une surtension de l'alimentation de l'émetteur et de ne pas surcharger le stabilisateur principal de cinq volts.

L'unité portable dans un boîtier en plastique approprié est située sous le toit, un câble d'alimentation de la batterie et des connexions aux capteurs de vent y sont connectés sur les connecteurs. La principale difficulté est que le circuit s'est avéré extrêmement sensible à l'humidité de l'air: par temps de pluie, après quelques heures, l'émetteur commence à échouer, les mesures de fréquence montrent un désordre complet et les mesures de tension de la batterie indiquent «météo sur Mars».

Par conséquent, après avoir débogué les algorithmes et vérifié toutes les connexions, le boîtier doit être soigneusement scellé. Tous les connecteurs à l'entrée du boîtier sont scellés avec du mastic, la même chose s'applique à toutes les têtes de vis qui sortent, à la sortie de l'antenne et au câble d'alimentation. Les joints du corps sont enduits de pâte à modeler (en tenant compte du fait qu'ils devront être séparés), et en outre collés sur le dessus avec des bandes de ruban de plomberie. Il est agréable de renforcer en outre doucement les connecteurs utilisés à l'intérieur avec un époxy: par exemple, le DB-15 montré sur le schéma du module à distance n'est pas lui-même étanche, et de l'air humide s'échappera lentement entre le cadre métallique et la base en plastique.

Mais toutes ces mesures en elles-mêmes ne donneront qu'un effet à court terme - même s'il n'y a pas d'aspiration d'air froid et humide, alors l'air sec de la pièce se transforme facilement en air humide lorsque la température à l'extérieur du boîtier baisse (rappelez-vous le phénomène appelé le «point de rosée»).

Pour éviter cela, il est nécessaire de laisser une cartouche ou un sac avec un dessicant - gel de silice à l'intérieur du boîtier (les sacs avec celui-ci sont parfois placés dans des boîtes avec des chaussures ou dans certains emballages avec des appareils électroniques). Si le gel de silice d'origine inconnue est stocké depuis longtemps, il doit être calciné avant utilisation dans un four électrique à 140-150 degrés pendant plusieurs heures. Si le boîtier est correctement scellé, le dessiccateur devra être remplacé plus souvent qu'au début de chaque saison estivale.

Module principal


Dans le module principal, toutes les valeurs sont acceptées, déchiffrées, si nécessaire, converties conformément aux équations d'étalonnage et affichées.

Le récepteur est placé à l'extérieur du module principal de la station et placé dans une petite boîte avec des oreilles pour le montage. L'antenne est sortie à travers une ouverture dans le couvercle, toutes les ouvertures du boîtier sont scellées avec du caoutchouc brut. Les contacts du récepteur sont connectés à un connecteur domestique très fiable de type RS-4, côté récepteur, il est connecté via un morceau de câble AV à double blindage:

image

Un signal est capté le long de l'un des noyaux de câble, et de l'autre, l'alimentation est fournie sous forme de 9 volts bruts à partir de l'adaptateur d'alimentation du module. Le stabilisateur type LM-2950-5.0 avec condensateurs de filtrage est installé dans une boîte avec le récepteur sur une écharpe séparée.

Des expériences ont été menées pour augmenter la longueur du câble (juste au cas où cela ne fonctionnerait pas soudainement à travers le mur?), Dans lequel il s'est avéré que rien ne change dans une longueur allant jusqu'à 6 mètres.

Il n'y a que quatre écrans OLED: deux données météorologiques de service jaunes, deux horloges vertes et un calendrier. Leur placement est montré sur la photo:

image

Veuillez noter que dans chaque groupe, l'un des affichages est du texte, le second est graphique, avec des polices créées artificiellement sous la forme d'images de glyphes. Ici, nous ne nous attarderons pas sur la question de l'affichage des informations sur les écrans afin de ne pas gonfler le texte déjà étendu de l'article et des exemples: en raison de la présence d'images de glyphes qui doivent être affichées individuellement (souvent en listant simplement les options en utilisant l'opérateur de casse), les programmes de sortie peuvent être très volumineux. Pour plus d'informations sur la façon de gérer ces affichages, consultez la publication de l'auteur, « Mode graphique et texte des affichages Winstar », qui comprend un exemple d'affichage pour la sortie des données de vent.

Schéma du circuit. L'horloge et ses affichages sont entretenus par un contrôleur Arduino Mini séparé pour faciliter la configuration et nous ne les démonterons plus ici. Le schéma de connexion des composants à l'Arduino Nano, qui contrôle la réception et la sortie des données météorologiques, est le suivant:

image

Ici, contrairement au module distant, la connexion des capteurs météorologiques - un baromètre et un capteur de température-humidité interne est représentée. Faites attention au câblage d'alimentation - les écrans sont alimentés par un stabilisateur 5 V séparé de type LM1085. Il est naturel d'alimenter les affichages d'horloge à partir de celui-ci, mais dans ce cas, le contrôleur d'horloge doit également être alimenté par la même tension, et via la sortie 5 V, pas Vin (pour Mini Pro, ce dernier est appelé RAW). Si vous alimentez le contrôleur de la montre de la même manière que le Nano - 9 volts via la broche RAW, son stabilisateur interne entrera en conflit avec les 5 volts externes et, bien sûr, le plus fort gagnera dans ce combat, c'est-à-dire le LM1085 et la Mini restera complètement sans alimentation. De plus, pour éviter toutes sortes de problèmes, avant de programmer le Nano et surtout le Mini (c'est-à-dire avant de connecter le câble USB), l'adaptateur externe doit être déconnecté.

Sur le stabilisateur LM1085, lorsque les quatre écrans sont connectés, la puissance sera allouée d'environ un watt, il doit donc être installé sur un petit radiateur à environ 5-10 cm2 d'un coin en aluminium ou en cuivre.

Réception et traitement des données. Ici, je reproduis et commente uniquement des fragments du programme liés aux données de vent, quelques mots sur d'autres capteurs ci-dessous.

Pour recevoir un message sur un canal 433 MHz, la méthode standard décrite dans de nombreuses sources est applicable. Nous connectons la bibliothèque et déclarons les variables:

 #include <VirtualWire.h> . . . . . int volt; //      float batt; //  —   byte wDir; //    uint16_t t_time = 0; //   char str[5]; //   uint8_t buf[VW_MAX_MESSAGE_LEN]; //    uint8_t buflen = VW_MAX_MESSAGE_LEN; // max    . . . . . 

Une particularité est liée à la taille du buffer buflen: déclarer sa valeur (VW_MAX_MESSAGE_LEN) une fois au début du programme ne suffit pas. Comme cette variable apparaît par référence dans la fonction de réception (voir ci-dessous), la taille de message par défaut doit être mise à jour à chaque cycle. Sinon, en raison de la réception de messages corrompus, la valeur buflen sera raccourcie à chaque fois jusqu'à ce que vous commenciez à obtenir toutes sortes de bêtises au lieu de données. Dans les exemples, ces deux variables sont généralement déclarées localement dans le cycle loop (), car la taille de la mémoire tampon est mise à jour automatiquement, et ici nous allons simplement répéter l'affectation de la valeur souhaitée au début de chaque cycle.

Dans la procédure de configuration, définissez les paramètres suivants:

 void setup() { delay (500); //    pinMode(16,INPUT_PULLUP); //   vw_setup(1200); //   VirtualWire vw_set_rx_pin(17); //A3   VirtualWire . . . . . 

Avant de prendre quoi que ce soit, l'intervalle de temps t_time écoulé depuis la dernière réception est vérifié. S'il a dépassé les limites raisonnables (par exemple, 48 secondes - trois fois le temps de nouvelle tentative des messages de l'unité externe), cela est perçu comme une perte du capteur et est en quelque sorte affiché à l'écran:

 void loop() { vw_rx_start(); //   buflen = VW_MAX_MESSAGE_LEN; //     if ((int(millis()) - t_time) > 48000) // t_time    48  { <   > }//end    if (vw_have_message()) { //  if (vw_get_message(buf, &buflen)) //    { vw_rx_stop(); //    t_time = millis(); // t_time for (byte i=0;i<3;i++) //     str[i]= buf[i]; str[3]='\0'; if((str[0]=='D')&&(str[1]=='A')&&(str[2]=='T')) { //  // : for (byte i=3;i<7;i++) //     str[i-11]= buf[i]; //     volt=atoi(str); //    volt=(volt/10)-100; //   4-  batt=float(volt)/55.5; //       //      for (byte i=7;i<11;i++) //     str[i-15]= buf[i]; //     int w_Dir=atoi(str); //    w_Dir=(w_Dir-1000)/10; //    wDir=lowByte(w_Dir); //  -   <      case> . . . . . 

Coefficient 55,5 - conversion de la valeur du code ADC en une tension réelle, sa valeur dépend de la tension de référence et des valeurs des résistances du diviseur.

Soit dit en passant, le code Gray a une caractéristique: l'ordre des bits n'y est pas important, le code enregistre toutes ses propriétés lors de leur réarrangement. Et puisque lors du décryptage, nous considérons toujours chaque cas séparément, les bits peuvent être visualisés dans n'importe quel ordre et même confus lorsqu'ils sont connectés. C’est une autre affaire si vous voulez trier cette affaire d’une manière ou d’une autre - par exemple, créez un tableau de valeurs de direction ("s", "ssz", "sz", "ssz", "z", etc.), et au lieu de la considération individuelle chaque option pour extraire les désignations par numéro dans ce tableau. Il faudrait ensuite convertir le code Gray en un binaire ordonné, et l'ordre des bits jouerait un rôle important.

Et enfin, nous extrayons la valeur de vitesse et fermons tous les opérateurs:

 . . . . . for (byte i=19;i<23;i++) //     str[i-19]= buf[i]; //     int wFrq=atoi(str); //    wFrq = (wFrq-1000)/10; //   4-  wFrq=10+0.5*wFrq;//      <    > }//end if str=DAT }//end vw_get_message } //end vw_have_message(); . . . . . 

Ici 10 + 0,5 * wFrq est l'équation de jauge. 10 dm / s (soit 1,0 mètre par seconde) est le seuil de démarrage et 0,5 est le coefficient de conversion de la fréquence en vitesse (en dm / s). Avec une valeur nulle de la fréquence d'entrée, cette équation donne 10 dm / s, il faut donc prendre soin séparément pour qu'elle ne soit pas 1 m / s, mais une valeur nulle. Vous pouvez calibrer le capteur de vitesse à l'aide de l'un des anémomètres portables et des ventilateurs de bureau les moins chers. N'essayez pas de déterminer expérimentalement le seuil de départ - il sera beaucoup plus précis si deux ou trois points de la valeur directe d'étalonnage de la vitesse V en fonction de la fréquence F sont notés: V = V + K × F à différents débits, puis le seuil de départ est déterminé automatiquement comme la valeur de V (ordonnée du point intersection de cette ligne avec l’axe des vitesses).

Avant de fermer la boucle principale, vous devez faire encore une chose. Nous avons la tension de la batterie, mais vous n'avez pas besoin de l'afficher tout le temps - prenez simplement de la place. Pour ce faire, nous avons besoin du bouton Kn1 - en cliquant dessus, nous remplaçons temporairement (jusqu'à la prochaine mise à jour des données) la ligne de température-humidité externe avec la valeur de tension:

 . . . . . if (digitalRead(16)==LOW){ //  <   ,   -> }//  delay(500); }// loop 

J'avais un bouton, comme on peut le voir sur le circuit, avec un contact inverseur, mais rien n'empêche d'installer celui habituel avec un contact de fermeture, de le connecter à l'alimentation via une résistance. Vous pouvez également ajouter à cela le clignotement des symboles sur l'affichage si la tension de la batterie descend en dessous, par exemple, 10 volts, comme signe qu'il est temps de la changer.

En conclusion sur les capteurs météorologiques. En tant que capteur externe , SHT-75 a été utilisé - le seul capteur amateur que j'ai trouvé qui ne nécessite pas d'étalonnage et affiche les valeurs réelles de la température et de l'humidité directement «hors de la boîte» (d'où son prix élevé).

Une bibliothèque pour le connecter peut être trouvée ici .

Le SHT-75 est conçu assez bêtement: le substrat métallique de la carte conduit très bien la chaleur, il doit donc être complètement retiré à l'extérieur du boîtier. Sinon, la présence d'un seul contrôleur de type ATmega328 avec un régulateur de puissance dans un boîtier fermé suffit pour chauffer le capteur à travers le substrat de quelques degrés, même si sa tête est sortie. Mon schéma avec des capteurs de vent, avec ses courants de 20 à 130 mA (même des courants de quelques millisecondes insignifiants) a chauffé le SHT-75 degrés par cinq, il a donc été sorti et installé séparément sur une plaque en plastique dépassant latéralement du boîtier.

Les données du SHT-75 sont prises par le même contrôleur que les données des capteurs de vent et envoyées du module distant dans un seul paquet via un canal sans fil 433 MHz. Pour la transmission, ils sont également préalablement convertis en un format de chaîne de 4 octets.

Pour mesurer la température et l'humidité à l'intérieur de la pièce, le banal DHT-22 a été choisi - puisque la plage y est petite par rapport à la rue, cela ne fait aucune différence quel capteur utiliser (sauf, bien sûr, le DHT-11, qui ne doit en aucun cas être utilisé du tout en ce n'est tout simplement pas fonctionnel). La température du DHT-22 a été corrigée par des mesures avec un thermomètre à mercure (elles coïncidaient complètement avec le SHT-75!), Et l'humidité a été légèrement corrigée par rapport au SHT-75. Les corrections sont entrées immédiatement avant l'affichage.

Soit dit en passant, le DHT-22 doit également être retiré du boîtier avec des écrans - sinon il chauffera inévitablement et s'allongera. Je le fixe sur un support en plastique au bas du boîtier, à une distance de dix millimètres de celui-ci. Cette circonstance, en passant, comme je le soupçonne, est l'une des raisons (sauf pour le manque d'étalonnage individuel) que toutes les stations météorologiques domestiques de marque RST et Oregon mentent sans vergogne dans le témoignage, même en ayant une propagation d'eux-mêmes (un capteur interne avec un externe) de deux à trois degrés et jusqu'à dix pour cent d'humidité.

BaromètreIl ne présente pas de problèmes, car presque tous les produits disponibles dans le commerce sont fabriqués sur la même base - la puce microélectromécanique BMP180 (MEMS) ou ses modifications. Mon expérience personnelle d'essayer d'utiliser une variante plus rare basée sur LPS331AP a été négative: il était plus difficile de trouver une bibliothèque pour elle, et pour couronner le tout, un conflit a été trouvé avec d'autres périphériques sur le bus I2C. Les lectures du baromètre peuvent devoir être ajustées sur le site d'installation - tous les 10-12 mètres au-dessus du niveau de la mer, réduisez la pression de 1 mm Hg. Art. Par conséquent, une certaine valeur devra être soustraite (ou ajoutée) des relevés afin que la pression corresponde aux relevés de la station météorologique officielle de la zone.

Je n'apporte pas tous les programmes des stations météorologiques complètement - ils sont plutôt volumineux et vous ne pourrez toujours pas répéter la construction en tête-à-tête. Si quoi que ce soit, frappez le PM.

UPD du 30/06/17. Puissance installée à partir d'un panneau solaire. Kit d'ici: contrôleur de
panneau solaire

La batterie
Tous ensemble + livraison à Moscou en 2,5 tyr. Cela fonctionne parfaitement.
Une technique intéressante pour calculer la puissance de la batterie solaire et de la batterie, qui est proposée par les consultants de ce site. Exemple de calcul de 3 W de consommation électrique (j'en ai beaucoup moins), je cite:
"3W multiplié par 24h et divisé par 6 = 12Ah c'est la capacité minimale de la batterie
3W multiplié par 24h et divisé par 3h = 24W c'est la puissance minimale de la batterie solaire"
Pas de commentaire.
Dans mon cas, la puissance résultante d'une centrale solaire est dix fois plus élevée que nécessaire dans les pires conditions météorologiques. Par conséquent, dans le contrôleur de capteur, vous ne pouvez pas vous soucier particulièrement des économies d'énergie et appliquer les fréquences nécessaires pour prendre des lectures et des moyennes.

UPD du 13/09/18. Pendant près de deux saisons d'exploitation, les forces et les faiblesses de la station ont été révélées. Faible - tout d'abord, le cycle de mise à jour des lectures de 16 secondes (à partir de quatre séries de mesures), comme il était initialement, est trop long. L'installation d'une batterie solaire avec une batterie tampon nous a permis de ne pas penser aux économies d'énergie et de jouer avec le temps de cycle. En conséquence, le cycle a été réglé sur 8 secondes (quatre mesures en deux secondes).
Grâce aux améliorations mécaniques, un palier de butée solide a été introduit sous la pointe du capteur de vitesse (oui, j'ai été averti de sa nécessité à l'époque, mais je n'ai pas compris comment le faire à l'époque). Après un certain temps, l'axe du capteur a complètement traversé le support en fluoroplastique et le seuil de départ a fortement augmenté (en passant, cela n'a pas affecté la sensibilité de la girouette). Par conséquent, le support a été remplacé par un palier de butée en acier inoxydable, dans lequel un petit évidement a été réalisé avec un foret mince. Je prévois que je devrai alors trouver quelque chose d'autre avec un point qui, comme tout l'axe, est en duralumin. Mais je l'ai reporté jusqu'au moment où le capteur doit encore être refait: le disque laser, pris comme base de conception, est devenu trouble du soleil pendant deux saisons et a commencé à se fissurer.

UPD à partir du 06/05/19.
À propos de l'altération du capteur (la même girouette à gauche). Le capteur de vitesse a dû être refait à la fois en raison de l'axe usé et du disque laser inutilisable. La base de la conception reste la même, mais le nouveau disque laser est peint avec de la peinture en aérosol dorée. La solution pour la pointe de l'axe a été trouvée sous la forme suivante. Un évidement a été percé avec précision dans l'axe dural exactement au centre, et une garniture du haut du robinet chinois de 3 mm a été insérée sur la deuxième colle. La pointe du robinet est un cône bien centré avec un angle d'environ 70 à 80 degrés, poli en plus avec une peau nulle, puis une pâte GOI. Comme base, j'ai utilisé la tête d'une vis M3 en acier inoxydable avec une fente sciée, dans laquelle un petit évidement central est marqué avec un foret conventionnel D = 2 mm. Cette vis a été vissée directement dans l'évidement du fluoroplastique,scié avec un axe plus tôt que l'alignement a été fourni.
Le bout de l'axe a été lubrifié avec de la graisse graphite pour le protéger de la corrosion (car les propriétés inoxydables du robinet me sont inconnues). Après un certain broyage, le seuil de départ a tellement diminué qu'il est devenu impossible de mesurer avec un anémomètre de marque, dans lequel le seuil est d'environ 0,3-0,5 cm / s. Selon des données indirectes (en construisant une ligne droite en deux points), un seuil de 0,3 m / s a ​​été volontairement adopté, bien qu'il soit susceptible d'être légèrement inférieur.

Le principal changement dans les algorithmes de calcul concerne également les capteurs de vent, et j'ai trouvé utile de mettre cela dans un article séparé .

Source: https://habr.com/ru/post/fr404385/


All Articles