Wackersberg, 25.12.06

 

letzte Änderung: 25.02.07 (Scriptänderung Sunshine)

 

Bau eines Sonnen- Windrichtungssensors für WS300PC / WS444PC

 

Stückliste für Elektronik:

 

2

152977 - LN

Photodiode

 

5,62 €

11,24 €

1

522279 - 62

Batteriehalter

 

3,99 €

3,99 €

2

422428 - LN

Trimmer

2K5

0,26

0,52 €

4

422436 - LN

Trimmer

5K

0,26

1,04 €

2

422444 - LN

Trimmer

10K

0,26

0,52 €

4

422452 - LN

Trimmer

25K

0,26

1,04 €

2

422460 - LN

Trimmer

50K

0,26

0,52 €

2

422479 - LN

Trimmer

100k

0,26

0,52 €

2

422487 - LN

Trimmer

250K

0,26

0,52 €

20

436186 - 62

Reed- Kontakt

 

0,25 €

5,00 €

3

503649 - 62

Magnet

 

0,71 €

2,13 €

2

503673 - 62

Magnet

 

1,02 €

2,04 €

1

528463 - 62

Lochplatine

 

1,89 €

1,89 €

 

Die Bauteile sind überwiegend doppelt bestellt, da ein Schwund eingeplant werden muß

(Reedkontakte sind empfindlich), ebenso sollte der Bau nicht durch Fehlen eines Pfennigartikels

unterbrochen werden.

 

Weitere benötigte Bauteile:

2 Temp / Hygro- Sensor- Platinen ASH2000

1 Sendeplatine 866MHz

 

Stückliste für Mechanik:

 

1 Klemmdose auf Putz 10x10cm

1 Mastrohr- Teil (Edelstahl) von KS300

1 Kugellager (Aussendurchmesser 20mm, Innendurchmesser 8mm)

1 Reduzierstück für Abflussrohr von 10cm auf 8cm

1 Abschlussdeckel für Abflussrohr 10cm

1 Schlossschraube 8mm, 10cm lang + Muttern und Beilagscheiben

1 Magnet (aus Festplatte, nur die bringen die benötigte Stärke)

 

Hilfs / Arbeitsmittel:

 

1 leere 200g- Dose Schwarzer Krauser (hier sind Raucher im Vorteil!)

Gips (PU- Schaum wäre vermutlich besser)

Dosenbohrer 20mm

2 Komponentenkleber

Heißklebepistole

Lötkolben

Klingeldraht

Bohrmaschine + div. Bohrer

Dremel- Fräse wäre hilfreich

Multimeter

Lötkolben

Lüsterklemmen

Schrumpfschlauch

 

Aufbau der Elektronik:

 

Als erstes wird die Sensorelektronik zusammengebaut.

Dazu wird an die Datenleitung der Sensorplatine je eine normale Diode

zur Entkopplung eingelötet (bündig mit der Platine, da sonst der Abstand zu groß wird),

eine Diode auf einer Platine von oben, die andere auf der anderen Platine von unten.

Die Sendeplatine wird zwischen die beiden Sensorplatinen auf die Stromversorgungsverbindungen

aufgeschoben und dann verlötet

 

 

001 2 Sensoren, 1 Sender huckepack 

 

Die Stromversorgung erfolgt für alle drei Platinen gemeinsam über einen Anschluß (s. die beiden Drähte)

Die Baugruppe kann nun getestet werden, dazu muss an dem Anschluss für den Temperaturfühler

ein Widerstand mit ca. 50k angeschlossen werden (hier oben rechts ein Trimmer)

 

Einbau Fotodioden:

 

Die Fotodioden werden an zwei Ecken der Klemmdose von aussen eingeklebt.

Dazu in die Dose je zwei Löcher für die Anschlussdrähte bohren, die Dioden einstecken

und mit Heißkleber ankleben

 

 

002 Fotodioden eingeklebt

 

 

Dann wird das Batteriefach in die Klemmdose eingeklebt

 

 

003 Klemmdose mit Batteriefach

 

Nun kann das Sensorsandwich ebenfalls eingebaut werden

 

 

004 Sensoren zusammen 

 

dann die Baugruppen mit den Sensoren verdrahten

 

 

005 hier die fertige Sensoreinheit

 

rechts unten (unter dem Batteriefach) wurde zum Abgleich des Sonnensensors noch ein Stück Lochrasterplatine

eingebaut, auf dem sich die beiden Widerstände für Hell- und Dunkelabgleich befinden. Ich habe hierfür Trimmer

gewählt, da man dann wesentlich flexibler ist als mit Festwiderständen

 

Die Schaltung für den Sonnensensor findet man hier:

 

http://www.pc-wetterstation.de/wetter/solarsensor.html

 

 

Aufbau des Windrichtungsmessers:

 

 

 

010 alle Einzelteile

 

Die Tabaksdose ist als Halterung während der Arbeiten optimal, da die Reduzierung genau in die Dose passt.

In die Reduzierung wurden seitlich zwei Schrauben mit 6mm mit je 2 Muttern innerhalb eingebaut, um später

den Mast festschrauben zu können. Die Kontermuttern werden mit eingegipst, so lassen sich die Schrauben

dann hinterher ein- und ausschrauben.

Die Lochrasterplatte wird mit einer Mittenbohrung (Dosenbohrer) mit 2cm Durchmesser versehen und kreisrund

passend zur Reduzierung ausgeschnitten

 

 

011 Einzelteile Drehlager

 

In das Kugellager wird eine Schlossschraube mit 8mm Durchmesser und ca. 8cm Länge eingesetzt und gekontert

 

 

012 vorbereitete Einzelteile mit Bohrungen

In die Tabaksdose werden in Boden und einen Deckel mittig Löcher mit 2cm Durchmesser gebohrt.

Diese Löcher dienen während des Ausgipsens der Reduzierung als Zentrierung der Maststange

 

 

020 Reduzierung mit Zentrierschrauben

Die Reduzierung wird in die Tabaksdose gesetzt, anschließend wird die Maststange eingesteckt und die beiden

Fixierschrauben lose angezogen, Die beiden auf dem Bild sichtbaren Muttern bleiben in dieser Stellung und werden

so eingegipst

 

 

030 Deckel mit Zentrierbohrung

Der Deckel bekommt eine mittige Bohrung mit 8mm Durchmesser

 

 

031 Deckel

Der Deckel wird später auf das in die Maststange eingeklebte Kugellager mit Schlossschraube aufgesetzt

(die Schraube im Bild ist nur zu Testzwecken drin)

 

 

040 Tabaksdose mit Bodenloch

 

 

 

050 eingepasste Lochrasterplatte mit Mittelloch

 

 

 

060 Reduzierstück mit Gips ausgegossen Rohzustand

Die Reduzierung wird mit flüssig angerührtem Gips ausgegossen, nachdem die Maststange eingesetzt wurde.

Der gebohrte Tabaksdosendeckel wird dann als Zentrierung aufgesetzt

 

 

 

 

062 warten bis der Gips fest ist

 

 

 

063 Reduzierstück mit Gips ausgegossen

Nach dem entfernen der Gipsreste und dem glätten der Ränder sowie dem entfernen der Maststange sieht's dann

so aus. Die Stange noch entfernen, solange der Gips nicht vollständig ausgehärtet ist (nach ca. 10 Min.), sonst

wird's schwierig. Das Loch nach austrocknen mit Schleifpapier um eine Stange gewickelt etwas ausreiben,

da sich der Gips beim trocknen etwas zusammenzieht und die Stange dann nicht mehr reinpasst

 

 

070 Maststange mit eingeklebtem Kugellager und Befestigungsschraube

 

Das Kugellager wurde mit 2- Komponentenkleber in die Maststange zentrisch eingeklebt.

Zur Beschleunigung des Klebevorganges wurde dies auf der Herdplatte durchgeführt

Statt Einkleben könnte man auch 3 Löcher bohren und 2mm- Gewinde reinschneiden, mangels passendem Bohrer

habe ich die Klebevariante gewählt. Ich würde allerdings Gewinde empfehlen, die Kleberei ist extrem

diffizil!

 

 

090 Lochrasterplatte mit Reedkontakten fertig verdrahtet

 

Die Reedkontakte müssen stehend angeordnet werden, da bei liegender Anordnung der Kontakte beim Darüberfahren

mit dem Magneten zwei Schaltvorgänge, bedingt durch die beiden Kontakthälften, ausgelöst werden,.

Bei der stehenden Anordnung wird durch den Magneten nur immer eine Hälfte magnetisiert.

Die Trimmer liegen in Reihe zum jeweiligen Kontakt und werden einzeln mittels Ohmmeter abgeglichen,

Wertetabelle siehe unten.

 

 

100 fertig montierter Kombisensor

 

Als Windfahne wurde provisorisch eine Holzstange mit 14mm Durchmesser verwendet, ein

aus 4mm Sperrholz gesägtes Brettchen als Flügel.

In die Maststange wurde ein Loch zur Kabeldurchführung gebohrt, ein weiteres Loch befindet

sich innerhalb der Reduzierung ebenfalls zur Kabeldurchführung.

Der Magnet zur Reedauslösung wurde, auf dem Bild schlecht sichtbar, am Deckel (in einer Achse

zum Flügel) aussen angeklebt.

 

 

121 Magnet und Zentrierscheiben

Hier sind der Festplattenmagnet und die Zentrierbeilagscheiben zu erkennen,

zum Wetterschutz mit Heißkleber komplett überzogen

 

 

122 Magnet und Zentrierscheiben

 

 

123 in Betrieb

 

So sieht das Ganze im Garten im provisorischen Betrieb aus, endgültig soll der Sensor

zusammen mit dem KS300 auf einen Mast, da bei diesem Aufstellungsort, bedingt

durch die Nähe der Garage und des Hauses auch nur Hausnummern angezeigt werden

(der Wind kommt aus allen Richtungen...)

 

Tipps und Tricks:

Magnet:

Die zu den Kontakten erhältlichen Magneten sind für Aussenanbringung zu schwach.

Ich habe daher eine defekte Festplatte zerlegt. die darin enthaltenen Magneten sind extrem stark

und eignen sich hierfür vorzüglich.

Um einem gleichzeitigem Auslösen von zwei Kontakten vorzubeugen, wurde mittels Ohmmeter

die eindeutige Mittelstellung des Magneten ermittelt und markiert. An diese Markierungen werden

dann aussen an die Reduzierung Beilagscheiben geklebt, die den Sensormagneten in „Vorzugsstellung“

halten. Damit wird eine definierte Mittelstellung in eindeutigem Zustand garantiert, der geringe mechanische

Widerstand bei Windrichtungsänderung fällt nicht ins Gewicht, die Windfahne dreht bereits bei

Windgeschwindigkeiten kleiner 1km/h.

 

Widerstandstabelle:

 

Richtung

Grad

Temperatur

R / kOhm

N

360

-20,1

69

N/O

45

-7,1

37,5

O

90

5,8

21,45

S/O

135

18,7

12,81

S

180

32,6

7,62

S/W

225

44,5

5,03

W

270

57,5

3,28

N/W

315

70

2,22

 

Um zu vermeiden, daß sich der Sensor jedes mal, wenn kein Widerstand eingeschaltet ist, abmeldet,

wurde parallel zum Widerstandsnetzwerk ein Widerstand mit 180k parallel geschaltet. Dies hatte zwar einen

erneuten Abgleich aller Widerstände zur Folge, da sich der Gesamtwiderstand durch die Parallelschaltung

natürlich änderte, verhindert aber dadurch ein Abmelden des Sensors.

 

 

Software:

 

getestetes Script zur Anpassung der PostGres- Datenbank (mit Dank an DuffyDuc, der es erstellt hat):

 

------------------------------------------------------------

-- Rule: "dont_insert_winddirection ON winddirection"

CREATE OR REPLACE RULE dont_insert_winddirection AS

ON INSERT TO winddirection

WHERE new.newflag = false DO INSTEAD NOTHING;

------------------------------------------------------------

-- Rule: "dont_insert_sunshine ON sunshine"

CREATE OR REPLACE RULE dont_insert_sunshine AS

ON INSERT TO sunshine

WHERE new.newflag = false DO INSTEAD NOTHING;

------------------------------------------------------------

-- Function: temp2direction(real)

CREATE OR REPLACE FUNCTION temp2direction(real)

RETURNS integer AS

$BODY$

Declare

offset Integer := -20;

maxDegree Integer := 360;

tempdata Integer:= 0;

BEGIN

if $1>=Offset then

tempdata:=round(45*($1-Offset)/12.8575);

RETURN mod(tempdata,maxDegree);

else

RETURN 0;

END IF;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION temp2direction(real) OWNER TO postgres;

------------------------------------------------------------

-- Rule: "winddirection_add ON temp6"

CREATE OR REPLACE RULE winddirection_add AS

ON INSERT TO temp6 DO INSERT INTO winddirection (savetime, degree, newflag, fluctuation)

VALUES (new.savetime, temp2direction(new.weatherdata), true, 0);

------------------------------------------------------------

drop FUNCTION get_counteramount(real) cascade;

 

CREATE OR REPLACE FUNCTION get_counteramount(real, timestamp with time zone)

RETURNS integer AS

$BODY$

DECLARE

lastsavetime timestamp := now();

newcounteramount INTEGER := 0;

BEGIN

SELECT MAX(savetime) into lastsavetime FROM sunshine;

SELECT counteramount into newcounteramount FROM sunshine where savetime=lastsavetime;

if sunisshining($1) THEN

RETURN newcounteramount + Trunc(extract(epoch from ($2 - lastsavetime))/60);

ELSE

RETURN newcounteramount;

END IF;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION get_counteramount(real, timestamp with time zone) OWNER TO postgres;

 

CREATE OR REPLACE RULE sunshine_add AS

ON INSERT TO temp5 DO INSERT INTO sunshine (savetime, suncounter, counteramount, isshining, newflag)

VALUES (new.savetime, temp2sunshine(new.weatherdata), get_counteramount(new.weatherdata,new.savetime), sunisshining(new.weatherdata), true);

------------------------------------------------------------

-- Function: sunisshining(real)

-- th_sunshine soll der Threshold sein - selber einstellen

CREATE OR REPLACE FUNCTION sunisshining(real)

RETURNS boolean AS

$BODY$

DECLARE

th_sunshine integer := 65;

BEGIN

IF temp2sunshine($1) > th_sunshine THEN

RETURN 't';

ELSE

RETURN 'f';

END IF;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION sunisshining(real) OWNER TO postgres;

------------------------------------------------------------

-- Function: temp2sunshine(real)

-- SUN_Offset: Offset zum Tempsensor, dass dieser nur positive Werte ausgibt; selber einstellen

CREATE OR REPLACE FUNCTION temp2sunshine(real)

RETURNS integer AS

$BODY$

DECLARE

SUN_OFFSET INTEGER := 21;

BEGIN

RETURN round($1 + SUN_OFFSET);

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION temp2sunshine(real) OWNER TO postgres;

------------------------------------------------------------

-- Rule: "sunshine_add ON temp5"

-- temp2sunshine rechnet den Sensorwert um

--get_counteramount addiert die eingestellten Sonnenminuten auf den letzten Wert

--sunisshining wird anhand eines Thresholds ermittelt

CREATE OR REPLACE RULE sunshine_add AS

ON INSERT TO temp5 DO INSERT INTO sunshine (savetime, suncounter, counteramount, isshining, newflag)

VALUES (new.savetime, temp2sunshine(new.weatherdata), get_counteramount(new.weatherdata), sunisshining(new.weatherdata), true);

 

 

 

 

Erklärung:

Für etwaig entstehende Schäden jeglicher Art übernehme ich keinerlei Haftung,

die Verwendung dieser Anleitung geschieht auf eigene Gefahr des Anwenders!

 

 zurück zur Wetterseite

 

zur Homepage