
Działanie:
Schemat ideowy wyłącznika został przedstawiony na rysunku 1. Sercem układu jest mikrokontroler U3 (ATMEGA8-PU), pracujący z rezonatorem kwarcowym X1 (16MHz). Kondensatory C5-C6 (22pF) zapewniają poprawną pracę rezonatora kwarcowego. Rezystor R3 (10k) zapewnia poprawną polaryzację nóżki resetu podczas normalnej pracy mikrokontrolera, natomiast złącze PROG1 (AVRPROG) umożliwia programowanie bez wyjmowania U3 z podstawki. Sterowanie stanami wyjść odbywa się za pomocą przycisków chwilowych SW1-SW10 (uSw 12mm), które zostały podłączone do pinów mikrokontrolera poprzez prosty dekoder zbudowany na diodach D11-D22 (1N4148). Dzięki temu do odczytu stanu 10 klawiszy wymagane są tylko 4 linie wejściowe U3. Na wyjściach zastosowano szeregowe połączenie rezystorów R5-R14 (100R) z odpowiadającymi im diodami D1-D10 (LED). Stanem aktywnym na wyjściach jest stan niski ale można to łatwo zmienić zmieniając polaryzację diod D1-D10. Taka konstrukcja wyjść pozwala w prosty sposób podłączyć układy wykonawcze w postaci optotriaków (między +5V a danym wyjściem). Złączami wyjściowymi są GP4 (NS25-W4), GP5 (NS25-W4) i GP6 (NS25-W2).Budowa:
Płytkę drukowaną (warstwa od strony druku) można pobrać tutaj. Jej odbicie lustrzane można znaleźć tutaj. Pomocą w montażu płytki od strony druku (od spodu) będzie rysunek dostępny tutaj, natomiast montowanie płytki od strony elementów (od góry) warto oprzeć o rysunek dostępny tutaj. Budowa sterownika jest dość nietypowa jak na układy z płytką jednostronną - część komponentów lutowana jest od strony druku. W pierwszej kolejności jednak należy zająć się komponentami montowanymi klasycznie od strony elementów. Na początku lutujemy pięć zworek, pozostałe oznaczone miedzy wyprowadzeniami przycisków pomijamy, gdyż załatwią to same przyciski na późniejszym etapie montażu. Dalej montujemy wszystkie rezystory, diody (nie LED) i kondensatory ceramiczne, a następnie pozostałe komponenty. Pod układy U2 i U3 dobrze jest zastosować podstawki. Dla prostych zastosowań nie są wymagane komponenty U2, C1, R2, oraz GP3 - lutujemy je tylko wtedy gdy chcemy sterować układem z zewnątrz za pomocą komputera. Elementy R1 i R4 są dodane na wyrost, nie montujemy ich w typowych warunkach pracy.Programowanie:
Program został napisany w dobrze znanym programie BASCOM AVR . Zajmuje on obecnie 58% dostępnej pamięci mikrokontrolera. Poniżej przedstawione są jedynie ciekawe fragmenty podstawowej wersji programu. Protokół komunikacyjny do przesyłania danych po RS485 Zostanie opisany w osobnym artykule. Procedura odczytu klawiatury:
Buttons:
Sw = Sw_port And &B00111001
Sw.6 = Sw.0
Shift Sw , Right , 3
'Sw = S0 | SCK | MISO | MOSI
If Sw <> 15 And SwState = Sw Then
If SwCounter < 1000 Then Incr SwCounter
If SwCounter = 15 Then
Select Case SwState
Case &B00001001: SwChn = 4'Out0, Sw1, PC CH4
Case &B00001011: SwChn = 9'Out1, Sw2, PC CH9
Case &B00001010: SwChn = 8'Out2, Sw3, PC CH8
Case &B00001101: SwChn = 3'Out3, Sw4, PC CH3
Case &B00001100: SwChn = 2'Out4, Sw5, PC CH2
Case &B00000011: SwChn = 7'Out5, Sw6, PC CH7
Case &B00001110: SwChn = 6'Out6, Sw7, PC CH6
Case &B00000101: SwChn = 1'Out7, Sw8, PC CH1
Case &B00000110: SwChn = 0'Out8, Sw9, PC CH0
Case &B00000111: SwChn = 5'Out9, Sw10, PC CH5
End Select
If ChnModes(SwChn+1) <> 1 Then
Toggle OutState.SwChn
CycleMinCnt(SwChn+1)=0'Clear cycle counters
CycleSecCnt(SwChn+1)=0
Set GlobFlags.1 'Set "Outs changed" flag
Reset GlobFlags.0'Clears "Device reseted" flag
Gosub UpdateOuts
End If
End If
If SwCounter = 750 Then
ChnModes(SwChn+1) = 0'Reset channel to manual mode after 3 sec.
Set GlobFlags.1 'Set "Outs changed" flag
SigOut=0
End If
Else
SwState = Sw
SwCounter = 0
End If
Return
Timer0Int:
Timer0 = 6
Set F4ms
Incr DivCnt
If DivCnt = 250 Then
DivCnt = 0
Set F1s
Incr CurrSec
For nt = 1 To 10
Incr CycleSecCnt(nt)
Next nt
If CurrSec = 60 Then
CurrSec = 0
Incr CurrTime
For nt = 1 To 10
Incr CycleMinCnt(nt)
Next nt
If CurrTime = 1440 Then CurrTime=0
End If
End If
Return
ControlsOuts:
TmpOutState=OutState
For n = 0 to 9
Select Case ChnModes(n+1)
Case 0:'Manual mode
'Do nothing
Case 1:'From TintA to TintB
If TintA(n+1) <= TintB(n+1) Then
If CurrTime >= TintA(n+1) and CurrTime < TintB(n+1) Then Set OutState.n Else Reset OutState.n
Else
If CurrTime >= TintA(n+1) or CurrTime < TintB(n+1) Then Set OutState.n Else Reset OutState.n
End If
Case 2:'Works TintA minutes and after that waits TintB minutes. Time = 0 gives infinite delay
If OutState.n = 1 Then Hw=TintA(n+1) Else Hw=TintB(n+1)
If CycleMinCnt(n+1) >= Hw Then
CycleMinCnt(n+1)=0
If Hw > 0 Then Toggle OutState.n
End If
Case 3:'Works TintA seconds and after that waits TintB seconds. Time = 0 gives infinite delay
If OutState.n = 1 Then Hw=TintA(n+1) Else Hw=TintB(n+1)
If CycleSecCnt(n+1) >= Hw Then
CycleSecCnt(n+1)=0
If Hw > 0 Then Toggle OutState.n
End If
End Select
Next n
If TmpOutState <> OutState Then
Set GlobFlags.1 'Set "Outs changed" flag
Gosub UpdateOuts
End If
Return
UpdateOuts:
Ot0=not OutState.4
Ot1=not OutState.9
Ot2=not OutState.8
Ot3=not OutState.3
Ot4=not OutState.2
Ot5=not OutState.7
Ot6=not OutState.6
Ot7=not OutState.1
Ot8=not OutState.0
Ot9=not OutState.5
Return
Ustawienia Fusebitów:
Wersje Oprogramowanie uC:
- 0.80 - Wszystko działa poprawnie. Jest to pierwsza wersja która w ogóle zawiera informacje na temat aktualnej wersji :). Aplikacja będzie mogła sprawdzić czy nie ma nowej wersji oprogramowania dla uC na stronie i ewentualnie wyświetlić zmiany.
- 0.95 - Dodano dwie flagi poprawiające wydajność komunikacji. Przy okazji odczytu czasu urządzenie odsyła teraz dwie informacje: Czy zostało zresetowane i brak mu konfiguracji oraz czy stany portów uległy zmianie i trzeba je odczytać w celu aktualizacji w aplikacji. Zmniejsza to trzykrotnie ruch na magistrali przez rezygnacje z cyklicznego czytania stanów, które się nie zmieniły.
Obsługa:
Wyłącznik po zaprogramowaniu mikrokontrolera nie wymaga żadnych dodatkowych czynności i od razu powinien pracować poprawnie. Każdy z kanałów startuje w trybie 0 co oznacza brak sterowania czasowego. Z poziomu klawiatury na urządzeniu można zmienić stan każdego z wyjść na przeciwny. Po uruchomieniu aplikacji na komputerze zegar na urządzeniu zostanie automatycznie zaktualizowany i będzie można dokonać niezbędnych ustawień. Każdy z kanałów można włączyć jeden z 4 trybów pracy:- 0: tryb manualny - umożliwia sterowanie ręczne danego kanału, z poziomu klawiatury lub z poziomu aplikacji.
- 1: tryb czasowy, od A do B - pozwala na zaprogramowanie danego wyjścia w cyklu dobowym. Wyjście będzie aktywne od godziny A do godziny B, każdego dnia. W tym trybie przyciski sterowania ręcznego nie działają.
- 2: tryb cykliczny, praca przez A, przerwa B - wyjście działa w trybie cyklicznym, jest aktywne przez czas A, po czym następuje przerwa B. Oba przedziały czasu można ustawić w granicach od 0 do 34 godziny z precyzją 1 minuty. W tym trybie przyciski sterowania ręcznego pozwalają zmienić stan wyjścia na przeciwny, jednorazowo skracając tym samym czas aktualnie odliczanej przerwy bądź pracy. Ustawienie któregokolwiek z czasów na 0 daje nieskończony odstęp czasu, co oznacza to że wyjście ma jeden stan stabilny (praca monostabilna).
- 3: tryb cykliczny, praca przez A, przerwa B - działa tak samo jak tryb 2, z tym że oba przedziały czasu można ustawić w granicach od 0 do 34 minuty z precyzją 1 sekundy.
Zdjęcia Projektu:
Wykaz Elementów:
Elementy Wyłącznika:
Załączniki:
Projekt Płytki: | ||
AB AB AB | Płytka (strona druku,termotransfer) | 38.7 kB |
AB AB AB | Płytka (strona druku,odbicie lustrzane) | 39.0 kB |
AB AB AB | Płytka (strona druku, kilka płytek na stronie, termotransfer) | 162.1 kB |
AB AB AB | Montowanie (strona elementów) | 72.7 kB |
AB AB AB | Montowanie (strona druku) | 73.5 kB |
AB AB AB | Warstwa Opisowa (strona elementów) | 93.6 kB |
AB AB AB | Warstwa Opisowa (strona druku) | 93.8 kB |
AB AB AB | Soldermaska (strona druku) | 68.9 kB |
Dokumentacja: | ||
AB AB AB | Schemat Ideowy | 186.5 kB |
AB AB AB | Lista Elementów | 1.0 kB |
AB AB AB | Lista Montażowa | 1.2 kB |
Programowanie: | ||
AB AB AB | Kod Źródłowy (BASCOM-AVR) | 12.3 kB |
AB AB AB | Kod Źródłowy (BASCOM-AVR) (Uproszczony) | 4.4 kB |
AB AB AB | Program wynikowy (BIN BASCOM-AVR) (Uproszczony) | 1.3 kB |
AB AB AB | Program wynikowy (BIN BASCOM-AVR) | 4.6 kB |
AB AB AB | Program wynikowy (HEX) | 13.0 kB |
AB AB AB | Program wynikowy (HEX) (Uproszczony) | 3.8 kB |
AB AB AB | Ustawienia Fusebitów (burn-o-mat) | 12.1 kB |
Pozostałe: | ||
AB AB AB | Plik Wierceń | 20.2 kB |
Pytania i Komentarze:
comments powered by Disqus
Lipiec 19, 2018
Zasilacz do wzmacniaczy już opisany ...
Więcej …
Czerwiec 20, 2018
Moduł wykonawczy już opisany...
Więcej …
Więcej nowinek …
Zasilacz do wzmacniaczy już opisany ...
Więcej …
Czerwiec 20, 2018
Moduł wykonawczy już opisany...
Więcej …
Więcej nowinek …
Polecane Strony