Mục lục:

Đường sắt mô hình - Trạm lệnh DCC sử dụng Arduino :: 3 bước
Đường sắt mô hình - Trạm lệnh DCC sử dụng Arduino :: 3 bước

Video: Đường sắt mô hình - Trạm lệnh DCC sử dụng Arduino :: 3 bước

Video: Đường sắt mô hình - Trạm lệnh DCC sử dụng Arduino :: 3 bước
Video: 🔴 Arduino #9 | Điều khiển Thiết Bị Bằng Mật Khẩu Sử Dụng Bàn Phím Ma Trận 4x4 2024, Tháng bảy
Anonim
Image
Image
Mã Arduino - Trạm lệnh có bàn phím
Mã Arduino - Trạm lệnh có bàn phím

Cập nhật tháng 8 năm 2018 - xem mới Có thể hướng dẫn:

Cập nhật ngày 28 tháng 4 năm 2016: Hiện có khả năng điều khiển 16 cử tri / điểm đến Trạm chỉ huy. Lượt đi T1 - T8 khả dụng thông qua phím 'B' Lượt đi T9 - T16 khả dụng qua phím 'C'

Cập nhật ngày 10 tháng 3 năm 2016:

Giờ đây đã thêm khả năng kiểm soát 8 cử tri / điểm vào Trạm chỉ huy. Mã Arduino đã được cập nhật tương ứng bằng cách sử dụng gói tiêu chuẩn NMRA cho lượt đi bỏ phiếu (cũng dựa trên nghiên cứu về gói dữ liệu Lenz / Atlas Compact để kiểm soát lượt đi bỏ phiếu).

Lượt đi T1 - T8 có sẵn thông qua phím 'B'

Xem hướng dẫn trên mạch nhận gói dữ liệu được sử dụng và yêu cầu mã Arduino.

Cập nhật ngày 18 tháng 1 năm 2016:

Tôi đã thêm điện trở cảm nhận dòng điện (1k5 ohm) và tụ điện (10 uf) vào mạch và sửa đổi mã Arduino để cắt nguồn khi phát hiện dòng điện đỉnh> 3200 mAmps. Thông số kỹ thuật cầu H cho biết dòng điện cảm nhận đầu ra là 377 uA trên 1 Amp khi tải.

Điện trở 1,5 k ohm sẽ cung cấp 0,565 volt cho mỗi Amp trên chân tương tự 6. Với 1023 bước trên đầu vào tương tự, điều này mang lại 0,565 * 1023/5 = 116 cho mỗi tải Amp.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (để đưa ra kết quả tính bằng miliampe)

Dòng tải tính bằng miliampe được hiển thị trên TFT

Bàn phím 4x4 đầy đủ bao gồm các chức năng F1 đến F8 và 10 locos khác (1-19) thông qua phím '#' (để thêm 10 vào các phím số bắt đầu từ loco 10).

Mã arduino bao gồm tiêu chuẩn NMRA cho byte lệnh.

Xem liên kết

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

(trang 6 có liên quan cụ thể)

Các gói tin được sắp xếp theo số bước tốc độ, địa chỉ dài / ngắn và hướng dẫn Nhóm chức năng.

Tất cả các byte lệnh được bắt đầu bằng phần mở đầu là bit '1' 11111111 (hoặc gói tin nhàn rỗi) theo sau là;

ví dụ. Địa chỉ 4 byte 0 00000011 0 00111111 0 10000011 0 10111111

tương đương với loco 3, 128 bước tốc độ, hướng về phía trước và bước tốc độ 3 (byte kết thúc là XOR kiểm tra lỗi)

ví dụ: Địa chỉ 3 byte 0 00000011 0 10010000 0 10110011

tương đương với loco 3, nhóm chức năng 1, đèn FL sáng cộng với byte XOR (bit '0' phân tách từng byte)

Xem video trình diễn kèm theo cho loco 12.

Các chức năng F1 - F8 khả dụng thông qua phím 'A', DIR (phím '*' = hướng) FL (phím '0' = đèn) và phím '#' cung cấp vị trí từ 10 đến 19 trên bàn phím số. Phím 'D' hiện được sử dụng cho 'DỪNG khẩn cấp'.

Cảm ơn các nhà cung cấp khác nhau trên web về các nguồn thông tin DCC và mã Arduino.

Đặc biệt, dự án này được lấy cảm hứng từ Michael Blank và 'Simple DCC - một trạm chỉ huy' của anh ấy

www.oscale.net/en/siamplecc

Bàn phím chuyển đổi màng ma trận 4x4 Mảng 16 phím (ebay) £ 1,75

Mô-đun màn hình LCD 2,2 inch 240x320 SPI TFT nối tiếp (ebay) £ 7,19

BỘ CHUYỂN ĐỔI AC CUNG CẤP ĐIỆN UNIVERSAL 12V 5A 60W (ebay) £ 6,49

Nano V3.0 cho Arduino với CH340G 5V 16M tương thích ATmega328P (ebay) 2 x £ 3,30 = £ 6,60

Mô-đun trình điều khiển động cơ LMD18200T cho Arduino R3 (ebay) £ 6,99

Đầu nối, dây, bảng vero, chiết áp khoảng £ 3,50

Tổng £ 32,52

Trạm lệnh cơ bản không có màn hình tft và 1 x nano sẽ là £ 22,03

[Lưu ý: Có thể thêm thẻ nhớ vào màn hình TFT và sửa đổi mã để hiển thị hình ảnh của các động cơ đã chọn, mặc dù mã thư viện phải được chỉnh sửa để tạo thêm bộ nhớ cho bản phác thảo. Kích thước phác thảo hiện tại là tối đa cho TFT Arduino Nano]

Mã Arduino ban đầu của Michael Blank chỉ dành cho một công cụ, chỉ tiến / lùi khi không có điều khiển chức năng, không có bàn phím và không có màn hình.

Tôi đã sửa đổi mã để bao gồm động cơ 1-19, màn hình hiển thị, hướng, đèn, 8 chức năng, dừng khẩn cấp và giới hạn dòng điện tự động.

Cầu LMD18200T có thể mang tới 3 ampe giúp nó phù hợp với mọi quy mô kể cả thang G (tàu sân vườn). Nguồn điện chính và thiết bị điện tử chỉ thích hợp để sử dụng trong nhà trừ khi bạn có thể làm cho nó chống chọi với mọi thời tiết. Tôi có trạm chỉ huy trong ngôi nhà mùa hè với đường sắt nối dây chạy xuyên tường tới đường ray.

Bước 1: Mã Arduino - Trạm lệnh có bàn phím

Tôi cảm ơn tvantenna2759 đã chỉ ra 2 lỗi trong sơ đồ mạch mà mã Arduino không khớp với hệ thống dây, hiện đã được cập nhật (2017-10-21).

Hiện đã thêm 16 lượt vào Trạm chỉ huy. Xem hướng dẫn trên sơ đồ mạch lượt / điểm sử dụng mô-đun Arduino Mini Pro.

Mã sửa đổi bao gồm kiểm soát cử tri được đính kèm bên dưới.

Gói giải mã phụ kiện cơ bản là: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Từ việc phân tích gói được Lenz (Compact / Atlas) sử dụng để điều khiển điểm, tôi đã sử dụng định dạng gói nhị phân sau cho byte 1 và 2: tunAddr = 1 Lượt đi 1a: 1000 0001 1111 1000 / Lượt đi 1b: 1000 0001 11111001 Lượt đi 2a: 1000 0001 1111 1010 / Lượt đi 2b: 1000 0001 1111 1011 Lượt đi 3a: 1000 0001 1111 1100 / Lượt đi 3b: 1000 0001 1111 1101 Lượt đi 4a: 1000 0001 1111 1110 / Lượt đi 4b: 1000 0001 1111 1111 tunAddr = 2 ------------------------------------------ -------------------------------------------------- ----------------- Lượt đi 5a: 1000 0010 1111 1000 / Lượt đi 5b: 1000 0010 1111 1001 Lượt đi 6a: 1000 0010 1111 1010 / Lượt đi 6b: 1000 0010 1111 1011 Lượt đi 7a: 1000 0010 1111 1100 / Lượt đi 7b: 1000 0010 1111 1101 Lượt đi 8a: 1000 0010 1111 1110 / Lượt đi 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Lượt đi 9a: 1000 0011 1111 1000 / Lượt đi 9b: 1000 0011 1111 1001, v.v. ………

Trích xuất từ mã đã sửa đổi: Thêm 2 thông báo 'struct' cập nhật khác, tránh sửa đổi_tun1 (struct Message & x) {x.data [0] = 0x81; // bộ giải mã phụ kiện 0x80 & địa chỉ 1 x.data [1] = 0; }

void sửa_tun2 (struct Message & x) {x.data [0] = 0x82; // bộ giải mã phụ kiện 0x80 & địa chỉ 2 x.data [1] = 0; }

Thêm khoảng trống mới cho lần lượt: boolean read_turnout () {delay (20);

boolean change_t = false; get_key ();

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

dữ liệu = 0xf8; // = nhị phân 1111 1000

sửa đổi_tun1 (msg [1]);

}

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

dữ liệu = 0xf8; // = nhị phân 1111 1000

sửa đổi_tun2 (thư [1]);

}

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

nếu (tun1 == 1) {

dữ liệu | = 0; // t1a

change_t = true;}

if (tun1 == 0) {

dữ liệu | = 0x01; // t1b

change_t = true;}

}

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

nếu (tun2 == 1) {

dữ liệu | = 0x02; // t2a

change_t = true;

}

nếu (tun2 == 0) {

dữ liệu | = 0x03; // t2b

change_t = true; }

}

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

if (tun3 == 1) {

dữ liệu | = 0x04; // t3a

change_t = true;

}

if (tun3 == 0) {

dữ liệu | = 0x05; // t3b

change_t = true;}

}

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

nếu (tun4 == 1) {

dữ liệu | = 0x06; // t4a

change_t = true;

}

nếu (tun4 == 0) {

dữ liệu | = 0x07; // f4b

change_t = true;}

}

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

nếu (tun5 == 1) {

dữ liệu | = 0; // t5a

change_t = true;

}

if (tun5 == 0) {

dữ liệu | = 0x01; // t5b

change_t = true;}

}

Vân vân ………………….

Bước 2: Mã Arduino - Màn hình TFT

Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT
Mã Arduino - Màn hình TFT

Mạch hiển thị vẫn được giữ nguyên với một mã sửa đổi để hiển thị trạng thái của 16 lần lượt. Lưu ý: Mã thư viện chiếm gần như tất cả bộ nhớ mã phác thảo, để lại ít chỗ cho các tính năng mới. Nếu ai có tệp thư viện hiệu quả hơn cho TFT được sử dụng ở đây, vui lòng cho tôi biết.

Bước 3: Bộ điều khiển lượt đi

Bộ điều khiển cử tri
Bộ điều khiển cử tri
Bộ điều khiển cử tri
Bộ điều khiển cử tri

Xem hướng dẫn về cách tạo bộ điều khiển Lượt đi / Điểm.

Mạch hoàn chỉnh điều khiển 16 điểm và 15 phụ kiện như đèn, âm thanh, bàn xoay, v.v.

Đề xuất: