Spisu treści:
- Krok 1: Kod Arduino - stacja dowodzenia z klawiaturą
- Krok 2: Kod Arduino - wyświetlacz TFT
- Krok 3: Kontroler rozjazdów
Wideo: Model Railway - stacja dowodzenia DCC przy użyciu Arduino:: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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:
(Ascensor) Model windy przy użyciu Arduino, App Inventor i innego bezpłatnego oprogramowania: 7 kroków
(Ascensor) Model windy przy użyciu Arduino, App Inventor i innego bezpłatnego oprogramowania: ESPConstrucción, paso a paso, de un ascensor a escala usando arduino (como controlador del motor y entradas y salidas por bluetooth), wynalazca aplikacji (dla projektowania panelu aplikacji de control del ascensor) y freeCAD y LibreCAD para diseño.Abajo
Pierwsze kroki z Digispark Attiny85 przy użyciu Arduino IDE: 4 kroki
Rozpoczęcie pracy z Digispark Attiny85 przy użyciu Arduino IDE: Digispark to oparta na Attiny85 płytka rozwojowa mikrokontrolera podobna do linii Arduino, tylko tańsza, mniejsza i nieco mniej wydajna. Z całą gamą osłon rozszerzających jego funkcjonalność i możliwością korzystania ze znanego identyfikatora Arduino
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
Pierwsze kroki z Stm32 przy użyciu Arduino IDE: 3 kroki
Pierwsze kroki z Stm32 przy użyciu Arduino IDE: STM32 to dość potężna i popularna płyta obsługiwana przez Arduino IDE. Aby z niej skorzystać, musisz zainstalować płyty dla stm32 w Arduino IDE, więc w tej instrukcji opowiem, jak zainstalować płyty stm32 i jak zaprogramować to
DIY lutownica na gorące powietrze przy użyciu 12-18 woltów prądu stałego przy 2-3 amperach: 18 kroków (ze zdjęciami)
DIY lutownica na gorące powietrze przy użyciu 12-18 woltów prądu stałego przy 2-3 amperach: to moja pierwsza publikacja eva artykułu o majsterkowaniu w Internecie. Więc przepraszam za literówki, protokoły itp. Poniższe instrukcje pokazują, jak zrobić PRACOWĄ lutownicę na gorące powietrze odpowiednią do WSZYSTKICH zastosowań wymagających lutowania. To lutowanie gorącym powietrzem