Tester DCC QoS (Quality of Signal)

dac

Well-Known Member
Trenulist
15 Septembrie 2007
1.317
32
Bucuresti
LOCATION
Bucuresti
Rasfoind netul in lung si in lat, nu am gasit mare lucru despre cum este receptionat semnalul DCC de catre decodoarele mobile (locomotive, etc.) din punctul de vedere al calitatii acestuia. Ma interesa cum este afectata rata erorilor la receptie de catre contactele dinamice roti - sine, roti - lamele colectoare, de sinele murdare sau zonele de intreruperi (macazuri, limite segmente, bucle de intoarcere).

Semnalul DCC este transmis in pachete de date constand in 3 - 6 bytes fiecare, dintre care ultimul byte (XOR) este destinat detectiei de erori. Chiar daca detectia erorilor este suficient de robusta si permite ignorarea de catre decodoare a pachetelor afectate, nu exista insa mecanisme de corectie a erorilor aparute, transmiterea informatiilor corecte bazandu-se pe repetarea rapida (refresh) a pachetelor destinate decodoarelor mobile.

Eram interesat sa aflu cam care este rata erorilor ce apar in cursul utilizarii normale a unei locomotive, intrucat in cazuri nefericite erorile pot afecta pachete repetate si, in combinatie cu un refresh lent, poate conduce la intarzieri inacceptabile in executarea comenzilor trimise de centrala. Recunosc ca situatii de acest gen mi s-au intamplat pana acum intr-un numar ce poate fi socotit pe degetele unei maini, dar asta nu m-a impiedicat sa concep un dispozitiv simplu cu care sa verific calitatea semnalului digital - DCC QoS tester:

IMG_0665.jpg
IMG_0666.jpg

Testerul receptioneza si decodeaza pachetele de date, numara pachetele fara erori care sunt primite pe durata unei secunde si afiseaza acest numar. Centralele digitale transmit un numar diferit de pachete pe secunda in functie de durata preambulului de sincronizare, de lungimea pachetelor si de politica de prioritizare si refresh implementata. Astfel Piko Digi1 transmite aproximativ 121 pachete pe secunda (pps), ESU LokProgrammer in 'test mode' 124 pps, Roco MultiMaus 147 pps, NanoXmaus 141 pps.

IMG_0668.jpg

O apasare pe microswitch memoreaza acest numar ca valoare de referinta pentru un semnal DCC de calitate maxima (QoS = 100), urmatoarele determinari fiind afisate procentual relativ la aceasta, permitand astfel aprecierea calitativa a receptionarii in dinamica a semnalului DCC (in timpul rularii vagonului) indiferent de tipul de centrala folosit. Astfel, o valoare afisata de 75 indica faptul 75% dintre pachete au fost receptionate corect (sau o rata de erori de 25%). Pentru a evita confuziile cu afisarea nominala a numarului de pachete pe secunda, afisarea procentuala adauga un punct zecimal (si inlocuieste cu spatii zerourile de la inceputul numarului).

IMG_0669.jpg

Schema electronica este centrata in jurul unui PIC16F677 si foloseste un afisaj led triplu pentru o mai buna lizibilitate in timpul rularii. Celor interesati le pot pune la dispozitie proiectul schemei si al cablajului realizat in Eagle, precum si firmware-ul pentru programarea PIC-ului in format .hex si .asm.

DCC check 1.png
DCC check 2.png
DCC check 3.png
IMG_0642.jpg
IMG_0643.jpg
IMG_0644.jpg

Circuitul foloseste un condensator electrolitic de 6800uF ce asigura suficienta energie pentru depasirea unor intreruperi de cateva secunde, intregul ansamblu fiind montat pe un vagon platforma iar culegerea curentului fiind asigurata de lamele colectoare in contact cu osiile extreme ale boghiurilor. Osia centrala a fost eliminata pentru a nu afecta contactul celorlalte osii cu sinele.

IMG_0646.jpg
IMG_0647.jpg

Am trecut apoi la teste in dinamica, ruland vagonul pe un oval R2. In conditii de sine si roti perfect curate ma asteptam la un QoS=100% indiferent de viteza de rulare, chiar daca ovalul contine 4 sectoare izolate intre ele, deci mici intreruperi la trecerea peste izolatii. Valorile obtinute au fost urmatoarele:

- la viteze pana la 45 km/H0, QoS=100%
- intre 45 si 90 km/H0, QoS=100% cu rare pierderi de pachete, fara legatura cu trecerea peste izolatii
- peste 90 km/H0, mici pierderi constante de date, cu QoS mediu de ~95%
- peste 120 km/H0, QoS mediu de ~90%
- peste 140 km/H0, QoS mediu de ~85%
- la 150km/H0 m-am oprit din testare la un QoS mediu de ~80%.

Valorile de mai sus dau de gandit: la viteze mici, un QoS de 100% indica faptul ca o culegere a curentului pe cate doua osii ajuta indiscutabil la trecerea peste mici intreruperi (izolatii). La viteze medii - mari pierderile de date cresc oarecum proportional cu viteza; este posibil sa apara vibratii, oscilatii, favorizate poate de denivelarile caii de rulare, ducand la pierderi de contact cu sinele si implicit la pierderi de date care se pastreaza insa la un nivel rezonabil.

Vagonul de test culege curentul prin 4 puncte de contact cu sinele, situatie des intalnita de ex. la iluminarea vagoanelor de calatori. Ma gandesc ca puncte de contact multiple, 8 sau 12 la locomotive, pot contribui substantial la imbunatatirea QoS in conditii similare de rulare. (un motiv in plus pentru evitarea rotilor cu cauciucuri de tractiune?)
 
Ultima editare:

Mauritius

Well-Known Member
Trenulist
18 Februarie 2008
601
79
Bucuresti
YAHOO
[email protected]
LOCATION
Bucuresti
Testul este concludent si bine venit .
Este foarte mult praf peste tot acesta dand batai de cap si in alte domenii .
O solutie ar fi un sistem de auto curatare sine si roti dar nu mecanic prin frecare pentruca dupa un timp ramanem fara sine si asa bandajele rotior nu rezista mult .
Am vaut acum ceva timp un DA care ramasese aprope fara bandaje de la lulare indelungata .
Ar mai conta foarte mult si materialele din care sunt facute sinele si rotile .
 
Ultima editare:
  • Like
Reacții: dac și mpursu

nae44

Member
Trenulist
2 Ianuarie 2008
316
881
Intr-adevar, praful din atmosfera, apropierea de un bulevard circulat, dau batai de cap. Dar cele mai mari batai de cap le avem, pe diorama de la muzeu, de la praful acela microscopic rezultat de la microscanteile dintre roti si sine, poate si de la cauciucurile de aderenta. Adica acel praf negru electroizolant care se depune pe sine si care se poate lua pe degete daca dam cu mana pe sina. La inceput, dupa o curatare manuala a tuturor sinelor, trenurile rulau foarte bine. Dar asta dura cam doua zile. Apoi nu mai rulau, pur si simplu. Va vine sa credeti ca frecvent un EA (care are totusi 6 osii si deci 12 puncte de contact cu sinele) nu mai culegea deloc curentul din sine ? Adica nici nu mai putea sa-si mentina luminile aprinse macar, ea stand pe loc. Nu mai zic ca nu o mai vedeau senzorii, ceea ce perturba foarte mult functionarea softului. Singura solutie, pe care o aplicam si azi, este folosirea vagoanelor de curatat sina. Noi folosim vagoane de tip G, cu doua osii, cu patina cu guma intre osii, facute de cei de la Piko. Pana acum acestea sunt cele mai eficiente. Cele de la Roco au guma cam tare si nu calca pe toata suprafata pe sine, mai ales la denivelari. Le preferam pe cele de la Piko. Ca tehnica, daca pe o linie ruleaza trei garnituri permanent, atunci una dintre ele obligatoriu va avea in compunere permanent si un vagon de curatat sina.
Trebuie sa tinem seama ca aici, garniturile ruleaza si cate 5 ore pe zi si 5 zile / saptamana. Nu e usor. Pana sa folosim vagoanele de curatat sina cu gume, la fiecare doua zile trebuia sa mai stam dupa program inca vreo 2 sau 3 ore, sa ne taram pe pardoseala cu hainele si sa curatam manual, cu guma Roco, si prin tunele si prin mijlocul machetei, toate sinele pe care se ruleaza. Ajunsesem la disperare. Solutia salvatoare a fost folosirea acestor vagoane de curatat sina.
Dar, chiar si asa, cam la o saptamana de rulaj intens, gumele vagoanelor ce calca pe sine le curatam manual cu alcool, din acela cu eticheta cu doamna despre care toata lumea se intreaba ce face cu mana stanga. Apoi, cu o perie cu pasla, tot cu acelasi alcool deja renumit, curatam si inimile si acele macazurilor pe care, chiar cu vagoanele cu gume, tot se depune o pasta tare, de culoare neagra, electroizolanta, ce uneori ne mai da batai de cap. Mai rar curatam si sinele intre macazuri. Acolo se pare ca acele gume isi fac foarte bine datoria.
Locomotivele le curatam destul de simplu. Punem un cupon de sina alimentat la o centrala digitala ce e cu adresa locomotivei si o pornim. Sub un boghiu punem intre roti si sina, pe sina, un servetel umed dar nu aseptic, imbibat in acool izopropilic. Tinem locomotiva cu mana (uscata pentru a nu lua inscriptiile pe degete) si un boghiu culege tensiunea si celalalt se ,,sterge pe picioare" pe acel servetel umed. Apoi schimbam pozitia locomotivei si facem la fel si cu celalalt boghiu pana rotile raman perfect curate si pe servetel nu mai ramam urme negre.
Chiar si in stuatia de mai sus sinele nu s-au uzat. Noi am folosit sine Peco cod 100, adica cu inaltimea sinei de 2,5 mm. Pe acestea le recomand tuturor si pe diorame si pe module. Vineri, diorama muzeului implineste frumoasa varsta de un deceniu. Deci, se poate spune ca in 10 ani s-a circulat destul de intens pe aceste sine. Bine lustruite in timp, frecate permanent de gumele de sters sina de la vagoane, sinele isi pastreaza inaltimea. De curand si din curiozitate, am masurat inaltimea profilului sinei azi. Dupa 10 ani nu mai are 2,5 mm are cam 2,45 sau 2,40 mm. Ceea ce, zic eu, nu e rau. Pe dioramele de acasa nu cred ca se pot ajunge la uzuri mari. Nu cred ca cineva isi ruleaza aceleasi garnituri 5 ore / zi si 5 zile / saptamana.
Cat despre rotile locomotivelor nu am avut probleme. Daca le stergem pe servetel umed sau (mai rar) cu guma de sters sina de la Roco, nu se indeparteaza acel strat inchis la culoare, brunajul, de pe ele. Acoperirea ramane la locul ei desi ele fac mii si mii de km. Dar, e adevarat, la inceput am folosit hartie abraziva de 2000 pentru roti si am indepartat brunajul si acoperirea de pe suprafetele de rulare, rotile de EA-uri oxidand destul de rau. Apoi nu am mai avut probleme, desi merg foarte mult.
 

cosmin78

Well-Known Member
Trenulist
28 Aprilie 2007
6.203
819
Porto/Craiova
YAHOO
cosminn78
LOCATION
Porto/Craiova
Atenție mare la alcoolul izopropilic, atacă vopseaua. Dacă ajunge pe cutia materialului rulant, accidental, poate compromite vopseaua și înmatricularea. Eu il folosesc la decapat.
Unele vopseluri sunt atacate și de alcoolul sanitar de 96%.
La "club" avem garnitură de curățat, cu 1 vagon cu gumă și 3 vagoane cu patine din pâslã, cele se la Noch, care se aplică pe osii. Una din ele sau 2, îmbibate cu alcool, cea uscată fiind ultima...curățenia este satisfăcătoare.

Interesant "divaisu" pentru măsurat datele.
 
Ultima editare:

dac

Well-Known Member
Trenulist
15 Septembrie 2007
1.317
32
Bucuresti
LOCATION
Bucuresti
Tocmai de aceea am efectuat testele dinamice cu ovalul (R2 Peco 100) si rotile temeinic curatate: daca apar pierderi de date in aceste conditii, nu pot decat sa imi imaginez unde se duce QoS-ul cand apare mazga aia neagra. Apropo, la finalul testelor (cam 30 min.) deja sinele murdareau degetele, desi locomotiva folosita are cauciucuri de tractiune de silicon transparent. Senzatia mea este ca totusi o cantitate mica de mazga imbunatateste cumva contactul, locomotivele parca merg mai prost pe sinele proaspat curatate.
 
  • Like
Reacții: nae44 și mpursu

nae44

Member
Trenulist
2 Ianuarie 2008
316
881
Da, din ceea ce am observat si eu, sinele imediat dupa curatarea cu guma parca nu asigura un contact perfect. Daca se curata cu alcool insa, parca conduc curentul mai bine. Stiu ca nu trece nimeni acoolul sanitar prin paine, dar este bine ca totusi acea ,,albastreala" sa nu ramana depusa pe sine. Nu sunt sigur de contactul perfect. O posibila explicatie, desi nu sunt perfect convins de asta, ar fi ca, dupa stergerea cu guma a suprafetei de rulare a sinei, desi noi o vedem curata, acolo sa ramana totusi niste mici particule de cauciuc din ,,carnea" gumei. Cred ca acestea se pot indeparta de pe sine cu alcoolul.

Da, asa este, acoolul izopropilic este foarte agresiv cu vopselele. Mai exact, la un model finalizat, este agresiv cu lacul asternut peste vopsea si apoi cu vopseaua. Daca nu gresesc, alcoolul izopropilic este folosit si ca diluant pentru unele vopsele.
 
  • Like
Reacții: mpursu

cosmin78

Well-Known Member
Trenulist
28 Aprilie 2007
6.203
819
Porto/Craiova
YAHOO
cosminn78
LOCATION
Porto/Craiova
Eu scot vopseaua de pe modele cu izopropilic (sau DOT 4). Mulți îl folosesc la diluarea vopselelor acrilice Tamya, de exemplu.
 
  • Like
Reacții: mpursu

dac

Well-Known Member
Trenulist
15 Septembrie 2007
1.317
32
Bucuresti
LOCATION
Bucuresti
As mai adauga un comentariu: spuneam ca peste 120 km/H0 QoS mediu este de ~90%, deci cam 10% dintre pachetele DCC sunt pierdute, dar asta nu inseamna insa ca pierderea de contact este de 10%.
Nicidecum: pentru coruperea unui pachet DCC este suficienta coruperea unui singur bit, iar afectarea unui bit necesita o pierdere de contact de cel putin 26 uS.

Bitii DCC au durate diferite: maxim 64 uS pentru bitul "1" si minim 90 uS pentru bitul "0":

Screen Shot 2022-01-02 at 17.51.57.png
Rutina citeste semnalul DCC undeva la mijlocul intervalului 65-89 uS de la debutul semnalului "high"; daca este tot "high" presupune ca bitul este "0", daca semnalul a devenit "low" presupune ca bitul este "1". Daca pierderea contactului acopera acest interval, atunci un bit real "0" va fi citit ca "1". Prin urmare, o lipsa contact de 26 uS corupe un pachet de 8,3 mS (de 320x mai mare). Teoretic astfel de microintreruperi pot afecta toate pachetele DCC cu o pierdere totala de contact de 1/320 sec. Aceste intreruperi sunt total nesemnificative dpdv al alimentarii cu energie a decodorului, deci complet insesizabile la nivelul iluminarii sau al functionarii motorului.

In concluzie, afectarea QoS apare cu mult timp inainte ca pierderile de contact sa fie sesizabile "cu ochiul liber", ducand insa la pierderi de date ce pot influenta comportamentul (lag-ul) decodorului.
 

nae44

Member
Trenulist
2 Ianuarie 2008
316
881
Salutare !

Vin si eu cu o problema. Presupun ca este tot din cauza unui semnal din linie inteles gresit, la un moment dat, de un decodor al unei locomotive. E numai o presupunere de-a mea.

Pe diorama de la muzeu avem trenurile care functioneaza in regim automat. Adica : calculator - centrala - magistrala de date - sine - locomotive - decodor. Pe linii sunt locomotive ale caror adrese le sunt alocate rute. Acestea le ruleaza softul. Insa, in afara de acestea, exista inca multe locomotive care stau pe sine fie pe unde nu este nici o ruta fie in locuri pe unde nu trece nimic. Acestea au fiecare alta adresa care, evident, nu este alocata niciunei rute si nici nu se repeta niciuna. Aceste locomotive sunt alimentate, pentru ca, in modul manual, ele pot primi comenzi din soft intrand pe adresa lor. Pana aici nu e nimic neclar. Insa abia acum apare problema. In starea descrisa mai sus, trenurile de pe rute functioneaza normal in automat. Normal pana la un punct. Desi traficul si functionarea in automat nu este perturbata in nici un fel, la un moment dat, cam la cateva zile, cate o locomotiva din cele ce nu merg in automat si stau in mod normal, pornesc la viteza maxima necomandat. Nu mai pot fi oprite decat prin taierea alimentarii complete a sinelor, bineinteles simultan cu oprirea tuturor trenurilor de pe diorama. Chiar daca incerc in timpul in care locomotiva alearga necomandat sa intru pe adresa ei in modul manual, nu asculta in nici un fel de nimic, numai de taierea tensiunii din sina. Apoi, dupa resetarea adreselor si alocarea acestora in blocuri de pe diorama fenomenul nu se mai intampla decat complet aleator, niciodata la aceeasi locomotiva si dupa un timp, care poate fi de o zi sau pana la doua luni.

Cauza poate fi un mesaj transmis incomplet prin magistrala si deci in consecinta un decodor oarecare il poate interpreta gresit ?
 

sogard_2003

Well-Known Member
Trenulist
19 Ianuarie 2016
3.617
62
Bucuresti
LOCATION
Bucuresti
Cauza poate fi un mesaj transmis incomplet prin magistrala si deci in consecinta un decodor oarecare il poate interpreta gresit ?
Sunt multiple cauze dar in principal poti suspecta interferentele pe care de obicei un decodor de calitate ar trebui sa le ignore. Alta cauza poate fi din soft , sa trimita semnale aiurea , asta poate fi un bug al programului cu care controlezi diorama.
 
  • Like
Reacții: mpursu

dac

Well-Known Member
Trenulist
15 Septembrie 2007
1.317
32
Bucuresti
LOCATION
Bucuresti
Nu stiu ce soft folositi la muzeu dar, in Rocrail aparitia unei locomotive "fantoma" adica ocuparea unui bloc nealocat poate duce automat la taierea curentului la sine.

Faptul ca nu mai raspunde la comenzi trimise pe adresa ei indica mai degraba un defect al decodorului, fie hardware sau mai probabil o hiba de firmware. Sau nici una nici alta, ci un semnal DCC iesit din parametri, cu 'spike'-uri de tensiune care pot determina functionarea la limita a decodorului si rulaj aberant al softului intern.
As incepe diagnosticul de la analiza cu un osciloscop a formei de unda a semnalului in zonele respective (si cam peste tot pe traseu). Poate sunt utile acele snubbere DCC care atenueaza reflexiile la capetele sinelor libere. In ultima instanta, nu imi este confortabila ideea alimentarii degeaba a unor locomotive care nu fac nimic; traseele respective pot fi scoase de sub tensiune de ex. daca semaforul este pe rosu.
 
  • Like
Reacții: gamitzu și mpursu

dac

Well-Known Member
Trenulist
15 Septembrie 2007
1.317
32
Bucuresti
LOCATION
Bucuresti
Snubberele DCC sunt de fapt simple filtre RC menite sa elimine reflexiile semnalului DCC la capetele de linie. Uite unul produs de NCE DCC (bun pentru "temporary loss of control or runaway problems"):

Aceste reflexii sunt responsabile de aparitia "spike"-urilor: pulsuri de tensiune ce pot perturba functionarea decodoarelor.

Gasim un astfel de snubber la iesirea DCC a centralei Roco 10764:

IMG_0676.jpg

Screen Shot 2022-01-04 at 22.12.08.png

Interesant este faptul ca rezistenta echivalenta folosita de Roco este de 10x mai mica (9 ohm fata de 94); nu am reusit masurarea in circuit a condensatorului dar pare tot de 100 nF. Asta sugereaza un filtru mai agresiv fata de cel NCE dar cu frecventa prag mai inalta (177 kHz Roco fata de 17 kHz NCE).
Ar merita testate ambele combinatii si vazut cum se comporta in conditii reale in circuit.
 
  • Like
Reacții: mpursu

SSL

Active Member
10 Iulie 2015
106
86
Bucuresti
LOCATION
Bucuresti
Cauza poate fi un mesaj transmis incomplet prin magistrala si deci in consecinta un decodor oarecare il poate interpreta gresit ?
Salut,
Mi-e prea draga diorama in cauza ca sa ma abtin de la a face hijacking la topic (cu scuzele aferente posterului original!). Din cate-mi amintesc, pe diorama de la muzeu ruleaza o versiune cam veche de Rocrail (cel putin judecand dupa elementele de interfata grafica). Ar fi posibil sa faceti un upgrade cu backup prealabil, la versiunea de Rocrail si sa vedeti daca mai persista problema? Ca bonus, s-ar putea ca functionalitatile adaugate in ultimii x ani la Rocrail sa ajute cu asta sau alte aspecte.
Alta idee, complet random, este sa incercati sa reduceti cantitatea de locomotive tinute sub tensiune si care nu presteaza nimic pe diorama (fie prin inlaturarea lor, fie prin taierea alimentarii in mod selectiv, nu stiu ce e mai simplu de facut). Daca asta din urma reduce aparitia efectului mentionat, ar putea indica o limitare ce tine de cate adrese/locomotive poate sa "duca" fie statia de control, fie Rocrail-ul. Si eu tot la un mesaj trunchiat ma gandeam, dar din alte cauze.
 
  • Like
Reacții: gamitzu și mpursu

gamitzu

Well-Known Member
Trenulist
8 Februarie 2010
1.234
245
galati
LOCATION
galati
Asta folosesc de 8 ani pe diorama. Ultima data a stat inchisa 9 luni in dulap, cat am pierdut eu timpul in ancora din cauza coronavirus-ului. Nu stiu insa daca ataca cauciucul la locomotivele care au asa ceva. Eu am renuntat la ele, loco cu abur care aveau inele de tractiune au primit inele speciale din altceva, un polimer transparent.
Legat de semnalul dcc, m-am lovit de el cu decodoarele Paragon de pe locomotivele produse de BLI. Seria 3 si 4 merg fara probleme pe diorama. Seriile 1 si 2, merg perfect pe orice, mai putin pe diorama. Se pare ca ovalul de 8m lungime, continuu, alimentat intr-un singur punct devine incompatibil cu ele. Locomotivele nu scot sunet, nu misca, doar lumini. Am taiat bucla intr-un loc in speranta ca va fi ok. Nimic. Restul de 130 locomotive cu orice alt decodor, de clasa 1 sau ultimul gunoi merg fara probleme. In consecinta, ideea de linie, dcc cu doua sarme de alimentare cade. Urmatoarea o sa o cablez ca la carte. Cel mai probabil ovalul devine o antena bucla gigant care deterioreaza semnalul dcc la o valoare incompatibila cu Paragon 1 si 2, dar insesizabila pentru restul decodoarelor. Daca aveam un osciloscop cred ca mergea vazut cat si cum se deterioreaza bucla semnalului dcc.
 
  • Like
Reacții: mpursu

Patrocle

New Member
4 Ianuarie 2008
12
4
Bucuresti
LOCATION
Bucuresti
O sa imi dau si eu cu parerea aici.
Sper sa nu supar pe nimeni fiindca, desi ideea imi place, nu sunt de acord cu concluzia :)

Daca am inteles bine din ce ai scris mai sus, decodezi semnnalul cu "edge triggering" (intr-un singur sens) si un timer. Metoda asta este extrem de sensibila la interferente si nu cred ca se foloseste nicaieri. Poate intr-un detector stationar (accesorii), nu in unul mobil.
Cred ca e mult mai bine sa detectezi doar tranziții si de preferat pe toate (si cele in sus, si cele in jos). Decizia pentru un bit anume o iei pe baza tranzitiilor anterioare si urmaroare, nu trebuie sa fie facuta in timp real, ci dupa o analiza. Poti sa compensezi bucati mari de de semnal lipsa asa. O varianta si mai buna e sa faci "sampling", caz in care analiza si corectia aferenta poate fi si mai complexa.

O sa dau si un exemplu:
cu varinata curenta (inca o data, daca am inteles bine), un contact imperfect oricat de scurt fix cand citesti daca e 1 sau 0 are sanse mari sa strice pachetul.
Cu "edge detection", nu. Tranzitia tot o sa aiba loc, nu fix in microsecunda aceea, ci nitel dupa, dar tot are loc, daca intreruperea nu e mai lunga decat ce a ramas din bit.
Cu 'double edge detection' si analiza lor pe cativa biti consecutivi (eventual tot pachetul) rata de erori scade dramatic.

si doua idei fara sa schimbi prea mult:
- un filtru trece jos cred ca micsoreaza sensibil rata de erori. Gen un condensator potrivit peste R13. O intrerupere scurta fix cand citesti daca e 1 sau 0 nu ar trebui sa mai conteze.
- ai putea sa citesti de mai multe ori semnalul in perioada cu pricina si sa decizi in consecinta, probabilistic.

ce am scris mai sus se bazeaza pe bucata asta:
Rutina citeste semnalul DCC undeva la mijlocul intervalului 65-89 uS de la debutul semnalului "high"; daca este tot "high" presupune ca bitul este "0", daca semnalul a devenit "low" presupune ca bitul este "1".

Mircea
 
  • Like
Reacții: mpursu

gamitzu

Well-Known Member
Trenulist
8 Februarie 2010
1.234
245
galati
LOCATION
galati
Majoritatea manualelor pentru decodoare recomanda modificarea de parametri cu loco pe linia pentru program. Pt a evita contactul imperfect si erorile de scriere aferente. Eu la loco cu abur prefer programare on main, POM cum ii zic ei. Cel putin pt sincronizat biele cu sunetul de abur din pistoane. Cele 4 chuff pe rotatie. La restul parametrilor care nu implica miscare, merge pe linia de programare.
 
  • Like
Reacții: mpursu

dac

Well-Known Member
Trenulist
15 Septembrie 2007
1.317
32
Bucuresti
LOCATION
Bucuresti
@Patrocle Orice sugestie de imbunatatire este oricand binevenita.

Rutina este declansata intr-adevar de tranzitia low-high, urmata de un timer si apoi de un "level detection". Din cate imi dau eu seama metoda este suficient de rezilienta la interferente, probabil datorita folosirii nivelelor TTL, dovada fiind decodarea perfecta a semnalului in repaus si la viteze mici - medii. Nu vad ce interferente ar putea afecta decodarea semnalului DCC la viteze superioare, si atunci, pun erorile aparute pe seama intreruperii contactului cu sinele.

Intr-un fel ai dreptate: ca sa apara erori, intreruperile trebuie sa acopere cel putin unul dintre cele 2 momente critice: tranzitia low-high si momentul "level detection". In restul timpului, chiar daca apar nenumarate microintreruperi acestea nu vor afecta citirea bitului. Deci exista o oarecare imunitate la intreruperi pentru cea mai mare parte din timp. Asta ar putea sugera mai degraba o insensibilitate la microintreruperi. Nu am idee cum se realizeaza decodarea DCC in decodoarele comerciale, dar presupun ca metoda lor este mai robusta, deci testerul ar putea fi considerat un "worst case scenario".

Am incercat un "low-pass filter" folosind cateva valori de condensatoare mergand pana la alterarea semnificativa a pantei semnalului DCC, fara absolut nicio modificare a rezultatelor; masuratorile repetate au produs aceleasi valori. Asta m-a facut sa exclud definitiv ideea unor interferente accidentale, punand erorile de decodare strict pe afectarea contactului la sine.

Pe de alta parte, PIC-ul folosit nu permite luxul unor citiri multiple, fiind constrans si de existenta a doua rutine pentru intreruperi (una pentru display, una timer de 1 sec.). Daca doresti iti pot pune la dispozitie fisierul .asm al PIC-ului si daca mai poate fi ceva imbunatatit pe undeva, cu atat mai bine!
 
  • Like
Reacții: mpursu