Eine gewöhnliche Haushaltsmarke oder hausgemachte Wetterstation misst zwei Temperatur-Luftfeuchtigkeit (in einem Raum und auf der Straße), Luftdruck und hat zusätzlich eine Uhr mit einem Kalender. Eine echte Wetterstation bietet jedoch noch viel mehr - einen Sonnenstrahlungssensor, einen Niederschlagsmesser und all das, was im Allgemeinen nur für berufliche Zwecke erforderlich ist, mit einer Ausnahme. Ein Messinstrument für Windparameter (Geschwindigkeit und vor allem Richtung) ist eine sehr nützliche Ergänzung für ein Landhaus. Darüber hinaus sind Marken-Windsensoren selbst bei Ali Baba recht teuer, und es ist sinnvoll, hausgemachte Lösungen zu betrachten.
Ich muss sofort sagen, wenn ich im Voraus wüsste, wie viel manuelle Arbeit und Geld für Experimente meine Idee ausschütten würden, würde ich vielleicht nicht anfangen. Aber die Neugier überwog und die Leser dieses Artikels haben die Chance, die Fallstricke zu vermeiden, über die ich stolpern musste.
Zur
Messung der Windgeschwindigkeit (Anemometrie) gibt es Hunderte von Methoden, von denen die wichtigsten sind:
- Heißdraht,
- mechanisch - mit einem Propeller (genauer gesagt einem
Laufrad ) oder einem horizontalen Becherlaufrad (klassisches
Becheranemometer ). Die Messung der Geschwindigkeit entspricht in diesen Fällen der Messung der Geschwindigkeit der Achse, auf der der Propeller oder das Laufrad montiert ist.
- sowie Ultraschall, der Geschwindigkeits- und Richtungsmessungen kombiniert.
Um
die Richtung der Methoden weniger zu
messen :
- erwähnter Ultraschall;
- mechanische Wetterfahne mit elektronischer Entfernung des Drehwinkels. Es gibt auch viele verschiedene Möglichkeiten, den Drehwinkel zu messen: optisch, resistiv, magnetisch, induktiv, mechanisch. Es ist übrigens möglich, einfach einen elektronischen Kompass an der Wetterfahnenwelle anzubringen - dies sind nur zuverlässige und einfache (für „kniehohe“ Wiederholungen) Methoden zur Übertragung von Messwerten von einer zufällig rotierenden Achse. Daher wählen wir weiter die traditionelle optische Methode.
Wenn Sie eine dieser Methoden unabhängig wiederholen, sollten Sie die Anforderungen eines minimalen Energieverbrauchs und der Exposition gegenüber Sonne und Regen rund um die Uhr (und möglicherweise das ganze Jahr über?) Berücksichtigen. Der Windsensor kann nicht im Schatten unter dem Dach platziert werden - im Gegenteil, er sollte so weit wie möglich von allen Störfaktoren entfernt und „offen für alle Winde“ sein. Eine ideale Platzierung ist der Dachkamm des Hauses oder im schlimmsten Fall eine Scheune oder Laube, die von anderen Gebäuden und Bäumen entfernt ist. Solche Anforderungen erfordern eine autonome Stromversorgung und natürlich einen drahtlosen Datenkanal. Diese Anforderungen sind für einige der "Schnickschnack" des Entwurfs verantwortlich, der unten beschrieben wird.
Über minimalen StromverbrauchWie hoch ist übrigens der minimale Stromverbrauch? Basierend auf normalen AA-Haushaltsbatterien sollte der durchschnittliche Stromkreisverbrauch idealerweise nicht mehr als 1-2 mA betragen. Überzeugen Sie sich selbst: Die Kapazität eines anständigen alkalischen Elements der Größe AA beträgt etwa 2,5 bis 3 Ah, dh ein Stromkreis mit dem angegebenen Verbrauch arbeitet etwa 1500 bis 2500 Stunden oder 2 bis 3 Monate damit. Im Prinzip ist dies auch ein wenig, aber relativ akzeptabel - Sie können nichts weniger tun: entweder bankrott gehen oder Batterien verwenden, die häufiger aufgeladen werden müssen als das Wechseln der Batterien. Aus diesem Grund sind wir bei der Erstellung eines solchen Schemas verpflichtet, alle Krümel zu fangen: den obligatorischen Energiesparmodus, sorgfältig durchdachte Schaltkreise und die Abfolge der Aktionen im Programm. Weiter werden wir sehen, dass ich im endgültigen Design immer noch nicht die notwendigen Anforderungen erfüllt habe und Batteriestrom verbrauchen musste.
Eine kognitive Geschichte darüber, wie ich versucht habe, die modernste und fortschrittlichste der Methoden zu reproduzieren - Ultraschall, und gescheitert ist, werde ich ein andermal erzählen. Alle anderen Methoden beinhalten eine separate Messung von Geschwindigkeit und Richtung, daher musste ich zwei Sensoren umzäunen. Nachdem ich theoretisch Heißdraht-Anemometer studiert hatte, wurde mir klar, dass wir kein fertiges empfindliches Element auf Amateurniveau bekommen können (sie sind auf dem westlichen Markt erhältlich!), Sondern es selbst erfinden können - um uns mit der entsprechenden Zeit- und Geldverschwendung auf regelmäßige Forschung und Entwicklung einzulassen. Nach einiger Überlegung entschied ich mich daher für ein einheitliches Design für beide Sensoren: ein Becheranemometer mit optischer Messung der Drehzahl und eine Wetterfahne mit elektronischer Drehwinkelmessung auf Basis einer Codierscheibe (Encoder).
Sensordesigns
Der Vorteil mechanischer Sensoren besteht darin, dass dort keine Forschung und Entwicklung erforderlich ist, das Prinzip einfach und klar ist und die Qualität des Ergebnisses nur von der Genauigkeit der Ausführung eines sorgfältig durchdachten Entwurfs abhängt.
Theoretisch schien dies in der Praxis zu einer Reihe mechanischer Arbeiten zu führen, von denen einige seitlich bestellt werden mussten, da keine Dreh- und Fräsmaschinen zur Verfügung standen. Ich muss sofort sagen, dass ich es nie bereut habe, dass ich mich von Anfang an auf einen Kapitalansatz verlassen hatte und nicht begonnen habe, Konstruktionen aus improvisierten Materialien herzustellen.
Für eine Wetterfahne und ein Windmesser werden folgende Teile benötigt, die bei einem Dreher und einem Fräsmaschinenbediener bestellt werden mussten (Menge und Material werden für beide Sensoren sofort angegeben):

Wir stellen fest, dass die Achsen notwendigerweise auf einer Drehmaschine gedreht sind: Es ist praktisch unmöglich, eine Achse mit einem Punkt genau in der Mitte eines Knies zu erstellen. Und die Platzierung der Spitze genau entlang der Rotationsachse ist hier ein entscheidender Erfolgsfaktor. Außerdem muss die Achse perfekt gerade sein, Abweichungen sind nicht zulässig.
Mechanischer Windrichtungssensor - elektronische Wetterfahne
Die Basis der Wetterfahne (sowie des Geschwindigkeitssensors unten) ist eine U-förmige Halterung aus D-16-Duraluminium, die in der Zeichnung oben links dargestellt ist. Ein Stück Fluoroplast wird in die untere Aussparung gedrückt, in der nacheinander mit 2- und 3-mm-Bohrern eine abgestufte Aussparung hergestellt wird. In diese Aussparung wird eine Achse mit einem scharfen Ende eingeführt (für eine Wetterfahne - aus Messing). Von oben geht es frei durch ein 8 mm Loch. Über diesem Loch befestigen M2-Schrauben ein rechteckiges Stück desselben 4 mm dicken Fluorkunststoffs an der Halterung, so dass es das Loch überlappt. In den Fluoroplast wird genau entlang des Achsendurchmessers von 6 mm ein Loch gemacht (genau entlang der allgemeinen Achse der Löcher - siehe die Montagezeichnung unten). Ftoroplast oben und unten spielt die Rolle von Gleitlagern.

Die Achse an der Stelle der Reibung gegen den Fotokunststoff kann poliert werden, und die Reibungsfläche kann verringert werden, indem dem Loch im Fluorkunststoff entgegengewirkt wird. (
Siehe zu diesem Thema unten UPD vom 13.09.18 und 05.06.19 ). Für die Wetterfahne spielt dies keine besondere Rolle - eine gewisse „Hemmung“ ist für ihn sogar nützlich, und für den Windmesser müssen Sie versuchen, Reibung und Trägheit zu minimieren.
Nun zum Entfernen des Drehwinkels. Der klassische
graue Encoder mit 16 Positionen in unserem Fall sieht wie in der Abbildung gezeigt aus:

Die Plattengröße wurde auf der Basis einer zuverlässigen optischen Isolation der Emitter-Empfänger-Paare voneinander gewählt. Bei dieser Konfiguration sind die 5 mm breiten Schlitze ebenfalls 5 mm voneinander entfernt, und die optischen Paare sind genau 10 mm voneinander entfernt. Die Abmessungen der Halterung, an der die Wetterfahne befestigt ist, wurden anhand eines Scheibendurchmessers von 120 mm genau berechnet. All dies kann natürlich reduziert werden (insbesondere wenn Sie LEDs und Fotodetektoren mit dem kleinstmöglichen Durchmesser wählen), aber die Komplexität bei der Herstellung des Encoders wurde berücksichtigt: Es stellte sich heraus, dass die Fräsmaschinen keine so heiklen Arbeiten aufnahmen, sodass sie manuell mit einer Feile geschnitten werden mussten. Und je größer die Abmessungen, desto zuverlässiger das Ergebnis und weniger Aufwand.
Die obige Montagezeichnung zeigt die Montage der Scheibe an der Achse. Eine sorgfältig zentrierte Scheibe wird mit M2-Schrauben an der Caprolon-Nabe befestigt. Die Hülse wird so auf die Achse gelegt, dass der Abstand oben minimal ist (1-2 mm) - damit sich die Achse in der normalen Position frei dreht und während einer Umdrehung die Spitze nicht aus der Buchse darunter fällt. Blöcke von Fotodetektoren und Emittern sind an der Halterung oben und unten an der Platte angebracht, insbesondere hinsichtlich ihres Designs.
Die gesamte Struktur befindet sich in einem Kunststoffgehäuse (ABS oder Polycarbonat) von 150 × 150 × 90 mm. Zusammengebaut (ohne Abdeckung und Wetterfahne) ist der Richtungssensor wie folgt:

Beachten Sie, dass die ausgewählte Richtung nach Norden mit einem Pfeil markiert ist. Dies muss bei der Installation des Sensors beachtet werden.
Oben auf der Achse ist die aktuelle Wetterfahne angebracht. Es wird auf der Grundlage derselben Messingachse hergestellt, in deren Schnitt auf der stumpfen Seite ein Messingschaft verlötet ist. Am scharfen Ende wird ein M6-Gewinde auf eine bestimmte Länge geschnitten und eine runde Gegengewichtslast, die aus Blei gegossen wurde, mit Hilfe von Muttern daran befestigt:

Die Last ist so konstruiert, dass der Schwerpunkt genau auf die Befestigungsstelle fällt (wenn Sie ihn entlang des Gewindes bewegen, können Sie ein perfektes Gleichgewicht erreichen). Die Schaufel wird mit einer Edelstahlschraube M3 an der Achse befestigt, die durch das Loch in der Schaufelachse verläuft und in das in die Drehachse geschnittene Gewinde eingeschraubt wird (die Befestigungsschraube ist auf dem Foto oben zu sehen). Zur genauen Ausrichtung hat die Oberseite der Drehachse eine halbkreisförmige Aussparung, in der die Achse der Wetterfahne liegt.
DIY Windgeschwindigkeitssensor - DIY Cup Anemometer
Wie Sie bereits verstanden haben, wurde die Basis für den Geschwindigkeitssensor zum Zwecke der Vereinheitlichung dieselbe gewählt wie für die Wetterfahne. Die Konstruktionsanforderungen sind hier jedoch etwas anders: Um die Startschwelle zu verringern, sollte der Windmesser so leicht wie möglich sein. Daher besteht insbesondere die Achse dafür aus Duraluminium, die Scheibe mit Löchern (zur Geschwindigkeitsmessung) hat einen reduzierten Durchmesser:

Wenn für einen 4-Bit-Gray-Encoder vier Optokoppler erforderlich sind, gibt es nur einen für einen Geschwindigkeitssensor. 16 Löcher wurden in gleichem Abstand um den Umfang der Scheibe gebohrt, sodass eine Umdrehung der Scheibe pro Sekunde 16 Hertz der vom Optokoppler kommenden Frequenz entspricht (mehr Löcher sind möglich, weniger möglich - die einzige Frage ist das Ausmaß der Energieumwandlung und Energieeinsparung für die Emitter).
Ein selbstgebauter Sensor wird sich immer noch als ziemlich rau herausstellen (der Schwellenwert für den Start beträgt nicht weniger als eine halbe Metersekunde pro Sekunde), kann jedoch nur reduziert werden, wenn das Design radikal geändert wird: Setzen Sie beispielsweise anstelle eines Bechertellers einen Propeller ein. Bei einem Becherspinner ist der Unterschied in den Strömungswiderstandskräften, der das Drehmoment bestimmt, relativ gering - er wird allein aufgrund der unterschiedlichen Form der Oberfläche erreicht, die dem einströmenden Luftstrom entspricht (daher sollte die Form der Becher so stromlinienförmig wie möglich sein - idealerweise ist dies ein halbes Ei oder eine Kugel). Der Propeller hat viel mehr Drehmoment, er kann viel kleiner gemacht werden und schließlich ist die Herstellung selbst einfacher. Der Propeller muss jedoch in Richtung des Luftstroms installiert werden - beispielsweise indem er am
Ende derselben Wetterfahne platziert wird .
Die Frage ist: Wie werden Messwerte von einem Sensor übertragen, der sich zufällig um eine vertikale Achse dreht? Ich konnte es nicht lösen und nach der Tatsache zu urteilen, dass professionelle Cup-Konstruktionen immer noch weit verbreitet sind, wird dies keineswegs durch einen halben Tritt entschieden (wir berücksichtigen manuelle Anemometer nicht - sie werden manuell nach dem Luftstrom ausgerichtet).
Meine Version des Becheranemometers basiert auf einer Laserscheibe. Die Ansicht von oben und unten ist auf dem Foto dargestellt:


Tassen bestehen aus Flaschenböden unter dem Agusha-Babywasser. Der Boden wird sorgfältig abgeschnitten, und alle drei - im gleichen Abstand, so dass sie das gleiche Gewicht haben - erwärmen sich lokal in der Mitte (erwärmen Sie das Ganze überhaupt nicht - es verzieht sich irreversibel!) Und die Rückseite des Holzgriffs biegt sich nach außen, um es stromlinienförmiger zu machen. Sie werden es wiederholen - füllen Sie größere Flaschen mit fünf oder sechs Stück ein, wahrscheinlich können Sie drei mehr oder weniger dieselbe Tasse herstellen. Bei den hergestellten Bechern wird ein seitlicher Schnitt vorgenommen, und sie werden mit Hilfe eines wasserfesten Leimversiegelungsmittels entlang des Umfangs der Scheibe in einem Winkel von 120 ° zueinander befestigt. Die Scheibe ist streng um die Achse zentriert (ich habe dies mit Hilfe einer verschachtelten Metallscheibe gemacht) und mit M2-Schrauben an der Caprolon-Nabe montiert.
Allgemeine Konstruktion und Installation von Sensoren
Beide Sensoren sind, wie bereits erwähnt, in Kunststoffgehäusen von 150 × 150 × 90 mm untergebracht. Die Wahl des Gehäusematerials muss sorgfältig getroffen werden: ABS oder Polycarbonat haben eine ausreichende Witterungsbeständigkeit, aber Polystyrol, Plexiglas und insbesondere Polyethylen sind hier nicht geeignet (und es ist schwierig, sie zum Schutz vor der Sonne zu lackieren). Wenn es nicht möglich ist, eine Firmenbox zu kaufen, ist es besser, das Gehäuse aus Folienglas zu löten und es dann zu streichen, um es vor Korrosion zu schützen und ein ästhetisches Aussehen zu verleihen.
Genau am Achsenaustrittspunkt wird ein Loch von 8-10 mm in den Deckel eingebracht, in das ein Kunststoffkegel, der aus einer Düse aus einer Sprühdose mit einem Konstruktionsdichtmittel oder Klebstoff geschnitten wurde, mit demselben Klebstoffdichtmittel geklebt wird:

Um den Kegel entlang der Achse zu zentrieren, befestigen Sie mit einer Klammer ein Stück Holz am unteren Rand der Abdeckung, markieren Sie die genaue Mitte und gehen Sie mit einem 12-mm-Federbohrer etwas tiefer, wobei Sie eine ringförmige Aussparung um das Loch machen. Der Kegel muss genau dort eintreten, danach kann er mit Klebstoff beschichtet werden. Es kann zusätzlich in vertikaler Position für die Erstarrungszeit mit der M6-Schraube und -Mutter befestigt werden.
Der Geschwindigkeitssensor selbst bedeckt die Achse mit diesem Kegel wie ein Regenschirm und verhindert, dass Wasser in den Körper eindringt. Bei einer Wetterfahne muss zusätzlich eine Hülse über dem Kegel platziert werden, um den Spalt zwischen der Achse und dem Kegel durch direkten Wasserfluss zu schließen (siehe Foto der Gesamtansicht der Sensoren unten).
Die Drähte von den Optokopplern werden zu einem separaten D-SUB-Stecker geführt (siehe Foto des Richtungssensors oben). Das Gegenstück mit dem Kabel wird durch ein rechteckiges Loch im Boden des Gehäuses eingeführt. Das Loch wird dann von einer Abdeckung mit einem Schlitz für das Kabel abgedeckt, der verhindert, dass der Stecker herausfällt. Duraluminiumhalterungen werden zur Befestigung an der Basis des Gehäuses angeschraubt. Ihre Konfiguration hängt von der Position der Sensoren ab.
Im zusammengebauten Zustand sehen beide Sensoren wie folgt aus:

Hier werden sie bereits installiert gezeigt - auf dem Kamm des Pavillons. Bitte beachten Sie, dass die Aussparungen für die Schrauben, mit denen die Abdeckung befestigt ist, durch Rohgummistopfen gegen Wasser geschützt sind. Die Sensoren sind streng horizontal in der Ebene installiert, für die ich Auskleidungen aus Linoleumstücken verwenden musste.
Elektronisches Teil
Die Wetterstation als Ganzes besteht aus zwei Modulen: einer Ferneinheit (die beide Windsensoren bedient und auch Messwerte von einem externen Temperatur-Feuchtigkeits-Sensor erfasst) und dem Hauptmodul mit Anzeigen. Die Fernbedienung ist mit einem drahtlosen Sender zum Senden der darin installierten Daten ausgestattet (die Antenne ragt seitlich heraus). Das Hauptmodul empfängt Daten von der Remote-Einheit (der Empfänger wird zur Vereinfachung seiner Ausrichtung an einem Kabel in einer separaten Einheit angebracht), nimmt auch Messwerte vom internen Temperatur-Feuchtigkeits-Sensor auf und zeigt dies alles auf den Displays an. Eine separate Komponente der Haupteinheit ist eine Uhr mit einem Kalender, die zur Vereinfachung der allgemeinen Einrichtung der Station von einem separaten Arduino Mini-Controller bedient wird und über eigene Anzeigen verfügt.
Fernmodul und Messkreis von Windsensoren
Als Fotostrahler wurden die IR-LEDs AL-107B ausgewählt. Diese Vintage-LEDs sind natürlich nicht die besten ihrer Klasse, aber sie haben ein Miniaturgehäuse mit einem Durchmesser von 2,4 mm und können Strom bis zu 600 mA pro Impuls übertragen. Übrigens stellte sich bei den Tests heraus, dass die Probe dieser LED um 1980 (im roten Fall) ungefähr doppelt so effizient ist (ausgedrückt im Bereich des zuverlässigen Betriebs des Fotodetektors) wie moderne Kopien, die in Chip-Dip gekauft wurden (sie haben eine transparente gelblich-grüner Körper). Es ist unwahrscheinlich, dass 1980 die Kristalle besser waren als jetzt, obwohl was zum Teufel nicht scherzt? Es ist jedoch möglich, dass sich die Materie in dem einen und dem anderen Design in unterschiedlichen Streuwinkeln befindet.
Ein konstanter Strom von ungefähr 20 mA (Widerstand 150 Ohm mit einer Stromversorgung von 5 Volt) wurde durch eine LED im Geschwindigkeitssensor geleitet, und ein gepulster Strom (Mäander mit einem Arbeitszyklus von 2) von ungefähr 65 mA (die gleichen 150 Ohm mit einer Stromversorgung von 12 Volt) wurde in den Richtungssensor geleitet. Der durchschnittliche Strom durch eine LED des Richtungssensors beträgt in diesem Fall ungefähr 33 mA in nur vier Kanälen - ungefähr 130 mA.
Als Fotodetektoren wurden L-32P3C-Fototransistoren in einem Fall mit einem Durchmesser von 3 mm ausgewählt. Das Signal wurde von einem Kollektor aufgenommen, der auf einen 1,5- oder 2-kOhm-Widerstand von einer 5-V-Versorgung geladen ist. Diese Parameter werden so gewählt, dass in einem Abstand von ~ 20 mm zwischen dem Fotoemitter und dem Empfänger ein Logiksignal voller Größe mit 5-Volt-Pegeln sofort ohne zusätzliche Verstärkung am Eingang ankommt . Die hier auftretenden Ströme mögen Ihnen auf der Grundlage des oben angegebenen Mindestenergieverbrauchs unverhältnismäßig groß erscheinen, aber wie Sie sehen werden, erscheinen sie in jedem Messzyklus für maximal einige Millisekunden, so dass der Gesamtverbrauch gering bleibt.
Die Basis für die Montage der Empfänger und Sender waren die Segmente des Kabelkanals (sichtbar auf dem Foto der Sensoren oben), die so geschnitten waren, dass sie „Ohren“ für die Montage an der Halterung an der Basis bildeten. Für jeden dieser Abfälle wurde eine Kunststoffplatte von innen auf den Verschlussdeckel geklebt, deren Breite der Breite des Kanals entsprach.
LEDs und Fototransistoren wurden im richtigen Abstand in den in diese Platte gebohrten Löchern befestigt, so dass sich die Leitungen innerhalb des Kanals befanden und nur die Ausbuchtungen am Ende der Schalen nach außen ragten. Die Schlussfolgerungen werden gemäß dem Diagramm (siehe unten) verlötet, die externen Schlussfolgerungen werden durch Abfälle eines flexiblen mehrfarbigen Drahtes gezogen. Innerhalb des Kanals befinden sich auch Widerstände für Emitter des Richtungssensors, aus denen eine allgemeine Schlussfolgerung gezogen wird. Nach dem Entlöten rastet der Deckel ein, alle Schlitze werden mit Plastilin und einem zusätzlichen Klebeband versiegelt, das auch das Loch auf der den Anschlüssen gegenüberliegenden Seite verschließt, und die gesamte Struktur wird mit Epoxidharz gefüllt. Externe Schlussfolgerungen, wie auf dem Foto der Sensoren zu sehen, werden auf dem Klemmenblock auf der Rückseite der Halterung angezeigt.SchaltplanDas Gerät zur Verarbeitung von Windsensoren sieht folgendermaßen aus:
Informationen darüber, woher die 12-14-Volt-Leistung kommt, siehe unten. Zusätzlich zu den im Diagramm angegebenen Komponenten enthält die Fernbedienung einen Temperatur-Feuchtigkeits-Sensor, der im Diagramm nicht dargestellt ist. Der an die Klemme A0 der Steuerung angeschlossene Spannungsteiler dient zur Steuerung der Spannung der Stromversorgung für einen rechtzeitigen Austausch. Die an die herkömmliche Klemme 13 (Klemme 19 des DIP-Gehäuses) angeschlossene LED ist superhell, da für ihr normales, nicht blendendes Leuchten genügend Strom in Milliampere ausreicht, was durch eine ungewöhnlich hohe Widerstandsleistung von 33 kOhm sichergestellt wird.Das Schema verwendet einen "nackten" Atmega328-Controller in einem DIP-Paket, der über Uno programmiert und an einer Buchse montiert ist. Solche Controller mit einem bereits aufgezeichneten Arduino-Lader werden beispielsweise in Chip-Dip verkauft (oder Sie können den Lader selbst aufnehmen ). Eine solche Steuerung ist bequem in einer vertrauten Umgebung programmiert, aber ohne Komponenten auf der Platine ist sie zum einen wirtschaftlicher und zum anderen weniger platzsparend. Ein vollwertiger Energiesparmodus könnte erreicht werden, indem auch der Bootloader entfernt wird (und im Allgemeinen der gesamte Code in Assembler gemalt wird :), aber hier ist er nicht sehr relevant und die Programmierung ist unnötig kompliziert.In dem Diagramm sind graue Rechtecke um Komponenten eingekreist, die sich separat auf die Geschwindigkeits- und Richtungskanäle beziehen. Betrachten Sie den Betrieb der Schaltung als Ganzes.Der Betrieb der Steuerung als Ganzes wird vom WDT-Watchdog-Timer gesteuert, der im Interrupt-Aufrufmodus eingeschaltet wird. WDT weckt den Controller in festgelegten Intervallen aus dem Ruhemodus. Wenn der Timer im aufgerufenen Interrupt erneut startet, startet er nicht von vorne, alle globalen Variablen bleiben auf ihren Werten. Auf diese Weise können Sie Daten von Erwachen zu Erwachen sammeln und sie irgendwann verarbeiten - beispielsweise zum Durchschnitt.Zu Beginn des Programms wurden folgende Deklarationen von Bibliotheken und globalen Variablen abgegeben (um den Text der bereits umfangreichen Beispiele nicht zu überladen, wurde hier alles rund um den Temperatur-Feuchtigkeits-Sensor veröffentlicht):#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; //
Die folgenden Verfahren werden verwendet, um den Schlafmodus und die WDT zu starten (alle 4 s aufwachen):
// 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(); }
Der Geschwindigkeitssensor gibt die Frequenz der Unterbrechung des optischen Kanals an, die Größenordnung beträgt einige zehn Hertz. Die Messung dieses Wertes ist nach einer gewissen Zeit wirtschaftlicher und schneller (dies war Gegenstand der Veröffentlichung des Autors „
Bewertung von Methoden zur Messung niedriger Frequenzen am Arduino “). Hier wird die Methode über die modifizierte Funktion pulsInLong () ausgewählt, die die Messung nicht an bestimmte Reglerausgänge bindet (der Text der Funktion periodInLong () ist in der Veröffentlichung enthalten).
In der Funktion setup () werden die Ausgangsrichtungen deklariert, die 433-MHz-Senderbibliothek und der Watchdog-Timer initialisiert (die Zeile für IN_PINF ist grundsätzlich überflüssig und wird für den Speicher eingefügt):
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(); }
Schließlich lesen wir im Hauptzyklus des Programms jedes Mal, wenn wir aufwachen (alle 4 Sekunden), zuerst die Spannung und berechnen die Frequenz des Windgeschwindigkeitssensors:
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; // . . . . .
Wie Sie sehen, ist die Brenndauer der IR-LED (verbraucht, wie ich mich erinnere, 20 mA) hier ohne Drehung der Sensorscheibe maximal und beträgt unter dieser Bedingung etwa 0,25 Sekunden. Die minimale gemessene Frequenz beträgt somit 4 Hz (eine viertel Scheibenumdrehung pro Sekunde mit 16 Löchern). Wie sich bei der Kalibrierung des Sensors herausstellte (siehe unten), entspricht dies einer Windgeschwindigkeit von ca. 0,2 m / s. Wir betonen, dass dies der kleinste messbare Wert der Windgeschwindigkeit ist, jedoch keine Auflösung und keine Startschwelle (die sich als viel höher herausstellen wird). Wenn es eine Frequenz gibt (dh wenn sich der Sensor dreht), wird die Messzeit (und dementsprechend die LED-Brenndauer, d. H. Der Stromverbrauch) proportional verringert und die Auflösung erhöht.
Das Folgende sind Verfahren, die jedes vierte Erwachen (d. H. Alle 16 Sekunden) durchgeführt werden. Der Wert der Frequenz des Geschwindigkeitssensors aus den akkumulierten vier von uns übertragenen Werten ist nicht durchschnittlich, sondern maximal - wie die Erfahrung gezeigt hat, ist dies ein informativerer Wert. Zur Vereinfachung und Vereinheitlichung wird jeder der Werte unabhängig von seinem Typ vor der Übertragung in eine positive Ganzzahl mit 4 Dezimalstellen konvertiert. Die Zählvariable wird von der Zählvariablen überwacht:
// 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 . . . . . .
Als nächstes folgt die Definition der Gray-Code-Richtung. Um den Verbrauch zu reduzieren, wird anstelle von IR-LEDs ständig eine Frequenz von 5 kHz an alle vier Kanäle gleichzeitig über einen Schlüsselfeldeffekttransistor mit der Funktion ton () geliefert. Das Vorhandensein einer Frequenz an jeder der Entladungen (in_0p - in_3p-Ausgänge) wird unter Verwendung einer Methode ähnlich der Anti-Bounce-Methode beim Lesen der Messwerte einer gedrückten Taste erkannt. Zuerst warten wir im Zyklus, ob der Ausgang einen hohen Pegel aufweist, und überprüfen ihn dann nach 100 μs. 100 μs ist eine halbe Periode einer Frequenz von 5 kHz, dh wenn es eine Frequenz von mindestens dem zweiten Mal gibt, werden wir wieder auf einen hohen Pegel fallen (nur für den Fall, viermal wiederholen) und dies bedeutet, dass es definitiv da ist. Wir wiederholen diesen Vorgang für jedes der vier Codebits:
/* ===== 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- . . . . . .
Die maximale Dauer eines Vorgangs liegt bei fehlender Frequenz am Empfänger und beträgt 4 × 100 = 400 Mikrosekunden. Die maximale Brenndauer von 4 Richtungs-LEDs beträgt, wenn keine Empfänger leuchten, d. H. 4 × 400 = 1,6 Millisekunden. Der Algorithmus funktioniert übrigens genauso, wenn es anstelle einer Frequenz, deren Periode ein Vielfaches von 100 μs ist, einfach ist, LEDs einen konstant hohen Pegel zuzuweisen. Wenn es einen Mäander statt eines konstanten Niveaus gibt, sparen wir einfach die Hälfte der Nahrung. Wir können immer noch sparen, wenn wir jede IR-LED über eine separate Leitung (bzw. über einen separaten Ausgang des Controllers mit eigenem Schlüsseltransistor) starten. Gleichzeitig sind die Schaltung, die Verkabelung und die Steuerung kompliziert und der Strom beträgt alle 16 Sekunden 2 ms lang 130 mA - das siehst du ein wenig.
Schließlich
drahtlose Datenübertragung . Um Daten vom Sensorinstallationsort auf die Anzeigetafel der Wetterstation zu übertragen, wurde die einfachste, billigste und zuverlässigste Methode gewählt:
ein Sender / Empfänger-Paar mit einer Frequenz von 433 MHz . Ich bin damit einverstanden, dass die Methode nicht die bequemste ist (aufgrund der Tatsache, dass die Geräte für die Übertragung von Bitsequenzen und nicht von ganzen Bytes ausgelegt sind, müssen Sie sich bei der Konvertierung von Daten zwischen den erforderlichen Formaten verfeinern), und ich bin sicher, dass viele mit mir hinsichtlich ihrer Zuverlässigkeit streiten werden. Die Antwort auf den letzten Einwand ist einfach: "Sie wissen einfach nicht, wie man sie kocht!"
Das Geheimnis ist, dass es normalerweise hinter den Kulissen verschiedener Beschreibungen des Datenaustauschs auf dem 433-MHz-Kanal bleibt: Da diese Geräte rein analog sind, muss die Stromversorgung des Empfängers sehr gut von jeglichen Fremdpulsationen gereinigt werden. In keinem Fall sollten Sie den Empfänger über den internen 5-Volt-Arduino-Stabilisator mit Strom versorgen! Die Installation eines separaten Stabilisators mit geringem Stromverbrauch für den Empfänger (LM2931, LM2950 oder ähnliches) direkt in der Nähe seiner Klemmen mit den richtigen Filterkreisen am Ein- und Ausgang erhöht die Übertragungsreichweite und Zuverlässigkeit radikal.
In diesem Fall arbeitete der Sender direkt mit der Batteriespannung von 12 V, der Empfänger und der Sender waren mit hausgemachten Standardantennen in Form eines 17 cm langen Drahtstücks ausgestattet. (Ich erinnere mich, dass der Draht für Antennen nur einadrig geeignet ist und die Antennen parallel zueinander im Raum platziert werden müssen.) Ein 24-Byte-Informationspaket (unter Berücksichtigung von Luftfeuchtigkeit und Temperatur) ohne Probleme wurde sicher mit einer Geschwindigkeit von 1200 Bit / s diagonal durch ein Gartengrundstück von 15 Morgen (ca. 40-50 Meter) und dann durch drei Protokolle übertragen Wände im Raum (in denen beispielsweise ein zellulares Signal nur schwer und nicht überall empfangen wird). Bedingungen, die für eine Standardmethode mit 2,4 GHz (wie Bluetooth, Zig-Bee und sogar Amateur-WLAN) praktisch nicht erreichbar sind, obwohl der Senderverbrauch hier miserabel 8 mA beträgt und nur zum Zeitpunkt der tatsächlichen Übertragung den Rest der Zeit, die der Sender verbraucht Pennies. Der Sender befindet sich strukturell in der Fernbedienung, die Antenne ragt horizontal von der Seite heraus.
Wir kombinieren alle Daten in einem Paket (in einer realen Station werden Temperatur und Luftfeuchtigkeit hinzugefügt), das aus einheitlichen 4-Byte-Teilen besteht, denen die Signatur „DAT“ vorangestellt ist, senden sie an den Sender und schließen alle Zyklen ab:
/*=====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
Die Paketgröße kann reduziert werden, wenn Sie die Anforderung ablehnen, jeden der Werte verschiedener Typen in Form eines einheitlichen 4-Byte-Codes darzustellen (zum Beispiel reicht für den Gray-Code natürlich ein Byte aus). Aber um der Universalisierung willen habe ich alles so gelassen, wie es ist.
Ernährungs- und Designmerkmale der Fernbedienung . Der Verbrauch der Remote-Einheit wird folgendermaßen berechnet:
- 20 mA (Emitter) + ~ 20 mA (Regler mit Hilfsstromkreisen) für etwa 0,25 s alle vier Sekunden - durchschnittlich 40/16 = 2,5 mA;
- 130 mA (Emitter) + ~ 20 mA (Regler mit Hilfsstromkreisen) für ca. 2 ms alle 16 Sekunden - durchschnittlich 150/16/50 ≈ 0,2 mA;
Wenn wir bei dieser Berechnung den Reglerverbrauch bei der Erfassung von Daten vom Temperatur-Feuchtigkeits-Sensor und bei Betrieb des Senders berücksichtigt haben, können wir den Durchschnittsverbrauch sicher auf 4 mA bringen (wohlgemerkt bei einem Spitzenwert von etwa 150 mA!). Die Batterien (die übrigens bis zu 8 Teile benötigen, um den Sender mit maximaler Spannung zu versorgen!) Müssen zu oft gewechselt werden, daher bestand die Idee darin, die Fernbedienung mit 12-Volt-Batterien für einen Schraubendreher zu versorgen - ich hatte nur zwei zusätzliche. Ihre Kapazität ist sogar geringer als die entsprechende Anzahl von AA-Batterien - nur 1,3 A • Stunden, aber niemand stört sich daran, sie zu irgendeinem Zeitpunkt zu wechseln und eine Sekunde aufgeladen zu halten. Bei dem angegebenen Verbrauch von 4 mA reicht die Kapazität von 1300 mA • Stunden für etwa zwei Wochen aus, was nicht allzu störend ist.
Beachten Sie, dass die Spannung eines frisch geladenen Akkus bis zu 14 Volt betragen kann. In diesem Fall wurde ein 12-Volt-Eingangsstabilisator installiert, um eine Überspannung der Senderstromversorgung zu verhindern und den Haupt-Fünf-Volt-Stabilisator nicht zu überlasten.
Die tragbare Einheit in einem geeigneten Kunststoffgehäuse befindet sich unter dem Dach, ein Stromkabel von der Batterie und Anschlüsse an Windsensoren sind an den Anschlüssen angeschlossen. Die Hauptschwierigkeit besteht darin, dass sich die Schaltung als äußerst empfindlich gegenüber Luftfeuchtigkeit herausstellte: Bei Regenwetter beginnt der Sender nach einigen Stunden zu versagen, Frequenzmessungen zeigen ein komplettes Durcheinander und Batteriespannungsmessungen zeigen „Wetter auf dem Mars“.
Daher muss der Fall nach dem Debuggen der Algorithmen und dem Überprüfen aller Verbindungen sorgfältig versiegelt werden. Alle Anschlüsse am Eingang des Gehäuses sind mit Dichtmittel abgedichtet. Gleiches gilt für alle herausstehenden Schraubenköpfe, Antennenausgang und Stromkabel. Die Gelenke des Körpers werden mit Plastilin verschmiert (unter Berücksichtigung, dass sie getrennt werden müssen) und zusätzlich mit Streifen Klebeband darauf geklebt. Es ist schön, die verwendeten Steckverbinder im Inneren zusätzlich vorsichtig mit einem Epoxidharz zu verstärken: Beispielsweise ist der im Diagramm des Fernbedienungsmoduls gezeigte
DB-15 von sich aus nicht dicht und feuchte Luft tritt langsam zwischen dem Metallrahmen und der Kunststoffbasis aus.
Alle diese Maßnahmen an sich wirken sich jedoch nur kurzfristig aus - selbst wenn keine kalte feuchte Luft angesaugt wird, verwandelt sich die trockene Luft aus dem Raum leicht in feuchte Luft, wenn die Temperatur außerhalb des Gehäuses sinkt (denken Sie an das Phänomen, das als „Taupunkt“ bezeichnet wird).
Um dies zu vermeiden, muss eine Patrone oder ein Beutel mit einem Trockenmittel - Kieselgel im Inneren des Gehäuses belassen werden (Beutel damit werden manchmal in Schachteln mit Schuhen oder in einigen Verpackungen mit elektronischen Geräten aufbewahrt). Wenn Kieselgel unbekannter Herkunft längere Zeit gelagert wurde, muss es vor der Verwendung in einem elektrischen Ofen bei 140-150 Grad für mehrere Stunden kalziniert werden. Wenn der Koffer ordnungsgemäß versiegelt ist, muss das Trockenmittel nicht öfter als zu Beginn jeder Sommersaison ausgetauscht werden.
Hauptmodul
Im Hauptmodul werden alle Werte akzeptiert, ggf. entschlüsselt, gemäß den Kalibriergleichungen konvertiert und angezeigt.
Der Empfänger befindet sich außerhalb des Hauptmoduls der Station und in einer kleinen Box mit Ohren zur Montage. Die Antenne wird durch eine Öffnung in der Abdeckung herausgeführt, alle Öffnungen im Gehäuse sind mit Rohgummi verschlossen. Die Empfängerkontakte sind mit einem sehr zuverlässigen Haushaltsanschluss vom Typ RS-4 verbunden. Auf der Empfängerseite ist er über ein Stück eines doppelt abgeschirmten AV-Kabels verbunden:

Ein Signal wird entlang eines der Kabeladern aufgenommen, und auf der anderen Seite wird die Stromversorgung in Form von 9 Volt vom Netzteil des Moduls geliefert. Der Stabilisator Typ LM-2950-5.0 wird zusammen mit Filterkondensatoren in einer Box mit dem Empfänger auf einem separaten Schal installiert.
Es wurden Experimente durchgeführt, um die Länge des Kabels zu erhöhen (nur für den Fall, würde es plötzlich nicht durch die Wand funktionieren?), Bei der sich herausstellte, dass sich innerhalb der Länge von bis zu 6 Metern nichts ändert.
Es gibt nur vier OLED-Displays: zwei gelbe Served-Wetterdaten, zwei grüne Uhren und einen Kalender. Ihre Platzierung ist auf dem Foto dargestellt:

Bitte beachten Sie, dass in jeder Gruppe eine der Anzeigen Text ist, die zweite Grafik, mit künstlich erstellten Schriftarten in Form von Glyphenbildern. Hier wird nicht auf das Problem der Anzeige von Informationen auf Displays eingegangen, um den bereits umfangreichen Text des Artikels und die Beispiele nicht aufzublähen: Aufgrund des Vorhandenseins von Glyphenbildern, die einzeln angezeigt werden müssen (häufig durch einfaches Auflisten der Optionen mit dem Falloperator), können die Ausgabeprogramme sein sehr sperrig. Informationen zum Umgang mit solchen Anzeigen finden Sie in der Veröffentlichung des Autors „
Grafik- und Textmodus von Winstar-Anzeigen “, die ein Beispiel für eine Anzeige zur Ausgabe
von Winddaten enthält.
Schaltplan. Die Uhr und ihre Anzeigen werden zur Erleichterung der Einrichtung von einem separaten Arduino Mini-Controller gewartet, und wir werden sie hier nicht mehr zerlegen. Das Anschlussdiagramm der Komponenten zum Arduino Nano, das den Empfang und die Ausgabe von Wetterdaten steuert, lautet wie folgt:

Hier wird im Gegensatz zum Remote-Modul der Anschluss von Wettersensoren - einem Barometer und einem internen Temperatur-Feuchtigkeits-Sensor - gezeigt. Achten Sie auf die Stromverkabelung - die Displays werden von einem separaten 5-V-Stabilisator Typ LM1085 gespeist. Es ist natürlich, die Taktanzeigen von dort aus mit Strom zu versorgen. In diesem Fall muss der Taktregler jedoch auch mit derselben Spannung und über den 5-V-Ausgang und nicht mit Vin betrieben werden (bei Mini Pro wird letzterer als RAW bezeichnet). Wenn Sie den Uhrencontroller auf die gleiche Weise wie Nano - 9 Volt über den RAW-Ausgang mit Strom versorgen, steht sein interner Stabilisator in Konflikt mit den externen 5 Volt, und natürlich gewinnt der Stärkste in diesem Kampf, dh LM1085 und Mini bleiben völlig ohne Strom. Um alle möglichen Probleme zu vermeiden, sollte vor dem Programmieren des Nano und insbesondere des Mini (dh vor dem Anschließen des USB-Kabels) der externe Adapter abgezogen werden.
Wenn beim LM1085-Stabilisator alle vier Displays angeschlossen sind, wird die Leistung auf etwa ein Watt verteilt. Daher sollte sie auf einem kleinen Kühler installiert werden, der etwa 5 bis 10 cm2 von einer Aluminium- oder Kupferecke entfernt ist.
Empfang und Datenverarbeitung. Hier reproduziere und kommentiere ich nur Fragmente des Programms, die sich auf Winddaten beziehen, ein paar Worte zu anderen Sensoren unten.
Um eine Nachricht auf einem 433-MHz-Kanal zu empfangen, ist die in vielen Quellen beschriebene Standardmethode anwendbar. Wir verbinden die Bibliothek und deklarieren die Variablen:
#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 . . . . .
Eine Besonderheit hängt mit der Größe des Pufferes zusammen: Es reicht nicht aus, seinen Wert (VW_MAX_MESSAGE_LEN) einmal zu Beginn des Programms zu deklarieren. Da diese Variable in der Empfangsfunktion als Referenz angezeigt wird (siehe unten), muss die Standardnachrichtengröße in jedem Zyklus aktualisiert werden. Andernfalls wird aufgrund des Empfangs beschädigter Nachrichten der Buflen-Wert jedes Mal verkürzt, bis Sie anfangen, alle Arten von Unsinn anstelle von Daten zu erhalten. In den Beispielen werden diese beiden Variablen normalerweise lokal im loop () -Zyklus deklariert, da die Puffergröße automatisch aktualisiert wird. Hier wiederholen wir einfach die Zuweisung des gewünschten Werts zu Beginn jedes Zyklus.
Nehmen Sie im Setup-Verfahren die folgenden Einstellungen vor: void setup() { delay (500); // pinMode(16,INPUT_PULLUP); // vw_setup(1200); // VirtualWire vw_set_rx_pin(17); //A3 VirtualWire . . . . .
Bevor etwas aufgenommen wird, wird das Zeitintervall t_time überprüft, das seit dem letzten Empfang vergangen ist. Wenn vernünftige Grenzwerte überschritten wurden (z. B. 48 Sekunden - dreimal so lange wie die Wiederholungszeit von Nachrichten von der externen Einheit), wird dies als Verlust des Sensors empfunden und auf dem Display angezeigt: 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> . . . . .
Koeffizient 55.5 - Umwandlung des Wertes des ADC-Codes in eine reale Spannung, sein Wert hängt von der Referenzspannung und den Werten der Widerstände des Teilers ab.Übrigens hat der Gray-Code eine Funktion: Die Reihenfolge der Bits ist dabei nicht wichtig, der Code speichert alle seine Eigenschaften, wenn sie neu angeordnet werden. Und da wir beim Entschlüsseln immer noch jeden Fall separat betrachten, können die Bits in beliebiger Reihenfolge angezeigt und sogar verwirrt werden, wenn sie verbunden sind. Es ist eine andere Sache, wenn Sie diese Angelegenheit irgendwie klären möchten - erstellen Sie beispielsweise ein Array von Richtungswerten ("s", "ssz", "sz", "ssz", "z" usw.) und statt einer individuellen Überlegung Jede Option zum Extrahieren von Bezeichnungen nach Nummer in diesem Array. Dann wäre es notwendig, den Gray-Code in eine geordnete Binärdatei umzuwandeln, und die Reihenfolge der Bits würde eine bedeutende Rolle spielen.Und schließlich extrahieren wir den Geschwindigkeitswert und schließen alle Operatoren: . . . . . 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(); . . . . .
Hier ist 10 + 0,5 * wFrq die Eichgleichung. 10 dm / s (dh 1,0 Meter pro Sekunde) ist der Schwellenwert für den Start und 0,5 ist der Koeffizient für die Umwandlung der Frequenz in Geschwindigkeit (in dm / s). Bei einem Nullwert der Eingangsfrequenz ergibt diese Gleichung 10 dm / s, daher sollte sorgfältig darauf geachtet werden, dass es sich nicht um 1 m / s handelt, sondern um einen Nullwert. Sie können den Geschwindigkeitssensor mit einem der billigsten Handanemometer und Desktop-Lüfter kalibrieren. Versuchen Sie nicht, die Startschwelle experimentell zu bestimmen - es ist viel genauer, wenn zwei oder drei Punkte des direkten Kalibrierungswerts der Geschwindigkeit V von der Frequenz F notiert werden: V = V + K × F bei unterschiedlichen Durchflussraten, dann wird die Startschwelle automatisch als Wert von V (Punktordinate) bestimmt Schnittpunkt dieser Linie mit der Geschwindigkeitsachse).Bevor Sie die Hauptschleife schließen, müssen Sie noch eine Sache tun. Wir haben die Batteriespannung, aber Sie müssen sie nicht ständig anzeigen - nehmen Sie einfach Platz ein. Dazu benötigen wir die Schaltfläche Kn1 - durch Anklicken ersetzen wir vorübergehend (bis zur nächsten Datenaktualisierung) die externe Temperatur-Feuchtigkeits-Leitung durch den Spannungswert: . . . . . if (digitalRead(16)==LOW){ // < , -> }// delay(500); }// loop
Ich hatte einen Knopf, wie aus der Schaltung ersichtlich, mit einem Umschaltkontakt, aber nichts hindert daran, den üblichen mit einem Schließkontakt zu installieren und ihn über einen Widerstand mit der Stromversorgung zu verbinden. Sie können dazu auch das Blinken von Symbolen auf dem Display hinzufügen, wenn die Batteriespannung unter beispielsweise 10 Volt fällt, als Zeichen dafür, dass es Zeit ist, sie zu ändern.Abschließend zu Wettersensoren. Als externer Sensor wurde SHT-75 verwendet - der einzige Amateursensor, den ich gefunden habe, der nicht kalibriert werden muss und der reale Werte von Temperatur und Luftfeuchtigkeit direkt "out of the box" anzeigt (daher der hohe Preis).Eine Bibliothek zum Anschließen finden Sie hier .Der SHT-75 ist ziemlich dumm konstruiert: Das Metallsubstrat der Platine leitet die Wärme sehr gut, daher muss es außerhalb des Gehäuses vollständig entfernt werden. Andernfalls reicht das Vorhandensein nur eines Controllers vom Typ ATmega328 mit einem Leistungsregler in einem geschlossenen Gehäuse aus, um den Sensor durch das Substrat um einige Grad zu erwärmen, selbst wenn sein Kopf herausgezogen wird. Mein Schema mit Windsensoren mit Strömen von 20 bis 130 mA (sogar Ströme von unbedeutenden Millisekunden) erwärmte den SHT-75 um fünf Grad, sodass er herausgebracht und separat auf einer Kunststoffplatte installiert wurde, die seitlich aus dem Gehäuse herausragt.Daten vom SHT-75 werden von derselben Steuerung wie die Daten von den Windsensoren aufgenommen und vom Remote-Modul in einem einzigen Paket über einen 433-MHz-Funkkanal gesendet. Zur Übertragung werden sie außerdem vorab in ein 4-Byte-Zeichenfolgenformat konvertiert.Um die Temperatur und Luftfeuchtigkeit im Raum zu messen, wurde das banale DHT-22 gewählt - da die Reichweite dort im Vergleich zur Straße gering ist, spielt es keine Rolle, welcher Sensor verwendet werden soll (außer natürlich DHT-11, das unter keinen Umständen verwendet werden sollte) es ist einfach nicht funktionsfähig). Die Temperatur des DHT-22 wurde durch Messungen mit einem Quecksilberthermometer korrigiert (sie stimmten vollständig mit dem SHT-75 überein!), Und die Luftfeuchtigkeit war im Vergleich zum SHT-75 leicht abgeflacht. Korrekturen werden unmittelbar vor der Anzeige eingegeben.DHT-22 muss übrigens auch mit Displays aus dem Gehäuse genommen werden - sonst erwärmt es sich zwangsläufig und liegt. Ich befestige es an einer Kunststoffhalterung am Boden des Gehäuses in einem Abstand von zehn Millimetern. Dieser Umstand ist übrigens, wie ich vermute, einer der Gründe (mit Ausnahme des Fehlens einer individuellen Kalibrierung), dass alle Markenwetterstationen RST und Oregon schamlos im Zeugnis liegen und sogar eine Ausbreitung von sich selbst (ein interner Sensor mit einem externen) von zwei bis drei Grad aufweisen und bis zu zehn Prozent Feuchtigkeit.BarometerEs stellt keine Probleme dar, da fast alle im Handel erhältlichen Produkte auf derselben Basis hergestellt werden - der mikroelektromechanische BMP180-Chip (MEMS) oder seine Modifikationen. Meine persönliche Erfahrung mit dem Versuch, eine seltenere Variante auf Basis von LPS331AP zu verwenden, war negativ: Es war schwieriger, eine Bibliothek dafür zu finden, und um das Ganze abzurunden, wurde ein Konflikt mit anderen Geräten auf dem I2C-Bus festgestellt. Die Messwerte des Barometers müssen möglicherweise am Installationsort angepasst werden - alle 10-12 Meter über dem Meeresspiegel wird der Druck um 1 mm Hg verringert. Art.
Daher muss ein bestimmter Wert von den Messwerten abgezogen (oder addiert) werden, damit der Druck den Messwerten der offiziellen Wetterstation in der Region entspricht.Ich bringe nicht alle Wetterstationsprogramme vollständig mit - sie sind ziemlich sperrig und Sie können den Bau immer noch nicht eins zu eins wiederholen. Wenn überhaupt, klopfen Sie an die PM.UPD vom 30.06.17. Installierte Energie von einem Solarpanel. Kit von hier:Solarpanel-ControllerBatterieAlles zusammen + Lieferung in Moskau innerhalb von 2,5 tyr. Es funktioniert einwandfrei.Eine interessante Technik zur Berechnung der Leistung von Solarbatterie und Batterie, die von Beratern auf dieser Website angeboten wird. Als Beispiel für die Berechnung des Stromverbrauchs von 3 W (ich habe viel weniger) zitiere ich:„ 3 W multipliziert mit 24 Stunden und geteilt durch 6 = 12 Ah, dies ist die minimale Batteriekapazität. 3 W multipliziert mit 24 Stunden und geteilt durch 3 Stunden = 24 W.Dies ist die minimale Leistung der Solarbatterie.“Keine Kommentare.
In meinem Fall ist die resultierende Leistung eines Solarkraftwerks unter den schlechtesten Wetterbedingungen zehnmal höher als erforderlich. Daher können Sie sich in der Sensorsteuerung nicht besonders um die Energieeinsparung kümmern und alle erforderlichen Frequenzen anwenden, um Messwerte und Mittelwerte zu erfassen.UPD vom 13.09.18. In fast zwei Betriebszeiten wurden die Stärken und Schwächen der Station aufgedeckt. Schwach - Erstens ist der Aktualisierungszyklus von Messwerten von 16 Sekunden (aus vier Messreihen) wie ursprünglich zu lang. Durch die Installation einer Solarbatterie mit einer Pufferbatterie konnten wir nicht an Energieeinsparungen denken und mit der Zykluszeit spielen. Als Ergebnis wurde der Zyklus auf 8 Sekunden eingestellt (vier Messungen in zwei Sekunden).Aufgrund mechanischer Verbesserungen wurde ein festes Axiallager unter der Spitze des Geschwindigkeitssensors eingeführt (ja, ich wurde damals vor seiner Notwendigkeit gewarnt, aber ich habe damals nicht herausgefunden, wie ich es herstellen soll). Nach einiger Zeit schnitt die Achse des Sensors vollständig durch den fluoroplastischen Träger und die Startschwelle stieg stark an (dies hatte übrigens keinen Einfluss auf die Empfindlichkeit der Wetterfahne). Daher wurde der Träger durch ein Axiallager aus rostfreiem Stahl ersetzt, in dem mit einem dünnen Bohrer eine kleine Aussparung hergestellt wurde. Ich sehe voraus, dass ich mir dann etwas anderes mit einem Punkt einfallen lassen muss, der wie die gesamte Achse aus Duraluminium besteht. Aber ich habe es auf den Moment verschoben, in dem der Sensor noch erneuert werden muss: Die Laserscheibe, die als Grundlage für das Design diente, wurde zwei Jahreszeiten lang von der Sonne bewölkt und begann zu knacken.UPD vom 06/05/19.Über die Änderung des Sensors (die gleiche Wetterfahne links). Der Geschwindigkeitssensor musste sowohl wegen der abgenutzten Achse als auch wegen der unbrauchbaren Laserscheibe erneuert werden. Die Basis des Designs bleibt unverändert, aber die neue Laserscheibe ist mit goldener Sprühfarbe bemalt. Die Lösung für die Achsenspitze wurde in der folgenden Form gefunden. Eine Aussparung wurde genau in der Duralachse genau in der Mitte gebohrt, und auf dem zweiten Kleber wurde eine 3 mm lange Verkleidung der Oberseite des chinesischen Gewindebohrers angebracht. Die Spitze am Wasserhahn ist ein gut zentrierter Kegel mit einem Winkel von etwa 70-80 Grad. Er wurde zusätzlich mit einer Nullhaut und dann mit GOI-Paste poliert. Als Basis habe ich den Kopf einer rostfreien M3-Schraube mit einem abgesägten Schlitz verwendet, in dem eine kleine mittlere Aussparung mit einem herkömmlichen Bohrer D = 2 mm markiert ist. Diese Schraube wurde direkt in die Aussparung im Fluoroplast eingeschraubt,mit einer Achse gesägt, bevor die Ausrichtung vorgesehen war.Die Spitze der Achse wurde mit Graphitfett geschmiert, um sie vor Korrosion zu schützen (da mir die rostfreien Eigenschaften des Gewindebohrers unbekannt sind). Nach einigem Einschleifen nahm die Startschwelle so stark ab, dass es unmöglich wurde, mit einem Markenanemometer zu messen, bei dem die Schwelle etwa 0,3 bis 0,5 cm / s beträgt. Nach indirekten Daten (durch Konstruktion einer geraden Linie an zwei Punkten) wurde freiwillig ein Schwellenwert von 0,3 m / s festgelegt, der jedoch wahrscheinlich etwas niedriger ist.Die Hauptänderung bei den Berechnungsalgorithmen betrifft auch Windsensoren, und ich fand es nützlich, dies in einem separaten Artikel zu veröffentlichen .