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.

Noty katalogowe.

  • PIC18F4550 – mikrokontroler.
  • DS1307 – zegar czasu rzeczywistego.
  • DS18B20 – czujnik temperatury.
  • L298N – podwójny mostek H sterujący silnikami.

5. Odnośniki