Spisu treści:

Model Railway - stacja dowodzenia DCC przy użyciu Arduino:: 3 kroki
Model Railway - stacja dowodzenia DCC przy użyciu Arduino:: 3 kroki

Wideo: Model Railway - stacja dowodzenia DCC przy użyciu Arduino:: 3 kroki

Wideo: Model Railway - stacja dowodzenia DCC przy użyciu Arduino:: 3 kroki
Wideo: Das bisher absonderlichste Lok Modell - Liliput Panzer Märklin H0 C Gleis - Panzerspähzug 1 2024, Listopad
Anonim
Image
Image
Kod Arduino - Stacja dowodzenia z klawiaturą
Kod Arduino - Stacja dowodzenia z klawiaturą

Zaktualizowano sierpień 2018 - zobacz nowy Instructable:

Aktualizacja 28 kwietnia 2016: Teraz możliwość sterowania 16 rozjazdami / punktami w Command Station. Rozjazdy T1 - T8 dostępne po klawiszu B Rozjazdy T9 - T16 dostępne po klawiszu C

Aktualizacja 10 marca 2016:

Teraz dodano możliwość sterowania 8 rozjazdami/punktami do Command Station. Kod Arduino został odpowiednio zaktualizowany przy użyciu standardowego pakietu NMRA dla rozjazdów (również w oparciu o badanie pakietów danych Lenz / Atlas Compact do sterowania rozjazdami).

Rozjazdy T1 - T8 są dostępne za pomocą klawisza „B”

Zobacz instrukcje dotyczące używanego obwodu odbiornika pakietów danych i wymaganego kodu Arduino.

Aktualizacja 18 stycznia 2016:

Dodałem do obwodu rezystor wyczuwania prądu (1k5 omów) i kondensator (10 uf) i poprawiłem kod Arduino, aby odciąć zasilanie, gdy wykryty zostanie prąd szczytowy > 3200 mAmp. Specyfikacja mostka H określa wyjściowy prąd wykrywania 377 uA na 1 A w obciążeniu.

Rezystor 1,5 kΩ dostarczy 0,565 woltów na Amp na styku analogowym 6. Przy 1023 krokach na wejściu analogowym daje to 0,565 * 1023 / 5 = 116 na obciążenie Amp.

A = 100 * (analogRead(BIEŻĄCY)) / 116;A = A * 10; (aby dać wynik w miliamperach)

Prąd obciążenia w miliamperach jest wyświetlany na TFT

Pełna klawiatura 4x4 zawiera funkcje F1 do F8 i kolejne 10 lokomotyw (1-19) poprzez klawisz „#” (aby dodać 10 do klawiszy numerycznych, zaczynając od lokomotywy 10).

Kod arduino zawiera standard NMRA dla bajtów instrukcji.

Zobacz link

www.nmra.org/sites/default/files/s-9.2.1_20…

(strona 6 ma szczególne znaczenie)

Pakiety są uporządkowane według liczby kroków szybkości, długiego/krótkiego adresu i instrukcji grupy funkcji.

Wszystkie bajty instrukcji są poprzedzone nagłówkiem „1” bitów 11111111 (lub pakietem bezczynnym), po którym następuje;

np. A 4-bajtowy adres 0 00000011 0 00111111 0 10000011 0 10111111

oznacza lokomotywę 3, 128 kroków prędkości, kierunek do przodu i krok prędkości 3 (bajt końcowy to XOR sprawdzania błędów)

np. 3 bajtowy adres 0 00000011 0 10010000 0 10110011

równa się loco 3, grupa funkcyjna 1, świeci się FL plus bajt XOR (bit „0” oddziela każdy bajt)

Zobacz załączony film demonstracyjny dla loko 12.

Funkcje F1 - F8 są dostępne za pomocą klawisza 'A', DIR (klawisz '*' = kierunek) FL (klawisz '0' = światła) i klawisza '#' daje lokomotywy od 10 do 19 na klawiaturze numerycznej. Klawisz „D” jest teraz używany do „zatrzymania awaryjnego”.

Podziękowania dla różnych dostawców w sieci za źródła informacji DCC i kod Arduino.

W szczególności ten projekt został zainspirowany Michaelem Blankiem i jego „Prostym DCC – stanowiskiem dowodzenia”

www.oscale.net/en/simpledcc

4x4 Matrix Array 16-klawiszowa klawiatura membranowa (ebay) £1,75

Moduł wyświetlacza LCD 2,2 cala 240x320 Serial SPI TFT (ebay) 7,19 £

UNIWERSALNY ZASILACZ 12V 5A 60W AC (ebay) £6.49

Nano V3.0 Dla Arduino z kompatybilnym CH340G 5V 16M ATmega328P (ebay) 2 x 3.30 £ = 6.60 £

Moduł sterownika silnika LMD18200T dla Arduino R3 (ebay) 29,99 zł

Złącza, przewód, płytka vero, potencjometr ok £3,50

Razem 32,52 £

Podstawowa stacja dowodzenia bez ekranu tft i 1 x nano kosztowałaby 22,03 £

[Uwaga: Możliwe jest dodanie karty pamięci do wyświetlacza TFT i zmiana kodu, aby wyświetlić obrazy wybranych silników, chociaż kody biblioteki muszą zostać zredukowane, aby utworzyć więcej pamięci na szkic. Obecny rozmiar szkicu jest maksymalny dla TFT Arduino Nano]

Oryginalny kod Arduino autorstwa Michaela Blanka dotyczył jednego silnika, tylko do przodu/do tyłu, bez kontroli funkcji, klawiatury i wyświetlacza.

Zmodyfikowałem kod tak, aby zawierał 1 - 19 silników, ekran wyświetlacza, kierunek, światła, 8 funkcji, zatrzymanie awaryjne i automatyczne ograniczenie prądu.

Mostek LMD18200T może przenosić do 3 amperów, co sprawia, że jest odpowiedni dla wszystkich skal, w tym w skali G (pociągi ogrodowe). Zasilacz sieciowy i elektronika nadają się tylko do użytku w pomieszczeniach, chyba że można je zabezpieczyć na każdą pogodę. Mam stanowisko dowodzenia w altanie z przewodami łączącymi szynę biegnącymi przez ścianę do torów.

Krok 1: Kod Arduino - stacja dowodzenia z klawiaturą

Moje podziękowania dla tvantenna2759 za wskazanie 2 błędów na schemacie, w których kod Arduino nie pasował do okablowania, teraz zaktualizowany (21 października 2017 r.).

Teraz dodano 16 rozjazdów do Command Station. Zobacz instrukcję na schemacie obwodu rozjazdów / punktów za pomocą modułu Arduino Mini Pro.

Zmodyfikowany kod zawierający sterowanie rozjazdami znajduje się poniżej.

Podstawowy pakiet dekodera akcesoriów to: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Z analizy pakietu używanego przez Lenz (Compact / Atlas) do kontroli punktów, użyłem następującego formatu binarnego pakietu dla bajtów 1 i 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / frekwencja 1b: 1000 0001 1111 1001 frekwencja 2a: 1000 0001 1111 1010 / frekwencja 2b: 1000 0001 1111 1011 frekwencja 3a: 1000 0001 1111 1100 / frekwencja 3b: 1000 0001 1111 1101 frekwencja 4a: 1000 0001 1111 1110 / frekwencja 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Frekwencja 5a: 1000 0010 1111 1000 / Frekwencja 5b: 1000 0010 1111 1001 Frekwencja 6a: 1000 0010 1111 1010 / Frekwencja 6b: 1000 0010 1111 1011 Frekwencja 7a: 1000 0010 1111 1100 / Frekwencja 7b: 1000 0010 1111 1101 Frekwencja 8a: 1000 0010 1111 1110 / Frekwencja 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Frekwencja 9a: 1000 0011 1111 1000 / Frekwencja 9b: 1000 0011 1111 1001 itd ………

Wyciąg ze zmodyfikowanego kodu: Dodaj 2 kolejne aktualizacje wiadomości 'struct'void amend_tun1 (wiadomość struct & x) { x.data[0] = 0x81; // dekoder akcesoriów 0x80 i adres 1 x.data[1] = 0; }

void amend_tun2 (wiadomość struktury & x) { x.data[0] = 0x82; // dekoder akcesoriów 0x80 i adres 2 x.data[1] = 0; }

Dodaj nowy void dla rozjazdów:boolean read_turnout() { delay(20);

wartość logiczna zmieniona_t = fałsz; Weź klucz();

if (key_val >= 101 && key_val <= 404 && turn == 1){

dane = 0xf8; // = binarnie 1111 1000

amend_tun1(msg[1]);

}

if (key_val >= 505 && key_val <= 808 && turn == 1){

dane = 0xf8; // = binarnie 1111 1000

amend_tun2(msg[1]);

}

if (key_val == 101 && turn == 1){

jeśli (tun1 == 1){

dane |= 0; // t1a

zmienione_t = prawda;}

jeśli (tun1 == 0){

dane |= 0x01; // t1b

zmienione_t = prawda;}

}

if (key_val == 202 && turn == 1){

jeśli (tun2 == 1){

dane |= 0x02; // t2a

zmienione_t = prawda;

}

jeśli (tun2 == 0){

dane |= 0x03; // t2b

zmienione_t = prawda; }

}

if (key_val == 303 && turn == 1){

jeśli (tun3 == 1){

dane |= 0x04; // t3a

zmienione_t = prawda;

}

jeśli (tun3 == 0){

dane |= 0x05; // t3b

zmienione_t = prawda;}

}

if (key_val == 404 && turn == 1){

jeśli (tun4 == 1){

dane |= 0x06; // t4a

zmienione_t = prawda;

}

jeśli (tun4 == 0){

dane |= 0x07; // f4b

zmienione_t = prawda;}

}

if (key_val == 505 && turn == 1){

jeśli (tun5 == 1){

dane |= 0; // t5a

zmienione_t = prawda;

}

jeśli (tun5 == 0){

dane |= 0x01; // t5b

zmienione_t = prawda;}

}

itp ………………….

Krok 2: Kod Arduino - wyświetlacz TFT

Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT
Kod Arduino - wyświetlacz TFT

Obwód wyświetlacza pozostaje taki sam ze zmodyfikowanym kodem, aby pokazać stan 16 rozjazdów. Uwaga: Kod biblioteki zajmuje prawie całą pamięć kodu szkicu, pozostawiając niewiele miejsca na nowe funkcje. Jeśli ktoś ma wydajniejszy plik biblioteki dla używanego tutaj TFT, proszę o informację.

Krok 3: Kontroler rozjazdów

Kontroler frekwencji
Kontroler frekwencji
Kontroler frekwencji
Kontroler frekwencji

Zobacz instruktaż, jak zrobić kontroler rozjazdu / punktów.

Kompletny obwód steruje 16 punktami i 15 akcesoriami, takimi jak światła, dźwięki, gramofon itp.

Zalecana: