Hallo,
ich möchte für mein Windrad einen dezentralen Windrichtungsmesser bauen.
Dieser soll schnell schwankende Richtungsänderungen per Software
ausmitteln damit sich das Windrad nicht wie bei klassischer Fahne zur
Drehung ständig hin und her bewegt. Dazu würde ich einen Zahnkranz und
einen Getriebemotor an dieses anbringen.
Der Windrichtungs-Sensor soll 36 Hall-Sensoren und eine drehbare Scheibe
mit einem Magneten bekommen um die 'Richtung zu erkennen.
Nun meine Frage: können Hall-Sensoren auch einen "stehenden" Magneten
erkennen oder nur bewgte Magneten?
Wenn so ein Hall Sensor (z.B. SI7211-B-00-IVR) ein stehendes Magnetfeld
erkennt, würde ich eine PCB mit 36 Sensoren erstellen die mittels
analog-Multiplexern dann von einem Controller ausgelesen werden und
somit die grobe Windrichtung liefern.
An optische erkennung mittel reflex-Lichtschranken habe ich auch schon
gedacht, jedoch gefällt mir es nicht, wenn sich Insekten oder Spinnen da
breit machen würden...
Oder hat jemand noch eine bessere Idee?
oder kann der sogar den Erd-Magnetismus messen?
Ich habe einige ADXL203 noch rumliegen, das sind eigentlich ja
Beschleunigungsmesser, ob die sich evt. auch dafür eignen würden?
Wolfram F. schrieb:> Ich habe einige ADXL203 noch rumliegen, das sind eigentlich ja> Beschleunigungsmesser, ob die sich evt. auch dafür eignen würden?
Nicht nur eigentlich - das SIND 2-Achsen Beschleunigungssensoren.
Die Achse bei einer Windfahne steht allerdings eher lotrecht und mit der
Windrichtung ändert sich dann an der Richtung des Schwerefeldes nichts -
das steht immer parallel zu der Achse der Windfahne.
Wolfram F. schrieb:> ...schnell schwankende Richtungsänderungen per Software> ausmitteln damit sich das Windrad nicht wie bei klassischer Fahne zur> Drehung ständig hin und her bewegt. Dazu würde ich einen Zahnkranz und> einen Getriebemotor an dieses anbringen.
Die Sollbruchstelle nicht vergessen, z.B. mit einem Zahnkranz aus dem
3D-Drucker oder so. Das könnte eine größere Reparatur sparen, wenn der
Rechner beim nächsten Gewitter abstürzt.
Plattenspieler hatten am Plattenteller eine Wanne mit Silikonöl in die
ein fest stehendes Paddel eintaucht. Die haben damit die
Drehzahl-Feineinstellung gemacht. Hier könnte man etwas ähnliches zwecks
Dämpfung verwenden.
Bauform B. schrieb:> Plattenspieler hatten am Plattenteller eine Wanne mit Silikonöl in die> ein fest stehendes Paddel eintaucht. Die haben damit die> Drehzahl-Feineinstellung gemacht. Hier könnte man etwas ähnliches zwecks> Dämpfung verwenden.
Eine Visco-Kupplung:
https://de.wikipedia.org/wiki/Visco-Kupplung
Zwei lineare Hallsensoren und ein Magnet genügen.
Das hab ich schon einmal gebastelt. Für meine Zwecke reichte eine
Auflösung für 12 Richtungen (30°; durch Mittelwertbildung entsprechend
genauer)
Grundprinzip: Je ein Sensor für die "N-S"- und für die "O-W"-Komponente
des Magnetfeldes. -Auswertung durch Tabelle oder Winkelfunktionen.
Für Auflösungen/Genauigkeiten im Bereich von wenigen Winkelgraden ist es
viel einfacher einen fertigen Sensorchip anzuwenden.
Wolfram F. schrieb:> ich möchte für mein Windrad einen dezentralen Windrichtungsmesser bauen.> Dieser soll schnell schwankende Richtungsänderungen per Software> ausmitteln damit sich das Windrad nicht wie bei klassischer Fahne zur> Drehung ständig hin und her bewegt. Dazu würde ich einen Zahnkranz und> einen Getriebemotor an dieses anbringen.> Der Windrichtungs-Sensor soll 36 Hall-Sensoren und eine drehbare Scheibe> mit einem Magneten bekommen um die 'Richtung zu erkennen.> Nun meine Frage: können Hall-Sensoren auch einen "stehenden" Magneten> erkennen oder nur bewgte Magneten?
Warum nimmst Du keinen Kompasssensor wie z.B. GY-271 (Kompassmodul)?
Spart den ganzen mechanischen Aufwand mit Magneten etc.
Kann man prima mit ESP, Arduino oder Raspi verwenden.
Steve
Hans schrieb:> Grundprinzip: Je ein Sensor für die "N-S"- und für die "O-W"-Komponente> des Magnetfeldes. -Auswertung durch Tabelle oder Winkelfunktionen.
Wenn man einen der von Wolfgang genannten verwendet, braucht man nur ein
IC.
Solange die absolute Ausrichtung nicht interessiert (absolte
Windrichtung wird nicht ausgewertet), braucht man auch keine
Nord-Süd-Ausrichtung bestimmen.
Hans schrieb:> Zwei lineare Hallsensoren und ein Magnet genügen.>> Das hab ich schon einmal gebastelt. Für meine Zwecke reichte eine> Auflösung für 12 Richtungen (30°; durch Mittelwertbildung entsprechend> genauer)> Grundprinzip: Je ein Sensor für die "N-S"- und für die "O-W"-Komponente> des Magnetfeldes. -Auswertung durch Tabelle oder Winkelfunktionen.>> Für Auflösungen/Genauigkeiten im Bereich von wenigen Winkelgraden ist es> viel einfacher einen fertigen Sensorchip anzuwenden.
Hast Du noch ein Photo vom Aufbau? Dann bitte posten.
Steve L. schrieb:>> Warum nimmst Du keinen Kompasssensor wie z.B. GY-271 (Kompassmodul)?> Spart den ganzen mechanischen Aufwand mit Magneten etc.> Kann man prima mit ESP, Arduino oder Raspi verwenden.>> Steve
Das ist wohl die beste Lösung!
Den werd ich mir mal bestellen!
Danke für die Info!!
Wenn du es mit den Gyro-, Kompass- oder Hallsensoren aufgebaut hast,
wirst du merken, dass das nicht die beste Idee war. Für mich verwende
ich beim Windmesser immer noch ein simples
Leitplastik-360°-Potenziometer. Gibt's z.B. von Bourns und anderen
Herstellern.
Wolfram F. schrieb:> Steve L. schrieb:>>>>> Warum nimmst Du keinen Kompasssensor wie z.B. GY-271 (Kompassmodul)?>> Spart den ganzen mechanischen Aufwand mit Magneten etc.>> Kann man prima mit ESP, Arduino oder Raspi verwenden.>>>> Steve>> Das ist wohl die beste Lösung!> Den werd ich mir mal bestellen!> Danke für die Info!!
Genau - die mechanische Konstroktion wird damit maximal "einfach": Den
Kompasssensor packst Du direkt auf die Windfahne. Dann brauchst du nur
noch einen leichtgängigen Schleifring, um Betriebsspannung und
Ausgangssignal(e) vom/zum Montagemast zu übertragen.
Bitte auch unbedingt Fotos posten!
Ludwig schrieb:> Dann brauchst du nur> noch einen leichtgängigen Schleifring, um Betriebsspannung und> Ausgangssignal(e) vom/zum Montagemast zu übertragen.>
ich würde eher eine Solarzelle montieren und 1-2 18650 Lipos mit
draufsetzen, Datenübertragung dann per LoRa.
Zusätzlich noch ein Mini Rotor an einem Festplattenmotor als Generator,
wäre ja passend!
Wolfram F. schrieb:> können Hall-Sensoren auch einen "stehenden" Magneten erkennen
Ja.
Wolfram F. schrieb:> Oder hat jemand noch eine bessere Idee?
Mir scheint dein Aufwand übertrieben.
Wenn eine dauerhafte Auswertung sichergestellt werden kann, tun es 2
Hallsensoren und ein Zahnkranz, wenn man analog kann reicht
Sinus/Cosinusencoder, oder eben die speziellen Drehsensoren wie AS5132.
Bauform B. schrieb:> Plattenspieler hatten am Plattenteller eine Wanne mit Silikonöl in die> ein fest stehendes Paddel eintaucht. Die haben damit die> Drehzahl-Feineinstellung gemacht
Welche ?
Steve L. schrieb:> Warum nimmst Du keinen Kompasssensor wie z.B. GY-271 (
Na ja, in der Nähe von Metallmasten hat man schon mal 30 Grad
Fehlweisung.
Warum immer so kompliziert mit Elektrik und so... Die eigentliche
Anforderung lautet:
Wolfram F. schrieb:> Dieser soll schnell schwankende Richtungsänderungen [...]> damit sich das Windrad nicht wie bei klassischer Fahne> zur Drehung ständig hin und her bewegt.
Das geht ohne Probleme rein mechanisch.
1.) Das Windrad drehbar lagern
2.) Eine Fahne an einem ausreichend langen Arm zur Ausrichtung gegen den
Wind
3.) Ein Rotationsdämpfer mit der Drehachse koppeln damit es nicht so
herumzappelt.
So etwas gibt es in den verschiedensten Ausführungen für überschaubares
Geld zu kaufen, z.B.
https://de.rs-online.com/web/c/konstruktionsmaterialien-und-industrielle-systemteile/vibrationsdampfungs-und-ausgleichkomponenten/drehbare-dampfer/
Kein Hall-Sensor, kein Getriebemotor, keine Steuerung --> keine
Probleme.
Helmut -. schrieb:> Wenn du es mit den Gyro-, Kompass- oder Hallsensoren aufgebaut hast,> wirst du merken, dass das nicht die beste Idee war.
Und was für ein Problem hast du damit?
Hast du vielleicht eine ungünstige Form der Windfahne gewählt und bist
auf die Dämpfung durch das Leitplastik-Poti angewiesen?
Icke schrieb:> Warum immer so kompliziert mit Elektrik und so... Die eigentliche> Anforderung lautet:
Manche würden halt auch gerne die Windrichtung elektronisch (ohne
zusätzliche Windfahne) auswerten.
Icke schrieb:> 3.) Ein Rotationsdämpfer mit der Drehachse koppeln damit es nicht so> herumzappelt.
50000 Zyklen sind bei Herbstwetter nach wieviel Tagen weggenudelt?
>Das geht ohne Probleme rein mechanisch.>1.) Das Windrad drehbar lagern
ist es sowieso
>2.) Eine Fahne an einem ausreichend langen Arm zur Ausrichtung gegen den>Wind
was wäre ausreichend?
>3.) Ein Rotationsdämpfer mit der Drehachse koppeln damit es nicht so>herumzappelt.
Und warum wird sowas bei den großen Windrädern nicht gemacht?
Meins hat einen Flügeldurchmesser von 3.60m und wird in 15m Höhe stehen,
da möchte ich nicht das es ständig bei jeder Böhe hin und her wandert.
Steve L. schrieb:>> Na ja, in der Nähe von Metallmasten hat man schon mal 30 Grad>> Fehlweisung.
wird auf Holz montiert, ca. 10m vom eigentlichen Mast entfernt
Wolfram F. schrieb:> Ludwig schrieb:>>> Dann brauchst du nur>> noch einen leichtgängigen Schleifring, um Betriebsspannung und>> Ausgangssignal(e) vom/zum Montagemast zu übertragen.>>> ich würde eher eine Solarzelle montieren und 1-2 18650 Lipos mit> draufsetzen, Datenübertragung dann per LoRa.> Zusätzlich noch ein Mini Rotor an einem Festplattenmotor als Generator,> wäre ja passend!
Genau - das macht die Konstruktion noch "vieeeeeeel einfacher"...
Wolfram F. schrieb:> Steve L. schrieb:>>> Na ja, in der Nähe von Metallmasten hat man schon mal 30 Grad>>> Fehlweisung.>> wird auf Holz montiert, ca. 10m vom eigentlichen Mast entfernt
So ein Mickymaus-Ausleger mit gerade mal 10m - natürlich auch aus Holz -
ist ja wirklich ein Klacks. 2-3 amtliche Spax-Schrauben, das hält dann
schon. Ich hatte das ja immer schon gesagt: Baustatik wird total
überbewertet!
Ludwig schrieb:> Wolfram F. schrieb:>> Steve L. schrieb:>>>> Na ja, in der Nähe von Metallmasten hat man schon mal 30 Grad>>>> Fehlweisung.>>>> wird auf Holz montiert, ca. 10m vom eigentlichen Mast entfernt>> So ein Mickymaus-Ausleger mit gerade mal 10m - natürlich auch aus Holz -> ist ja wirklich ein Klacks. 2-3 amtliche Spax-Schrauben, das hält dann> schon. Ich hatte das ja immer schon gesagt: Baustatik wird total> überbewertet!
Quatsch, da hast du wohl sehr viel falsch verstanden!
Der Windrichtungsmesser wird in ca. 10m Entfernung vom eigentlichen
Windrad-Mast auf einem Holzschuppen montiert, also keine metallischen
Gegenstände in der Nähe die den Kompass-Sensor beeinflussen würden.
Ok - bei der Größe ist eine frei (wenn auch gedämpft) drehende Variante
wahrscheinlich nicht so gut. Muss es denn sein dass du den
Windrichtungssensor selber bauen willst? Die gibt es mit einem
Analogausgang 0-10V bzw. 4-20mA fertig zu kaufen. Das Signal dann mit
einem kleinen Controller erfassen / mitteln und damit den Rotor passend
drehen.
Und für die Erfassung der Rotorposition würde ich eine
Reflexlichtschranken und eine passende Scheibe mit Gray-Codierung
wählen, dann sind auch die Übergänge kein großes Problem mehr.
Zu meiner Jugend gab es mal eine Wetterstation in der ELO - die hatte
die Windrichtung mit einer solchen Scheibe erfasst (und mit LED
dargestellt). Leider habe ich keine Ahnung aus welchem Heft die war...
Wolfram F. schrieb:> Quatsch, da hast du wohl sehr viel falsch verstanden!> Der Windrichtungsmesser wird in ca. 10m Entfernung vom eigentlichen> Windrad-Mast auf einem Holzschuppen montiert, also keine metallischen> Gegenstände in der Nähe die den Kompass-Sensor beeinflussen würden.
Dann kann man die Dämpfung auch per Software erledigen.
Das hätte den Vorteil, dann bei die schwachem Wind das Windrad schneller
in den Wind dedreht werden kann.
Icke schrieb:> Und für die Erfassung der Rotorposition würde ich eine> Reflexlichtschranken und eine passende Scheibe mit Gray-Codierung> wählen, dann sind auch die Übergänge kein großes Problem mehr.
oder per Magnetfeldsensor (weniger Schmutzprobleme).
Wolfram F. schrieb:> Hast du da mal eine Typenbezeichnung?
Ein Piher A15-3P kann das.
Und ein APLS RDC80 auch:
https://tech.alpsalpine.com/e/products/detail/RDC803101A/> Und geht das Poti tatsächlich um 360grad ohne Lücke?
Ja. Im Piher ist eine durchgehende Potibahn mit 3 Abgriffen im 120°
Winkel drin. Mit geschickter Ansteuerung kann man die absolute Lage
ermitteln.
Im ALPS wird die Lücke mit 2 um 180° gedrehten Schleifer überbrückt.
Joachim schrieb:> Hast Du noch ein Photo vom Aufbau? Dann bitte posten.
Kein Foto gefunden aber s. Beilage.
Zwei der Hallsensoren sind senkrecht stehend positioniert.
(bei 12 Uhr und bei 3 Uhr)
An der Achse der Windfahne ein kleiner Stabmagagnet.
Auswertung durch 2 x ADC im PIC
Es wurden nur 12 Richtungen ausgewertet und per rs232 (aber 0V / 3V)
ausgegeben.
Wolfram F. schrieb:> Quatsch, da hast du wohl sehr viel falsch verstanden!> Der Windrichtungsmesser wird in ca. 10m Entfernung vom eigentlichen> Windrad-Mast auf einem Holzschuppen montiert, also keine metallischen> Gegenstände in der Nähe die den Kompass-Sensor beeinflussen würden.
Ich „wollte“ dich falsch verstehen - um drauf aufmerksam zu machen, in
welch übertrieben aufwendige Richtung du steuerst. Ganz entgegen dem
Credo KISS.
Die Windrichtung misst man vorteilhafterweise auf und relativ zur
„Generatorgondel“ und führt die Gondel so nach, dass der Wind immer von
vorne kommt.
Dazu eignet sich ein z.B. kleines Hilfs-Windrad, entweder quer zur
Windrichtung und anströmbar von beiden Seiten oder ein Rad vom Typ
„Drehkreuz“ mit Teilabdeckung von vorne. Bei Beiden wertet man
(vorrangig) die Laufrichtung aus. Das geht im Prinzip mit 2
Reedkontakten, oder auch optisch, oder oder oder...
Oder man vermeidet die Mechanik und denkt sich was aus mit 2
(selbst)-beheizten Temperatursensoren, links und rechts einer in
Windrichtung stehender Trennwand.
Aber macht mal selbst ...
Wolfram F. schrieb:> Hast du da mal eine Typenbezeichnung?> Und geht das Poti tatsächlich um 360grad ohne Lücke?
Eine kleine Lücke ist immer gegeben. Das ist bei mir verbaut:
https://www.mouser.de/datasheet/2/427/model357-1764384.pdf
Aber meine Vorredner haben ja auch Vorschläge gemacht. Verwende die
Dinger schon seit 20 Jahren in meiner Wetterstation.
Die Lücke hat auch den Vorteil, dass deine Steuerung nicht immer hin-
und zurück fährt, wenn der Wind genau aus der Richtung kommt, wo der
Endanschlag des Motors ist.
Peter N. schrieb:> spess53 schrieb:>> Dann bau doch so etwas:>>>> https://www.dl1glh.de/ultraschall-anemometer.html>> Wie baut man sowas ohne Spezialequipment, wie Windkanal usw.?
Gar nicht. Aber man kann einen "Windkanal des kleinen Mannes" bauen.
Muss nur lang genug sein, damit wenig Verwirbelungen entstehen.
für die Wetterstationen von La Crosse gibt es die Windmesser TX20 mit
Windfahne. Die Stellung der Windfahne wird über 4 LEDs und eine
spezielle Lochscheibe ermittelt. Das Prinzip kann man hier erkennen:
https://www.john.geek.nz/2011/07/disassembling-a-la-crosse-tx20-wind-anemometer/
Die Winkelauflösung beträgt 22,5 Grad (360/16). Ist nicht direkt eine
Profilösung funktioniert aber, da bis auf die Lagerung verschleißfrei,
bei mir seit vielen Jahren.
Den Windmesser TX20 kann man evtl. als Ersatzteil noch irgendwo kaufen.
Kutte R. schrieb:> Die Stellung der Windfahne wird über 4 LEDs und eine> spezielle Lochscheibe ermittelt.
Der Code, der mit der Lochscheibe erzeugt wird, ist ein ganz
gewöhnlicher 4-Bit Gray-Code. Dies ergibt die schon genannte Auflösung
von 1/16 Vollkreis oder eben die 22.5° (2 naut. Strich).
Wenn man diese Werte bei ausreichenden Fluktuationen der Windrichtung
zeitlich mittelt, bekommt man damit auch auf eine deutlich höhere
Auflösung (Erhöhung der Auflösung durch Überabtastung), was für das
Windrad erstrebenswert ist.
Wolfram F. schrieb:> Der Windrichtungsmesser wird in ca. 10m Entfernung vom eigentlichen> Windrad-Mast auf einem Holzschuppen montiert
Bist du sicher, dass der Holzschuppen den Wind nicht lokal ablenkt und
zu Verwirbelugen führt?
STK500-Besitzer schrieb:> Das hätte den Vorteil, dann bei die schwachem Wind das Windrad schneller> in den Wind dedreht werden kann.
Und dann?
Bei schwachem Wind liefert das sowieso keine rechte Leistung - bringt
also nicht viel.
Wolfgang schrieb:> Bei schwachem Wind liefert das sowieso keine rechte Leistung - bringt> also nicht viel.
Würde den Wirkungsgrad erhöhen.
Ist aber auch nur eine theoretischer Vorschlag.
Es ging mir und die Dämpfung, da die Ausrichtung des Windrads ja
elektrisch erfolgen soll.
STK500-Besitzer schrieb:> Würde den Wirkungsgrad erhöhen.
... wohl eher verringern, wenn man den Aufwand für die aktive
Ausrichtung in der Rechnung berücksichtigt ;-)
Wolfgang schrieb:> ... wohl eher verringern, wenn man den Aufwand für die aktive> Ausrichtung in der Rechnung berücksichtigt ;-)
Um die Ausrichtung geht es hier doch ("Kundenanforderung").
Der beste Wirkungsgrad wäre eh, wenn das Ding passiv in den Wind gedreht
wird.
Dann wäre eine mechanische Dämpfung aber auch ratsam.
Moin Leute,
habe inzwischen das Mini-Windrad zum messen der Windrichtung und der
Windgeschwindigkeit sogut wie fertig. Zur Verwendung sind ein
Festplattenmotor zum messen der Geschwindigkeit (noch nicht im Code
drin) und zum zusätzlichen laden der LiPo Zelle zum Einsatz gekommen. An
diesem Festplattenmotor ist auch der mit 48cm Durchmesser kleine Rotor
aus 50er Kanalrohren montiert. Die Berechnung der Flügel erfolgte
mittels dem RoWi-Tool, (siehe
https://www.kleinwindanlagen.de/Forum/cf3/topic.php?t=3502 ) sehr zu
empfehlen um Flügel aus Kanalrohren herzustellen!
Das Ganze ist auf einer CNC-gefrästen 6mm Aluplatte montiert welche
wiederum auf einem Festplattenmotor drehbar montiert ist. Dieser dient
aber nur als mechanische Lagerung. (Ja, habe kürzlich etliche alte
Festplatten geschlachtet :-) )
Die Flügel sind auch bereits feingewuchtet. Halten bis zu 3000U/min
problem- und vibrationslos aus. Getestet mit einem 3Phasen Generator auf
12V direkt auf den Festplattenmotor. Macht ganz schön Wind in der
Werkstatt! endlich mal alles wieder Staubfrei ;-)
Die PCB ist ein altes Vero-Board, ideal für sowas.
Drauf ist eine 18650 Samsung LiPo Zelle (mit der die Elektronik bereits
ca. 5-6Tage ohne laden läuft!) , ein Arduino Nano, 2 StepDownwandler
(1Mhz) für Solarzelle und Wind sowie der GY-271.
Es fehlen noch das 433Mhz LoRa Funkmodul, ein INA3221 Modul zum messen
der Solarzelle und des Windrad-Generator sowie die "Fahne" am Windrad..
Ich habe auch schon eine kleines Programm zum "mitteln" der Richtung
im Arduino drin, es liefert ca. alle 30Sekunden einen Wert der Richtung.
Das funktioniert schonmal super, Probleme wird es wohl geben, wenn der
Wind von Norden kommt (=0Grad) und die Richtung sich etwas gegen den
Uhrzeigersinn
sich dreht, dann wären die gemittelten Werte ja zwischen 0 und 360 Grad,
oder sehe ich das falsch?
Hier mal der Code:
1
// Windrichtungs Messmodul
2
// 22.01.2023 W.Fischer
3
//
4
// liefert den Azimut in Grad
5
// 0 Grad = Norden
6
// 90 Grad = Osten
7
// 180 Grad = Süden
8
// 270 Grad = Westen
9
// https://de.wikipedia.org/wiki/Azimut
10
// es werden x mal die Richtung gemessen, addiert und
11
// danach durch x wieder geteilt um den Mittelwert zu erhalten.
################################
Wie würdet Ihr das "mitteln" ?
################################
PS: auch wenn manche meinen dies wäre alles viel zu aufwändig, bis jetzt
hat es viel Spass gemacht und hat ja auch fast nix gekostet!
Schöner wäre natürlich, wenn man das Signal was die großen Windräder als
Richtung bekommen, "anzapfen" könnte...
Das Problem des Sprunges bei schwankenden N-Richtungen löst sich,
wenn man die einzelnen Messungen als Vektoren addiert und erst die
Resultierende durch die Anzahl der Messungen dividiert.
....kann deinen code nicht sicher analysieren weil ich nur in assembler
programmiere - aber angenommen es gibt 3 Richtungsmessungen:
0°
0°
350°
Summe = 350 Durchschnitt (:3) ist dann 116,6° und falsch.
Liefert dein Code in so einem Fall ein korrektes Ergebnis?
Ja? -dann ist es OK.
Ich hätte so gerne die 36 hall sensoren gesehen.
Aber nein, er baut einen popel-kompass ein.
Gleich über dem permanenterregten generator nehm ich an.
Zeig bitte wie das läuft !
Max M. schrieb:> Ich hätte so gerne die 36 hall sensoren gesehen.> Aber nein, er baut einen popel-kompass ein.> Gleich über dem permanenterregten generator nehm ich an.>> Zeig bitte wie das läuft !
ist noch nicht montiert, aber in der nähe von dem festplattenmotor
ändert sich so gut wie nix am kompass signal>! Scheint gut magnetisch
abgeschirmt zu sein.
Wolfram F. schrieb:> Max M. schrieb:>> Ich hätte so gerne die 36 hall sensoren gesehen.>> Aber nein, er baut einen popel-kompass ein.>> Gleich über dem permanenterregten generator nehm ich an.>>>> Zeig bitte wie das läuft !>> ist noch nicht montiert, aber in der nähe von dem festplattenmotor> ändert sich so gut wie nix am kompass signal>! Scheint gut magnetisch> abgeschirmt zu sein.
Getestet mit ner Kompass-App auf dem Handy direkt hinter dem
Festplattenmotor.
Du musst die einzelnen Messwerte erst so aufbereiten
wind_raw=get_winddir();
real[wind_i]=cos((float)(wind_raw/180.0*M_PI));
imag[wind_i]=sin((float)(wind_raw/180.0*M_PI));
und dann die gespeicherten Werte wieder so umrechnen
for(int i=0; i<20; i++){
vect_real+=real[i];
vect_imag+=imag[i];
}
dir_rad=atan2(vect_imag, vect_real);
wind_dir=(int)(dir_rad/M_PI*180.0);
Max M. schrieb:> Wie würdest du das lösen?
Helmut, dein ansatz ist krass kompliziert.
Aber plausibel.
Ansatz:
Man bildet die differenz zwischen den messungen.
Die differenz normiert man auf -180 .. +180 grad.
1
If (x> 180) x-=360;
2
If (x<-180) x+=360;
Die normierten differnzen werden aufsummiert und durch anzahle messungen
geteilt. Das resultat wird zur erstem messung addiert.
Helmut -. schrieb:> Du musst die einzelnen Messwerte erst so aufbereiten>> wind_raw=get_winddir();> real[wind_i]=cos((float)(wind_raw/180.0*M_PI));> imag[wind_i]=sin((float)(wind_raw/180.0*M_PI));>> und dann die gespeicherten Werte wieder so umrechnen>> for(int i=0; i<20; i++){> vect_real+=real[i];> vect_imag+=imag[i];> }> dir_rad=atan2(vect_imag, vect_real);> wind_dir=(int)(dir_rad/M_PI*180.0);
Verstehe ich noch nicht ganz, was ist
Wolfgang schrieb:> Wolfram F. schrieb:>> Verstehe ich noch nicht ganz, was ist*M_PI>> Umrechnungskonstante π> cos() bzw. sin() erwarten den Winkel im Bogenmaß
puhh, ich glaube da habe ich in Mathe gefehlt,
da brauche ich noch Hilfe oder muss mich schlau lesen. Sorry
Was genau macht der Code denn, um Unterschiede zwischen 0 und 360 Grad
zu differenzieren?
Max M. schrieb:> Hans schrieb:>> 0°>> 0°>> 350°>> Summe = 350 Durchschnitt (:3) ist dann 116,6° und falsch.>> Wie würdest du das lösen?
Ich würde jede Einzelmessung in einen Vektor umrechnen. -in der
Ausgabeform delta x und delta y. (x und y mit Vorzeichen f. nach li./re
bzw. nach oben/unten; -normales Koordinatensystem)
Dann sämtliche x werte addieren und sämtliche y werte addieren.
Das gibt den Summenvektor. Dividiert man den durch die Anzahl der
Messungen (x dividieren; y dividieren) erhält man den durchschnittlichen
vektor der die Richtung und Windstärke darstellt.
Mit Phytagoras und Winkelfunktion erhält man dann die gewünschte
Durchschnittsgeschwindigkeit und die Durchschnittsrichtung.
Skizze zeichnen sollte das grundprinzip klarmachen.
Hans schrieb:> Ich würde jede Einzelmessung in einen Vektor umrechnen. -in der> Ausgabeform delta x und delta y.
sin() und cos() SIND die Vektorkomponenten (s.o.)
Hans schrieb:> Ich würde jede Einzelmessung in einen Vektor umrechnen. -in der> Ausgabeform delta x und delta y.
Das ist das gleiche wie der Helmut vorgeschlagen hat.
Dazu braucht es pro messung ein sin() und ein cos().
Meine differenzmethode ist einfacher. Aber ungetestet.
Max M. schrieb:> Hans schrieb:> Das ist das gleiche wie der Helmut vorgeschlagen hat.> Dazu braucht es pro messung ein sin() und ein cos().
Ja, ist mir klar - hab versucht das Grundprinzip darzustellen (das man
sich als graphische Lösung gut vorstellen kann) ohne vielleicht "mit
Formeln und unbekannten Symbolen" zu verwirren.
(Wenn das mathematische Prinzip verstanden ist, muss man ja nur mehr
rechnen....)
Ahh, ok, sieht schon besser aus, aber es wird nicht genug "geglättet"
Das ganze muss dann wohl nochmals in eine for-schleife um den Mittelwert
der Richtung zu bekommen. Wenn ich den Sensor drehe sind die Werte
sofort da.
Wolfram F. schrieb:> es wird nicht genug "geglättet"
Die "meas[x] = meas[x-1];" muttu über die ganze filterlänge machen, bei
dir also 39 mal. Sonst taugt das nix. Pack das in einen for loop.
------------------------------------
Alternativ auf die meas[] umschichtung verzichten und:
meas[measpt] = compass.getAzimuth();
measpt++;
if (measpt >= maxmeas) measpt = 0;
rest wie gehabt.
Max M. schrieb:> Helmut, dein ansatz ist krass kompliziert.> Aber plausibel.
Das ist nicht krass kompliziert, sondern normale Vektorrechnung. Sin und
Cos machen Imaginär- und Realteil, welche dann getrennt voneinander
aufsummiert werden. Dadurch entsteht die Glättung. Das Dividieren durch
die Anzahl kannst du dir schenken, denn Re und Im sind ja skaliert. Und
der ATAN2 macht dann die Umwandlung in eine Richtung. Schau dir mal die
Math.h in C an. Dort ist auch die Konstante Pi definiert, da die
Funktionen Bogenmaß wollen, ich aber Ein- und Ausgabe in Grad habe.
Alles keine Hexerei, nur Oberstufenmathematik.
Helmut -. schrieb:> Das ist nicht krass kompliziert
Ok, einigen wir uns auf krass aufwendig.
2 trigo funktionen per sample.
Zuerst wandelt der sensor seine kartesischen werte mit atan in winkel
um, und dann wandelst du winkel wieder in kartesische zurück, filterst,
dann nochmal atan. Geil.
Das beste wäre eigentlich wenn er die kartesischen sensordaten aus dem
moduldriver nimmt, diese filtert und dann den atan selber macht.
Müsste man wissen welche sensordriver er verwendet.
es ist ein GY-217 mit QMC5883L Chip
Habe das Programm nun zufriedenstellend am Laufen,
es wird nun nur alle 5Sek. aufgerufen , die Werte sind schön gerundet,
getestet mit regelmäßigen hin und her Bewegungen der ganzen Platine.
Du musst pro main loop nur ein mal lesen, 39 mal verschieben, und die
differenzrechnung kommt später im eigenen for loop.
-------------------------
Die getazimuth sieht so aus:
1
int QMC5883LCompass::getAzimuth(){
2
int a = atan2( getY(), getX() ) * 180.0 / PI;
3
return a < 0 ? 360 + a : a;
4
}
Nun könntest du die getY() und getX() rufen, diese separat filtern, und
dann den atan machen.
Oder:
Du initialisierst die eingebaute smoothing funktion
wird denn bei getAzimut auch erneut die Richtung gelesen?
Daher habe ich compass.read mit eingefügt
mit compass.setSmoothing(10000,true); wird es noch ruhiger, perfekt
bleibt noch zu wissen/schätzen, wie oft das eigentliche große Windrad
nun den Daten folgen soll, was macht Sinn?
Zu schnell wie jetzt (alle 5Sek) macht wohl kaum Sinn, vielleicht
minütlich?
Alle 10min? Die Hauptwindrichtung ändert sich ja auch nur bei Tornados
sehr schnell
Moin moin,
ich bin ein großes Stück weiter und kurz davor, das Mini Windrad mit der
Elektronik zu montieren!
Heute habe ich das LoRa RA-01 Modul eingebaut und angeschlossen.
Das Programm funktioniert prima und der Akku ist ohne nachladen noch
immer bei 3.85V ! Dank Sleep-Modus verbraucht die Elektronik ganz wenig.
Tests mit der Reichweite des LoRa Moduls haben nur positives ergeben
(wie ich aber schon früher festgestellt habe) Selbst wenn die
Windrad-Elektronik sich beim Nachbarn befindet mit 8 Wänden und 2
Garagentore in Sichtweite gibt es null fehlerhafte Übertragungen! Ich
muss dazu sagen, es ist auf jeden Fall empfehlenswert die 433Mhz
Variante anstatt die 868Mhz zu verwenden! Die 868Mhz Variante ist viel
mehr anfällig gegen Wände oder sonstige Hindernisse! Je höher die
Frequenz desto höher die Fehler.
Da wir eine Senioren-WG betreiben, habe ich bereits vor ca. 4Jahren 10
Handsender und eine Station basierend auf dem 433Mhz LoRa Modul gebaut
und diese funktionieren im Vergleich zu "kaufbaren" Lösungen fast egal,
wo sie sich befinden. (innerhalb des Hauses überall, draussen noch in
etwa 80m)
Die Station empfängt "nebenbei" auch noch die NTP Uhrzeit und zeigt
diese auf einem TFT Display an. Da ich noch eine Prototyp Variante der
Station hier in der Werkstatt am laufen habe, habe ich zum testen
einfach die Uhrzeitdaten mit denen des Windrades getauscht. So sehe ich
nun auf dem Display die gemittelte Grad Zahl, die Akku Spannung und die
PV und Windrad Spannung. Daher im Listing auch ein paar Daten die später
anders aussehen werden. Geplant ist noch ein LoRa-2-Wifi-2-MQTT Wandler,
so daß ich die Daten auch in HomeAssistant weiterverwenden oder
kontrollieren kann.
Und nun das aufgeräumte Listing...
(es wurden alle serielle Ausgaben entfernt, die braucht man ja nur zum
debuggen sowie einige Kommentare auf Deutsch hinzugefügt.)
Vielleicht gibt es ja für den ein oder anderen Anregungen oder
Lösungen...
1
// Windrichtungs Messmodul
2
// 29.01.2023 W.Fischer
3
//
4
// liefert die Windrichtung in Grad
5
// 0 Grad = Norden
6
// 90 Grad = Osten
7
// 180 Grad = Süden
8
// 270 Grad = Westen
9
// https://de.wikipedia.org/wiki/Azimut
10
// es werden x mal die Richtung gemessen, addiert und
11
// danach durch x wieder geteilt um den Mittelwert zu erhalten.
12
// an IO2 ist ein 47µF Elko mit 10MOhm Entladewiderstand als Timer für den IRQ verbunden
13
14
#include<SPI.h>
15
#include<LoRa.h>
16
#include<Wire.h>
17
#include<avr/sleep.h>
18
#include<QMC5883LCompass.h>
19
QMC5883LCompasscompass;
20
intkeep_ADCSRA;// ADC Settings sichern
21
unsignedinti;
22
unsignedintii;
23
intdsum;
24
unsignedintloop_counter;
25
intres;
26
intmiddle_res;
27
intmaxmeas=50;// Anzahl der Messungen / Oversampling
28
intmeas[50];
29
unsignedlongpreviousMillis=0;
30
floatpv=0.0;
31
floatwind=0.0;
32
floatbat=0.0;
33
bytelocalAddress=199;// address of this device
34
bytedestination=100;// destination to send to
35
Stringoutgoing;// outgoing message
36
Stringlorasendstring="*20:00 29.01.2023*";
37
#define LED 4 // Sende-LED, leuchtet in eine Kuppel auf dem Windrad zur optischen Kontrolle
LoRa.write(outgoing.length());// Länge von "outgoing" senden
138
LoRa.print(outgoing);// Kennwort zur Station senden
139
LoRa.print(lorasendstring);// String mit Grad, Bat/PV/Wind Volt senden
140
LoRa.endPacket();// Paket beenden und senden
141
LoRa.end();// LoRa beenden um Strom zu sparen
142
SPI.end();// SPI beenden um Strom zu sparen
143
digitalWrite(LED,LOW);// Sende-LED ausschalten
144
}
145
}
146
147
voidread_voltages()
148
{
149
bat=0.0;
150
pv=0.0;
151
wind=0.0;
152
153
for(ii=0;ii<10;ii++)
154
{
155
bat+=analogRead(A0);
156
delay(50);
157
pv+=analogRead(A1);
158
delay(50);
159
wind+=analogRead(A2);
160
delay(50);
161
}
162
ii=bat/10;
163
bat=map(ii,0,1023,0,1694)/100.00;
164
ii=pv/10;
165
pv=map(ii,0,1023,0,1694)/100.00;
166
ii=wind/10;
167
wind=map(ii,0,1023,0,1694)/100.00;
168
}
Was ich noch suche:
Gibt es irgendwas was man gut als Drehantrieb für das große Windrad
nehmen könnte? Ein Getriebemotor mit Schneckenantrieb habe ich bereits,
aber wo bekommt man ein großes ca. 250mm dm Zahnrad oder Zahnriemenrad
her?
Wenn es sowas nicht gibt, muss ich es wohl selber fräsen.
Schönen Abend noch,
Gruß, Wolfram
´
Wolfram F. schrieb:> Moin moin,> ich bin ein großes Stück weiter und kurz davor, das Mini Windrad mit der> Elektronik zu montieren!
Ja - so kann man das auch machen...
[viel mehr oder weniger unnützen Programmcode gelöscht ...]
Eigentlich setzt man eine Windfahne AUF die Generatorgondel. Also auf
das Teil, das man eigentlich in Windrichtung ausrichten will.
Die Windfahne muss dann nur noch entscheiden, ob sie von rechts oder
links angeströmt wird. Entsprechend dreht man die Gondel in die richtige
Richtung: Bei Meldung "Wind von rechts" dreht man nach rechts, und vice
versa.
Und voilà, das Windrad dreht in den Wind, ganz egal wo dieser im Moment
her kommt. Und das Ganze ohne SINUS, COSINUS, ATAN2 und so'n Quatsch.
Entsprechendes Equipment (oft rein mechanisch - und hält trotzdem
tonnenschwere Schiffe auf Kurs) ist seit mindesten 100 Jahren auf
Segelyachten verbaut:
https://img.nauticexpo.de/images_ne/photo-mg/22019-235407.jpg
Hier die Version mit Hilfspropeller und landgestützt:
https://de.wikipedia.org/wiki/Windrichtungsnachf%C3%BChrung
Aber das hatte meine Namenvetter (HI BRO!) vor Wochen schon
vorgeschlagen:
Beitrag "Re: Windrichtungserkennung mit Hall Sensor"
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang