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

HT12 Jeden nadajnik i wiele odbiorników - adresowanie dynamiczne.

Justyniunia 07 Mar 2024 22:54 651 22
REKLAMA
  • #1 20994977
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Cześć.

    Jestem w trakcie budowy prototypu wielokanałowego układu sterującego (włącz wyłącz).
    Wybór padł na HT12E jako nadajnik i kilka HT12D jako odbiorniki.
    Transmisja będzie przewodowa (sygnał i masa)

    Układ z noty (jeden nadajnik - jeden odbiornik) działa prawidlowo, ale spotykam się z różnymi wartościami rezystorów R Osc.
    W jednym schemacie (w sieci) nadajnik ma 1M, a odbiornik 50k, w innym schemacie nadajnik ma 1.5M a odbiornik 450k.

    Pytanie pierwsze - O co chodzi i z czego wynika taka różnica? Jakie wartości najlepiej zastosować, aby układy działały stabilnie?
    Przypominam, że transmisja będzie przewodowa.

    Teraz przejdźmy do meritum.
    Jeden nadajnik / wiele odbiorników.

    Każdy odbiornik będzie miał inny (stały) adres, ale nadajnik jest jeden, więc adresowanie nadajnika musi być dynamiczne.

    Myślę o taktowaniu wejść dresowych nadajnika np poprzez Atmega8 i teraz:

    Nadajnik ma wejścia dla 4 przycisków / włączników.
    Żeby mieć fizycznie dostęp do większej ilosci przycisków - muszę połączyć je w kilka grup po 4 przyciski.
    Wyjścia grup przycisków połączyć - 1 do 1, 2 do 2, 3 do 3 i 4 do 4 i podać na wejścia nadajnika HT12E, a wejścia każdej z tych grup do portów procesora, żeby każda grupa przycisków aktywowała się tylko dla jednego adresu.

    Teraz nadajnik ma wejście TE (transmision enable)
    Na chłopski rozum:
    uC podłączony do nadajnika wybiera pierwszy adres, aktywuje pierwszą grupę przycisków, po czym wysyła impuls na TE, żeby nadajnik wysłał dane do odbiorników.

    Dane odbierze HT12D o adresie 1.

    uC ustawia kolejny adres, aktywuje następną grupę przyciskow i wysyła impuls na TE.

    Dane odbierze HT12D o adresie 2

    Cykl powtarza się dla kilku (kilkunastu) adresów i zaczyna od nowa.

    Czy to w ogóle ma prawo zadziałać?

    Czy są jakieś ściśle określone czasy między ustawieniem wejść dresowych, wejść danych, a zatwierdzeniem transmisji przez TE?

    Jaka szybkość można osiągnąć i co ze stabilności ą działania takiego układu?

    Inaczej - czy jest tu ktoś, kto zjadł zęby na tych Holtekach?
  • REKLAMA
  • #2 20995421
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Witam,
    Problem z przyciskami rozwiążesz usuwając HT12E z układu i wyprowadzając linię DOUT bezpośrednio z atmegi8.

    Jeśli w odbiornikach planujesz użycie mikrokontrolerów, to usuwasz HT12D, a DOUT z nadajnika podłączasz prosto do atmegi.

    Mając atmegi po obu stronach możesz użyć nawet portu szeregowego do transmisji jeden do kilku.

    Pozdrawiam.
  • #3 20995452
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Nie planuję żadnych uC w odbiornikach. Odbiornikiem ma być HT12D (układ za 4zł + dipswitch)

    Nadajnik ma być uniwersalny, czyli 1 uC do adresowanie nadajnika i sekwencyjnego sterowania klawiatury.

    Taki np attinu2313 obsłuży 8 adresów, 8 grup przycisków i TE.

    Żeby było śmieszniej chcę zrobi tak, że to nr na dipswitch będzie odpowiadał dresowi. Ułatwienie dla osoby montującej taki system (nie będzie się głowić z kodem binarnym)
  • REKLAMA
  • Pomocny post
    #4 20995567
    jarek_lnx
    Poziom 43  
    Posty: 22535
    Pomógł: 4165
    Ocena: 6024
    Widzę że ten HT12D/E wcale ci pracy nie upraszcza, a nawet komplikuje.
    Mikrokontroler w nadajniku i tak musi być, a skoro musi, to może robić coś innego niż sterowanie HT12E. A może w odbiornikach użyć czegoś co może służyć jako szeregowy multiplikator porów, będzie proste w obsłudze i tanie. Przykład rejestry przesuwające HC595, albo pojedyncze przerzutniki jeśli potrzeba 1 kanał na odbiornik. . A może coś na one wire DS2405 DS2413 DS2408 itp Może coś na I2C

    Nie wiem jakie masz wymagania na odbiorniki ile kanałów mają obsługiwać na raz, czy są jakieś wymagania odnośnie adresowania, czy są blisko, czy daleko od siebie, więc propozycja była na ślepo.
  • #5 20995601
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Jeśli jest coś równie taniego, działającego na 1 drucie i GND i pokażesz mi przykładowy kod w BASCOM - chętnie skorzystam ;)

    Nie napisze sobie procedury do samej transmisji. Obsługę adresów i guzików już tak.
    Nadajnik i odbiornik mamy właściwie gotowe. Tylko pytanie, czy ten pomysł zadziała, bo na papierze działa wszystko.

    No i co z tymi rezystorami? Częstotliwością mi, odstępami czasów itd... Układ czasem zadziała, ale się gubi i zaświeca nie to nie tam gdzie trzeba. Podejrzewam za szybkie adresowanie, albo nie takie odstępy czasu podczas aktywacji TE a adresowaniem.

    Dodano po 7 [minuty]:

    Jeśli uda się uruchomić ten system, kolejnym krokiem będzie próba wysłania tego radiowo, oczywiście też za pomocą gotowych modułów, ale to nie temat na teraz...
  • REKLAMA
  • #6 20995672
    mam_pytanie
    Poziom 30  
    Posty: 1065
    Pomógł: 161
    Ocena: 252
    Cytat:
    Jeśli jest coś równie taniego, działającego na 1 drucie i GND...

    Attiny 13 i podobne.
    Cena porównywalna.
    Masz do dyspozycji 1 port więcej.
  • #7 20995696
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Tak każdy może napisać, więc teraz podaj przykład schematu i kod, ale podejrzewam, że nic z tego...

    Jak wyobrażasz sobie podłączenie 32 przycisków do Attiny13
  • #8 20995708
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    W dokumentacji masz wykres z wartościami rezystorów i częstotliwością oscylatora.
    Zrezygnuj testowo z HT12E jak wyżej napisałem i połącz odbiorniki bezpośrednio do atmegi. Ten transmiter i tak nic nie wnosi do układu, a jest na tyle wolny, że pewnie nawet w bascomie można napisać transmisję używając delay, np: waitus 660, pin = 1, waitus 330, pin = 0, albo waitus 330, pin = 1, waitus 660, pin = 0; Długość bitów dopasujesz.

    Może dwadzieścia lat temu to miałoby jeszcze sens.

    Nowe attiny, np. 414, 814 też są będą tańsze.
  • #9 20995763
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Ale czy rozumiesz, że nie umiem napisać kodu do wysyłania adresów, zczytywania przycisków multipleksowo itd, żeby ogarnąć to na samym uC?
    Tu mam Gotowy układ nadajnika.

    Łatwo rzucić hasło Attiny, ale jak przychodzi co do czego, to okazuje się, że nikt nie ma pojęcia jak to zrobić.

    Elektroda wymaga dokładnego opisania problemu - problem został dokładnie opisany.

    Inne rozwiązania mnie zupełnie nie interesują. Czy teraz jest to jasne?

    Jak zwykle pojawiają się TYLKO odpowiedzi, a czemu, a po co, a weź attiny...

    Więc proszę - konkrety.

    Umie ktoś odpowiedzieć na postawione pytania - zapraszam i dziękuję.
    Nie? To po co ta dyskusja?
  • #10 20995830
    mam_pytanie
    Poziom 30  
    Posty: 1065
    Pomógł: 161
    Ocena: 252
    Cytat:
    u mam Gotowy układ nadajnika.

    Ja akurat o odbiornikach.
    Ale ok. - masz w ogóle oscyloskop?
  • #11 20995900
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Justyniunia napisał:
    Ale czy rozumiesz, że nie umiem napisać kodu do wysyłania adresów, zczytywania przycisków multipleksowo itd, żeby ogarnąć to na samym uC?
    Tu mam Gotowy układ nadajnika.

    Ja też nie, ale ja nie znam bascoma. Testowo wyszło mi coś takiego:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Jak przekazać port i pin do funkcji, żeby móc napisać ht12e_send DOUT, 1, 2?

    Kolejność bitów do wysłania trzeba będzie dopasować, żeby wygodniej się je ustawiało na odbiornikach.
    W pdf jest napisane jak ma wyglądać cały pakiet, więc trzeba dopisać brakujące.

    Pozdrawiam.

    Dodano po 38 [minuty]:

    Pomyliłem się, ten pdf od tego układu to się do niczego nie nadaje. Pewnie trzeba go przeczytać...
  • REKLAMA
  • #12 20995952
    CYRUS2
    Poziom 43  
    Posty: 17641
    Pomógł: 1221
    Ocena: 3451
    Justyniunia napisał:
    Nadajnik i odbiornik mamy właściwie gotowe. Tylko pytanie, czy ten pomysł zadziała, bo na papierze działa wszystko.
    Tak działa zdalne sterowanie radiowe które używam.
    8 bitów adresu + 4-bity danych.
  • #13 20995958
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Tak, ale ile adresów używasz? Jednego na stałe i czterech kanałów?
    Ja chcę używać przynajmniej 8 adresów x 4 kanały.

    Układ działa.

    Potrzebował opóźnienia.
    Od 100mS zaczął pracować. Wolno, ale zaczął :)
  • #14 20995961
    CYRUS2
    Poziom 43  
    Posty: 17641
    Pomógł: 1221
    Ocena: 3451
    Justyniunia napisał:
    Tak, ale ile adresów używasz? Jednego na stałe i czterech kanałów?
    Ja chcę używać przynajmniej 8 adresów x 4 kanały.
    Można zaprogramowac 250 adresów w każdym 4 bity danych.
    To idzie przez radio 433MHz.
  • #15 20995971
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Jak to obsługujesz? Masz pod ręką wszystko i działa od naciśnięcia guzika? Bo o to mi chodzi.
    To, że można przełączyć sobie adres to ja wiem, ale to ma działać w kółko, samo.
    Nie ja mam wybierać adresy.

    Teraz tak:
    Udało się zejść do 25mS zmniejszając R osc nadajnika z 1M do 220k.
    Próbuję dalej

    Dodano po 9 [minuty]:

    Przy 47k nadajnik przestał działać.
    Wracam do 220k i 25mS opóźnienia w programie x 8 adresów, to w najgorszym wypadku jakieś 200mS czasu reakcji od naciśnięcia guzika do zapalenia LED w odbiorniku.
  • #16 20996024
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Poprawiłem kod, teraz powinno działać. W przykładzie miga wyjściem odbiornika z A7 w stanie wysokim. Możesz zmienić adres i przetestować.
  • #17 20996035
    CYRUS2
    Poziom 43  
    Posty: 17641
    Pomógł: 1221
    Ocena: 3451
    Justyniunia napisał:
    Jak to obsługujesz? Masz pod ręką wszystko i działa od naciśnięcia guzika? Bo o to mi chodzi.
    Tak dzała.
    Justyniunia napisał:
    , ale to ma działać w kółko, samo.
    Co to znaczy ?
  • #18 20996051
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Piszesz, że można zaprogramować 250 adresów i w każdym 4 bity danych.
    Ale nie masz fizycznie dostępu do tego od razu, tylko musisz zmieniać adresy.
    Ja też bez robienia tego wynalazku mam 256 adresów i 4 bity w każdym, ale dostęp mam w jednej chwili do jednego adresu i 4 wejść danych.

    Ze swoim wynalazkiem mam dostęp do 8 adresów x 4 bity, to 32 przyciski dostępne "pod ręką", a można więcej i nie muszę zmieniać adresów, bo się same zmieniają.

    Z resztą - pokaż o czym piszesz, bo się nie dogadamy :)

    Dodano po 2 [godziny] 35 [minuty]:

    @mpier - cały czas testuje swój program. Twojego nie próbowałam.
    Attiny2313 wysyła adresy (choć nie kolejne tylko x2) i wystawia stan niski na grupę przycisków (za pośrednictwem ULN2803, spokojnie, to prototyp) po czym wywala na 20ms stan niski na TE.
    To wystarczy. Działa elegancko.

    Teraz będę testować długość linii, ale kilka metrów to będzie max co potrzebuje osiągnąć i podejrzewam, że nie będzie żadnych problemów.

    Cielawe czy da się w prosty sposób połączyć się optycznie, ale pewnie tak...

    Dzięki i pozdrawiam.
  • #19 20996735
    CYRUS2
    Poziom 43  
    Posty: 17641
    Pomógł: 1221
    Ocena: 3451
    Justyniunia napisał:
    to 32 przyciski dostępne "pod ręką", a można więcej i nie muszę zmieniać adresów, bo się same zmieniają.
    Same się nie zmieniają.
    Chyba zrozumiałem.
    Masz problem z przetworzeniem 32 przycisków na adresy podawane na na nadajnik.
  • #20 20996783
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    Problem był ze zsynchronizowaniem tego wszystkiego, ale już się udało.

    Teraz taka myśl mnie naszła.
    Może to nie nadajnik przestaje wysyłać dane, tylko odbiorniki przestają reagować? Bo za szybko?

    Zaraz podmienię R w nadajniku znów na 47k, a w odbiorniku spróbuję 10k

    Dodano po 2 [godziny] 4 [minuty]:

    Nadajnik Rosc 100k, Odbiornik Rosc 22k i Opóźnienie 10ms, to max co udało się uzyskać.
    Jest OK.

    Wniosek - Rosc nadajnika musi być około 4x większe jak Rosc odbiornika.
  • #21 20997071
    mam_pytanie
    Poziom 30  
    Posty: 1065
    Pomógł: 161
    Ocena: 252
    Cytat:
    Wniosek - Rosc nadajnika musi być około 4x większe jak Rosc odbiornika.

    A to się w Holteku zdziwią. Biedni, są przekonani, że około 20 razy.
  • #22 20997179
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    No to się zdziwią.
    Pzy takim taktowaniu jedyny stosunek przy jakim działa to około 1:4
    I nic w tym dziwnego, bo jest w sieci kilka schematów gdzie stosunek rezystancji jest nawet 1:2 i działa, a wiesz dlaczego? Bo to nie aplikacja producenta gdzie jest 1 nadajnik i 1 odbiornik, więc i czasy transmisji są inne...

    Mało tego, dodając kolejne 8 adresów czas reakcji każdego odbiornika zwiększa się dwukrotnie (logiczne), a zmniejszenie opóźnienia z 10ms na 5ms i kombinacji rezysylrorow już nie pomaga.

    Po prostu on nie jest do tego przewidziany.
    Z resztą nadajnik u mnie pracuje z 10x większą częstotliwością niż chciałby producent. Co Cię jeszcze zdziwi? :)

    Pozdrawiam...

    Cel został osiągnięty.
  • #23 20998372
    Justyniunia
    Poziom 36  
    Posty: 4188
    Pomógł: 396
    Ocena: 1318
    32 kanalowy nadajnik i 4 kanałowe odbiorniki
    Widok na płytki obwodów nadajnika i odbiorników.

    I panel sterujący nadajnikiem.
    Panel sterujący z przełącznikami i przyciskami, 32 kanałowy nadajnik.

Podsumowanie tematu

✨ Użytkownik buduje prototyp wielokanałowego układu sterującego z wykorzystaniem nadajnika HT12E i odbiorników HT12D. Problemy dotyczą różnic w wartościach rezystorów R Osc w schematach oraz dynamicznego adresowania wielu odbiorników z jednego nadajnika. Użytkownik planuje użycie mikrokontrolera (np. ATmega8) do adresowania nadajnika i sekwencyjnego sterowania przyciskami. W dyskusji poruszane są alternatywy dla HT12E, takie jak bezpośrednie połączenie z mikrokontrolerem oraz różne metody adresowania i synchronizacji. Użytkownik testuje różne wartości rezystorów, aby uzyskać stabilne działanie systemu, a także planuje przyszłe zastosowanie radiowe.
Wygenerowane przez model językowy.
REKLAMA