Სარჩევი:

ბაღის მატარებელი - Arduino Wireless NMRA DCC: 4 ნაბიჯი (სურათებით)
ბაღის მატარებელი - Arduino Wireless NMRA DCC: 4 ნაბიჯი (სურათებით)

ვიდეო: ბაღის მატარებელი - Arduino Wireless NMRA DCC: 4 ნაბიჯი (სურათებით)

ვიდეო: ბაღის მატარებელი - Arduino Wireless NMRA DCC: 4 ნაბიჯი (სურათებით)
ვიდეო: mushtaidi park train-მატარებელი მუშტაიდის პარკში. 2024, ივნისი
Anonim
Image
Image
სისტემის დიზაინი
სისტემის დიზაინი

გარდა წინა ინსტრუქციისა DCC მკვდარი სარკინიგზო სისტემის შესახებ, მე შემუშავდა იდეა შემდგომი ხელით DCC სარდლობის სადგურით კლავიატურით და LCD დისპლეით. სარდლობის სადგური შეიცავს ყველა კოდს, რომელიც საჭიროა NMRA DCC ინსტრუქციებისთვის, თუმცა ლიანდაგებთან შეერთების ნაცვლად, მონაცემები რადიო მოდულით RF24L01+ გადაეცემა მიმღებს, რომელიც დამონტაჟებულია სატვირთო მანქანაში ან ლოკოში - სადაც კი ოთახში ნებადართულია.

რასაკვირველია, თქვენს ლოკებს უნდა ჰქონდეთ დატვირთვის შესაძლებლობების დეკოდი, რომელიც შეეფერება ძრავის ძრავებს.

ნაბიჯი 1: სისტემის დიზაინი

სისტემის დიზაინი
სისტემის დიზაინი

Arduino Pro Mini არის დიზაინის ცენტრში. Fritzing– ის გამოყენება მიკროსქემის შესაქმნელად და PCB– ების წარმოებისთვის.

მე შემეძლო გამომეყენებინა ერთი და იგივე PCB როგორც გადამცემისთვის, ასევე მიმღებისთვის, რაც ზოგავდა ხარჯებს.

გადამცემს აქვს კავშირი კლავიატურისა და LCD– ისთვის, ხოლო მიმღები არ საჭიროებს მათ და იყენებს H- ხიდს, რათა უზრუნველყოს DCC გამომავალი ლოკოოსთვის.

შემდგომი განვითარება მოიცავს კავშირებს უფრო დიდი H ხიდისთვის, თუ ეს საჭიროა უფრო მძლავრი ლოკოსთვის.

PCF8574 შეიძლება წაიშალოს, თუ თქვენ იყენებთ LCD ეკრანს, რომელსაც მოყვება ზურგჩანთა, რომელიც საშუალებას აძლევს SCA / SCL კავშირებს არდუინოზე, აჩვენოს ეკრანი მხოლოდ 2 მავთულის გამოყენებით. ნაწილების სია: სულ = დაახლოებით £ 60 DCC სარდლობის სადგურისთვის + 1 მიმღები დამატებითი მიმღებების ღირებულება =.00 10.00 x დაახლოებით თითოეული. + ბატარეები

Arduino Pro Mini. x 2 = 4.00

4x3 გარსის კლავიატურა = 3.00 ფუნტი

20 x 4 LCD დისპლეი = 7.00 ფუნტი

PCF5874 = 80 1.80

NRF24L01+. რადიო მოდულები x 2 = £ 5.80

PCB წარმოება 10 ფასდაკლებით (ან შეიძლება გამოყენებულ იქნას ვერო დაფა) = 24 ფუნტი ან 4.80 ფუნტი 2 ფასად

3.3 v რეგულატორი = 0.17 £ (25 კომპლექტი RS Comp– დან)

5v მარეგულირებელი LM7805 = 30 0.30

H- ხიდი SN754410ne = 3.00 ფუნტი

Lloytron ხელახლა დატენვის 2700 maH AA ბატარეები x 12 = 22.00 £. (დაბალი maH რეიტინგული ბატარეები უფრო იაფია)

კონდენსატორები, ქოთნები, ქინძისთავები, კონექტორები და სხვა = 00 2.00 დაახ

დანართი 190x110x60 მმ = £ 8.00

გადამცემი - ტელეფონის დამტენი / ბატარეა = 2.00 ფუნტი

ნაბიჯი 2: გადამცემი

გადამცემი
გადამცემი

მიკროსქემის დიაგრამა ნაჩვენებია, სადაც Arduino Pro Mini- ზე D2- დან D8 ქინძისთავები დაკავშირებულია კლავიატურაზე. 100k ohm პოტენომეტრი არის დაკავშირებული ანალოგურ pin A0- თან სიჩქარის კორექტირებისთვის. SDA და SCL ქინძისთავები ქმნიან PCF8574 ჩიპს, რომლებიც დაკავშირებულია A4 ქინძისთავებთან და A5 Arduino Pro Mini– ზე შედუღებული მავთულის მეშვეობით Pro Mini- ს ზედა ფენის ქინძისთავებზე.

არდუინოს ესკიზი თან ერთვის ჩამოსატვირთად.

მე გამოვიყენე 20 x 4 LCD დისპლეი, რომელიც იძლევა ინფორმაციის 4 სტრიქონს 20 სიმბოლოზე თითო ხაზზე. კლავიატურა გთავაზობთ შემდეგ მენიუს:

1 -დან 9 -მდე = ლოკოს მისამართი * = მიმართულება 0 = განათება # = ფუნქციის მენიუ 1 -დან 8 -მდე

Arduino Pro Mini ესკიზის ძირითადი აღწერა: კოდის ეს ხაზი აწესრიგებს DCC შეტყობინებას HEX ფორმატში. სტრუქტური შეტყობინება msg [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // უსაქმური msg

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 ბაიტი მისამართი

};

თითოეული ლოკოს პარამეტრების შესანახად, მასივების სერია იქმნება შემდეგნაირად:

int la [20]; // მასივი ლოკო ნომრების შესანახად

int sa [20]; // მასივი სიჩქარის მნიშვნელობების შესანარჩუნებლად

int fda [20]; // მასივი, რომ დაიჭიროს რეჟ

int fla [20]; // მასივი განათების შესანახად

int f1a [20]; // მასივი გასართობად 1…..

int f8a [20]; // მასივი გართობის ჩასატარებლად 8

იმისათვის, რომ DCC ინსტრუქციები შეიცვალოს

სიჩქარის მითითებისთვის: void amend_speed (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg 28 სიჩქარის საფეხურით}

ფუნქციის ინსტრუქციისთვის:

void amend_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg პირველი ჯგუფის ინსტრუქციით 0x80}

ესკიზის მთავარი მარყუჟი:

void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

send_data_1 (); // მონაცემების გაგზავნა უკაბელო საშუალებით

დაგვიანება (10);

send_data_3 (); // მონაცემების ჩვენება LCD ეკრანზე

send_data_4 (); // სერიული მონიტორის მონაცემების ჩვენება}

თუ (წაკითხვის_ფუნქცია ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

დაგვიანება (10);

send_data_3 (); }}

სიჩქარის შეცვლისას განაახლეთ მონაცემები:

boolean read_locoSpeed () ეს ამოიცნობს ახალ ლოკოს მისამართს, სიჩქარეს ან მიმართულებას და შესაბამისად ცვლის HEX 'მონაცემებს'. აქ მე დავაზუსტე 28 სიჩქარის საფეხური და NMRA სტანდარტის S 9.2 დასაკმაყოფილებლად, სიჩქარის მონაცემები უნდა მოიძებნოს ცხრილიდან "speed_step ()" - ში

void speed_step () {switch (locoSpeed) {

შემთხვევა 1: მონაცემები | = 0x02; შესვენება;

შემთხვევა 2: მონაცემები | = 0x12; შესვენება;

შემთხვევა 3: მონაცემები | = 0x03; შესვენება;

………

საქმე 28: მონაცემები | = 0x1F; შესვენება; }}

განაახლეთ მონაცემები ფუნქციების შეცვლისას:

ლოგიკური წაკითხვის ფუნქცია ()

if (fla [locoAdr] == 0) {data = 0x80;

} // თავის შუქები გამორთულია

თუ (fla [locoAdr] == 1) {

მონაცემები = 0x90;

} // თავის განათება ჩართულია

თითოეული ფუნქციისთვის:

if (f2a [locoAdr] == 0) {მონაცემები | = 0; }. // ფუნქცია 2 გამორთულია

თუ (f2a [locoAdr] == 1) {

მონაცემები | = 0x02; // ფუნქცია 2 'მონაცემებზე' აგებულია ['| =' ნაერთის ბიტიურად ან] HEX კოდების კომბინაციით თითოეული ფუნქციისთვის.

ნაბიჯი 3: მიმღები

მიმღები
მიმღები

მიკროსქემის დიაგრამა ნაჩვენებია იქ, სადაც Arduino Pro Mini 5 და 6 პინები გამოიყენება H- ხიდზე მიწოდებული DCC სიგნალის უზრუნველსაყოფად. H- ხიდის წყვილი დაკავშირებულია პარალელურად მიმდინარე სიმძლავრის გასაზრდელად. ლოკოოს მიერ გამოყვანილი დენიდან გამომდინარე, შეიძლება მოითხოვდეს გამაცხელებელ მოწყობილობას 16 პინიანი DIP მოწყობილობაზე მიმაგრება, ან მძიმე H- ხიდი გარედან იყოს დაკავშირებული.

Arduino ესკიზი თან ერთვის ჩამოსატვირთად. DCC სიგნალი შედგება საათისგან, რომელიც მუშაობს 2 MHZ

void SetupTimer2 () აკეთებს ამ საქმეს.

საათი შეიცავს 'მოკლე პულსი' (58us) '1' DCC მონაცემებში და 'გრძელი პულსი' (116us) '0' DCC მონაცემებში.

მარყუჟი ბათილია, იღებს მონაცემებს რადიოდან და თუ სწორი სტრიქონი მოიძებნება, მონაცემები გარდაიქმნება DCC მონაცემებად.

void loop (void) {if (radio.available ()) {bool done = false; კეთდება = radio.read (inmsg, 1); // წაიკითხეთ მიღებული მონაცემები

char rc = inmsg [0]; // დააყენეთ წაკითხული სიმბოლო ამ მასივში

თუ (rc! = 0) {. // თუ სიმბოლო არ არის ნულის ტოლი

inString.concat (rc); // შექმენით შეტყობინება}

if (rc == '\ 0') {// if სიმბოლო არის '/0' შეტყობინების დასასრული

Serial.println (inString); // დაბეჭდე აწყობილი შეტყობინება

სიმებიანი (); // DC კონსტრუქციის ინსტრუქციის მისაღებად ააშენეთ სიმებიანი შეტყობინება

} } }

ნაბიჯი 4: გაუშვით Locos

გაუშვით Locos
გაუშვით Locos

ერთსა და იმავე ბილიკზე მრავალი მატარებლის გაშვების მონაცემების შეფერხების თავიდან ასაცილებლად, თქვენ უნდა გათიშოთ კონტაქტები ბორბლებსა და ბილიკებს შორის თითოეული დასაქმებული ლოკოსა და სატვირთო მანქანისთვის.

ისიამოვნეთ უფასო მოძრავი მატარებლებით, ბილიკის პირობების მიუხედავად - რა განსხვავებაა! არანაირი სირთულე, არც გაჩერება და არც დასუფთავება.

ბატარეები, რომლებიც მე გამოვიყენე, ხელახლა იტენება LLoytron AA x 12. მე სპეციალურად მათთვის შევქმენი დამტენი, რომელიც ერთდროულად 6-ს იტენება. (იხ. სასწავლო)

გირჩევთ: