Szyfrowy Sterownik 4 Urządzeniami


6.5
Ocena: None Średnia: 6.5 (2 głosujących)

Sterownik ten został zaprojektowany aby współpracować z 4 urządzeniami. Działa on z automatem otwierającym bramę, sterownikami otwierania dwóch drzwi garażowych, oraz z Czasowym Sterownikiem Pompy przełączając jego tryby pracy. Każde z urządzeń sterowanych aktywowane jest za pomocą innego kodu. W wersji podstawowej są to 4 cyfry na jeden kod, jednak bez żadnego problemu po niewielkiej modyfikacji programu można wprowadzić nawet 25. Całość zbudowana jest w oparciu o mikrokontroler AT90S2313 (ATTINY2313). W roli elementów wykonawczych pracują przekaźniki. Kody zapisane są w nieulotnej pamięci EEPROM przez co łatwo mogą zostać zmienione.

Działanie:


Schemat sterownika przedstawia poniższy rysunek:

Mikrokontroler U1 (AT90S2313 lub ATTINY2313) wraz z rezonatorem kwarcowym X1 (4MHz) i kondensatorami C3 (33pF) i C4 (33pF) stanowią główną część układu. Przycisk S1 umożliwia reset procesora w dowolnym momencie. Do złącza 5V podłączamy napięcie zasilające, które przez diodę zabespieczającą D9 (1N4001) trafia na kondensatory filtrujące C1 (100nF) i C2 (100uF). Tranzystor T1 (BC557) wraz z elementami R1 (3,3k) i R2 (3,3k) steruje pracą brzęczyka piezo. Złącza AK1 - AK3 (ARK) umożliwiają podłączenie klawiatury. Tranzystory T2 - T5 (BC557) wraz z rezystorami R7 - R14 (3,3k) zajmują się uruchamianiem przekaźników P1 - P4 (JRC21F). Diody D1 - D4 wraz z rezystorami ograniczającymi prąd R15 - R18 (180R) stanowią sygnalizację włączenia przekaźników. Elementy D5 - D8 (1N4007) chronią tranzystory przed przepięciami mogącymi pojawić się na cewkach przekaźników.

Połączenia przycisków klawiatury przedstawione są na rysunku poniżej:

Budowa:


Sterownik można zrobić korzystając z płytki drukowanej dostępnej tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż płytki należy rozpocząć od wlutowania wszystkich zworek. Kolejność pozostałych elementów nie jest ważna ale dobrze jest montować je od najmniejszych do największych. Pod mikrokontroler należy bezwzględnie zastosować podstawkę gdyż w przeciwnym wypadku nie będzie możliwości jego zaprogramowania. Klawiaturę do zamka należy wykonać w dowolny sposób. W moim projekcie pracuje orginalna klawiatura z zamka szyfrowego(z lekkimi modyfikacjami). Pomocą w konstrukcji może okazać się dostępny tutaj schemat montażowy.

Wykaz Elementów:


5x Złącze ARK2
4x Złącze ARK3
1x uSwitch
4x Przekaźnik JRC21F

4x 180R
10x 3,3k

2x 33pF
1x 100nF
1x 100uF Elektrolit

1x Rezonator Kwarcowy 4MHz
1x 90S2313 lub ATTINY2313 + Podstawka

5x 1N4007
4x Dioda LED
5x BC557B

Programowanie:


Mikrokontroler do sterownika został zaprogramowany w wersji demo programu BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

$eeprom
'************************************************************************
Niewaznybajt:             'zeby nie zapisywal do pierwszej komorki  danych
  Data 255                  'moze ulec skasowaniu po resecie procesora
Kod1:
  Data 1 , 2 , 3 , 4
Kod2:
  Data 2 , 2 , 3 , 4
Kod3:
  Data 3 , 2 , 3 , 4
Kod4:
  Data 4 , 2 , 3 , 4
 
'************************************************************************
 
$data
'************************************************************************
$regfile = "attiny2313.dat"
 
$crystal = 4000000
 
Config Portb = &B11110001
        Portb = &B1111111
Config Portd = &B1111111
        Portd = &B1111111
'************************************************************************
Dim Cyfra As Byte
Dim Licznik As Byte
Dim Kod(4) As Byte
Dim Kodwyzerowany As Bit
Dim Kodpoprawny As Bit
Dim Kodp1 As Bit , Kodp2 As Bit , Kodp3 As Bit , Kodp4 As Bit
Dim Wb As Byte
Dim N As Byte                                               'uniwersalna zmienna pomocnicza
Dim Pierwadres As Byte , Adres As Byte
Dim Urrejestr As Bit
 
'************************************************************************
Reset Portb.7
Set Portb.4                                                 'jezeli podczas wlaczenia napiecia wcisniete M C 2  5 to rejestracja
'//////////////////
If Pinb.3 = 1 And Pinb.2 = 0 And Pinb.1 = 1 Then
  Reset Portb.6
  Set Portb.7
  If Pinb.3 = 1 And Pinb.2 = 0 And Pinb.1 = 1 Then
    Reset Portb.5
    Set Portb.6
    If Pinb.3 = 1 And Pinb.2 = 1 And Pinb.1 = 1 Then
      Reset Portb.4
      Set Portb.5
      If Pinb.3 = 0 And Pinb.2 = 1 And Pinb.1 = 0 Then
        Gosub Rejestracja
      End If
    End If
  End If
End If
 
Gosub Migled
Gosub Migled
Gosub Migled
 
Licznik = 1
Gosub Zerujkod
 
'************************************************************************
 
Do
 
Gosub Klawiatura
 
If Cyfra < 12 Then                                          'jezeli jeden z klawiszy wcisniety
'//////////////////
If Cyfra < 10 Then                                          'klawisze liczbowe
  If Licznik < 5 Then
    Kod(licznik) = Cyfra
    Reset Kodwyzerowany
  Else
    Gosub Zerujkod
    Licznik = 5                                             'nigdy ni wyjdzie poza tego ifa jezeli bedzie wiecej niz 4 klikniecia
  End If
 
  Incr Licznik
End If
'//////////////////
If Cyfra = 10 Then                                          'klawisz M
 If Kodwyzerowany = 1 Then
   Gosub Migled2
   Licznik = 1
   Gosub Zerujkod
 Else
   Gosub Sprawdzkod
 End If
End If
'//////////////////
If Cyfra = 11 Then                                          'klawisz C
 Licznik = 1
 Gosub Zerujkod
End If
'//////////////////
End If
 
Loop
End
'************************************************************************
Klawiatura:
 
Cyfra = 255
 
Reset Portb.7
Set Portb.4                                                 'ustaw 0 na wierszu 1(1,2,3)
'//////////////////
If Pinb.3 = 0 Then
  Cyfra = 1
  Gosub Migled
  While Pinb.3 = 0
  Wend
End If
 
If Pinb.2 = 0 Then
  Cyfra = 2
  Gosub Migled
  While Pinb.2 = 0
  Wend
End If
 
If Pinb.1 = 0 Then
  Cyfra = 3
  Gosub Migled
  While Pinb.1 = 0
  Wend
End If
'//////////////////
 
Reset Portb.6
Set Portb.7                                                 'ustaw 0 na wierszu 2(4,5,6)
'//////////////////
If Pinb.3 = 0 Then
  Cyfra = 4
  Gosub Migled
  While Pinb.3 = 0
  Wend
End If
 
If Pinb.2 = 0 Then
  Cyfra = 5
  Gosub Migled
  While Pinb.2 = 0
  Wend
End If
 
If Pinb.1 = 0 Then
  Cyfra = 6
  Gosub Migled
  While Pinb.1 = 0
  Wend
End If
'//////////////////
 
Reset Portb.5
Set Portb.6                                                 'ustaw 0 na wierszu 3(7,8,9)
'//////////////////
If Pinb.3 = 0 Then
  Cyfra = 7
  Gosub Migled
  While Pinb.3 = 0
  Wend
End If
 
If Pinb.2 = 0 Then
  Cyfra = 8
  Gosub Migled
  While Pinb.2 = 0
  Wend
End If
 
If Pinb.1 = 0 Then
  Cyfra = 9
  Gosub Migled
  While Pinb.1 = 0
  Wend
End If
'//////////////////
 
Reset Portb.4
Set Portb.5                                                 'ustaw 0 na wierszu 4(M,0,C)
'//////////////////
If Pinb.3 = 0 Then                                          'M
  Cyfra = 10
  'Gosub Migled   'nie migaj po enter
  While Pinb.3 = 0
  Wend
End If
 
If Pinb.2 = 0 Then
  Cyfra = 0
  Gosub Migled
  While Pinb.2 = 0
  Wend
End If
 
If Pinb.1 = 0 Then
  Cyfra = 11                                                'C
  Gosub Migled
  While Pinb.1 = 0
  Wend
End If
'//////////////////
Waitms 10
 
Return
'************************************************************************
Zerujkod:
 Kod(1) = 100
 Kod(2) = 100
 Kod(3) = 100
 Kod(4) = 100
 Set Kodwyzerowany
Return
'************************************************************************
Testujkod:
 Set Kodpoprawny
 For N = 1 To 4
   Adres = N + Pierwadres    'przesuniecie zeby mozna bylo porownywac wpisana wartosc z 1 2 3 i 4 kodem
   Readeeprom Wb , Adres
   If Wb <> Kod(n) Then
    Reset Kodpoprawny
   End If
 Next N
Return
'************************************************************************
Sprawdzkod:
 Pierwadres = 0                                             'porownuje z 1 kodem w pamieci
 Gosub Testujkod
 Kodp1 = Kodpoprawny                                        'jezeli wprowadzony kod jest rowny 1 kodowi to = 1
 
 Pierwadres = 4                                             'porownuje z 2 kodem w pamieci
 Gosub Testujkod
 Kodp2 = Kodpoprawny                                        'jezeli wprowadzony kod jest rowny 2 kodowi
 
 Pierwadres = 8                                             'porownuje z 3 kodem w pamieci
 Gosub Testujkod
 Kodp3 = Kodpoprawny                                        'jezeli wprowadzony kod jest rowny 3 kodowi
 
 Pierwadres = 12                                            'porownuje z 4 kodem w pamieci
 Gosub Testujkod
 Kodp4 = Kodpoprawny                                        'jezeli wprowadzony kod jest rowny 4 kodowi
 
 
 If Kodp1 = 1 Or Kodp2 = 1 Or Kodp3 = 1 Or Kodp4 = 1 Then
    Gosub Migled
    Gosub Migled
    Gosub Migled
 
    If Kodp1 = 1 Then
     Gosub Uruchom1
    End If
 
    If Kodp2 = 1 Then
     Gosub Uruchom2
    End If
 
    If Kodp3 = 1 Then
     Gosub Uruchom3
    End If
 
    If Kodp4 = 1 Then
     Gosub Uruchom4
    End If
 
    Licznik = 1
    Gosub Zerujkod
 Else
   Gosub Migled2
 End If
Return
'************************************************************************
Rejestracja:
  Gosub Migled2
  Waitms 500
  Gosub Migled2
  Waitms 500
  Gosub Migled2
 
  Licznik = 1
 
  Do
    Gosub Klawiatura
 
    If Cyfra < 12 Then                                      'jezeli jeden z klawiszy wcisniety
    '//////////////////
    If Cyfra > 9 Then Cyfra = 100
 
    Writeeeprom Cyfra , Licznik
 
    N = Licznik Mod 4
    If N = 0 Then Gosub Migled2
 
    Incr Licznik
    If Licznik = 17 Then Exit Do
    '//////////////////
    End If
  Loop
 
  'zapisywanie do eeprom
Return
'************************************************************************
Migled:
  Reset Portb.0
  Waitms 100
  Set Portb.0
  Waitms 100
Return
'************************************************************************
Migled2:
  Reset Portb.0
  Waitms 1000
  Set Portb.0
  'Waitms 1000
Return
'************************************************************************
Uruchom1:
  Reset Portd.2
  Waitms 800
  Set Portd.2
  'Waitms 400
Return
'************************************************************************
Uruchom2:
  Reset Portd.3
  Waitms 800
  Set Portd.3
  'Waitms 400
Return
'************************************************************************
Uruchom3:
  Reset Portd.4
  Waitms 800
  Set Portd.4
  'Waitms 400
Return
'************************************************************************
Uruchom4:
  Reset Portd.5
  Waitms 800
  Set Portd.5
  'Waitms 400
Return
'************************************************************************

Poniżej przedstawiono ustawienia fusebitów dla mikrokontrolera ATTINY2313 (Zrzut z programu Burn-O-Mat):

Zdjęcia Projektu:

ZałącznikWielkość
Schemat92.54 KB
Płytka17.88 KB
Płytka (odbicie lustrzane)17.85 KB
Płytka (2 na stronie)33.47 KB
Montowanie25.12 KB
Schemat Klawiatury23.71 KB
Kod źródłowy8.05 KB
Program po kompilacji (BIN)1.96 KB
Program po kompilacji (HEX)5.53 KB
Zawartość pamięci EEPROM mikrokontrolera (EEP)17 bajtów
Kod Źródłowy (ATTiny2313) (rejestracja kodów po zwarciu PD.6)9.61 KB



Portret użytkownika Gość

Przekaźnik

Witam
Co zrobić aby zastosować przekaźniki na 12V
Pozdrawiam

Portret użytkownika mirley

Re: Przekaźniki

Sygnał z kolektorów tranzystorów wyjściowych podałbym poprzez rezystory 3.3k na bazy tranzystorów NPN (dodatkowo od baz tranzystorów do masy powinny być ok 10k rezystory ściągające). Emitery NPN'ów do masy a na kolektory przekaźniki z diodami zabezp. Drugie końcówki cewek przekaźników do zasilania

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika ducker

AT90S1200

Witam !

Czy można skompilować ten program pod as90s1200 ? Jak próbuje skompilować program to pokazuje się błąd:
[Not possible with $TINY]

Akurat mam wolne dwa takie układy i chciałbym je wykorzystać.

Portret użytkownika mirley

Re: Zamek

Z tego co patrzę to ten procek ma 1kB pamięci a program zajmuje prawie 2kB. Nie jest to fizycznie możliwe aby program się zmieścił, więc próba kompilacji jest bez sensu

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika ducker

Rzeczywiście nie sprawdziłem

Rzeczywiście nie sprawdziłem tego wcześniej. A mógłbyś mi odpowiedzieć co mógłbym zrobić żeby taki program skompilować tak żebym wiedział na przyszłość? W helpie się doczytałem że można zadeklarować zmienne jako iram ale nie przyjmuje mi wtedy deklaracji tablicy. Jest jakiś sposób aby przeszła kompilacja zarówno zmiennych jak i tablic?

Portret użytkownika mirley

Re: IRAM

Z tego co wiem to IRAM deklaruje zmienne w rejestrach procesora i jest używana wtedy gdy procek nie ma ramu.... osobiście nigdy tego nie uzywałem ale wyczytałem gdzieś że tylko zmienne bajt możesz w taki sposób deklarować

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika mareczek

zdalne sterowanie

witam czy dało by sie przerobić tak ten układ by była możliwość sterowania również bezprzewodowo???

Portret użytkownika mirley

Re: Zamek szyfrowy

Z pilota RC5 może by się dało ale trzeba pokombinować..... program jest za stary żebym pamiętał jak to prosto dołożyć. Popatrz w kodach źródłowych na obsługę pilota RC5

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika wiaderek68

uSwitch S1

Dzień dobry
Jak ten układ zrobię na Attiny 2313 to muszę podłączac ten uSwitch S1?

pozdrawiam robert

Portret użytkownika mirley

Re; S1

Nie trzeba przycisku reset w takim przypadku

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

Po złożeniu nic nie reaguje

Złożyłem układa nie mam podpiętych tylko przekaźników, i buzera, led od klawiatury i przekaźników wlutowana, nie reaguje na klikanie na klawiaturę, co może być fusbity ustawione jak na foto, kwarc i kondensatory wlutowane.

Portret użytkownika mirley

Re: Zamek

Skąd wiesz że nie reaguje na klawiaturę jak nie masz buzzera ani diody, która miga przy klikaniu

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

zamontowałem diodę od

zamontowałem diodę od klawiatury i zero reakcji, nie dałem tylko buzera, i przekaźników bo nie mam.

Portret użytkownika mirley

RE: Sterownik

Przekompilowałeś program pod tiny2313 czy używasz tego starego procka 90S....? Przekompiluj i wgraj jeszcze raz program. Sprawdź czy kondensatory przy kwarcu mają dobrą wartość

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

Przekompilowałem tylko plik

Przekompilowałem tylko plik *.bas tak by powstał *.hex nie znam się za bardzo na programowaniu, kondensatory dalem 33pf. Jeśli możesz to przekompiluj mi tak dla pewności. fusbity ustawiłem jak na twoim screen dobrze ????

Portret użytkownika mirley

Re: Szyfrowy

Jak zrobił ci się hex to dobrze użyj tej wersji kodu: LINK

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

Dioda od klawiatury miga tak

Dioda od klawiatury miga tak jak powinna lecz brak reakcji po wpisaniu kodu 1234i naciśnięciu M dioda nie świeci od przekaźnika

Portret użytkownika lukasz

Dobra działa wszystko ok

Dobra działa wszystko ok

Portret użytkownika killerin00

klawiatura

Czy taka klawiaturka będzie ok??

Portret użytkownika lukasz

klawiatura ładna z tego co

klawiatura ładna z tego co widzę wyprowadzenia ma ok, ile taka klawiaturka kosztuje, gdzie taką dostanę oprócz TME ????

Portret użytkownika killerin00

Tutaj (kliknij) masz te

Tutaj (kliknij) masz te klawiaturki. Ale jak połączyć taką klawiature z tym układem. Ma ona 7 wyprowadzeń. Pominąć dwa ostatnie wejścia na ak1??

Portret użytkownika lukasz

TUTAJ masz schemat takiej

TUTAJ masz schemat takiej klawiatury w avt droga ona jest, jak nie znajdę jakiejś w starociach, to będę musiał w TME zamowić.

Portret użytkownika lukasz

tak dwa ostatnie złącza na

tak dwa ostatnie złącza na ak1 to tylko buzer i led

Portret użytkownika killerin00

To zamawiam na TME i zabieram

To zamawiam na TME i zabieram się do pracy nad moim projektem. Dzięki wielkie

Portret użytkownika lukasz

programowanie kodu

A jak zmienić zaprogramowane kody, raz zaprogramowałem a teraz juz nie mogę zmienić na inne. Czemu???

Portret użytkownika mirley

Re: Zamek

Zwierasz Pd.6 do masy (jak masz wersję na tiny2313) i dajesz reset albo wyłączasz zasilanie procka i właczasz ponownie. Na starcie będzie kilka piknięc co 0,5s po czym następuje oczekiwanie na kody. Wprowadzasz 4 cyfry i słyszysz pisk przez 1 sekundę, wprowadzasz kolejne 4 itd. Na końcu usłyszysz kilka długich pisków i jest ok. Rozwierasz pd.6 i uruchamiasz ponownie.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

zapomniałem się zapytać czy

zapomniałem się zapytać czy da się w łatwy sposób wydłużyć czas działania przekaźnika z 0.8s na 1,5-2s?????

Portret użytkownika mirley

Re: przekaźnik

Czas działania przekaźnika jest jawnie napisany tutaj:

Uruchom1:
  Reset Portd.2
  Waitms 800      'tu masz 800ms czyli 0.8s jak dasz waitms 1500 to powinno być 1,5s a jak wait 2 to 2 sek itp
  Set Portd.2
  'Waitms 400
Return

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

ok dzięki już doszłem do

ok dzięki już doszłem do tego, na razie zamontowałem to prowizorycznie do drzwi, jak się sprawdzi to na stałe zamontuje, zdarzyło mi się że same skasowały się 3 kody został tylko 4 i musiałem odnowa programować, czemu ????

Portret użytkownika mirley

Zamek

A po zaprogramowaniu wypiąłeś zworkę Pd.6? Używam tego zamka do otwierania bramy i klika lat chodził bez zarzutu... ostatnio się klawiatura posypała i muszę założyć nową. Kody jednak nigdy się nie skasowały.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

tak rozpiąłem pd.6 ale raz

tak rozpiąłem pd.6 ale raz się zdarzyło, narazie pracuje ok zobaczymy jeszcze 1 miech i na stałe montuje.

Portret użytkownika lukasz

i znowu to samo skasowały się

i znowu to samo skasowały się 3 kody 1 tylko został, co może być nie tak????

Portret użytkownika mirley

Re: Zamek

Nie ma prawa się tak dziać.... EEprom skasować może tylko przeprogramowanie procka, albo procedura rejestrująca kody w programie. Jeśli procedura po resecie zasilania się nie wykonuje to kody nie mają prawa zostać nadpisane. Pind.6 napewno jest zawsze w stanie wysokim, podciągnij go dodatkowym rezystorem np 1k do zasilania.

Może procek jest uszkodzony i kasuje eeprom sam sobie.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

raczej nie jest uszkodzony bo

raczej nie jest uszkodzony bo jak zaprogramuję odnowa kody to wszystko jest ok i niema znaczenia czy odepnę zasilanie czy nie kody nadal są zapisane,ale po około 2-3dni został tylko jeden kod. Aktualnie zasilanie mam z akumulatora żelowego 12v 4ah. Bo nie mam transformatorka, a zamek jest założony na próbę. czy mogę wgrać wsad z programowaniem z klawiszy????, który to jest????

Portret użytkownika mirley

Re: Zamek

Do attiny2313 jest tylko jedna wersja kodu ... dostępna w załaczniku na stronie. Kody programuje się poprzez zworkę lub poprzez naciśnięcie kombinacji klawiszy podczas resetu zasilania

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika lukasz

z klawiszy nie da się zmienić

z klawiszy nie da się zmienić kodu.

Portret użytkownika bobo3712

problem

Witam.
Zrobiłem ten projekt i nawet działa jak na amatora to znaczy mnnie.
Mam mały problem jak klawiatura jest bezczynna nic nie wciskam to po kilku godzinach wpisze kod
a on pipa ze nieprawidłowy ale jak wpisze drugi raz to łapie normalnie wyłączałem zasilanie specjalnie na noc żeby sprawdzić czy załapie i łapie od razu

Portret użytkownika EDC

Re. Problem

Program za każdym razem czeka na 4 cyfry. Jeśli w międzyczasie procesor poprzez Twoja klawiature odczyta chociażby jedna cyfrę to Twój kod juz jest nia poprzedzony i przez to niepoprawny. W programie przydałby się czas na wpisanie kodu.. np wpisanie tylko dwóch cyfr..i po 30 sec i tak wykonałoby sie "Zeruj kod". Projekt jest minimalistyczny w sensie takim że na schemacie pracuje w warunkach idealnych. W rzeczywistości na jego prace wpływaja zakłócenia które można czasem w oprogramowaniu niejako zminimalizowac. Jest na przykłąd "szkoła" która nie ufa wewnetrznym rezystorom podciagającym w Mikrokontrolerze i każe stosowac zewnętrzne rezystory podciągajace (u Ciebie byłyby na PortB.1 PortB.2 i PortB.3). Drugim rozwiązaniem właśnie było dopisanie odliczania czasu po wciśnięciu pierwszej cyfry kodu. Dałaby np. 10 sec na wpisanie wszystkich i to nawet w przypadku wyłapania błędnego kasowałoby je.

-

BARTek
Moja strona

Portret użytkownika maro

Witam Czy byłby ktoś w stanie

Witam
Czy byłby ktoś w stanie poprawić kod tak żeby dopisać "czas na wpisanie kodu" jak również nie potrzebuję aż 4-ech przekaźników

Portret użytkownika aaaaaa

Pomoc w wysterowaniu przekaźników na attinie 2313

Witam chciałem zrobić sobie prosta listwę 6 gniazdek z tym, że sterowana ona ma być przez przyciśnięcie jednego z 6 switchy klikasz włacza klikasz wyłacza i tak kazde z 6 gniazdek, niby mi to działa ale tylko na sucho gdy podepnę już co kolwiek to załącza ale nie zawsze, przeważnie załaczę coś np lampkę z żarówką 40w, i do tego stację lutowniczą to restartuje mi szystkie i nie chce zaskoczyć potem. poniżej mniej schemat przerobiony w paincie :) i kod jakiego uzywam.

$regfile = "attiny2313.dat"
$crystal = 8000000                                          'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
 
 
Config Portb = Output                                       'wszystkie końcówki jako wyjścia
       Portb = &B11111111
                              'wszędzie wpisz stan spoczynkowy 1
Config Portd = Input                                        'dwa najmłodsze jako wejścia
       Portd = &B11111111
 
 
 
 
Do
 
Debounce Pind.0 , 0 , Wlacz0 , Sub
 
Debounce Pind.1 , 0 , Wlacz1 , Sub
 
Debounce Pind.2 , 0 , Wlacz2 , Sub
 
Debounce Pind.3 , 0 , Wlacz3 , Sub
 
Debounce Pind.4 , 0 , Wlacz4 , Sub
Debounce Pind.5 , 0 , Wlacz5 , Sub
 
 
 
Loop
End
 
Wlacz0:                                                     'etykieta
Toggle Portb.0                                              'zmień stan wyprowadzenia
Return
Wlacz1:                                                     'etykieta
Toggle Portb.1                                              'zmień stan wyprowadzenia
Return
Wlacz2:                                                     'etykieta
Toggle Portb.2                                              'zmień stan wyprowadzenia
 
Return
Wlacz3:                                                     'etykieta
Toggle Portb.7                                              'zmień stan wyprowadzenia
Return
Wlacz4:                                                     'etykieta
Toggle Portb.4                                              'zmień stan wyprowadzenia
Return
 
Wlacz5:                                                     'etykieta
Toggle Portb.3                                              'zmień stan wyprowadzenia
Return

Portret użytkownika aaaaaa

http://zapodaj.net/bc883486db

Portret użytkownika EDC

Odp. Attiny

Po pierwsze mogłeś założyć nowy temat bo tutaj jest miejsce na dyskusje dotyczącą powyższego sterownika.

Jeśli tak to podłączyłeś jak na schemacie to:

W programie przyciski masz na porcie D a na schemacie są na B
W programie elementy wykonawcze masz na porcie B a na schemacie są na D
Przyciski powinny z drugiej strony być podłączone do masy
Pin Reset procesora dobrze było by podłączyć przez 10k do +5V by zabezpieczyć się przed niekontrolowanymi resetami.
Oczywiście procesorowi należą się kondensatory. Lepiej ściągnij notę do ATtiny2313 żeby nie pomylić wyprowadzeń.
Jesli przekaźniki sa 12V to wydaje mi się że powinieneś podać +12V na przekaźniki a tranzystorami zwierać obwód do masy.
Tu chyba błąd masz największy bo żeby sterować 12V musiał byś tam zastosować dwa tranzystory

Program po tych poprawkach miałby szanse zadziałać.
Fabrycznie Attiny ma włączony podzielnik FREQ więc jego prędkośc to 1000000 a nie 8000000 jeśli nie zmieniłeś bitu CKDIV8.

-

BARTek
Moja strona

Portret użytkownika aaaaaa

ok ok wyprowadzenia są

ok ok wyprowadzenia są poprawne tylko na schemacie nie jest to zmienione nie sugeruj się schematem zamieściłem go tak poglądowo, oczywiście porty są poprawnie podpięte, zmieniłem również kod na 1mhz, ale to też nie pomogło przekaźniki są na 5v.

Portret użytkownika EDC

Odp. Attiny

Stawiam więc na kiepski design czyli słabe zasilanie procka ;) Jeśli wszystko tam ma działać na 5V to musisz to pofiltrować. Możesz dać diodę przed zasilaniem mikrokontrolera i za nią kondensator żeby utrzymywało napięcie w momencie włączania przekaźników. Z tego napięcia też dopiero wziąć te do podciągania pinu reset.
Program oczywiście można napisać inaczej ale ten powinien działać. Napisanie innego wiele nie zmieni.

-

BARTek
Moja strona

Portret użytkownika aaaaaa

dodam, że na przekaźniku 9v i

dodam, że na przekaźniku 9v i zasilaniu 5v działa poprawnie, tak samo jak dam przekaźnik na 4,5v też działa poprawnie, po prostu na tych przekaźnikach 5v nie chce to działać prawidłowo, jakieś czary ???