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

Krótki impuls załącza pierwszy przekaźnik a długi drugi Atmega8 program

31 Mar 2011 20:04 3563 18
  • Poziom 11  
    Witam wszystkich Elektrodowiczów
    Jeśli taki temat jest już na Elce to przepraszam i jednocześnie proszę o link a jeśli nie ma to może się jeszcze komuś oprócz mnie przyda. Informuje jeszcze, że jestem początkującym "Atmegowcem". Na początku napisze, że programik potrzebuję do sterowania oświetleniem. Ponieważ mam przycisk "światło" działający na zasadzie wyłącznika dzwonkowego (chwilowy) a chcę sterować dwoma obwodami świateł których z poziomu wyłącznika nie widać, i dlatego ten buzerek gdyby coś. Zrobiłbym to na zwykłym łączniku świecznikowym (podwójnym) lecz niestety musi zostać ten dzwonkowy. Trochę to może skomplikowane ale opis programu będzie chyba prosty już.
    Otóż potrzebuję programik na Atmega8, który obsługiwałby jeden przycisk dwa przekaźniki i buzerek. Chodzi o to by kiedy przycisk zostanie wciśnięty krótko (nie wiem rzędu pół sekundy) to buzerek zrobi jedno krótkie "bip" i równo załączy się tylko pierwszy przekaźnik. Drugie krótkie naciśnięcie przycisku znów robi jedno krótkie "bip" i wyłączy pierwszy przekaźnik. Teraz długie przyciśnięcie przycisku robi dwa razy "bip" i załącza tylko drugi przekaźnik. Kolejne długie naciśnięcie znów robi dwa "bip" buzerkiem i wyłącza drugi przekaźnik. Te dwie funkcje muszą działać niezależnie to znaczy jeśli np. jest włączony pierwszy przekaźnik mogę go wyłączyć bądź załączyć drugi. Bardzo proszę o coś takiego. Jak mówię myśle ze nie tylko ja z tego będę korzystał ale i inne pokolenia :)
  • Relpol przekaźniki
  • Poziom 11  
    Podałbyś schemat połączeń to by się coś pomyśało :)
  • Poziom 15  
    @dioda_007 budowałeś już coś na atmedze czy po prostu mamy Ci tutaj wytłumaczyć od zera podstawowy schemat połączeń? O języku w jakim chciałbyś to napisać też nie ma wzmianki.
    @mikandrzej12321 switch, buzzer i dwa przekaźniki i do tego schematu potrzebujesz?...
    Pozdrawiam
  • Specjalista automatyka domowa
    Kolego @dioda_007 tak z zasady nikt gotowca ci nie napisze. Musisz sam coś naskrobać to dalej możemy pomóc jeśli wystąpią problemy.
    Generalnie musisz użyć któregoś z timerów.
    Ja bym to zrobił tak:
    Przycisk switcha podpiął pod PCINT. W podprogramie obsługi przerwania załączał timer zboczem opadającym i zatrzymywał zboczem narastającym.
    Potem to już tylko załączanie odpowiednich przekaźników w zależności od tego czasu i stanu.
  • Relpol przekaźniki
  • Poziom 11  
    W ramach wyjaśnienia - myślałem, że kolega już może zmontował układ i dlatego chciałem schemat.
    Poza tym chciałem też dopowiedzieć, że po co ATmega8 do tak trywialnego zadania? i po co w ogóle zaprzęgać do tego liczniki? prosty program w pętli napisany w BASCOMie w zupełności wystarczy.
  • Poziom 32  
    Bardzo łatwo przerobic wyłaczni podwójny bistabilny na podwójny monostabilny - wystarczy podgiąc blaszke. Moze wykorzystasz to rowiazanie?
  • Poziom 14  
    Generalnie zakładam, że jak ktoś prosi o pomoc w jakiejś kwestii to jej oczekuje, a nie krytyki, że robi coś źle..
    Ale wydaje mi się, że inne pokolenia nie chętnie by z tego korzystały.

    Może lepiej zamiast 2 różnych czasów zrobić tak:

    jeżeli pyknę raz wyłącznikiem, to po sekundzie zapala się pierwsze światło
    jeśli pyknę 2 razy to zapala się drugie
    jeśli któreś jest włączone to odpowiednio tak samo się je gasi

    algorytm:

    - pull-up na int0 przycisk zwiera int0 do masy.
    - przerwanie od int0 wywoływane zboczem opadającym, jeśli i==0 w przerwaniu rusza timer; inkrementuje się i
    - przerwanie od timera jeśli i==1 to zmień stan pierwszego światła na przeciwny; jeśli i==2 to zmień stan drugiego światła na przeciwny; zeruj i.
  • Poziom 15  
    @asembler mam wrażenie że nie zrozumiałeś autora tematu.
  • Poziom 11  
    Póki co nie wiemy co autor tematu chciał osiągnąć. Pomógłbym, co za problem napisać na szybko taki program, tylko nie znam dokładnych założeń.

    Algorytm wg. pierwszego postu:
    Code:
    - Pull up na switch
    
    - sprawdzanie czy naciśnięto przycisk
    - jeśli naciśnięto:
          -buzer
          -czekanie 200ms
          -jeśli dalej wciśnięty:
                - przekaźnik 2 - zmiana stanu
                - buzer (długi dźwięk)
                - czekanie 200ms
                - powrót do początku
           jeśli nie:
                - przekaźnik 1 - zmiana stanu
                - powrót do początku


    Nie rozumiem po co kombinować więcej niż autor wymaga.
  • Poziom 32  
    hotek napisał:
    @asembler mam wrażenie że nie zrozumiałeś autora tematu.


    Jeżeli ktoś chce załaczac cos nie widząc to włąsnie rozwiazaniem zamiast buzzera jest zastosowanie wyłacznik podwójnego dzieki któremu bedzie mozna jednosznacznie włączac i wyłaczac obwody.
    Sterowanie robi sie proste i intuicyjne. Nie trzeba bedzie sie "uczyć" jak załączyć kolejny obwód.
    Ja tylko poddałem posmysł a czy autor tematu to podchwyci i bedzie chcail wykorzystac to jego sprawa.
    Może trudno zrozumiec moją intencje bo to troszke zmienia koncepcje dzialania ale w/g mie jest o wiele lepsze niż to co chce uzyskać autor a skoro założył ten temat to sam instyktownie czuje że jego rozwiązanie jest dalekie od ideału.

    Po co kombinowac wiecej?

    Po to żeby nie brnął w slepą uliczkę chociaż jak chce to mu przecież nie zabraniam.

    Finał bedzi etaki że on to w koncu zrobi pochodzi tydzien lub dwa i stwierdzi że niestety nie da sie tego uzywać.
  • Poziom 36  
    dioda_007 napisał:
    . .
    Otóż potrzebuję programik na Atmega8, który obsługiwałby jeden przycisk dwa przekaźniki i buzerek. Chodzi o to by kiedy przycisk zostanie wciśnięty krótko (nie wiem rzędu pół sekundy).......


    Koncept:
    Przycisk na dowolnym porcie podciągnięty do Vcc;
    Na przycisk = 0 wchodzisz do pętli: "Do... Loop Until przycisk = 1", w ktorej incrementujesz jakąś zmienną w cyklu z delay powiedzmy 1ms.
    Wartość tej zmienej decyduje o kolejnej akcji.
    Podałem ci niemal cały program.

    Mam nadzieje że potrafisz resztę dopasować do własnych potrzeb.

    e marcus
  • Poziom 30  
    Wiele razy to już podawałem... Tu masz mój sposób w Bascom na krótki/długi. Jak i czy go wykorzystasz zależy od Ciebie - programik jest rozwojowy...
    Pozdrawiam
  • Użytkownik usunął konto  
  • Poziom 30  
    @gustaw66 - oczywiście warto wspomnieć, że rozwiązanie kolegi emarcus w wielu przypadkach spełni idealnie swoje zadanie czyli: tylko dla jednego przycisku i kiedy nie zależy nam na tym aby programie w tym czasie coś innego się wykonywało. Innymi słowy póki przycisk jest wciśnięty to nic innego w pętli głównej wykonywać się już nie może...
    Pozdrawiam
  • Poziom 11  
    Witam przepraszam ze mnie tyle nie było ale niestety wyjazd zagraniczny mnie dopadł.
    Przepraszam jeśli w temacie postu jest coś niejasno napisałem po prostu chodzi mi o programik zakładam że jakiś prosty na atmega 8 jest jeden przycisk i robi dwie osobne funkcje w zależności czy jest wciśnięty krótko czy długo. Już pal sześć z tym buzerkiem jakoś zniosę jego nieobecność. Wiec tak krótkie włączanie przycisku włącza i wyłącza pierwszy przekaźnik a długie przytrzymanie włącza i wyłącza drugi. Każde przyciśnięcie robi jedną funkcję.
    np.
    krótkie - załącza się pierwszy przekaźnik
    krótkie - wyłącza się pierwszy przekaźnik
    krótkie - załącza się pierwszy przekaźnik
    długie - załącza się drugi przekaźnik
    krótkie - wyłącza się pierwszy przekaźnik
    długie - wyłącza się drugi przekaźnik
    długie - załącza się drugi przekaźnik
    krótkie - załącza się pierwszy przekaźnik
    itd itd
    czyli musi być rozpoznany czas trzymania przycisku (załóżmy że długi czas zaczyna się od 3 sekund a krótki to mniej niż 3 sekundy) i zmieniać się stan odpowiedniego przekaźnika na przeciwny. nie wiem jak to prościej napisać. Naprawdę jeszcze raz dziękuje za burzę mózgów.
  • Poziom 30  
    @dioda_007 podałem Ci wcześniej gotowe rozwiązanie... sorki, ale czy Ty czytasz wszystkie posty ?? Rozwiązanie kolegi @gustaw66 też załatwia sprawę. Może teraz troszkę własnej inicjatywy - jakiś fragment napisany przez Ciebie i dopiero jak nie będzie działał to zobaczymy co jest nie tak...
    Pozdrawiam
  • Poziom 11  
    Udało się wreszcie po długich a ciężkich wysiłkach umysłu napisać program i nawet działa

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    parametry programu: krótki impuls - do 3 sekund, długi ponad 3 sekundy
    Wszystkim dziękuję za uwagi i jak ktoś potrzebuje taki program do czegoś można kopiować

    Proszę używać znaczników syntax,
    post zmieniony And!
  • Poziom 30  
    Oczywiście program będzie działał ale użycie tak skromnego programu i na dodatek z blokującym kodem w atmedze to moim zdaniem świętokradztwo... Do tego zadania to max Attiny13.
    Pozdrawiam