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

Puk puk, barku otwórz się :>

JStan 02 Sie 2007 19:01 20181 29
  • Puk puk, barku otwórz się :>

    Witam!!

    Ostatnio dopisuje nam pogoda, jest gorąco, można się opalać... Coś chłodnego i nie tylko chłodnego do wypicia zawsze znajdzie się w barku gdzie chciałem sięgnąć a tu jak na nieszczęście ułamał się klucz w zamku... Jak wiadomo potrzeba matką wynalazku więc długo nie zastanawiałem się co z tym zrobić, natchnienie przyszło bardzo szybko a jego realizacja nie była skomplikowana, za to efekt jest... Oceńcie sami :D

    ________________________________________________________________________________

    Chciałem wam przedstawić pierwszy(chyba) barek otwierany na pukanie :> Pomysł wpadł mi do głowy gdy zobaczyłem ostatnio na elektrodzie projekt podobnie otwieranych drzwi, jednak był to projekt zagraniczny, na płytce uniwersalnej, bez wsadu do uP, lecz to co zobaczyłem wystarczyło by samemu pomyśleć.

    ________________________________________________________________________________

    Zacznijmy może od najbardziej kluczowego elementu jakim jest program uP.

    Rozwiązanie takiego zadania bez mikroprocesora było by napewno bardziej skomplikowane jeśli nie warte poświęcenia. Program nie stanowił jednak problemu, liznąłem już na tyle programowania że po przemyśleniach i jednej nieprzespanej nocy program zaczął działać na płytce testowej z Atmegą8. Do układu docelowego wybrałem mały mikrokontroler z rodziny Attiny – ATtiny25 taktowany wewnętrznym oscylatorem 8MHz. Program zosta napisany w Bascomie gdyż jak narazie jest to dla mnie najlepsze środowisko, chociaż fakt, dostrzegam pewne wady związane z programowaniem w nim ale chodzi o to żeby je pokonać póki nie zacznie się programować w czymś innym.

    Program w skrócie ma za zadanie wyłowić czasy pomiędzy kolejnymi impulsami wejściowymi i potem przyrównać je do wzorca. Wybrałem dosyć oryginalną sekwencje puknięć. Po stwierdzeniu że czasy mieszczą się w zadanych granicach następuje wysterowanie serwomechanizmu. Co ciekawe nie użyłem standardowej bascomowej instrukcji config servos tylko w pętli for to podałem odpowiedniej długości impulsy w odstępach co 20ms. Rozwiązanie takie sprawdziło się, przy czym nie marnujemy timera, a podczas przerwy w pracy układu serwo nie otrzymuje impulsów utrzymujących je w zadanym położeniu bo nie jest to tutaj potrzebne.

    Dosyć szybko również wpadłem na pomysł jak teraz zamknąć barek, w grę wchodziło oczywiście tylko rozwiązanie w pełni automatyczne. Jak wiadomo w barku jest zamontowana żarówka(u mnie przerobiona na rządek kolorowych LEDów zasilanych z 12V) która gaśnie po zamknięciu drzwi barku. Na płytce zbudowany jest dzielnik napięcia z wykorzystaniem fotorezystora. Napięcie z dzielnika jest badane po otwarciu drzwiczek przez ADC mikroprocesora. Najpierw sprawdzane jest w pętli loop until czy barek został otworzony(jasno), jeśli tak to sprawdzane jest czy został zamknięty(ciemność) i jeśli tak to serwo szybko zasuwa zasuwkę. Do programu dołożę tylko jeszcze kod sprawdzający czy po zasunięciu zasuwki jest faktycznie ciemno, jeśli nie otwiera się ona i czeka na powtórną ciemność. Będzie to takie zabezpieczenie gdyby ktoś domknął barek na chwilkę i zasunięcie nie nastąpiłoby przy domkniętych drzwiczkach i żeby w związku z tym nie trzeba było pukać do otwartych drzwi.

    Obecnie program zajmuje jakże miłe 69% z 2kB pamięci mikrokontrolera, wykorzystuje jeden kanał ADC i timer0. Sekwencje czy mruganie diod można rozbudować wg własnych upodobań. Jeśli ktoś będzie zainteresowany to program jest już opatrzony w komentarze, po dołożeniu wyżej wspomnianej funkcji będę go mógł udostępnić. Zachęcam jedna do samodzielnego przemyślenia sprawy.

    ________________________________________________________________________________

    Teraz schemat, płytka układu i mechanika.

    Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :>

    Niema tu za dużo co komentować, wszystko zmieściło się na płytce jednostronnej o wymiarach 30 mm x 40 mm. Impulsy wejściowe dla uP są formowane w prostym układzie, program uwzględnia możliwość wystąpienia drgań i eliminuje je. Ponadto tor mikrofonu posiada potencjometr regulacji czułości. Dzielnik napięcia został tak dobrany by przy całkowitej ciemności napięcie na wejściu ADC nawet przekraczało wewnętrzne napięcie odniesienia 2,56V.

    Proces powstawania płytki(w innym moim poście o roletach jest więcej zdjęć z procesu jej wytwarzania więc jak ktoś będzie czuł niedosyt to zapraszam)

    Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :>

    ________________________________________________________________________________

    Część mechaniczna.

    Jako kluczowy element otwierająco zamykający, który jest mały i prosto go wysterować użyłem mini serwa, gdyż miałem jedno niewykorzystane i kurzyło się na półce.

    Puk puk, barku otwórz się :>

    Po wymontowaniu zamka i poprawieniu jego mocowania(kiedyś był wklejony) wypełniłem otworek na klucz klejem na gorąco(otwórz z drugiej strony zaklejony taśmą), wyszło równo i gładko a całość wykorzystałem jako wskaźnik stanu zamka, klej podświetliłem dwukolorową(trójkolorową) diodą LED. Natomiast elementy zamka rozebrałem na części, wyrzuciłem co nie było potrzebne i jedyną przeróbką było dołożenie prowadnicy dla zasuwki, to jest ten element złożony ze sklejonych warstw dużej karty SIM w której rowku prowadzi się trzpień zasuwki. Po wywierceniu otworu na serwo, śruby mocujące i przewód dla LEDa zamontowałem na serwie nieco pomniejszony orczyk i konstrukcja jak na fotkach zaczęła bez problemu działać. Nic się nie zacina i wszystko chodzi pewnie.

    Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :>

    ________________________________________________________________________________

    Zasilanie(jakże ważne jak go braknie a kogoś będzie suszyć:> )

    Na początku zastanawiałem się nad wstawieniem do środka małej baterii przeznaczonej do aparatów cyfrowych 6V, wszak uP można wprowadzić w stan Powerdown, serwo pobiera prąd tylko przez dokładnie 700-800ms na cykl otwieranie zamykanie bo przez około taki czas je wysterowywuje a dioda to tylko kilka mrugnięć i kilka sekund świecenia. Natomiast stan baterii można by badać okresowo za pomocą ADC i odpowiednio wcześniej zasygnalizować konieczność wymiany miganiem LEDa. Pomyślałem jednak że skoro w środku jest już 12V d zasilania widocznej na fotkach „żarówki” a mam na styk cienkiego przewodu, znalazła się tez mała płytka z 7805 to trzeba z tego zrobić użytek i będzie pewniej, w pokoju i tak pracuje jeden mały zasilacz który dostarcza non stop zasilania dla rolet okiennych i zegarka na TV więc nic nie szkodzi aby obciążyć go jeszcze troszkę bardziej. Do środka oprawy z wyłącznikiem włożyłem wspomniany fragment stabilizatora 5V a przewód poprowadziłem wzdłuż brzegów płyty. Nawet w przypadku braku prądu nazbieram w domu kilka akumulatorków i z nich zasilę tymczasowo układ, chciałem jednak dodać że prądu nie ma u nas niezwykle rzadko.

    Puk puk, barku otwórz się :>

    ________________________________________________________________________________

    Montaż.

    Układ zamocowany jest tuż obok serwa, za pomocą jednego wkręta, mikrofon jak widać zwrócony jest ku drzwiczkom przez specjalnie dla niego wywiercony w laminacie otwór i można by powiedzieć że non stop „słucha sobie płyty”:D:D

    Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :> Puk puk, barku otwórz się :>

    Poniżej zamieszczam jeszcze filmiki z działania układu, pracuje już drugi dzień i niemam z nim żadnego problemu. Barek jest takim miejscem gdzie poziom zabezpieczenia nie gra aż tak istotnej roli więc problemu z niepożądanym wtargnięciem nie będzie. Ktoś mi mówił że ciekawe jednak co będzie gdy będę próbował dostać się do środka po tzw. „pijaku” ;) Trzeba będzie dużo cierpliwości i opanowania ale tego mi nie brak:D

    Na koniec dla wszystkich którzy chcieli by zapytać ale się wstydzą, jestem normalny :D Ktoś stwierdził że świr ze mnie ale przyznajcie co dziwnego w tym że ma się barek otwierany na pukanie :D Ktoś inny powiedział że się bardzo nudzę w domu i niemam co robić:D Mam, ale między innymi jest czas na naprawę zamka w barku:D

    Czekam na opinie i wasze pytania.
    Pozdrawiam!!
    Janek
    Załączniki:

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    JStan
    Poziom 16  
    Offline 
    Specjalizuje się w: elektronika/automatyka
    JStan napisał 243 postów o ocenie 15, pomógł 3 razy. Mieszka w mieście Sanok. Jest z nami od 2006 roku.
  • IGE-XAO
  • #2
    VC
    Poziom 21  
    Jak robiłeś te napisy na górnej stronie płytki (strona elementów)?
  • IGE-XAO
  • #3
    ZonX
    Poziom 22  
    Standardowo wykonuje sie je w taki sam sposob jak sciezki ukladu czyli termotransfer.

    Fajny wynalazek to trzeba przyznac :)
    Orientujesz sie moze ile kosztuje takie serwo?
    Czy mozesz zamiescic wsad do uP?
  • #4
    iglotkz
    Poziom 11  
    Zwykłe serwo kupisz za okoł 40-50zl . Dostępne na allegro i w każdym sklepie z RC.
  • #5
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #6
    bubi89
    Poziom 21  
    Pomysł orginalny i wykonanie bardzo eleganckie:)to się chwali:D
  • #7
    Madman07
    Poziom 19  
    To nie jest klisza do foto, ale jak się nie mylę to wydruk drukarką laserową na zwykłej foli. Ładnie płytka wyszła, też tą metodą robię. Pomysł super, szczególnie dla szpanu przed znajomymi ;-) 5\5
  • #8
    gdkj
    Poziom 26  
    urzdzonko spoko tylko nie zgadzam się z przesadzonymi opiniami na temat pogody. ja tam porządnego słońca już dawno nie widziałem.
    pozdrawiam.
  • #9
    marihires
    Poziom 30  
    Cytat:
    Program w skrócie ma za zadanie wyłowić czasy pomiędzy kolejnymi impulsami wejściowymi i potem przyrównać je do wzorca. Wybrałem dosyć oryginalną sekwencje puknięć. Po stwierdzeniu że czasy mieszczą się w zadanych granicach następuje wysterowanie serwomechanizmu.


    A co sie stanie jeśli wypiłeś troszkę więcej % a chciałbyś wyciągnąć jeszcze jedną butelkę % wtedy odstępy w sekwencji pukania ulegną zmianie...czy idealnie musisz wystukać sekwencję by serwomechanizm otworzył się?
    Jaki czas dopasowałeś jako margines błędu (granice)?
    Ps:Bardzo ciekawy pomysł i piękne wykonanie.Życzę Ci aby prądu nie zabrakło podczas największego upału :)
  • #10
    Uszol 1990
    Poziom 29  
    :) dobre zabezpieczenie jeśli nie chcesz upić się za bardzo :) tak jak kolega marihires mówi sekwencja w stanie %%% na pewno nie będzie idealna :) ale może jest jakaś tolerancja :) pozdrawiam.
  • #11
    KJ
    Poziom 31  
    Fajny pomysł z tym serwem ... chyba zastosuje to samo rozwiązanie u siebie. Jedyna chyba wada to fakt że serwo jest dość wysokie i wystaje nad powierzchnię blatu - wada gdy używa się blatu jako stół roboczy :D Tak jak w moim wypadku :D
  • #12
    ajni
    Poziom 20  
    Janek, jak sam przyznałeś- wariat jesteś. Jak wszystko inne wykonane precyzyjnie i ze smakiem. Można jakąś obudowę zarzucić na to żeby butelką nie uderzyć w serwo.
    Zabrał byś się za porządne rzeczy (wiesz o co chodzi)
  • #13
    Optimus Prime
    Poziom 13  
    Pomysł ciekawy i niekoniecznie szalony. Ładne, estetyczne wykonanie. Szkoda, że płytka nie jest zabudowana... w barku są naczynia szklane z różnego rodzaju cieczą, a po "wypiwszy" można wiele zrobić na rzecz Niebolącej Głupoty. Osobiście wbudowałbym drugie źródło zasilania na wypadek zaniku prądu w sieci! Pozdrawiam
  • #14
    gasnik
    Poziom 13  
    Świetny pomysł. Moja ocena to 11/10. Powiedz mi tylko czy jak słuchasz muzyki albo z kims rozmawiasz to układ nie otwiera barku??
  • #15
    jahoo
    Poziom 15  
    Super kostrukcja.Gratuluję zacięcia :D
    ZonX napisał:

    Orientujesz sie moze ile kosztuje takie serwo?

    To jest tower pro micro 9g. Na allegro po 23zł.
  • #16
    arch_x
    Poziom 20  
    Mnie by szybko rozbolał palec od pukania :-)
    Może jakiś system rozpoznawania mowy - mówimy zdanie - i barek się otwiera. To byłby wypas.
    Niewielkim minusem byłaby dodatkowa szafka do koniecznego sprzętu - komputer, kierunkowy system zbierania głosu i ups (na wypadek gdyby zabrakło prądu i byłaby straszna susza w gardle).
  • #17
    maciekglovplale
    Poziom 11  
    Mmm bardzo dobry pomysł z tym pukaniem. A zastanawiałeś się nad otwieraniem za pomocą głosu? Np na komendę "Barku otwórz się!" :D Pomyśl o zapasowym źródle zasilania, bo co się stanie jak nie będzie prądu a Ty będziesz miał olbrzymie pragnienie? Pomysł super, wykonany na poziomie! A tak na marginesie to ostatnio zrobiłem zamek szyfrowy w moim warsztacie, na CD4066, proste rozwiązanie i naprawdę skuteczne :D
  • #18
    dowodca_armii
    Poziom 30  
    Konstrukcja full wypas, wyczerpujacy opis ;) ale brakuje mi zasilania awaryjnego :P
    Myslalem, ze ten barek sam sie otworzy tzn. ze dzwiczki same sie uchula i zamkna... (to by byl odlot :D )
    Pozdrawiam.
  • #19
    Piotr91
    Poziom 10  
    Świetny pomysł i super wykonanie! Ciekawy sposób na wykorzystanie dziurki od klucza. Tylko założ na całość obudowę.
    Moja ocena: 9.5/10 (-0.5 za brak obudowy)
  • #20
    niedzwiedz77
    Poziom 17  
    No świetny zameczek fajowo zrobiony a jaka fajna zawartość barku,jest co zabezpieczać
  • #21
    memphis_2007
    Poziom 12  
    Witam serdecznie :-)
    Gratuluje dla autora projektu . Oglądnąłem wszystkie etapy pracy przy tym projekcie i stwierdzam że została wykonana naprawdę porządna robota . Urządzenie może ostrzegać o zmianach w skorupie ziemskiej sygnalizując fale sejsmiczne . Konstrukcja zupełnie odjechana , sensowność wykonania takiej konstrukcji pozostaje problematyczna . Te najdroższe alkohole wymagają kasy pancernej a nie skrzynki z płyty wiórowej ;-)
    Oceniam 5/5 ;-)
  • #22
    ciapciok
    Poziom 20  
    Cytat:
    Moja ocena: 9.5/10 (-0.5 za brak obudowy


    Uklad tak estetycznie wygląda, że aż szkoda go pakować do obudowy.

    Dziurka od klucza świeci trzema kolorami, co one oznaczają ?

    Pozdrawiam
  • #24
    JStan
    Poziom 16  
    Dzięki wszystkim za opinie :D

    W odpowiedzi na wasze pytania, płytki robię metodą termotransferową z użyciem folii, projektuje w Eagle'u, serwa tak jak ktoś napisał na allegro chodzą po 23zł i właśnie na allegro je kupowałem, niezła cena jak za takie małe i dość silne serwo.

    Tolerancja odstępu puknięć układu jest wystraczajaca, na początku opracowałem prosty program który migał diodą w przyszły rytm pukania, potem czasy pomiędzy mignięciami diody poszerzyłem w obie strony o kilkadziesiąt ms(na oko) i te okna czasowe stanowią wzorzec. Także po wypiciu większej ilości % nie powinno być problemów ale obiecuje że wykonam stosowne testy :)

    Barku nie używam nigdy jako stół gdyż mam osobny duży stół i nigdy nic nie rozlewam na blat, więc obudowa jak już ktoś napisał jest zbędna, jednak jeśli już to chyba pomyśle o małym pudełku na wszystko wykonanym z cienkiego pleksi, będzie wszystko widać a będzie zabezpieczone.

    Z zasilaniem awaryjnym bez przesady ale naprawdę raz że często barku nie otwieram(bo przedstawiona ładna jego zawartość niestety musze się przyznać jest teraz pusta...) a dwa że rzadko jest tak że niema prądu, a w przypadku awarii zasilania tak jak pisałem wystarczy jakiś aku lub kilka akumulatorków z bezprzewodowej myszki...

    Czułość jest tak dobrana że układ zupełnie nie reaguje nawet gdy pracuje mój mały subwooferek pod biurkiem, dopiero jak kładę coś(klucze) na półkę nad barkiem to dioda mrugnie... Kolory generalnie oznaczają: czerwony - barek zamknięty(świeci przez 2s po zamknięciu bo po co cały czas), na czerwono miga tez dioda za każdym puknięciem, żółty - gdy barek zaakceptuje sekwencje i podczas odsuwania zasuwki, potem po wykryciu domknięcia i podczas zasuwania zasuwki, zielony świeci cały czas jak barek jest otwarty.

    Dla zainteresowanych dla wglądu moj pierwszy(jeden z pierwszych) udanych programów, zachęcam do analizy, może ktoś coś podpowie, zasugeruje :D Aczkolwiek dla mnie jest tu już wszystko co trzeba i najważniejsze - działa i to pełną parą. Obecnie program v1.1 zajmuje 81% pamięci z 2kB.

    Code:

    '***********************************
    '*                                 *
    '*          ZAMEK NA PUKANIE       *
    '*    STERUJĄCY SERWOMECHANIZMEM   *
    '*    I WSKAŹNIKIEM STANU LED R/G  *
    '*                                 *
    '*      MIKROPROCESOR ATtiny25     *
    '*       TAKTOWANY WEW. 8MHz       *
    '*                                 *
    '*      PRZEDZIAŁY CZASOWE         *
    '*     POTRZEBNE DO OTWARCIA       *
    '*     19-41                       *
    '*     11-25                       *
    '*     11-25                       *
    '*     23-41                       *
    '*     55-77                       *
    '*     27-45                       *
    '*                                 *
    '*      WARTOŚĆ GRANICZNA ADC      *
    '*      (CIEMNOŚĆ)                 *
    '*      500                        *
    '*                                 *
    '*                                 *
    '*                  Powered by JS  *
    '***********************************



    '----------DYREKTYWY----------------
    $regfile = "attiny25.dat"
    $crystal = 8000000
    $hwstack = 32
    $swstack = 8
    $framesize = 40

    '--------KONFIGURACJA PORTÓW--------
    Config Portb = &B00000111
    Portb = &B00001000

    '----KONFIGURACJA TIMERA I ADC------
    Config Timer0 = Timer , Prescale = 1024
    Config Adc = Single , Prescaler = Auto

    '------DEKLARACJA ZMIENNYCH---------
    Dim X As Byte                                               'zmienna licznika wyzwoleń
    Dim Y As Byte                                               'zmienna czasowa
    Dim Z As Byte                                               'i pomocnicza
    Dim A As Byte , B As Byte , C As Byte , D As Byte , E As Byte , F As Byte       'zmienne czasów
    Dim W As Word                                               'zmienna wartości oświetlenia

    '-----DEKLARACJA PODPROGRAMÓW-------
    Declare Sub Otworzzamknij
    Declare Sub Pobierz

    '-------------ALIASY----------------
    Zielona Alias Portb.0
    Czerwona Alias Portb.1
    Serwo Alias Portb.2
    Wej Alias Pinb.3

    '--------WARTOŚCI POCZĄTKOWE--------
    On Timer0 Licz
    Enable Interrupts
    Disable Timer0
    Timer0 = 0
    X = 0



    '-------------START-----------------
    Set Czerwona                                                'procedura startu, po włączeniu zasilania zostaje otwarta zasuwka(awaryjne otwarcie zamka)
    Set Zielona                                                 'żółty

    Waitms 200                                                  'odczekaj

    For Z = 0 To 20                                             'otworz zasuwke
       Set Serwo
       Waitus 1100
       Reset Serwo
    Waitms 20
    Next Z

    Waitms 200                                                  'odczekaj

    Reset Czerwona                                              'zaswiec na zielono

    Start Adc                                                   'włącz przetwornik

    Do
    W = Getadc(2)                                               'i badaj stan oświetlenia
    Loop Until W > 500                                          'jeśli ciemno czyli domknieto drzwi

    Waitms 10

    Do
    W = Getadc(2)                                               'sprawdź ponownie po 20ms
    Loop Until W > 500

    Stop Adc                                                    'wyłącz przetwornik

    Set Czerwona                                                'zaswiec na zółto

    For Z = 0 To 20                                             'zasuń zasuwke
       Set Serwo
       Waitus 2300
       Reset Serwo
    Waitms 20
    Next Z

    Waitms 200                                                  'odczekaj

    Reset Zielona                                               'zaświeć na czerwono

    Wait 2                                                      'po 2s

    Reset Czerwona                                              'zgaś diode


    '----------PĘTLA GŁÓWNA-------------
    Do
    Bitwait Wej , Reset                                         'oczekiwanie na pierwsze wyzwolenie
    Waitms 20
       If Wej = 0 Then                                          'z każdym kolejnym wywoływany jest podprogram pobierz
       Gosub Pobierz
       End If
    Loop




    '----------PODPROGRAMY--------------
    Sub Pobierz:                                                'podprogram pobierajacy wartości odstępów czasu

    Select Case X

    Case 0:                                                     'pierwsze wyzwolenie-start timera
    Enable Timer0
    X = 1
    Pulseout Portb , 1 , 60000
    Bitwait Wej , Set
    Waitms 10

    Case 1:                                                     'kolejne wyzwolenia- za każdym pobranie czasu trwania odstępu od poprzedniego wyzw.
       A = Y                                                    'przepisanie go do zmiennej A
       Y = 0                                                    'wyzerowanie licznika Z
       X = 2                                                    'zwiekszenie zmiennej odwoławczej select case
       Pulseout Portb , 1 , 60000                               'impuls led
    Bitwait Wej , Set                                           'czekanie na stan wysoki
    Waitms 10                                                   'eliminacja zakłóceń

    Case 2:
       B = Y
       Y = 0
       X = 3
       Pulseout Portb , 1 , 60000
    Bitwait Wej , Set
    Waitms 10

    Case 3:
       C = Y
       Y = 0
       X = 4
       Pulseout Portb , 1 , 60000
    Bitwait Wej , Set
    Waitms 10

    Case 4:
       D = Y
       Y = 0
       X = 5
       Pulseout Portb , 1 , 60000
    Bitwait Wej , Set
    Waitms 10

    Case 5:
       E = Y
       Y = 0
       X = 6
       Pulseout Portb , 1 , 60000
    Bitwait Wej , Set
    Waitms 10

    Case 6:
       F = Y
       Y = 0
       X = 7
       Pulseout Portb , 1 , 60000
    Bitwait Wej , Set



    Waitms 300                                                  'odczekaj 300ms




    If A > 19 And A < 41 And B > 11 And B < 25 And C > 11 And C < 25 And D > 23 And D < 41 And E > 55 And E < 77 And F > 27 And F < 45 Then
       Gosub Otworzzamknij                                      'jeśli czasy pasują do wzroców idź do procedury otwórz/zamknij
    End If

    End Select
    End Sub





    Sub Otworzzamknij:                                          'prodedura otwierania/zamykania


    For Z = 0 To 5                                              'mrugnij na żółto
       Set Czerwona
       Set Zielona
       Waitms 10
       Reset Czerwona
       Reset Zielona
       Waitms 50
    Next Z

    Set Czerwona                                                'żółta
    Set Zielona

    For Z = 0 To 20                                             'otwórz zasuwke
       Set Serwo
       Waitus 1100
       Reset Serwo
    Waitms 20
    Next Z

    Reset Czerwona                                              'wyłacz żółtą
    Reset Zielona

    Waitms 100
    Set Zielona                                                 'i świeć na zielono


    Wait 1                                                      'po odczekaniu 1s
    Start Adc                                                   'włącz przetowrnik adc


    Do
    W = Getadc(2)                                               'sprawdź czy otwarto drzwi
    Loop Until W < 100

    Do
    W = Getadc(2)                                               'i badaj stan oświetlenia
    Loop Until W > 500                                          'jeśli ciemno czyli domknieto drzwi

    Waitms 10

    Do
    W = Getadc(2)                                               'sprawdź ponownie po 20ms
    Loop Until W > 500


    Reset Zielona                                               'zgaś zieloną diode

    For Z = 0 To 1                                              'mrugnij na żółto
       Set Czerwona
       Set Zielona
       Waitms 10
       Reset Czerwona
       Reset Zielona
       Waitms 50
    Next Z

    Set Czerwona                                                'zaświeć żółtą
    Set Zielona

    For Z = 0 To 20                                             'i zamknij zasuwke
       Set Serwo
       Waitus 2300
       Reset Serwo
    Waitms 20
    Next Z

    Reset Czerwona                                              'wyłącz diody
    Reset Zielona

    Waitms 100                                                  'odczekaj

    W = Getadc(2)                                               'sprawdź czy rzeczywiście zatrzasniety
    W = Getadc(2)
    If W > 500 Then                                             'jeśli tak

       Set Czerwona                                             'zaświeć na czerwono
       Wait 2                                                   'i po 2s
       Reset Czerwona                                           'zgaś diode
       Stop Adc                                                 'wyłacz przetwornik
       Return                                                   'powrót z podprogramu

    Else                                                        'jesli nie zatrzasnieto

       Gosub Otworzzamknij                                      'przejdz znowu do podprogramu otwierania/zamykania

       End If                                                   'koniec warunku

    End Sub



    '----ODWOŁANIE PRZERWANIA TIMERA----

    Licz:                                                       'przerwanie od timera0
    Timer0 = 0                                                  'wyzeruj timer
    Y = Y + 4                                                   'dodaj 4ms do czasu
    If Y > 100 Then                                             'jeśli czas minał
       Y = 0                                                    'wyzeruj zmienną
       Disable Timer0                                           'wyłącz timer
       Timer0 = 0                                               'wyzeruj go
       If X <> 7 Then                                           'jeśli nie wprowadzono pełnej sekwencji
          Pulseout Portb , 1 , 60000                            'mrugnij czerwoną
       End If                                                   'koniec warunku
       X = 0                                                    'zeruj licznik odwołań
    End If
    Return                                                      'powrót do głównej pętli


    End                                                         'koniec programu
  • #25
    CDMaster
    Poziom 14  
    Witam! Pomysł bardzo oryginalny, ładne wykonanie... kilka uwag:
    1. Co jeśli w pokoju będzie ciemno?? Czy wtedy układ zamknie w ogóle barek czy może "trzeba będzie pukać przy otwartym barku"??
    2. Mogę się mylić, ponieważ tymi prockami się nie bawię, ale napisałeś, że można sprawdzać stan baterii przy pomocy ADC... w układach na których ja pracowałem ADC mierzyło napięcie max do napięcia zasilania... w tym przypadku napięcie zasilania = napięcie które chcesz zmierzyć... czyli zawsze układ ADC da ci odpowiedź MAX... no chyba że miałbyś zasilanie np 6,5V stabilizator na 5v do zasilania procka... a dodatkowo do procka bys jeszcze podłączył to zasilanie 6,5V przez np diody żeby obniżyć napięcie do 4,3V (3x0,7V)... i wtedy kontrolował co na baterii widać...
    Oczywiście mogę się mylić... sam jestem chyba bardziej początkującym elektronikiem niż średnio-zaawansowanym:D i chętnie posłucham uwag na ten temat:D
  • #26
    JStan
    Poziom 16  
    Śpiesze z wyjaśnieniami.

    Ad.1 Troche myślenia:>:> W pokoju nie będzie nigdy zupełnie ciemno gdyż jak otworze barek to zapala się w nim "żarówka" jak widać na zdjęciach i to przede wszystki ona stanowi źródło badanego światła. Oczywiście sprawdzałem i tak dobrałem próg działania aby tylko to światło wystarczyło i w pokoju może być zupełna ciemność(w nocy) Poza tym układ przed sprawdzeniem czy jest już ciemno i można zasunąć zasuwke, sprawdza czy najpierw zrobiło się jasno.

    Ad.2 Badanie stanu baterii odpadło gdy zdecydowałe się jednak na zasilanie z zasilacza więc nie zagłębiałem się w temat, natomiast procesor ATtiny25 posiada dwa WEWNĘTRZNE napięcia odniesienia do wyboru albo 1.1V albo 2.56V i jest ono utrzymywane niezależnie od napięcia zasilania. Pomiar nie powienien więc sprawić kłopotów pod warunkiem że zbudujemy odpowiedni układ pomiarowy dołączony do wejścia ADC.
  • #27
    CDMaster
    Poziom 14  
    Ok:D dzięki za odpowiedź:D z tym mierzeniem napięcia jeszcze sam trochę pomyślałem, do tego pogadałem z kim trzeba i rzeczywiście dałoby się:D chyba zastosuje coś takiego w jakimś przyszłym projekcie na baterie:D
  • #28
    JStan
    Poziom 16  
    Zgodnie z obietnicą sprawdziłem, w stanie % jest rzeczywiście trudniej ale nie jest to niewykonalne :D Hehe po kilku próbach barek otwiera swoje zasoby trunków <lol>:D
  • #29
    Bury69
    Poziom 11  
    pomysłowe, schludnie wykonane i szpanerskie :D:D 7/10
  • #30
    pepe
    Poziom 23  
    Cytat:
    Zgodnie z obietnicą sprawdziłem, w stanie % jest rzeczywiście trudniej ale nie jest to niewykonalne Very Happy Hehe po kilku próbach barek otwiera swoje zasoby trunków <lol>Very Happy


    To takie zabezpieczenie przed przegięciem. Jak masz już dość % to nie otworzysz :D