Moduł TTMSB USB
Moduł TTMSB USB – Time Temperature Motor Switch Beeper
Cele
Celem projektu jest budowa modułu który za pośrednictwem otrzymanych z portu USB lub UART instrukcji będzie realizował następujące funkcje:
- sterowanie dwoma silnikami DC,
- włączanie i wyłączanie dwóch urządzeń dużej mocy,
- odczyt temperatury otoczenia,
- udostępnianie czasu rzeczywistego (niezależny RTC),
- sygnalizacja dźwiękowa.
Zasilanie urządzenia realizowane jest z portu USB, natomiast silników opcjonalnie z portu USB bądź z zewnętrznego źródła (możliwość dostarczenia wyższego napięcia i mocy).
1. Projekt PCB
Urządzenie zostało zaprojektowane z zastosowaniem podzespołów montowanych metodą przewlekaną (THT). Rozmiar PCB wynosi 110mm na 86mm.
Rys. Projekt PCB urządzenia wraz z umiejscowieniem podzespołów.
2. Podzespoły urządzenia
Głównym podzespołem jest mikrokontroler PIC18F4550, który otrzymując instrukcje przez port USB lub UART odsyła ewentualne wyniki zapytań i steruje podłączonymi układami realizującymi założone cele.
Rys. Relacje między głównymi podzespołami modułu TTMSB.
Wykaz podzespołów
Oznaczenie | Wartość |
---|---|
R1, R2, R3 | 10k |
R7, R5, R6 | 4,3k |
R8 | 4,7k |
R4, R9 | 470 |
C3 | 220nF |
C1, C2 | 22pF |
C4 | 100nF |
C5 | 100uF |
U1 | PIC18F4550 |
U2 | DS1307 |
U3 | CR2032 (bateria 3,3V) |
U4 | HCM1005 (brzęczyk 5V) |
U5 | DS18B20 |
Q1, Q2, Q3 | 2N3904 |
D1, D15 | dioda LED |
D2 – D14 | 1N4004 |
IC2 | L298N |
K1, K2 | HFKW 005-1ZW (przekaźnik 5V) |
X1 | 20MHz (kwarc) |
X2 | 32,768 kHz (kwarc) |
J1 | USBB-G (gniazdo kątowe 90st.) |
J2 – J10 | listwa kołkowa |
2.1. Złącza
Rys. Złącza modułu TTMSB.
Tab. Oznaczenia złącz modułu TTMSB
Oznaczenie | Funkcja |
UART | Szeregowy port komunikacyjny do wymiany danych z innymi urządzeniami |
USB | Port komunikacyjny z urządzeniem sterującym |
I2C | Szeregowa magistrala danych I2C |
1W | Magistrala 1Wire |
ICSP | Łącze programatora mikrokontrolera |
A/C | Port przetwornika analogowo-cyfrowego |
R1 | Wyjście pierwszego przekaźnika, włącz/wyłącz urządzenie zewnętrzne |
R2 | Wyjście drugiego przekaźnika, włącz/wyłącz urządzenie zewnętrzne |
M1 | Gniazdo pierwszego silnika DC |
M2 | Gniazdo drugiego silnika DC |
Z | Zwora wyboru źródła zasilania silników (zewnętrzne / USB) |
V1 | Gniazdo zewnętrznego zasilania silników |
2.1.1. Złącze UART
Szeregowy port komunikacyjny pracuje w standardzie napięć TTL.
2.1.1. Gniazdo USB
Gniazdo USB dostarcza zasilania głównym podzespołom modułu, za jego pośrednictwem odbywa się komunikacja z urządzeniem sterującym.
2.1.2. Złącze I2C
Złącze szeregowej magistrali danych zostało rozszerzone o dwa piny zasilające podłączone do magistrali urządzenia.
2.1.3. Złącze 1Wire
Złącze magistrali 1Wire zostało wyposażone w pin zasilający, umożliwia to zasilanie urządzeń do niej podłączonych trybem normalnym i pasożytniczym.
2.1.4. Złącze ICSP
Mikrokontroler programowany jest w standardzie wysokonapięciowym, złącze ICSP zostało wyposażone w diody zabezpieczające przed uszkodzeniem pozostałe podzespoły urządzenia w trakcie programowania.
Rys. Wyprowadzenia złącza ICSP
2.1.5. Złącze A/D
W opracowaniu
2.1.6. Złącze Przekaźnika
W opracowaniu
2.1.7. Złącze silnika
W skład złącza silnika wchodzą dwie pary pinów dla dwóch silników prądu stałego:
- S1 – silnik pierwszy,
- S2 – silnik drugi.
2.1.8. Zwora wyboru źródła zasilania silników
Silniki prądu stałego podłączone do złącza S1 i S2 mogą być zasilane z jednego z dwóch źródeł:
- portu USB – należy zworką połączyć pin “USB” z “IN”,
- zewnętrznego źródła zasilania – należy zworką połączyć pin “ZEWN” i “IN”.
2.1.9. Gniazdo zewnętrznego zasilania silników
Z uwagi na małą wydajność prądową portu USB oraz stosunkowo niskie napięcie, moduł został wyposażony w gniazdo opcjonalnego zewnętrznego zasilania silników, które należy podłączyć do zasilacza o napięciu zależnym od napięcia pracy silników. Gniazdo posiada zabezpieczenie w postaci diody, chroniącej przed podłączeniem odwrotnej polaryzacji.
Tab. Parametry zewnętrznego źródła zasilania
Maksymalne napięcie zasilania | 46 V |
Maksymalne obciążenie | 2 A |
2.2. Mikrokontroler
Czterdziestopinowy mikrokontroler PIC18F4550 o mocy obliczeniowej 12 MIPS został wyposażony przez producenta w sprzętowy port USB 2.0, UART oraz magistralę I2C oraz SPI. Pracuje w przedziale napięć od 2V do 5,5V. Oddaje do dyspozycji 32KB pamięci programu typu Flash i 2048 B pamięci RAM. Posiada 10 bitowy przetwornik analogowo cyfrowy, timer 8 bitowy i trzy timery 16 bitowe.
Rys. Wyprowadzenia PIC18F4550.
2.3. Sterownik silników
Za sterowanie dwoma silnikami napięcia stałego odpowiedzialny jest układ L298N, będący dwukanałowym mostkiem H. Jego Napięcie zasilania może wynosić maksymalnie 46V a prąd chwilowy 2A. Sterownik znajduje się w obudowie Multiwatt15.
Rys. Sterownik silnika L298N.
2.4. Zegar czasu rzeczywistego
Układ scalony DS1307 jest zegarem czasu rzeczywistego. Mikrokontroler odczytuje aktualny czas z zegara za pośrednictwem magistrali I2C. W przypadku zaniku zewnętrznego zasilania, zegar automatycznie przełącza się na zasilanie awaryjne z baterii 3,2V.
Rys. Zegar czasu rzeczywistego DS1307.
W pamięci mikrokontrolera zarezerwowane jest miejsce dla sześciu zmiennych typu byte w których przechowywana jest aktualna data i czas.
byte sec,min,hour,day,month,year;
Funkcja odczytująca dane z zegara czasu rzeczywistego odwołuje się do funkcji “read_ds1307” zdefiniowanej w bibliotece napisanej dla tego układu (biblioteka dostępna w dziale 4 – Pliki).
void read_time(){
sec=bcdToDec(read_ds1307(0));
min=bcdToDec(read_ds1307(1));
hour=bcdToDec(read_ds1307(2));
day=bcdToDec(read_ds1307(4));
month=bcdToDec(read_ds1307(5));
year=bcdToDec(read_ds1307(6));
}
2.5. Czujnik temperatury
Odczyt temperatury realizowany jest za pomocą czujnika DS18B20. Komunikacja między mikrokontrolerem a czujnikiem odbywa się po magistrali 1Wire, która umożliwia jednoczesne podłączenie wielu czujników. Jeden układ zainstalowany jest na płycie modułu, kolejne mogą zostać podłączone do złącza 1Wire (rodział 2.1.3).
Rys. Wyprowadzenia układu DS18B20
3. Komunikacja
Komunikacja z modułem TTMSB może odbywać się na dwa sposoby:
- Za pomocą bezpośredniego podłączenia innego mikrokontrolera do portu UART umieszczonego na płycie modułu TTMSB.
- Po podłączeniu modułu TTMSB do portu USB komputera z systemem operacyjnym Linux lub Windows jest on automatycznie rozpoznawany jako wirtualny port UART (zaimplementowano USB CDC) i instalowany w systemie. Dalsza komunikacja z urządzeniem odbywa się na takich samych zasadach jak by był on podłączony do portu COMx komputera. By wydawać polecenia modułowi można użyć programu Hypertimernal wchodzącego w skład systemu operacyjnego Windows, CuteCom w systemie Linux lub używając dedykowanego oprogramowania umieszczonego w dziale 4 – Pliki.
Tab. Parametry połączenia
UART | USB CDC (wirtualny COM) | |
Prędkość | 9600 bps | 115200 bps |
Bity danych | 8 | 8 |
Parzystość | brak | brak |
Bity stopu | 1 | 1 |
Kontrola | brak | sprzętowa |
3.1 Protokół komunikacyjny
Urządzenie nadrzędne, wysyła polecenia w postaci literałów znakowych typu char.
Tab. Instrukcje sterujące modułem TTMSB
Instrukcja | Opis | ||
HEX | ASCII | Działanie | Uwagi |
73 | s | Sygnał dźwiękowy | |
6D | m | Włączenie/wyłączenie przełącznika 1 | |
6E | n | Włączenie/wyłączenie przełącznika 2 | |
74 | t | Odczyt temperatury | Zwracana liczba typu float |
6C | l | Silnik I w lewo | |
72 | r | Silnik I w prawo | |
64 | d | Silnik II w lewo | |
75 | u | Silnik II w prawo | |
63 | c | Konfiguracja pracy silnika | Należy wybrać długość trwania impulsu napięcia: 1 – 1ms 2 – 400ms 3 – 1s |
79 | y | Odczyt danych z zegara | Zwracany aktualna data i czas w formacie: dd-mm-yy hh:mm:ss |
6F | o | Ustawienie aktualnego czasu | Po wydaniu komendy “o” mikrokontroler oczekuje na podanie kolejno: dnia, miesiąca, roku, godziny, minuty, sekundy. |
70 | p | Instrukcja testująca | Oczekiwana odpowiedź urządzenia “ok”. |
4. Pliki
Pliki projektu.
- Wsad mikrokontrolera.
- Biblioteka w języku C do obsługi układu DS1307 przez mikrokontrolery PIC
- Projekt PCB w formacie PDF
- Rozmieszczenie elementów na płycie PCB w formacie PDF
- ttmsb.py Przykładowa aplikacja sterująca modułem TTMSB napisana w języku Python dla Linux
- ttmsb.exe Przykładowa aplikacja sterująca modułem TTMSB dla Windows
Noty katalogowe.
- PIC18F4550 – mikrokontroler.
- DS1307 – zegar czasu rzeczywistego.
- DS18B20 – czujnik temperatury.
- L298N – podwójny mostek H sterujący silnikami.