Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 1 maja 2025, o 13:08


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 19 kwi 2024, o 17:19 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Cześć, potrzebuję podłączyć czujnik BH1750 do mikrokontroler AVR zasilane go napięciem 5V.
    Moduł BH jest na płytce PCB z wbudowanym stabilizatorem napięcia do 3,3V.
    Pytanie czy na liniach I2C muszę robić konwersję napięć?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 kwi 2024, o 20:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Zależy jak AVR będzie obsługiwał I2C. Na module wejścia I2C są podciągnięte do 3,3V. AVR zasilany 5V, napięcie powyżej 3V powinien bez problemu rozpoznać jako logiczne 1. Więc od tej strony jest OK. Natomiast pytanie czy na AVR będziesz korzystać ze sprzętowego modułu I2C czy programowego. Niestety duża ilość spotykanych programowych implementacji I2C ma poważny błąd w działaniu. Ponieważ uC podczas banglowania pinami wykorzystuje pin jako wyjście i wystawia stan wysoki na wyjściu bądź niski. A przecież wystawiając stan wysoki podasz na moduł BH 5V! Według specyfikacji standardu I2C, uC podczas banglowania pinem stan wysoki musi wymuszać rezystor podciągający, czyli AVR winien ustawić pin w stan wejścia z wysoką impedancją, a stan niski ustawiać pin jako wyjście w stanie 0.
    Podsumowując, jeśli AVR będzie w sposób właściwy gadał po I2C to możesz podłączyć bezpośrednio, czyli albo sprzętowy moduł I2C procka, albo poprawna biblioteka programowa, tylko uwaga: podciąganie lini I2C tylko do 3,3V które masz już na module, NIE możesz podciągać linii dodatkowo do 5V.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 kwi 2024, o 21:28 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    xentis napisał(a):
    Zależy jak AVR będzie obsługiwał I2C. Na module wejścia I2C są podciągnięte do 3,3V. AVR zasilany 5V, napięcie powyżej 3V powinien bez problemu rozpoznać jako logiczne 1. Więc od tej strony jest OK. Natomiast pytanie czy na AVR będziesz korzystać ze sprzętowego modułu I2C czy programowego. Niestety duża ilość spotykanych programowych implementacji I2C ma poważny błąd w działaniu. Ponieważ uC podczas banglowania pinami wykorzystuje pin jako wyjście i wystawia stan wysoki na wyjściu bądź niski. A przecież wystawiając stan wysoki podasz na moduł BH 5V! Według specyfikacji standardu I2C, uC podczas banglowania pinem stan wysoki musi wymuszać rezystor podciągający, czyli AVR winien ustawić pin w stan wejścia z wysoką impedancją, a stan niski ustawiać pin jako wyjście w stanie 0.
    Podsumowując, jeśli AVR będzie w sposób właściwy gadał po I2C to możesz podłączyć bezpośrednio, czyli albo sprzętowy moduł I2C procka, albo poprawna biblioteka programowa, tylko uwaga: podciąganie lini I2C tylko do 3,3V które masz już na module, NIE możesz podciągać linii dodatkowo do 5V.


    Dzięki, cenne uwagi. Będę wykorzystywał softwareowy I2C ale to Mirka biblioteka więc pewnie będzie działać ok :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2024, o 17:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Jarecki napisał(a):
    Będę wykorzystywał softwareowy I2C ale to Mirka biblioteka więc pewnie będzie działać ok :)
    Jeśli tę z bluebooka to niestety muszę Cię rozczarować. Ale tak na prawdę łatwo to poprawić zgodnie z tym co napisałem wcześniej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2024, o 22:22 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    xentis napisał(a):
    Jeśli tę z bluebooka to niestety muszę Cię rozczarować......


    Tak potwierdzam - zawsze zapominam poprawić tego drobiazgu w sofcie do pobrania - ale w końcu się zmobilizuję ;)
    wystarczy jednak w niej zrobić drobną podmianę w makrach ustawiających stan wysoki, czyli takie coś w pliku "i2c_soft.h"

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    zamienić na taką postać gdzie operujemy rejestrem kierunku:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    aha no i funkcję i2c_init() z bluebooka też trzeba poprawić:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    na taką gdzie piny SDA i SCL zostają wejściami po resecie procka a wyłączamy wewnętrzne podciąganie

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    natomiast biblioteka z naszego sklepu jest od początku poprawnie zrobiona:

    https://sklep.atnel.pl/pl/p/0581_0582-M ... teka-C/244

    Obrazek

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO