DCC Singal auslesen

OP #7648156
Lesenswert?

Hallo zusammen,

ich möchte in mein Modelbaubereich (Eisenbahn) mein Digital Singal DCC auslesen, es gibt einige DCC Monitore aber möchte mich selbst in die Sache einarbeiten.

Probiert habe ich diesen Schaltplan sowie Sketch: https://www.stummiforum.de/t176550f5-DCC-Monitor-auf-Arduino-Basis-N-E-U-Version.html

Läuft ja Super, nur verstehe ich den Code nicht, und ein einfaches Tutorial zu NmraDcc find ich auch nicht's.

Mir würde es am Anfang reichen, wenn ich erstmal nur die Bytes auslesen kann.

Selber Lerne ich nicht durchs Lesen, sondern wenn ich Probieren kann oder wie fange ich am besten an, da ich auch noch AC Digital habe, wird die Sache etwas eingeschrängt.

Gruß

Moderator (Firma: Titel) Persönliche Seite #7648179
Lesenswert?

Maik schrieb:

Selber Lerne ich nicht durchs Lesen

Du wirst trotzdem die Spec zum Signal lesen müssen. Oder du bist so gut und knobelst dir das Timing und die Inhalte aus den Oszi-Messungen raus.

sondern wenn ich Probieren kann oder wie fange ich am besten an

Mit dem Oszilloskop.

nur verstehe ich den Code nicht

Wo klemmt es? Was versehst du denn nicht? Was hast du denn bisher schon programmiert?

nur verstehe ich den Code nicht

Ich kann den nicht mal runterladen, so ganz ohne Anmeldung...

Und der dort:

ist schon arg HTML-verstümmelt:

1
DCC-Eingang über Optokoppler Pin 6
2
:
3
for (byte k = j; k < min (Lok_counter, bufferSizeLok - 1); k++)
4
:
5
if (bitRead(Msg->Data[pktByteCount - 2], 7))
6
{
7
Serial.print("  -->> ");
OP #7648205
Lesenswert?

Joachim B. schrieb:

Werbethread

Sory nein um Gottes willen, Stummi schön und gut aber klare Antworten suche ich wo anders.

Aus diesem Forum ist das der einzige Code der bei mir Funktioniert, daher die Frage wie man diesen oder neu Schreiben kann und oder wie man am Besten Anfängt überhaupt diese Bibliothek aufzubauen, so für mich, als verständnis, da her habe ich geschrieben, das es mir reichen würde, am anfang nur das Singal zu Empfangen, überhaupt was zu sehen...

#7648358
Lesenswert?

Maik schrieb:

Nur verstehe ich den Code nicht, und ein einfaches Tutorial zu NmraDcc find ich auch nicht's. Mir würde es am Anfang reichen, wenn ich erstmal nur die Bytes auslesen kann.

Maik schrieb:

daher die Frage wie man diesen oder neu Schreiben kann und oder wie man am Besten Anfängt überhaupt diese Bibliothek aufzubauen

Vergiss es.

Man kann nicht mal eben erklären wie man programmiert.

Das mag beim fliesenlegen noch funktionieren, aber nicht hier.

OP #7648368
Lesenswert?

Entschuldige das ich überhaupt gefragt habe, Programmiere schon etwas länger nur halt C++ ist etwas neu für mich und erst recht DCC.

Deswegen nehmen ich den einzigen Brauchbaren Code den ich habe auseinander und versuche zu Verstehen wie das ganze aufgebaut ist.

Und lass die Fliesenleger in Ruhe, das ich auch nicht einfach :P

#7648381
Lesenswert?

QMaik, nutze den Code so wie er ist! Nichts löschen!

Wenn er funktioniert mit deiner Hardware kannst du mit dem Cod und den Monitoranzeigen den Cod und das DCC Signal besser verstehen. AcK Hardware brauchst du nicht, aber ich würde es mit aufbauen, da das Teil später zum richtigen Decoder umgestrickt werden kann. Der Orginalcod ist einfach zu erweiter um Adressen zu selektieren. Da deine Zentrale wer weis wie viele Adressen sendet.

Vor einiger Zeit mal aufgebaut mit ACK und zusätzliche Portausgabe zum Test. Max 2Std.

MfG alterknacker

Angehängte Dateien:
#7648647
Lesenswert?

Hier noch mal der Grundmonitor ohne Hardware ACK

Die Leuchtdioden waren zum test und jetzt glaube ich sie werden durch F0-F4 geschaltet. Müsste erst suchen was ich für eine Geändertes Prog ich eingeladen habe.

Noch einen Lokdecoder von 2017 glaube ich. Mit 17 Ausgaben, alles leicht anpassbar. Auch zur Steuerung von Anzeigen, Soundmodul usw.

Das Modul hat keine Fremdspannung wird direkt von der DCC Spannung versorgt. War mal ein Experiment. A6 mit Poti A7 mit Taster z.B.Adresse auf 3 setzen

Alles Materialien welche so rumlagen, bis auf den Arduino der is modern;-))

MfG alterknacker

Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #7648690
Lesenswert?

Al. K. schrieb:

nutze den Code so wie er ist!

Er will ihn nicht "nutzen". Er will verstehen, wie das Einlesen des DCC Bitstroms funktioniert.

Maik schrieb:

Programmiere schon etwas länger nur halt C++ ist etwas neu für mich und erst recht DCC.

So wie ich das sehe, ist in diesem Code nicht viel Objektorientierung drin. Das einzige ist im Grunde diese Zeile:

NmraDcc Dcc ;

Da wird basierend auf die Klasse NmraDcc das Objekt Dcc angelegt.

Um zu sehen, wie der Bitstrom eingelesen wird, musst du dir also die Implementierung von NmraDcc ansehen. Dort spielt die Musik.

OP #7648939
Lesenswert?

Guten Morgen,

Habe den Code nun auseinander gekommen um bestimmte bereiche zu Verstehen, der erste Versuch hat auch gleich geklappt und bekomme nun den BIN Code angezeigt. Da ich hier mit einem Nano Arbeite wäre meine Frage, wie kann ich dies um Stellen (auch vom Schlaltplan) auf ein ESP32

#7649011
Lesenswert?

Maik schrieb:

Da ich hier mit einem Nano Arbeite wäre meine Frage, wie kann ich dies um Stellen (auch vom Schlaltplan) auf ein ESP32

Glaube ich habe jetzt bei deinen Hinweis zu stummi gesehen das man am ESP32 DCC Monitor arbeitet. Zum aufsetzen auf die Schiene und mit Bluetooth anzeige zum Handy/PC

Wollte ich auch schon machen , aber es ist beim Wollen geblieben. Jetzt kann ich ja warten bis du es gemacht oder gefunden hast.;-))

Maik schrieb:

den BIN Code angezeigt.

Vom gesamten Digitalpaket oder aufgeschlüsselt aus der Hex Anzeige.

MfG alterknacker

#7649020
Lesenswert?

Fein, dass mein DCC-Monitor jetzt auch den Weg ins mikrocontroller-Forum gefunden hat!

Man kann den Sketch nutzen, muss es aber nicht.

Wenn Du die DCC-Befehle verstehen lernen willst, kommst du um das Studium der Spezifikationen und die Analyse der NMRA-Bibliothek nicht herum.

BTW: Im Code habe ich sehr ausführlich dokumentiert, das ist schon ein sehr gute Einführung in DCC.

Gruß Martin

OP #7649023
Lesenswert?

Das hab ich soweit nicht verfolgt, das dort an ESP32 gearbeitet wird.

Am Strom kann es nicht liegen (ESP 3.3V) das der ESP keine Daten Empfängt, es muss was mit den Digital Port sein, da ich gerade um steige von Arduino zu ESP muss ich eben so dies lernen, das es andere Anschlüsse hat. Aber wieso kommt nicht beim ESP an:

1
#include <NmraDcc.h>
2

3
NmraDcc Dcc;
4

5
void setup() {
6
  Serial.begin(115200);
7
  Serial.println("Initializing DCC reader...");
8
  Dcc.pin(0, 2, 1);
9
  Dcc.init(MAN_ID_DIY, 12, CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE, 0);
10
  Serial.println("DCC reader is ready...");
11
}
12

13
void loop() {
14
  Dcc.process();
15
}
16

17
void notifyDccMsg(DCC_MSG * Msg) {
18
  Serial.print("notifyDccMsg: ");
19
  Serial.print(Msg->Size);
20
  Serial.print("  ");
21
  for(uint8_t i = 0; i < Msg->Size; i++)
22
  {
23
    Serial.print(Msg->Data[i], BIN);
24
  }
25
  Serial.println();
26
}

Pin wäre beim Nano 2 und denke beim ESP GPI04 oder täsuche ich mich?

#7649040
Lesenswert?

Maik schrieb:

Martin schrieb:

Fein, dass mein DCC-Monitor jetzt auch den Weg ins mikrocontroller-Forum

Hast du noch die erste Version von deim Script?

Müßte ich auf meinem PC suchen.

Ich habe nur Erfahrungen mit dem Nano ESP32, aber nur mit anderen Projekten.

Evtl. musst du die Interrupt-Nr. (die erste „0“) anpassen an den benutzten Pin.

Dcc.pin ( 0, 2, 1 ) // Setup which External Interrupt, the Pin it's associated with that we're using and enable the Pull-Up

Auch wäre zu klären, ob die NMRA-Bib. überhaupt auf dem ESP läuft. Ich denke aber schon.

Warum überhaupt ein ESP? Der ist reichlich oversized. Oder brauchst du WLAN oder BT?

#7649048
Lesenswert?

Lothar M. schrieb:

nur verstehe ich den Code nicht

Ich kann den nicht mal runterladen, so ganz ohne Anmeldung...

Und der dort:

https://www.stummiforum.de/t176550f5-DCC-Monitor-auf-Arduino-Basis-N-E-U-Version.html#msg2105810

ist schon arg HTML-verstümmelt:

1
> DCC-Eingang &#252;ber Optokoppler Pin 6
2
> :
3
> for (byte k = j; k &lt; min (Lok_counter, bufferSizeLok - 1); k++)
4
> :
5
> if (bitRead(Msg-&gt;Data[pktByteCount - 2], 7))
6
> {
7
> Serial.print("  --&gt;&gt; ");
8
>

Der inline-Code wurde leider beim Forenumzug verstümmelt.

Drum hängt der Sketch auch als zip-File am Stummi-Thread, man muss sich halt dort registrieren.

#7649053
Lesenswert?

Martin schrieb:

Warum überhaupt ein ESP? Der ist reichlich oversized. Oder brauchst du WLAN oder BT?

Das hat schon Vorteile.

Anschluss an Schiene und Kommunikation über Bluetooth. Man könnte auch einen MP3 Player anschließen und alles Ansagen lassen. Habe ich vor Jahren am Lockdecoder gemacht. Is aber mehr oder weniger ein AHA Effekt bei Ausstellungen.

MfG alterknacker

OP #7649133
Lesenswert?

Ein ESP Bietet schon vorteile, Speicher CPU schon größer und Preisgünstiger, für die weitere Verarbeitung am Code kann ich ein besseres zusammen Spiel bauen wenn der DCC Input gehen würde.

Habe nun viele PIN durchprobiert, aber keine Ausgabe, laut NmraDcc soll ESP32 Unterstützt werden.

OP #7649750
Lesenswert?

Guten Morgen,

es lag nicht am Code oder ESP, an Arduino IDE, der zeigt mir nicht die Inputs an, Starte ich das ganze über Putty, bekomme ich meine Singale, IDE 1.8 oder 2 können den Input von ESP nicht anzeigen, hmm, ok, gibt es eine alternative zu diesem IDE (Windows oder Linux)?

Dein DCC_Monitor läuft nur Beschränk auf dem ESP, da er die Werte min() und max() nicht verarbeiten kann, wenn ich den Buffer abschalte, läuft das Script. Nun überlege ich, die Werte in einer array zu Speichern und bei Unterschiede diese neu Anzeigen und geändert werden, der erste Versuch klappt ja aber wenn sich der Wert ändert, zeigt er es nicht an, bin es von PHP/Perl gerwohnt das man offene array hat, hier bei C++ muss man eine feste Größe angeben, aber weiß ich vorher, wieviele Lok's zum einsatzt kommen?!?

Hattest du schonmal geschaut nach deiner ersten Version, die würde mich wirklich Interessieren, die aus dem Forum kann man nicht gebrauchen, da die hälfte fehlt...

OP #7649755
Lesenswert?

Habe das Script geändert um zu sehen ob dies mit der array klappt, auf dem ersten Blick ja und neu:

1
  if(instructionType == 2 || instructionType == 3) {
2
      speed = ((Befehls_Byte & B00001111) << 1) + ((Befehls_Byte & 0x10) >> 4) - 3;
3
      for (int a = 0; a < sizeof(arry); a++) {
4
        if(arry[a] == speed) {
5
          direction = 1;
6
          break;
7
        } else {
8
          direction = 0;
9
        }
10
      }
11
      if (direction == 0) {
12
        arry[i] = speed;
13
        Serial.print((String) "Lok: " + LokArdesse);
14
        if (speed == 253 || speed == 254) {
15
          Serial.print(" <<-->> Stopp");
16
        } else if (speed == 255 || speed == 0) {
17
          Serial.print(" >>--<< Nothalt");
18
        } else {
19
          if(instructionType == 2) {
20
            Serial.print((String) " <<--   " + speed);
21
          }
22
          if(instructionType == 3) {
23
            Serial.print((String) "    -->> " + speed);
24
          }
25
        }
26
        Serial.println();
27
        i ++;
28
      }
29
  }

es kommt hin und wieder ein Befehl zurück, glaub das ist der Falsche weg

#7649760
Lesenswert?

Harald W. schrieb:

Du meinst einen zweibeinigen "Logikanalysator"?

Nein, erstmal ging es um einen 10-beinigen Logikanalysator mit USB Schnittstell als Alternative zum Oszi. Damit kommt man für einen Bruchteil des Preises deutlich weiter, wenn es um Zeitverlauf und Verständnis der Daten von der Schiene geht: https://www.ebay.de/itm/275942918330

https://www.ejberg.dk/portfolio/saleae-dcc-decoder/

Die Preise gehen teilweise ETWAS auseinander, nur um ein paar zu nennen: https://de.aliexpress.com/item/32858282094.html https://www.ebay.de/itm/174383331265 https://www.ebay.de/itm/272581930532 https://www.az-delivery.de/products/saleae-logic-analyzer https://www.antratek.de/logic-analyzer-24mhz-8-channel https://www.amazon.de/Saleae-Analyzer-8Channel-saleae-support/dp/B00DPCDEV2

OP #7654067
Lesenswert?

Nach einer guten Woche Lesen/Verstehen und Handeln, bekomme ich es immer noch nicht hin, DCC ohne Libraries auszulesen.

Versucht habe ich mich an: https://rudysmodelrailway.wordpress.com/2015/10/23/dcc-sniffer-packet-analyser-with-arduino/ zu halten und mehrere Verschiedene Versionen ausprobiert aber bekomme hier gar kein Signal über den Nana, wenn ich es über den Uno Probiere, sehe ich, bei geschlossenden Monitor, das meine LED im Takt Blinkt, öffne ich den Monitor, scheint das Script stehen zu bleiben, selbt ein Input kann ich nicht ausführen.

Warum das ganze ohne NMRA, da ich auf die Bibliothek Verzichten möchte und nur die Lok Adressen auslesen möchte und diese in einer Array speichern.

Entweder bin ich zu alte dafür oder ich hab es nicht verstanden...

Gast #7654293
Lesenswert?

Ich habe keine Ahnung von DCC und habe hier nur oberflächlich gelesen. Es ging darum, dass nach dem Öffnen des seriellen Monitors der Arduino-IDE die Verbindung hängt, mit Putty aber funktioniert? Kann es sein, dass der Reset, den der serielle Monitor beim Öffnnen auslöst (DTR) und damit das bereits auf dem Uno laufende Programm unterbricht, die Kommunikation durcheinander bringt? Mag sein, dass ich mit meiner Vermutung auf dem völlig falschen Gleis bin :-)

Moderator (Firma: Titel) Persönliche Seite #7654736
Lesenswert?

Maik schrieb:

nochmal überlegt, ob es vielleicht am Schaltplan liegt

...oder an der Schaltung. Aber da könnte und sollte man nun einfach mit einem Oszilloskop die Signale messen.

Ich verstehe beim besten Willen nicht, warum manche meinen, ohne ein solches Messgerät serielle Protokolle entschlüsseln zu können. Und: weil das hier ein zutiefst analoges Signal mit einer sehr analogen Signalaufbereitung ist, reicht ein 10€ Logikanalyzer nicht aus.

#7654752
Lesenswert?

Da bei mir genau dieser Schaltplan perfekt mit meinem Sketch funktioniert, muss der Fehler wohl entweder an deiner Verdrahtung oder deinem Sketch liegen.

BTW: genauso solche nicht oder eingeschränkt funktionierenden Sketche wie der von dir verwendete haben mich veranlasst selber einen zu schreiben!

(Firma: TravelRec.) Persönliche Seite #7654763
Lesenswert?

Bei einem derartigen pillepalle Signal wundert es mich ersthaft, wie man sich so lange damit beschäftigen kann, ohne zu irgendeinem verwertbaren Ergebnis zu kommen. Man muss nur zwischen 56 und >100µs unterscheiden, die Bits einsammeln, Pakete draus machen und die dann dekodieren. Das ist jetzt auch zu Fuß nicht wirklich schwer und das geht in der Tat auch ohne Oszilloskop, wenn man eine UART zum Debuggen am PC beispielsweise nutzt und sich Zählwerte und den Empfangspuffer von den eingesammelten Bits ausgeben lässt. Der Rest ist dann nur noch Fleißarbeit.

Moderator (Firma: Titel) Persönliche Seite #7654793
Lesenswert?

Knut B. schrieb:

das geht in der Tat auch ohne Oszilloskop

Das ist dann so ähnlich wie "Autofahren nach Gehör": wenn es scheppert oder nicht mehr weitergeht, dann weiß man erst mal nicht, woran es denn jetzt schon wieder klemmt.

Genau das sehen wir hier: es geht schon eine Woche nicht weiter. Und keiner weiß warum.

und das geht in der Tat auch ohne Oszilloskop, wenn man

... nicht grade blutiger Anfänger ist. Und ich habe mir schon früh in meiner Elektronikkarriere ein Oszi gekauft obwohl mich das deutlich mehr gekostet hat als eine Eitrittskarte zu einem Konzert.

Oder andersrum: wer heute meint, ein Oszi wäre "zu teuer" für sein Elektronikhobby, der sollte irgendein wirklich billiges Hobby aussuchen wie z.B. Instafilmchen anschauen.

OP #7654821
Lesenswert?

Ich glaube, das Modelleisenbahn nicht gerade günstig ist und ich in einem so einen Gerät den kosten nutzen Facktor nich nicht sehe für aktuell einmalige Sache. Zudem wird es mich auch nicht zu Lösung bringen.

Das man zwischen 50 und 120µs Suchen/Arbeiten muss weiß ich, meine Frage ist, wie kann ich es als Script umsetzen...

#7654824
Lesenswert?

Maik schrieb:

Ich glaube, das Modelleisenbahn nicht gerade günstig ist und ich in einem so einen Gerät den kosten nutzen Facktor nich nicht sehe für aktuell einmalige Sache. Zudem wird es mich auch nicht zu Lösung bringen.

Zum Glauben geht man in die Kirche. Oszilloskope / Logikanalyser mit USB-Anschluss bekommt man für 10 Euro (+ Versandkosten) bei diversen (in Deutschland ansässigen) Händler / Chinaimporteuren.

Ansonsten musst du dich halt durch den Quellcode hangeln bis du ihn verstanden hast.

Maik schrieb:

Das man zwischen 50 und 120µs Suchen/Arbeiten muss weiß ich, meine Frage ist, wie kann ich es als Script umsetzen...

Für sowas verwendet man ja auch integrierte Hardware. DCC u.a. Digitalformate stammen aus den 1980ern, und mit Arnold waren die Sachen auch schon in Spur N verfügbar (in Zusammenarbeite mit Märklin). (Mini-) Trix hatte das Selectrix-Digitalsystem. Damals waren die Controller noch wesentlich leistungsschwächer, und die Firmen haben es trotzdem hinbekommen.

Lothar M. schrieb:

der sollte irgendein wirklich billiges Hobby aussuchen wie z.B. Instafilmchen anschauen.

Guter Vorschlag. Man kann auch einem Apfel-Griebsch beim Braunwerden zugucken...

Moderator (Firma: Titel) Persönliche Seite #7654827
Lesenswert?

Maik schrieb:

Das man zwischen 50 und 120µs Suchen/Arbeiten muss weiß ich, meine Frage ist, wie kann ich es als Script umsetzen...

  1. Initialisiere einen Timer, der (ca.) in jeder us um 1 hochzählt
  2. Initialisiere eine Capture-Interrupt, der bei jeder Flanke den aktuellen Timerwert (Zeitstempel) abspeichert
  3. Sieh über den Pegel am Pin nach, ob es eine "abschließende" Flanke war
  4. Wenn das der Fall ist, dann berechne die Pulsdauer aus den letzten beiden Zeitstempeln

Maik schrieb:

Ich glaube ... wird es mich auch nicht zu Lösung bringen.

Na gut, gegen Glaubensfragen kommt man nicht an, Leute tun irre Sachen aus diesem Grund. Man liest es allenthalben in der Zeitung.

Da bleibt mir nur, dir viel Glück zu wünschen. Du wirst es brauchen.

#7654901
Lesenswert?

Ich vestehe die ganze Frage nicht. Wenn man DCC bei google eingibt, dann ist der Artikel recht dünn. Hat aber unten Links auf die DCC Seite. Dort gibt es komplette Specs. z.B. das hier

https://www.nmra.org/sites/default/files/standards/sandrp/pdf/s-9.1_electrical_standards_for_digital_command_control_2021.pdf

Damit kann man seine eigene Erkennung schreiben, ganz ohne C++, wenn es denn sein muss.

Apropos C++: so neu ist die Sprache auch nicht, ich benutze die seit 1991. Hätte man sich einarbeiten können. Dann könnte man auch Stummis Code verstehen. Der ist auch keine Raketenwissenschaft.

#7659709
Lesenswert?

Ja Maik, das wäre super. Aber es hat wahrscheinlich keiner solche Projekte. Doch alle wollen mitreden! Ich habe auch so etwas vor und suche vergebens. Fündig wird man z.B. bei der PIC-Fraktion oder im Stummis-Modellbahnforum. Auch bei den Arduinos gibt es solche Beispiele. Leider benutzen diese Biblios. Ich würde es aber lieber mit den AVRs machen und in Bascom. Mir ist aber schon klar, dass BASCOM das Problem sein wird. Aber wenn man Assemblercode einbaut sollte es wohl machbar sein.

Moderator (Firma: Titel) Persönliche Seite #7659756
Lesenswert?

Maik schrieb:

Wenn dies so einfach sein soll, warum Posted keiner mal ein Beispiel Code?

Maik schrieb:

aber möchte mich selbst in die Sache einarbeiten.

Ja, was denn nun?

Heißt "sich selber einarbeiten" für dich nur "kopierten Code einsetzen"?

Wie wäre es denn, wenn du dir (nachdem du dich vergewissert hast, dass deine Hardware funtkioniert) mal das Gesamtpaket in Teilaufgaben zerlegst und erst mal das Timing anschaust und versuchst die Bits 0 und 1 zu unterscheiden (= OSI Layer 1):

Und dann versuchst du die Präambel und das folgende Nullbit zu erkennen und den nachfolgenden Datenstrom einzulesen (= OSI Layer 2):

Und wenn du das hast, kannst du darangehen, die Daten zu entschlüsseln und dich die restlichen OSI Layer 2..7 bis zur Anwendung hocharbeiten.

Genau so und nur so funktioniert "sich selber in eine Sache einarbeiten".

Moderator Persönliche Seite #7660706
Lesenswert?

Jürgen H. schrieb:

Aber es hat wahrscheinlich keiner solche Projekte. Doch alle wollen mitreden!

Ich arbeite gerade an einer DCC-Zentrale, die RailCom-fähig ist, siehe github: https://github.com/ukw100/FM22. Die Dokumentation ist aber noch nicht fertig, ist harte Arbeit.

Dazu gehört auch ein abgesetzter, autark arbeitender lokaler RailCom-Detektor, der beliebig viele Loks auf bis zu 256 Gleisstrecken erkennen und lokalisieren kann, um deren Aufenthaltsort zu bestimmen.

Als Abfallprodukt ist dabei auch ein DCC-Decoder entstanden, der nicht nur die RailCom-Signale in den Lücken der DCC-Frames erkennen soll, um die Loks zu lokalisieren, sondern auch noch DCC-Befehle entgegennehmen und ausführen kann, wie zum Beispiel die Ansteuerung einer WS2812-LED-Kette, um Modellbahngebäude, Laternen etc. zu beleuchten.

Langer Rede kurzer Sinn: Der Code des lokalen Railcom-Detektors und damit auch des DCC-Decoders ist noch nicht auf github, ich könnte ihn aber vorzeitig zur Verfügung stellen. Allerdings für ein STM32F401 Blackpill, nicht für AVR und auch nicht für ESP.

Zum Problem des TO: Auch mein Code wird ihm nicht weiterhelfen. Da hat Lothar schon recht: Da muss der TO selbst durch. Man kann nicht alle Wünsche durch Abkupfern erfüllen.

#7839055
Lesenswert?

Mal eine Frage an die Fachleute: Maik hat einen Schaltplan für die Eingangsbeschaltung des Sniffers eingestellt. Habe ihn hier nochmals kopiert. Meine Frage ist aber warum werden 2 unterschiedliche Optokoppler verwendet? So unterschiedlich sind deren Daten ja nicht und bei der Frequenz ist das DCC-Protokoll ja noch zu beherrschen. Danke!

Angehängte Dateien:
#7839142
Lesenswert?

Der obere ist ein schneller OK, der das DCC-Signal an den Nano weitergibt.

Der untere dient nur zur Erzeugung von ACK-Impulsen. Das ist vollkommen zeitunkritisch; da tut es auch ein billiger langsamer Standard-OK.

Die ACK-Impulse werden auf dem Programmiergleis benötigt, um CVs der Dekoder durch eine Zentrale auszulesen. Das ist hier prinzipiell sinnbefreit, da es hier ja nur ein Monitor ist und kein Dekoder.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren