Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Fibaro Fibaro
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Czujnik SHT21 i Trójkąt Berbudzki na płytce PCB

ravmar 17 Sty 2012 13:08 3569 27
  • #1 17 Sty 2012 13:08
    ravmar
    Poziom 22  

    Nie wiem od czego zacząć. Wizualizacja płytki PCB 3D w załączniku i jak się
    dopatrzycie zobaczycie ścieżki. Czujnik po poprawnym ! wlutowaniu na
    płytkę nie działa.

    Dla pewności wylutowuje czujnik i do jego nóżek delikatnie podlutowuje druciki następnie na płytkę dolutowuje kable w miejsca pinów SDA,SCL,GND,VCC, wszystko łącze ze sobą i działa pięknie.
    Pierwsza moja myśl pada na niewłaściwe przylutowanie czujnika na PCB lecz jest ona mylna. Czujnik przy pomocy wcześniej użytych drucików bezpośrednio lutuje nad płytką (miejscem SHT21) przypomina to wyglądem pająka stojącego na 4 nogach 2 cm nad PCB. I tu czujnik znowu przestaje działać. Poprawiam, poprawiam i nic. Wracam do konfiguracji z kablami - działa. Dołożyłem jeszcze rezystory podciągające + 10K czyli wypadkowa oporność na szynie względem zasilania to 5K, myślałem, że to zlikwiduje potencjalne zakłócenia i stany nie ustalone - myliłem się. Dlatego zwracam się z prośbą do użytkowników o pomoc, sugestie. Przymierzam się do zrobienia kolejnej płytki z tą różnicą, że zmienię położenie czujnika. Cały układ jest zasilany nap. 3V3 otrzymanego ze stabilizatora AS1117. Na zdjęciu można dopatrzeć się anteny PCB 868MHz wykorzystywanej przez układ do komunikacji radiowej, może to ona "sieje" jakieś zakłócenia ?

    Czujnik SHT21 i Trójkąt Berbudzki na płytce PCB

  • Fibaro
  • #2 17 Sty 2012 13:35
    opamp
    Użytkownik obserwowany

    Znasz zasady projektowania anten na PCB?

  • #3 17 Sty 2012 13:52
    ravmar
    Poziom 22  

    Nie do końca:) Antena pochodzi z projektu udostępnianego przez National Instrumens http://www.ti.com/lit/an/swra227d/swra227d.pdf

    Jest to mój pierwszy poważniejszy projekt tego typu. Jesteś w stanie może mi pomóc i/lub odesłać do stosownej literatury?

  • #4 17 Sty 2012 14:09
    opamp
    Użytkownik obserwowany

    W skrócie antenę wywalasz na koniec płytki. Resztę pod anteną zalewasz masą. Zasilanie sht puść przed dławik i kondensatory filtrujące i zmień mu pozycję na pcb.

    SHT** odizolowujesz od reszty płytki 4 strona 8 rysunek http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT1x.pdf
    Atmega ma kwarc czy RC jedziesz?
    Więcej uwag nie ma raczej może koledzy doradzą więcej :)

  • #5 17 Sty 2012 14:22
    ravmar
    Poziom 22  

    opamp napisał:
    Resztę pod anteną zalewasz masą.
    Znawcą nie jestem i nie mam zamiaru trzymać się czegoś na upartego. W linku do datasheet który wysłałem post wyżej auto nie stosuje GND pod anteną ?

    opamp napisał:
    Atmega ma kwarc czy RC jedziesz?

    Atmega taktowana 1MHz z RC na razie, później będę optymalizować kod oraz
    prędkość i zastosuje zewnętrzny kwarc, aczkolwiek timingi w komunikacji I2C
    zostały wydłużone 10 krotnie dla sprawdzenia poprawności działania układu SHT.

    opamp napisał:
    SHT** odizolowujesz od reszty płytki 4 strona 8 rysunek
    http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-

    sensor-SHT1x.pdf

    To odnosi się do efektów temperaturowych związanych z grzaniem się układu,
    więc chyba nie bardzo pomoże w poprawieniu komunikacji ?

    opamp napisał:
    zmień mu pozycję na pcb.

    Ale może zostać na tej warstwie, na której jest?

    opamp - może potrafisz stwierdzić przyczynę nieprawidłowej pracy układu ?

  • #6 17 Sty 2012 14:28
    opamp
    Użytkownik obserwowany

    ravmar napisał:
    Znawcą nie jestem i nie mam zamiaru trzymać się czegoś na upartego. W linku do datasheet który wysłałem post wyżej auto nie stosuje GND pod anteną ?

    Tobie czy mi na oczy padło? Weź rozbierz kluczyk od centralnego zamka i czy bramy i zobacz jak tam jest zaprojektowana antena...
    Powiedź co widzisz.
    https://obrazki.elektroda.pl/1043881800_1304086429.jpg

  • #7 17 Sty 2012 14:36
    ravmar
    Poziom 22  

    Czujnik SHT21 i Trójkąt Berbudzki na płytce PCB Czujnik SHT21 i Trójkąt Berbudzki na płytce PCB

    Nie mniej jednak pod nimi nie ma masy :) Z tego co kojarzę masę pod anteną stosujesz w przypadku kiedy ma być typu panelowego

  • #8 17 Sty 2012 14:39
    opamp
    Użytkownik obserwowany

    To czym wokół procka jest zalane?

  • Fibaro
  • #9 17 Sty 2012 14:43
    ravmar
    Poziom 22  

    Nie rozumiem, jakimś klejem, masa utwardzona. Ale to przecież zalewa się wiele układów, nawet w kalkulatorach - o to ci chodzi ??

  • #10 17 Sty 2012 14:44
    Freddie Chopin
    Specjalista - Mikrokontrolery

    opamp napisał:
    Tobie czy mi na oczy padło?

    Tobie - masa jest OBOK, a nie POD anteną.

    4\/3!!

  • #11 17 Sty 2012 14:50
    opamp
    Użytkownik obserwowany

    Freddie Chopin napisał:
    Tobie - masa jest OBOK, a nie POD anteną.

    Tobie masa jest pod anteną jak się patrzy na płytkę od czoła :)

  • #12 17 Sty 2012 14:55
    Freddie Chopin
    Specjalista - Mikrokontrolery

    A jak ją odwrócisz, to nagle masa jest NAD anteną... Litości... Niestety trochę ciężko to opisać, więc pseudo-schemat:

    Code:
    [antena] ... [reszta oblana masą <- OBOK]
    
    [........ laminat  .........................]
    [nic POD anteną] ... [obojętne co]


    4\/3!!

  • #13 17 Sty 2012 15:13
    opamp
    Użytkownik obserwowany

    Freddie Chopin napisał:
    A jak ją odwrócisz, to nagle masa jest NAD anteną... Litości... Niestety trochę ciężko to opisać, więc pseudo-schemat:

    Dobra kolego wiemy o co chodzi miej więcej :-)

  • #14 17 Sty 2012 15:14
    ravmar
    Poziom 22  

    Freddie Chopin ma racje. Nie odbiegając od tematu Freddie Chopin może dorzucisz swoje uwagi i spostrzeżenia, dlaczego może to nie działać i co ew. zmienić.

  • #15 17 Sty 2012 15:46
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #16 17 Sty 2012 19:39
    ravmar
    Poziom 22  

    Oprócz braku cewki, czy mieli byście jakieś zastrzeżenia ? Głównie zależy mi na
    obszarze czujnika

    Czujnik SHT21 i Trójkąt Berbudzki na płytce PCB

    Odstęp rozlanej masy jest ustawiony na 0.6mm od innych ścieżek
    Płytka jednostronna, na laminacie o grubości 1mm

  • Fibaro
  • #17 17 Sty 2012 20:12
    Freddie Chopin
    Specjalista - Mikrokontrolery

    ravmar napisał:
    Odstęp rozlanej masy jest ustawiony na 0.6mm od innych ścieżek

    Daj spokojnie mniej - ja robię zwykle 0.375mm.

    ravmar napisał:
    Płytka jednostronna, na laminacie o grubości 1mm

    Lepiej byłoby też mieć tą masę od spodu... Zwłaszcza że teraz tą masę łączysz na moje oko zworkami czy rezystorami 0R.

    4\/3!!

  • #18 17 Sty 2012 20:30
    ravmar
    Poziom 22  

    Tak 4 rezustory R0 dwie GND i dwie VCC. Nie chciałbym się pchać w dwustronną. Co prawda dużo przejść na drugą stronę by nie było ale zawsze trzeba by to pasować. Pokusiłbym się o wykonanie jednostronnej a w przypadku złej pracy kolejny zrobię dwustronnie.

    Czyli do dzieła, wczesna godzina jeszcze jest :)

  • #19 17 Sty 2012 22:38
    JarekC
    Poziom 27  

    Witam,

    Zanim weźmiesz się za projekt nowej płytki to określ dokładnie co znaczy że czujnik nie działa:
    - czy podaje niewłaściwe pomiary
    - czy brak jest komunikacji z nim

    W ATmega poprzez status transmisji TWI można dokładnie sprawdzić co się dzieje
    z transmisją.

    Pozdrawiam
    JarekC

  • #20 17 Sty 2012 23:26
    ravmar
    Poziom 22  

    Już śpieszę z odpowiedzią, brak jest komunikacji z czujnikiem. Nie obsługuję sprzętowej magistrali TWI, tylko programową. Po wysłaniu jakiegokolwiek pakietu danych do czujnika nie otrzymuję sygnału ACK. Dzieje się tak kiedy czujnik jest w pobliżu +-2cm miejsca docelowego na płytce (próby dokonywane przy nieaktywnym module radiowym), oddalenie czujnika o +-10cm powoduje poprawną pracę czujnika.

  • #21 18 Sty 2012 15:19
    ravmar
    Poziom 22  

    Niestety problem nadal występuje i objawia się tak samo. Dla pewności podpiąłem
    jeszcze (taki miałem pod ręką) tuż przy nóżkach GND i VCC 100nF/100V. Napięcie
    jakie występuje to 3,3V takie jak całego zasilania. Zdemontowałem układ radiowy.
    W kodzie programu na samym początku programu dokonuje inicjalizacji portów i
    wywołanie funkcji pomiar, niestety zapala się czerwona dioda sygnalizująca brak
    znaku ACK ;/ Sytuacja znika przy połączeniu czujnika czterema przewodami o
    długości ok 10cm.

    Czujnik SHT21 i Trójkąt Berbudzki na płytce PCB

  • #22 18 Sty 2012 15:35
    JarekC
    Poziom 27  

    Witam,

    Wydłużenie kabli powoduję zwiększenie pojemności na liniach SDA i SCL tym samym
    złagodzenie zboczy sygnałów.
    Sprawdź czy będzie ci działać przylutowany na płytce z dodatkowymi kondensatorami na liniach I2C (kilka-kilkanaście pF)

    Może masz jednak problem z programową obsługa I2C.
    Szczególnie przyjrzałbym się miejscu gdzie następuje zmiana trybu pracy linii SDA z wyjściowego na wejściowy.

    Pozdrawiam
    JarekC

  • #23 18 Sty 2012 16:04
    ravmar
    Poziom 22  

    JarekC napisał:

    Sprawdź czy będzie ci działać przylutowany na płytce z dodatkowymi kondensatorami na liniach I2C (kilka-kilkanaście pF)

    Na każdej linii mam zrobić przerwę i wstawić kondensator ?

    JarekC napisał:

    Może masz jednak problem z programową obsługa I2C.
    Szczególnie przyjrzałbym się miejscu gdzie następuje zmiana trybu pracy linii SDA z wyjściowego na wejściowy.


    Odstępy czasowe między jakąkolwiek zmianą DDR czy PIN czy PORT wynoszą po
    1ms, zostały zwiększone do prób. Czyli nie powinno być teoretycznie problemów

  • #24 18 Sty 2012 16:44
    JarekC
    Poziom 27  

    Kondensatory włącz pomiędzy linię SCL i masę oraz SDA i masę.

    Pozdrawiam
    JarekC

  • #25 18 Sty 2012 23:48
    ravmar
    Poziom 22  

    Niestety nie potrafię sobie poradzić z tym problemem. Idąc śladami programu,
    stwierdzam, że komunikacja z czujnikiem jest poprawna do momentu "nadawania"
    przez mikrokontroler. Po sekwencji startowej, wysyłam:

    1. adres + bit write ----- od SHT otrzymuje ACK
    2. komendę odczytu wybranego parametru ---- również otrzymuję od SHT ACK
    3.adres + bit read ---- otrzymuje ACK
    4. Czekam na zwolnienie lini SCK (oznacza to koniec mierzenia przez czujnik) ----
    linia zostaje zwolniona

    ================
    do tego miejsca komunikacja przebiega poprawnie i mogę stwierdzić, że czujnik
    odpowiada na komendy generowane przez uC.

    Problem zaczyna się przy odbieraniu danych. Wyniki są nieprawidłowe, a i suma
    kontrolna się nie zgadza
    Reasumując, usterki chyba należy szukać w momencie odbierania danych od czujnika jak zasugerował użytkownik JarekC
    Nie wiem gdzie szukać "błędu w kodzie", który w konfiguracji przymocowanego
    czujnika na kablach działa poprawnie. Bardzo proszę o pomoc.

    Poniżej przedstawiam koniec procedury pomiaru (jest to moja "adaptacja dla
    AVRów" przykładowego kodu Sensiriona)

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    I sekwencję odczytu bajtu z wysłaniem potwierdzenia ACK lub NACK

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    I przykładowa deklaracja portów
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

  • #26 19 Sty 2012 00:27
    JarekC
    Poziom 27  

    Witam,

    Wg. mnie brakuje ci pierwszego impulsu SCL po uzyskaniu gotowości SHT.

    U ciebie jest tak:

    Linia SCL jako wejście z Pull-Up
    Czekasz na zmianę SCL z 0 na 1
    Linia SCL jako wyjście ale ze stanem '1' !!!! błąd
    Odczyt pierwszego bitu ale nie było impulsu SCL z "0" na "1" !!! błąd

    Poniżej poprawiony kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Mam nadzieję, że to pomoże.

    Pozdrawiam
    JarekC

  • #27 19 Sty 2012 00:54
    ravmar
    Poziom 22  

    Dzięki kolego za poświęcony czas i wykrycie tej drobnej pomyłki, już ją oczywiście poprawiłem
    Niestety nie pomogło widzi cały czas SDA w stanie wysoki i przez to oddaje wyniki maksymalne dla wilgotności i temp., CRC cały czas niezgodne

  • #28 19 Sty 2012 14:42
    ravmar
    Poziom 22  

    Nowe poszlaki w sprawie śledztwa :)
    Ustawiłem pomiar w trybie kiedy to czujnik przejmuje kontrole nad linią SCK i przy
    jej podstawie wysyła dane czyli funkcja MeasurePoll i o dziwo wszystko działa
    poprawnie, również suma kontrolna CRC się zgadza :|
    Niestety pomiar jednej wartości trwa znacznie dłużej niż w przypadku pomiaru w
    trybie Hold Master i wprowadza mi to duże opóźnienia w działaniu całego układu.
    Dlatego zależało by mi na rozwiązaniu problemu ww. problemu.

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo