Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] [AVR+BASCOM] Kierunek wiatru i sensor burzy.

piterek-23 18 Cze 2016 14:02 2418 21
  • #1 18 Cze 2016 14:02
    piterek-23
    Poziom 32  

    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] Kierunek wiatru i sensor burzy. [AVR+BASCOM] Kierunek wiatru i sensor burzy. [AVR+BASCOM] Kierunek wiatru i sensor burzy.

    Mój pomysł na podłączenie:
    [AVR+BASCOM] Kierunek wiatru i sensor burzy.

    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: vbnet
    Zaloguj się, aby zobaczyć kod


    Bede przeogromnie wdzięczny za pomoc ;)

    0 21
  • Pomocny post
    #2 18 Cze 2016 14:10
    atom1477
    Poziom 43  

    Do czego ma być rezystor 10k na schemacie?
    Co do napięcia referencyjnego dla ADC to lepiej użyć AVCC, bo cały ten czujnik wraz z rezystorem podciągającym daje sygnał ratiometryczny.
    Czyli rezystor ??? dajesz taki jak zalecają czyli 10k.
    I normalnie zasilasz to z 3.3V zamiast 5V.
    Napięcia wyjściowe będą proporcjonalnie mniejsze.
    Czyli np. dla kierunku 0° zamiast 3.84V będzie 3.84V * 3.3V/5V = 2.5344V.

    0
  • #3 18 Cze 2016 14:22
    94075
    Użytkownik usunął konto  
  • Pomocny post
    #4 18 Cze 2016 14:41
    373522
    Użytkownik usunął konto  
  • #5 18 Cze 2016 18:48
    piterek-23
    Poziom 32  

    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: vbnet
    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 ;)

    0
  • Pomocny post
    #6 19 Cze 2016 13:55
    373522
    Użytkownik usunął konto  
  • #7 19 Cze 2016 16:18
    piterek-23
    Poziom 32  

    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ć :(

    0
  • #8 22 Cze 2016 00:19
    373522
    Użytkownik usunął konto  
  • #9 22 Cze 2016 00:31
    piterek-23
    Poziom 32  

    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...

    0
  • #10 22 Cze 2016 00:34
    373522
    Użytkownik usunął konto  
  • #11 22 Cze 2016 00:51
    piterek-23
    Poziom 32  

    Ostatnio czytałem o PCINT na Twojej stronie-muszę się temu dokładniej przyjrzeć :-)

    0
  • #12 22 Cze 2016 10:28
    piterek-23
    Poziom 32  

    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] Kierunek wiatru i sensor burzy.
    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

    0
  • #13 22 Cze 2016 22:07
    373522
    Użytkownik usunął konto  
  • #14 22 Cze 2016 22:40
    piterek-23
    Poziom 32  

    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...

    0
  • #15 12 Sie 2016 20:22
    piterek-23
    Poziom 32  

    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)?

    0
  • #16 13 Sie 2016 01:01
    373522
    Użytkownik usunął konto  
  • #17 13 Sie 2016 17:52
    piterek-23
    Poziom 32  

    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?

    0
  • #18 13 Sie 2016 18:35
    373522
    Użytkownik usunął konto  
  • #19 13 Sie 2016 18:54
    piterek-23
    Poziom 32  

    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?

    0
  • Pomocny post
    #20 15 Sie 2016 21:47
    373522
    Użytkownik usunął konto  
  • #21 15 Sie 2016 22:52
    piterek-23
    Poziom 32  

    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 :)

    0
  • #22 02 Cze 2018 08:08
    piterek-23
    Poziom 32  

    Elektroda poprosiła o zamknięcie tematu więc zamykam ;)

    0