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? 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 9 cze 2025, o 16:20


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 35 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 4 lis 2014, o 09:16 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    Witam ponownie to mój drugi post. Tym razem coś trudniejszego. ;)
    Nabyłem układ DS1267-050 http://datasheets.maximintegrated.com/en/ds/DS1267.pdf
    Myślałem, że sobie poradzę, ale ręce mi zaczynają opadać. ;) Wklejam mój kod, który nie działa. Proszę o pomoc. Gdzie jest błąd?

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



    Ostatnio edytowano 4 lis 2014, o 10:33 przez wojtek76, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 09:38 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Kod wstawiamy w znaczniki takie jak syntax Panie Kolego :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 09:46 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    Czy kod, który wstawiłem nie jest czytelny? nie rozumiem uwagi.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 10:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    wojtek76 napisał(a):
    Czy kod, który wstawiłem nie jest czytelny? nie rozumiem uwagi.


    Nie jest czytelny. Proszę zapoznać się z regulaminem forum i wątkiem topic7402.html?hilit=wstawianie%20kodu#p84212



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 10:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    wojtek76 napisał(a):
    Czy kod, który wstawiłem nie jest czytelny? nie rozumiem uwagi.


    Zrozumiesz uwagę, gdy zobaczysz, że nikt nie przeczyta kodu w celu pomocy ;)
    Ułatwiaj sprawę ludziom, którzy chcą Ci ewentualnie pomóc.

    Odpowiadając, dla mnie nie nie jest czytelny. To jest różnica jak między czytaniem kodu w notatniku, a programie do pisania softu.

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 10:34 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    ok, rozumiem. poprawiłem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 11:08 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Ja uważam, że komunikacja powinna przebiegać nastepująco:

    wg START OF COMMUNICATION
    - CLK i RST => 0
    - RST => 1
    - DQ => x (1 lub 0)
    - CLK => 1
    - DQ => ^x
    - CLK => 0

    wg END OF COMMUNICATION

    Po ostatnim bicie jak damy już CLK => 1
    - CLK i RST => 0
    - DQ => ^x

    Pozatym zajrzyj do tabelki: AC ELECTRICAL CHARACTERISTICS

    Masz tam podane czasy jakie są minimalne przy zmianach odpowiednich stanów.

    z Niebieskim pozdRowieniem,
    Doman89


    ------------------------ [ Dodano po: 1 minucie ]

    Co do czasów przykładowo:

    - CLK i RST => 0
    - RST => 1

    Między tymi operacjami powinno być minimum 50ns przerwy - tcc

    ------------------------ [ Dodano po: 9 minutach ]

    Co do czasów to się może lekko pośpieszyłem, bo nie ma tam żadnych mikrosekund, są same nanosekundy.

    ------------------------ [ Dodano po: 19 minutach ]

    Poza tym dodałby jeszcze, że dane powinny być wysyłane:

    1. Stack bit - 1 lub 0,
    2. Potentiometer1 - 8bit
    3. Potentiometer2 - 8bit

    Ty piszesz, że wiesz, że musi być 17 bitów a i tak posyłasz 24 ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 11:36 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    doman, dziękuję za poświęcony czas. przesyłam uproszczony kod. Proszę popraw mnie jeśli coś źle zrozumiałem.

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


    ------------------------ [ Dodano po: 4 minutach ]

    co do wysyłania 24 bitów ... tak bez sensu przecież wysyłam bit po bicie :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 12:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    1. Ja bym zrobił osobną inicjalizację:

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


    którą wrzucasz w setupie.

    Przesyłanie mniej więcej tak:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Nie mówię, że na 100% zadziała, ale coś koło tego ;)

    Nie znam się na Ardunio, więc trzeba brać na to poprawkę.

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 12:11 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    bardzo dziękuję :) teraz nie mogę, ale przetestuję to popołudniu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 12:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Po drugiej pętli zapomniałem o zakończeniu transmisji:

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


    z Niebieskim pozdRowieniem,
    Doman89


    ------------------------ [ Dodano po: 1 minucie ]

    Do tego jeszcze nie wiem jak w Arduino sprawa wygląda z SPI, ale aż się prosi aby ją zastosować. Ale tu musi się jakiś Arduiczny kolega wypowiedzieć.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 12:53 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    Przygotowałem pełny kod. Przyznam że namąciłeś mi w głowie.
    DS1267_set_value(255, 255, 0) w setup() powinno ustawić oba potencjometry na max. Zerknij proszę czy moje rozumowanie jest prawidłowe? :)

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 13:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Na szybkiego przeglądając jest spoko, tylko, że jak dla mojego stylu klamry w if'ie i else są zbędne, bo nie trzeba ich stosować gdy jest jedna instrukcja warunkowa - tak przynajmniej jest w czystym C ;)

    Jak coś to ktoś inny sprawdzi dokładnie bo ja lecę do pracy. Jak coś napisz efekty działania.

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 13:20 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    tak, klamry są zbędne, ale osobiście wolę z klamrami ;) może się to wydawać mało eleganckie gdy nie są potrzebne ;). Oczywiście poinformuję o efektach. Jeszcze raz dzięki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 17:10 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    I po testach... niestety potencjometr nie zmienia wartości. Pomiary: między H1 a W1 30k, L1 - W1 20k



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 21:47 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    Może będzie pomocny kod źródłowy napisany w BASCOM AVR ? http://mirley.firlej.org/potencjometr_cyfrowy
    i może jeszcze to: http://www.basicx.com/codeexamples/files/DS1267.bas



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2014, o 23:01 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    Zauważyłem, że na Vcc mam 4,2V ... chyba może być za mało. Wg specyfikacji Vcc powinno mieścić się między 4,5 a 5,5V.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2014, o 00:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    wojtek76 napisał(a):
    Zauważyłem, że na Vcc mam 4,2V ... chyba może być za mało. Wg specyfikacji Vcc powinno mieścić się między 4,5 a 5,5V.


    Kolega dobrze zbudowany układ to podstawa, bo tak to jest niestety błądzenie po omacku.

    Zasil układ 5V i dopiero się baw, bo inaczej to nawet dobry kod może nie pomóc.
    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2014, o 12:10 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    ok, mam równiutkie 5V na układzie. Coś się zaczyna dziać, ale to nadal "bzdury". Gdy puszczę DS1267_set_value(255, 255, 0) między W1 a L1 jest około 62k, dla DS1267_set_value(1, 1, 0) jest 50k.
    Dodam, że układ jest zasilany oddzielnie 5V a arduino z USB gdzie jest poniżej 5V. Połączyłem razem masy (nie wiem czy ma to znaczenie).

    ------------------------ [ Dodano po: 33 minutach ]

    Analizowałem program i wg tej dokumentacji: http://pdfserv.maximintegrated.com/en/an/AN409.pdf wynika, że kod jest dobry. Przynajmniej tak mi się wydaje.
    "To write the 17 bits out to one of the DS1267s, the following procedure must be performed:
    1. Assert RST (high)
    2. Place a data bit on DQ pin
    3. Pulse CLK
    4. Repeat steps 2) and 3) 16 more times
    5. De-assert RST (low)
    If n DS1267s are cascaded together, then steps 2) and 3) are performed n x 17 times before RST is
    deasserted."



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2014, o 12:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Powiem, Ci, że ciężko mi odpowiedzieć, czemu jest tak. Spróbuję coś poczytać, ale dziś to już nie dziś -> praca na południe.

    Masy na pewno muszą być połączone oby układów. Vb masz połączone do masy? Zasilanie masz stabilizowane i odfiltrowane? Zastanawia mnie wartość 62k, skoro masz wersję 50k.

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2014, o 12:50 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    zasilanie stabilizowane i odfiltrowane. Vb jest w "powietrzu", a powinno być podłączone do masy? :D faktycznie ... przeoczyłem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2014, o 13:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Kolega to jeszcze na wyjściu poproszę abyś napisał, jakie zmiany po tym Vb, przeczytam jak wrócę wieczorem ;)

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2014, o 20:08 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    Witam ponownie, podłączyłem Vb do masy. Wysyłam cyklicznie co 3 sekundy:
    DS1267_set_value(0, 0, 0). Na W1 i L1 dostaję rezystancję 0 (i już się cieszę) ale po 2 lub 3 cyklach rezystancja zmienia wartość na 30k (po dłuższej pracy 25k) na W1 H1 28k (waha się między 27 - 28).
    Dla DS1267_set_value(255, 255, 0). Na W1 i L1 dostaję rezystancję 0 przez cały czas, na W1 H1 28k (waha się między 27 - 28).
    Sorry ... zgłupiałem. Wygląda na to, że trzeba pomyśleć nad kodem. :(

    Ciekawa informacja (pochodzi z http://mirley.firlej.org/ds1267):
    "Początek komunikacji wymaga narastającego zbocza na linii RST. Gdy to nastąpi układ jest gotowy do odbioru danych. Są one wpisywane do rejestru na każdym zboczu narastjącym sygnału zegarowego CLK, przy czym muszą być spełnione odpowiednie warunki odnośnie czasów opóźnień (patrz karta katalogowa). "
    hmmm



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 08:56 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    sprawdzę jeszcze ten kod:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 12:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Kolega obstawiam, że shiftOut to będzie ta sama funkcja co Ci napisałem (takie SPI programowe), jedyna różnica jaką zauważyłem, że bajty od Potentiometr1 i Potentiomer2 są przesyłane na odwrót.

    No ale testuj, na tym polega "zabawa" programisty. Aczkolwiek jak dalej będzie źle, to ja bym szukał błędu w połączeniach może?

    Napisz co się zmieniło po zastosowaniu funkcji to może coś się jeszcze wymyśli ;)

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 12:54 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    po południu walczę dalej, ale już profilaktycznie zamówiłem AD8402. Czas pokaże, który będzie chciał współpracować.
    Połączenia sprawdzałem już kilka razy, ale profilaktycznie zrobię to jeszcze raz. Może po prosty układ jest walnięty? jeszcze się nie poddałem. :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 17:15 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    no! znaczna poprawa ta funkcja przynajmniej robi coś z sensem. B00000000 daje 0 oporności na L1 i W1, H1 W1 = 30k. B11111111 L1 W1 28k, H1 W1 0, L1 H1 28k. Na H0 L0 W0 pomiary są o 2k niższe.
    Wygląda jak by jego max oporności wynosiła 30k. Gdzie jest reszta 20k? :)
    Zastanawiam się z z tym Vb? taka ciekawostka: Vb do masy zakres oporności jest między 0 a 30k. Vb bez masy 20k - 40k.



    Ostatnio edytowano 6 lis 2014, o 17:40 przez wojtek76, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 17:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Teraz widzę, że u Ciebie jest byte ( odpowiednik uint8_t ), ja miałem int.

    No cóż jak zaznaczyłem, na Arduino się nie znam, a układu DS1267 nigdy nawet w łapkach nie miałem :P.

    Ale widać jakieś efekty są ;)
    Co do oporu to nie będzie tak, że 50k uzyskasz jak podłączysz Vb do -5V? Wiem, że tak się robi, jak się nie ma to Vb podłącza się do GND. Więc jakieś różnice muszą być jak się podpina w dwóch różnych konfiguracjach.

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 17:41 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2014
    Posty: 28
    Pomógł: 0

    nie mów mi że potrzebuję symetryczne zasilanie?

    ------------------------ [ Dodano po: 1 minucie ]

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2014, o 17:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    No nie wiem czy na 100%, ale zobacz, że na nóżkę Vb daje się napięcie od -5V do GND ;)

    A w celach naukowych spróbuj kolega taką funkcję:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jak zadziała, lepiej będzie Ci zrozumieć "jak to działa" ;)

    z Niebieskim pozdRowieniem,
    Doman89



    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: 35 ]  Przejdź na stronę 1, 2  Następna strona

    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO