Skocz do zawartości

Wiatromierz


piter161

Pomocna odpowiedź

Piszą o braku dokumentacji technicznej, ale jeśli zdanie o kontaktronie jest prawdziwe to znaczy, że na osi masz magnesik który zwiera (raz na obrót?) kontaktron. W Arduino wystarczy w takim razie mierzyć okres/częstotliwość zwarć zestyku i masz pomiary wiatru. Skalowanie do rzeczywistej prędkości w m/s możesz zrobić samochodem, wystawiając to coś przez okno.

Link do komentarza
Share on other sites

Najtaniej to będą dwie przepołowione piłeczki pingpongowe przyklejone do dwóch patyczków od szaszłyków, a to wszystko wkłute po kątem 90° w korek od wina. Oś ze szprychy rowerowej kręcąca się w podstawie z puszki po kukurydzy. Do osi przyczepiony plastrem magnesik a obok kontaktron i 2 metry kabelka. Nie licząc kosztów jedzenia, wychodzi jakieś 2 złote za kontaktron, bo przecież magnes znajdziesz w szufladzie.

  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Istnieje też możliwość wykonania prostego enkodera , osadzenie go na osi i odczytu liczby obrotów za pomocą prostego czujnika zbudowanego z transoptora szczelinowego lub z diody IR i fototranzystora . W programie musiał byś skorzystać z przerwań (taki prosty tachometr obrotowy)😃 . Wydaje mi się że kontaktron będzie problematyczny ze względu na drgania styków i trochę zbyt wolny do takiej aplikacji. A co do pinpongów przeciętych na pół to świetny pomysł 😃

https://www.forbot.pl/forum/topics61/miernik-predkosci-obrotow-silnika-vt4924.htm

Link do komentarza
Share on other sites

Cahir, proszę...

"kontaktron będzie problematyczny ze względu na drgania styków"

A Ty myślisz, że z czego były robione klawiatury komputerowe przez ostatnie 50 lat historii? Skoro systemy zrobione z TTL lub pierwsze, 4-bitowe mikroprocesory wykonujące 100 tysięcy instrukcji na sekundę radziły sobie z tak trywialnym problemem to dzisiejsze, 100 razy szybsze AVRy czy STMy sobie nie poradzą? Co jest takiego magicznego w tych drganiach zestyków, że każdy kto się o nich dowie już panicznie próbuje kondensatorka lub w ogóle wyrzucić przełącznik, bo to samo zło. Myślisz, że przy wolnozmiennym sygnale z fototranzystora nie będziesz miał problemu? Tak, napiszesz 20 linii kodu więcej i zamiast prostego odczytu portu będziesz wołał funkcję switchRead (spróbuj kiedyś - rzeczy poznane nie straszą) lub wywołasz coś gotowego z biblioteki.

Poza tym czujnik IR jest aktywny - potrzebuje prądu, nie szkoda Ci go?

Nie chcę wyjść na zramolałego maniaka "starych, dobrych" rozwiązań i wszystko mi jedno jak byłyby wykrywane obroty osi, ale nie dajmy się zwariować. Pewne rzeczy są trudne, owszem, ale akurat programowa eliminacja drgań zestyków to kanon projektowania systemów wbudowanych czyli "robienia w mikrokontrolerach", czyż nie?

Link do komentarza
Share on other sites

No cóż może rzeczywiście za mocno zdemonizowałem zjawisko drgania styków ponieważ w Arduino IDE wystarczą 3 linijki kodu żeby się ich z grubsza pozbyć w najmniej skomplikowany sposób .

W poprzedniej wypowiedzi chciałem jedynie zaznaczyć , że jeżeli użyjemy kontaktronu to na pewno się z nimi spotkamy 😃 . Nie uważam jednak , że w stosowaniu kondensatorów czy też nawet zewnętrznych rezystorów podciągających w celu walki z drganiami jest coś złego i nie na miejscu . Przedstawiłem jedynie troszkę bardziej skomplikowaną alternatywe dla magnesu

i kontaktrona , która także będzie poprawnie mierzyć obroty 😃

Link do komentarza
Share on other sites

Cahir, Jak chcesz walczyć z drganiami za pomocą rezystora podciągającego?

A jeśli chodzi o kondensator to problem jest taki że powstaje moment w którym napięcie na pinie cyfrowym jest wyższe niż to które jest gwarantowanym 0 (zwykle 0,7V) a niższe niż gwarantowane 1 (VCC - 0,7). Co ogólnie jest złym pomysłem.

Link do komentarza
Share on other sites

marek1707, a w jaki sposób proponujesz zrealizować pomiar czasu pomiędzy kolejnymi zwarciami zestyku? Przerwanie zewnętrzne z programową eliminacją drgań (polegającą na sprawdzaniu czy odstęp czasu od poprzedniego przerwania jest wystarczająco duży) będzie ok?

Link do komentarza
Share on other sites

Nie, wejść z zestyków nie wolno używać wprost do wyzwalania przerwań sprzętowych. Ale też przerwania nie służą bezpośrednio do pomiaru czasu. Gdybyś chciał wykorzystać jakieś mechanizmy timerów, to wtedy wejścia Input Capture, ale to już wymaga czystych sygnałów bo typowe filtry - takie jak np. na wejściu ICP w ATmegach raczej tego nie zlikwidują. Bardziej rozbudowane timery, jak w STM32 mają filtry cyfrowe programowane w szerokich granicach. Natomiast tutaj wystarczy moim zdaniem programowe odkłócanie, zupełnie jak przycisku klawiatury i pomiar liczby czystych impulsów w czasie np. 10 czy 30 sekund. Wiatromierz nie musi mierzyć okresu każdego obrotu wiatraczka, to nie apteka. Ponieważ częstotliwość impulsów nie będzie duża (maks. 10/sekundę?) to zupełnie spokojnie wystarczy wstawić funkcję obsługi tego zestyku do jakiegoś okresowego przerwania typu "system tick" np. 1kHz, które i tak liczy czas systemowy. Co ustalony czas można odczytywać licznik impulsów i go zerować, a wynik przepisywać do zmiennej "aktualny_wiatr".

Link do komentarza
Share on other sites

Dziękuję za odpowiedź.

W urządzeniu które buduję będę potrzebował jednak jak najdokładniejszego pomiaru i szybkiej reakcji na zmianę prędkości wiatru - jednym z wymagań jest pomiar porywu.

Wykorzystać planuję stację pogodową podlinkowaną przez Autora tematu (z Botlandu).

Jeżeli uparłbym się na wykorzystanie przerwania zewnętrznego w mikrokontrolerze ( i pomiarze prędkości wiatru dla każdego zwarcia zestyku + filtracja dolnoprzepustowa uzyskiwanych prędkości), to czy taki układ pozwoli na zlikwidowanie drgań styków?

(obrazek skopiowany z dokumentacji układu SN74HC14 od TI)

Zestyk anemometru podciągnięty jest do Vcc rezystorem i magnes w pobliżu styku zwiera wejście inwertera do masy. Zakładam, że stosunek czasu zwarcia zestyku do czasu drgań jest odpowiednio wysoki (no tak co najmniej 3) i uda się dobrać odpowiedni filtr RC.

Moje pytanie czy zaproponowane przeze mnie rozwiązanie ma sens? A może istnieje prostsze/łatwiejsze/bardziej niezawodne rozwiązanie?

Link do komentarza
Share on other sites

Tak, dolnoprzepustowy filtr RC i przerzutnik Schmitta to standardowa metoda. Nie widzę tu zagrożeń. Jedynie to, że mając zestyk nie jesteś już w stanie mierzyć bardzo dokładnie, bo z definicji będzie niepewność związana z czasem tłumienia drgań. Ponieważ kolejne zwarcia i rozwarcia są losowe, masz rozrzut. Filtr usuwa wielokrotne odbicia, ale wartość średnia napięcia na wyjściu filtra nadal ma losową wartość (w okresie przejściowym) i zbocze wyjściowe po przerzutniku ma jitter nawet przy idealnie stałych obrotach wiatraczka. W takiej sytuacji rzeczywiście lepszy będzie czujnik optyczny plus oczywiście wejście ICP timera.

Nie wiem do czego to będzie używane, bo typowe stacje pogodowe raczej uśredniają pomiary za długie okresy niż próbują wychwytywać wartości chwilowe, ale może pomyśl nad innymi metodami. Pierwsza która mi przychodzi do głowy do odchylana płytka. Może mieć dużo mniejszą bezwładność niż obracający się wiatrak więc może szybciej reagować na podmuchy. Trzeba ją niestety ustawiać do kierunku wiatru, więc potrzebna jest obrotowa oś i skrzydełko. A może więcej takich płytek ustawionych po kątem do siebie?

Są jeszcze metody ultradźwiękowe, oparte na prędkości dźwięku w powietrzu. Próbowałem to kiedyś robić i działa 🙂 W sieci widziałem kilka realizacji tego pomysłu: nadajniki i odbiorniki ustawione w trójkąt, kwadrat lub inny wielokąt i pomiar czasu przelotu impulsu w jedną i drugą stronę między każdą parą daje nie tylko prędkość, ale i kierunek wiatru. Ponieważ jeden "strzał" to pojedyncze ms, cały pomiar nie licząc obliczeń może zamknąć się np. w 20ms. No i kompletny brak części ruchomych:

http://hackaday.com/2013/08/21/ultrasonic-anemometer-for-an-absurdly-accurate-weather-station/

W metodzie termistorowej masz cienki drucik nagrzewany stabilizowanym prądem a chłodzony przepływającym powietrzem. Możesz na bieżąco mierzyć napięcie na nim (a więc rezystancję a więc temperaturę) i na podstawie aktualnej temperatury i tablic kalibracyjnych przeliczać to na prędkość powietrza. Drucik ma bardzo małą bezwładność, więc pomiary mogą być częste. Tu masz prosty przykład na dwóch małych termistorach:

https://moderndevice.com/product/wind-sensor/

To dwa pomysły, które przyszły mi na szybko do głowy. Napisz więcej do czego potrzebujesz prędkość chwilową lub podmuchy. Może da się wymyślić jeszcze coś innego.

  • Lubię! 1
Link do komentarza
Share on other sites

Z tego co mi się wydaje, tutaj trzeba mierzyć czas między kolejnymi załączeniami kontaktrona, więc sam czas na jaki jest on zwarty nie jest jako tako potrzebny. Pomyślałem że można by dać równolegle do rezystora diode, dzięki czemu zyskujemy na wyjściu impuls od razu. Można zwiększyć stałą czasową to takiego stopnia, żeby tylko kondensator dał rade rozładowywać się między kolejnymi załączeniami kontaktrona, przy maksymalnej prędkości wiatru.

Zakładam tutaj że kontraktron zwiera wejście z masą:

Link do komentarza
Share on other sites

" trzeba mierzyć czas między kolejnymi załączeniami kontaktrona"

Tak właśnie rozumiem pomiar okresu. Można co prawda mierzyć i okres i długość impulsu (lub przerwy), bo to wszystko jest odwrotnie proporcjonalne do prędkości obrotowej wiatraczka. Przy użyciu timera ATmegi okres mierzyć najłatwiej, bo nie wymaga żonglerki kierunkami zbocza i o czymś takim myślałem jak o rozwiązaniu narzucającym się. Teraz jednak widzę, że zdanie "..pomiarze prędkości wiatru dla każdego zwarcia zestyku" można zrozumieć jak pomiar długości impulsu choć nie sądzę, by to Autor miał na myśli.

Co do niesymetrycznych stałych czasowych i diody: nie wiemy jak wygląda pierwsze zwarcie tego zestyku. Jeśli jest bardzo krótkie, to trudno będzie na nie w sposób pewny reagować gdyż bramki (i dioda) mają całkiem spore rezystancje wyjściowe co ogranicza prąd. Spróbuję dziś złapać kontaktron na oscyloskopie, zobaczymy jak to wygląda.

Zawsze można zrobić filtr cyfrowy z licznika i paru bramek działający na podobnej zasadzie: pierwsze zbocze przesyłane jest od razu a powrót do stanu odwrotnego następuje po przepełnieniu licznika. Wtedy nie ma problemu z kondensatorami itp, ale myślę, że tu to nie jest potrzebne. Wciąż nie wiemy co tak naprawdę jest potrzebne, w jakich zakresach prędkości/okresów się poruszamy i jakie dokładności są wymagane. Być może sama zasada pomiaru z kuleczkami na wiatraczku daje takie uśrednianie podmuchów, takie opóźnienia i taką dokładność, że wszelkie obawy o jitter sygnału wykraczają daleko poza możliwą do uzyskania precyzję odczytu.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.