DCC fara decodoare?

LeMans90

New Member
2 Noiembrie 2012
12
0
Brasov
LOCATION
Brasov
Salut,

O intrebare, cum as putea avea un protocol de comunicare bidirectional intre 2 uControllere diferite, prin sina de cale ferata, fara sa folosesc decodoare?

Ce dispozitiv electronic as putea folosi pentru aceasta comunicatie?

Am citit ceva despre boostere, oare cu 2 boostere as putea rezolva chestiunea?

Un pic de ajutor va rog, sunt nou in domeniu :)
 
In ce domeniu esti nou ?
 
Pai decodorul in sine este (sau mai bine zis contine) un microcontroller ...
Cred ca mai bine detaliezi ce vrei sa faci, si eventual ne zici si ce controllere, decodoare, boostere, statii digitale sunt pe circuitul tau, ca nu pot coexista chiar in orice combinatie ...
 
Sunt nou relativ nou in modelism feroviar, electronica.

Momentan am calea ferata, o locomotiva, 2 vagoane, un ARM pe care vreau sa il folosesc ca " Centrala" si un AVR f mic, care citeste 2 senzori pe locomotiva.

Vreau sa comunic prin sina de cale ferata intre AVR si ARM, ARM sa transmita factorul de umplere pentru controlul vitezei/sensului motorului, AVR sa transmita spre ARM viteza si gradul de inclinare al curbei citite de la senzori.

Cum as putea transmite aceste informatii prin sina spre si dinspre ARM - AVR?
 
Semnal modulat , adresa unica de identificare. Cu avr-ul trebuie sa poti identifica un anumit set de comenzi iar asta o faci programand-ul sa urmeze intructiuni dupa ce identifica adresa . Comunicarea prin sine se face cu semnalul modulat dar trecut printr-un circuit de comanda de putere. De exemplu un driver de motor .
 
Asta ar trebui sa fie lucrare de licenta? Adica se presupune ca e chintesenta cunostiintelor tale de-a lungul facultatii? Stii ce e aia PWM? Stiu cele 2 controllere PWM? Daca da, practic ce vrei sa faci tu e sa reinventezi DCC-ul... daca nu, atunci mai bine alegi alta tema. Oricum, parca era vorba de acu cateva luni ca vrei o tema legata de trenulete. In ritmul asta nu vei termina niciodata.
Ce ar trebui tu sa faci este sa controlezi cu controller-ul mic tensiunea de alimentare si sensul pentru motorasul locomotivei, adica va deveni el un 'decodor' pentru locomotiva. Poate face asta? Ma cam indoiesc, deci iti va trebui un circuit micut de comanda pentru motoras. Protocolul de comunicatie ti-l poti defini tu, dar pana acolo mai ai multe alte intrebari la care iti trebuie raspuns....
N-am prea inteles de ce trebuie sa comunice ARM-ul si AVR.ul... vrei sa manufacturezi si o statie de control? Mai bine faci doar decodorul locomotivei respectand standardul DCC si ii trimiti comenzi direct dintr-o statie Roco de exemplu. Viteza si gradul de inclinatie I'll afisezi pe ceva? Doar in cazul asta are sens ce vrei tu sa faci...
 
Multumesc de raspunsuri!

@sogard: Da, la semnal modulat m-am gandit si eu. Am citit si inteles standardul de comunicare al celor de la NMRA, ceva f asemanator vreau sa folosesc. Dar pana acolo trebuie sa vedem Mijlocul prin care are loc comunicarea. Mai jos voi detalia proiectul si poate gasim o solutie.

@ Myrcea : Da, asta va fi lucrarea mea de licenta, o detaliez mai jos. Da, stiu ce e PWM, au ambele uCtrollerele canale PWM si Da, si eu simt ca incerc sa reinventez roata.

Dar asta e modul in care a decis indrumatorul meu de licenta ca se vor petrece lucrurile, nu folosim decodoare si nici Roco, Lentz sau alte centrale mai smechere.


Si acum lucrarea de licenta este pe scurt in felul urmator:

Un trenulet inteligent, autonom, care isi adapteaza viteza de mers in functie de gradul de inclinare al sinei pe baza Logicii Fuzzy.

Locomotiva ( sau un vagon) are un AVR f mic, care doar citeste senzorii de viteza ( IR) si de inclinare ( un gyro) si care transmite aceste informatii la Centrala ( formata dintr-un ARM, uC de tip mbed.org - e putin mai puternic decat avem nevoie dar il avem deja, si il vom folosi). La centrala vom avea si o interfata cu user-ul, inca nu am detaliat partea asta.

Bun, Centrala primeste informatiile, iar pe baza Logicii Fuzzy va calcula iesirea, anume factorul de umplere pentru motorul care e incojurat de o punte H, si o va transmite AVR-ului, care va trimite aceste impulsuri modulate catre puntea H ( sau driver-ul motorului).

Cam despre asta e vorba in mare.

Din ce am citit despre DCC, pentru a realiza comunicarea de la centrala la Loco, am nevoie de un Booster la un capat, si de un decodor la celalat. Cum nu folosim decodor, va trebui ca AVR-ul nostru sa fie in stare sa faca acelasi lucru si pentru aceasta mai avem nevoie de niste componente. ( Un redresor, stabilizator, alte module, nu stiu...).

Daca am rezolva problema asta, ar mai fi totusi una : cum, pe acceasi sina, comunicam bidirectional? Aici am gasit raspunsul clasic de DCC : un RailCom.

Cum as putea face eu aceste lucruri cu cele 2 uC? Ce alte module electronice as mai avea nevoie, ce circuite si cum as putea face aceasta comunicare prin sina?

Multumesc!
 
Deci, nu vreau sa iti tai avantul, dar pentru ce ai descris tu este foarte mult de lucru, nu cred ca realizezi asta. Pe langa partea practica, va trebui sa scrii si o caruta de pagini de teorie, asa ca ar trebui sa incerci sa simplifici cat mai mult.
Sunt totusi cateva lucruri pe care nu le inteleg:
- din centrala, in functie de mesajul pe care il trimiti pe linii, stabilesti viteza de deplasare a locomotivei (ma rog, ii transmiti decodorului o valoare pe care el o va converti intr-o tensiune care va fi aplicata motorului).
- din ce ai spus tu, viteza nu va fi controlata din centrala, pentru ca se va autoregla. Practic din centrala ar trebui sa trimiti doar sensul de deplasare si cu al doilea uC ar trebui sa controlezi viteza. Ai spus ca nu vrei sa folosesti decodoare DCC, deci rolul decodorului va trebui suplinit de cel de-al doilea uC, pentru ca trebuie cumva sa variezi tensiunea de alimentare a motorului.
- poti sa comunici wireless intre cele doua uC? In cazul asta poti face un circuit analogic pentru sine in loc de pseudoDCC si sa variezi tensiunea analogica in sine. Altfel, esti obligat sa folosesti tensiune DC in sine plus trenuri de impulsuri cu care faci comunicatia intre cele 2 controllere. In cazul asta nu vei putea varia tensiunea la motor decat cu pseudo-decodorul tau. Atunci nu are nici un sens sa trimiti informatia de viteza si de inclinatie catre centrala, care sa o proceseze si apoi sa trimita alta comanda de viteza inapoi catre pseudo-decodor. Poti face toata aceasta procesare in controllerul de pe locomotiva
- informatia de viteza si inclinare are sens sa fie trimisa doar daca o afisezi pe un display. Lucrul asta sigur o sa fie atragator pentru cei care iti vor vedea proiectul

Deci, ca sa trag linie, eu as regla viteza din AVR si nu din ARM! Din ARM as stabili doar sensul de deplasare si as afisa pe un display viteza (transformata la scara reala :) )
 
Cand iti recomandam mutarea logicii din locomotiva in centrala ma gandeam s-o faci complet si sa folosesti decoderele dcc in locomotiva pentru controlul fizic al vitezei.
Dupa cum ziceam si atunci, nu-s sigur nici ca ai spatiul necesar pentru toata electronica (pe langa ce are un decodor 'norma' tu vrei sa mai montezi si detectori de acceleratie, infrarosu...) si si programul va trebui sa fie destul de complex.
Asa ca eu ma gandisem la 'totul extern', inclusiv senzorii (ce-i drept nu mai poti detecta inclinarea), da-ti ramane de implementat "numai" centrala, in care sa implementezi, pe langa logica fuzzy, si partea de comunicatie dcc cu locomotiva (locomotivele).
Daca decizi sa pastrezi logica in locomotiva, poti reveni la ideea ta - totul in locomotiva, caz in care scapi de partea de comunicatie cu centrala. Da' mie varanta asta mi se pare in continuare mai complicata/fara aplicabilitate.

PS Cred ca ar fi trebuit sa continui in topicul deja existent.
 
La multi ani!
@ Mircea: Ai inteles bine, cam asta as vrea sa fac, si momentan nu luam in consideratie varianta de transmisie wireless. Indrumatorul meu de licenta insista sa folosim cele 2 uC, AVR-ul trebuie sa fie f mic, sa incapa in vagon/loco, deci nu putem avea logica pe el. Hai sa vedem cum putem face acea comunicatie, cum facem din AVR un pseudo Decodor :).
Iar viteza va fi controlata din centrala, pentru ca in ea se calculeaza pe baza vitezei si inclinarii curbei, viteza de deplasare care va fi transmisa AVR-ului..
Stiu ca e complicat si ca ar fi mult mai simplu cum ziceti voi, sunt de acord, dar hai totusi sa incercam sa gasim o solutie la DCC fara decodoare, sa vedem cum comunicam bidirectional intre AVR si ARM prin sina.
Legat de Display, suna bine, m-am gandit si eu la el, voi propune indrumatorului sa vad ce zice.

@ Liviu: Sunt de acord cu ce zici tu, ar fi mai simplu ( si poate si mai logic) dar acum hai sa vedem cum am putea implementa cum am zis mai sus... cum am zis, indrumatorul meu de licenta momentan doreste sa facem asa, hai sa vedem cum putem realiza in aceste conditii comunicarea.

Am gasit pana acum asta si asta.

Deci, cum putem face aceasta comunicare? :D

P.S. : La acest topic am vrut sa gasim o solutie la problema DCC fara decodoare, fara voia mea am inceput alta discutie despre licenta mea, care e total diferita de ce e in topicul acela, in care nimeni nu a mai scris nimic.
 
Mie nu-mi trece prin cap nici un protocol care sa satisfaca toate cerintele, da' asta nu inseamna nimic, sunt o gramada de chestii care nu-mi trec mie prin cap.
Sunt super curios ce o sa gasesti.
Nu pot decat sa-ti urez bafta.
 
Merci Liviu :) Pana acum ce am gasit este RocRail, dar nu stiu cum sa fac din AVR-ul meu un decodor... oricum, va tin la curent, foarte probabil voi incerca alta metoda de comunicare..
 
Rocrail e un soft de automatizare, da' nu stiu cata treaba are cu logica fuzzy.
Vrei sa-l compilezi pentru ARM? Ar trebui sa mearga (partea de server), eu l-am compilat pentru un NAS. Vezi ca pe forumul rocrail exista cateva topicuri despre cross-compiling.