logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] [AVR+BASCOM] Jak odczytywać kierunek wiatru i sensor burzy za pomocą AVR ATmega328p?

piterek-23 18 Cze 2016 14:02 3192 21
REKLAMA
  • #1 15751365
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Witam.
    Nie bardzo wiedziałem gdzie swój temat umieścić więc wylądował tutaj. Jeżeli to zły dział to proszę o przeniesienie ;)

    Chciałbym za pomocą uC AVR ATmega328p (ADC) odczytywać sensor KIERUNKU WIATRU ale prawdę mówiąc nawet nie wiem jak się za to zabrać aby było dobrze.
    Z sensora chcę odczytać 16 różnych kierunków...
    I teraz tak, według DOKUMENTACJI mam go podpiąć pod 5V i tu jest pierwszy problem ponieważ u mnie wszystko ma działać na 3V3.
    [AVR+BASCOM] Jak odczytywać kierunek wiatru i sensor burzy za pomocą AVR ATmega328p? [AVR+BASCOM] Jak odczytywać kierunek wiatru i sensor burzy za pomocą AVR ATmega328p? [AVR+BASCOM] Jak odczytywać kierunek wiatru i sensor burzy za pomocą AVR ATmega328p?

    Mój pomysł na podłączenie:
    [AVR+BASCOM] Jak odczytywać kierunek wiatru i sensor burzy za pomocą AVR ATmega328p?

    Napięcie odniesienia uC to wewnętrzne nacięcie Vref 1V1. W jaki sposób dobrać rezystor oznaczony "???"?

    A teraz strona programowa...
    Program piszę w BASCOM i kawałek kodu odczytujący ADC wygląda tak:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Bede przeogromnie wdzięczny za pomoc ;)
  • REKLAMA
  • Pomocny post
    #2 15751381
    Konto nie istnieje
    Poziom 1  
  • #3 15751402
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #4 15751441
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15751819
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    albertb napisał:
    atom1477 napisał:
    Do czego ma być rezystor 10k na schemacie?

    No jak to? Wraz z rezystorem 20k służy do podziału 3.3V do 1.1V

    Dokładnie taki był mój zamysł. Myślałem, że się uda...
    niveasoft napisał:
    Jak widać by nie przekroczyć 1,1V trzeba dać rezystor >130k...

    Teraz.. nie baw sie w żadne przeliczanie na Volty

    Napisz program by pokazywał Ci na LCD albo w terminalu co sekundę te odczyty z ADC

    Pospisuj je dla każdej pozycji.

    Coś mi nie wychodziło, a to dlatego, że największy rezystor w sensorze to 120k. Dałem rezystor 240k i zaczęło działać ;)

    Niestety, ale mam straszne rozrzuty przy odczycie ADC-domyślam się, że przez to bo wszystko jest na płytce stykowej.
    Dałem dość spore widełki i mam odczyt 8 kierunków wiatru.
    Program wygląda tak:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Myślę, że będzie lepiej gdy to zrobię na normalnym PCB i wszystko zostanie polutowane.

    Mam jeszcze pytanie...
    1. W jaki sposób zabezpieczyć uC?
    Tzn. wszystko wyląduje na dworze i między uC, a sensorem kierunku wiatru będzie około 1m kabla.
    2. Czy przy pinie ADC wystarczy kondensator 100nF?

    Wielkie dzięki Panowie za pomoc ;)
  • REKLAMA
  • Pomocny post
    #6 15752889
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 15753869
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Kod który dałem to rzeczywiście taki kod na "skróty" chciałem tylko pokazać co zrobiłem i zapytać czy to dobry kierunek myślenia :)
    A co do odczytów to oczywiście w układzie docelowym nie zrezygnuję z większej ilości odczytów-mam ich 64. Na ta chwilę to tylko test, a w układzie docelowym z poprawnym zasilaniem, na dedykowanej płycie PCB, gdzie wszystko będzie zlutowane, wszystko przeliczę jeszcze raz i zrobię wszystko na tip-top. Docelowo chcę odczytywać 16 kierunków wiatru :)

    Jeszce został mi tylko i aż do opanowania sensor wykrywania burzy i biorę się za PCB-najgorsze jest to, że ludzie używający MOD-1016 z AS3935 nie używają BASCOMa, a RPi i Arduino i nigdzie nie mogę znaleźć przykładów jak go opanować :(
  • #8 15760191
    Konto nie istnieje
    Konto nie istnieje  
  • #9 15760203
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    niveasoft napisał:
    Na tej linkowanej stronie masz cały kod obsługi tego sensora. Link
    Można to przepisać do Bascom i po sprawie.

    Żebym ja rozumiał jeszcze te "ślaczki" :)
    Ale zastanawia mnie jeszcze jedna rzecz... Chciałbym wszystko uruchomić na ATmega 328p (jak będzie trzeba to zmienię uC) Na tą chwilę mam już zajęte INIT0 i INIT1, a AS3935 należy połączyć z uC za pomocą i2c + pin przerwań, o ile to wszystko dobrze zrozumiałem...
  • #10 15760207
    Konto nie istnieje
    Konto nie istnieje  
  • #11 15760220
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Ostatnio czytałem o PCINT na Twojej stronie-muszę się temu dokładniej przyjrzeć :-)
  • #12 15760666
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Na TEJ stronie znalazłem "zabawkę" z AS3935 i tam jest wykorzystany pin "T0" nawet taki mam wolny w swoim AVR (ostatni wolny pin :) )
    [AVR+BASCOM] Jak odczytywać kierunek wiatru i sensor burzy za pomocą AVR ATmega328p?
    Jest również kod w BASCOMie, ale ten kod to już dla mnie MATRIX :(

    No nic, na razie zrobię PCB pod to co mam jako-tako opanowane. AS3935 podłączę jak na schemacie wyżej, a kodem do niego się zajmę jak "dorosnę" do tego hi hi
  • #13 15762356
    Konto nie istnieje
    Konto nie istnieje  
  • #14 15762447
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    niveasoft napisał:
    Ten kod nie jest skomplikowany tylko rozwlekły bo to jest cały zegarek z alarmami i pokazywaniem "zbliżajacego się sztormu" :D

    Chciałbym kiedyś móc powiedzieć to co Ty patrząc na tak rozbudowany kod "ten kod nie jest skomplikowany" :)
    niveasoft napisał:
    Jak będziesz miał płytkę to coś pomyślimy ;)

    Dałeś mi tak dużą nadzieję, że to może ożyć aż zabieram się od razu za PCB...
  • #15 15865219
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    niveasoft napisał:
    Ten kod nie jest skomplikowany tylko rozwlekły bo to jest cały zegarek z alarmami i pokazywaniem "zbliżajacego się sztormu"

    Pobieżnie przyjrzałem "czystemu" kodowi w C (temu który linkowałem) i ten kod z tego zegarka robi to samo z jedną różnicą.

    W skrócie, na poczatku wysyła się kilka bajtów konfiguracyjnych po czym przechodzi się do procedury "dostrajania anteny"
    Coś się tam mierzy kilkakrotnie co sekundę kilka razy po czym zapisuje ostatnie bajty konfiguracyjne. Czy coś "na ten wzór"
    Nie paliłem się na razie do tego żeby się w tym zagłębić.
    Jak będziesz miał płytkę to coś pomyślimy

    @niveasoft dałbyś radę/miał chęć/miał czas mi pomóc z modułem MOD-1016 (AS3935)?
  • #16 15865751
    Konto nie istnieje
    Konto nie istnieje  
  • #17 15866469
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    niveasoft napisał:
    Odkopię temat i coś opracuję przez weekend

    Z góry dziękuję i cierpliwie czekam.
    niveasoft napisał:
    Aha..zapomniałbym o tej różnicy. W jednym kodzie do odmierzenia sekundy wykorzystują funkcję millis() (licza do 1000ms) a w tym Bascom`owym używają Int od RTC (co 1s). Więc te odmierzenie sekundy będzie tu miało znaczenie.

    U mnie czas już jest w kodzie odmierzany czy nie potrzebuję zew. przerwania do tego-tak?
  • #18 15866536
    Konto nie istnieje
    Konto nie istnieje  
  • #19 15866566
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    niveasoft napisał:
    Przesadziłeś z tym słodzeniem i prosiłbym żebyś wyedytował swój post bo nie lubię sciągać na siebie uwagi

    OK, ale wiedz (myślę, że dobrze o tym wiesz) że to jest prawda ;)

    niveasoft napisał:
    Po prostu lubię programowanie. Obecnie pisze coś na PIC18 w C więc nie klikam tylko w tym Bascom.
    Sprawa ma się tak, że na przykład w Bascom nie ma jeszcze obsługi hardwarowego USB w Xmegach i to zmusza mnie czasem do pisania w C.
    Większość projektów nie wymaga żadnych cyrków i wtedy pisanina w C mnie drażni bo wiem, że napiszę to ekspresem w Bascom i też działa.
    Jak mam jakiś problem to go rozwiązuję a nie zwalam na kompilator i ta dociekliwość pozwoliła mi go trochę bardziej poznać. Jednak znajomość C się bardzo przydaje bo można coś przetłumaczyć a nie odkrywać koła na nowo.

    Im więcej się czyta o programowaniu i coś robi na różnych platformach STM, PIC, AVR, PC i Android to to się z czasem wszystko układa coraz bardziej w prostą całość. Jak skończę ten projekt to pewnie pozerkam na tego Linuxa w Malinie bo mnie @avrkwiat zainteresował Hahahaha

    Zauważyłem Twoją pasję do programowania. W ogóle podoba mi się Twoje podejście do tego-jest inne, ciekawe. Często bywam na Twojej stronie i kody które widziałem wiele razy odkrywam na nowo :)

    Jeszcze niedawno było dla mnie problemem zamrugać LEDem, a tu masz, coraz więcej rzeczy umiem i potrafię. Mam parę urządzeń gdzie mi pomogłeś-działają i działają. Dokładnie tak jak sobie to wymyśliłem, a nawet lepiej bo po Twoich wskazówkach dochodziły nowe funkcje.

    Dobra miałem nie słodzić :D

    A jeszcze tak dopytam o ten AS3935...
    Czytam o nim i czytam i nie mogę do końca zrozumieć jego działania :(
    Na płytce przygotowałem dla niego połączenie VCC, GND, SDA, SCL i IRQ. No i teraz moduł ma mi podać jak daleko jest burza (przez i2c) a do czego ma służyć IRQ?
  • Pomocny post
    #20 15870842
    Konto nie istnieje
    Konto nie istnieje  
  • #21 15871049
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Czyli całkiem źle zrozumiałem :(
    niveasoft napisał:
    Modułu nie odczytuje się w kółko. Kiedy wykryje wyładowanie atmosferyczne to da znać na pinie INT.

    Myślałem, że za pomocą i2c robię konfigurację i dowiem się jak daleko jest burza, a na INT mogę sobie zliczać wyładowania.
    niveasoft napisał:
    Z kalibracją sprawa wygląda tak że antena wraz z wbudowanym układem mają rezonowac na 500kHz.
    Żeby to dostroić w czipie jest kilkanaście kondensatorków które można podłączać programowo.
    Ustawia się moduł w taki tryb by na pinie INT wystawiał częstotliwość z jaką rezonuje cały układ anteny. Tę częstotliwość trzeba mierzyć i dobrać najbardziej odpowiednie ustawienia.

    To już wiedza tajemna i voodoo :)
    niveasoft napisał:
    Sama funkcjonalność urządzenia jest podobno nudna bo jak nie ma burzy to nic się nie dzieje

    No tak, najlepsze są moduły gdzie cały czas, coś się dzieje :)
    Z tym modułem to jak łowca burz...
    niveasoft napisał:
    Ten japoński projekt zapamiętuje ostatnie dziesięć alertów więc można śledzić czy burza nadchodzi czy się oddala

    W zupełności mi wystarczy, że zebrane dane na bieżąco pośle na UART :)
  • #22 17253394
    piterek-23
    Poziom 33  
    Posty: 3321
    Pomógł: 162
    Ocena: 427
    Elektroda poprosiła o zamknięcie tematu więc zamykam ;)

Podsumowanie tematu

✨ W dyskusji poruszono temat odczytu kierunku wiatru oraz sensora burzy przy użyciu mikrokontrolera AVR ATmega328p. Użytkownik chciał zrealizować projekt, w którym sensor kierunku wiatru miał być zasilany napięciem 3.3V, mimo że dokumentacja sugerowała 5V. Uczestnicy dyskusji zaproponowali użycie rezystora 10k jako podciągającego oraz omówili dobór rezystorów w kontekście dzielnika napięcia, aby nie przekroczyć maksymalnego napięcia wejściowego ADC. Wskazano również na konieczność stosowania kondensatorów w celu stabilizacji zasilania. Użytkownik podzielił się kodem w BASCOM, który odczytuje wartości ADC i klasyfikuje kierunki wiatru. W dalszej części rozmowy poruszono temat sensora AS3935 do wykrywania burzy, jego konfiguracji przez I2C oraz wykorzystania przerwań do monitorowania wyładowań atmosferycznych. Uczestnicy wymienili się doświadczeniami i wskazówkami dotyczącymi programowania oraz kalibracji sensorów.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA