Zeitmessung Carrera Go

  • Hallo miteinander,


    Ich habe heute vergebens versucht das Doppelherz and den D143 Rundenzähler anzuschließen. Das möchte irgendwie nicht funktionieren!


    Ich bekomme meist ID1, dann wieder einmal ID2, dann ID3. Irgendwas passt hier überhaupt nicht.


    Als nächstes werde ich auf einer 132CU testen ob das Doppelherz überhaupt funktioniert.


    Lg
    Harry

  • ebay Werbung
  • Guten Morgen,


    Gestern hatte ich wieder etwas Zeit herumzuprobieren.


    Ich baute mir die analoge ID-Simulationsplatine nach, die Erkennung am Rundenzähler funktionierte über IR Diode sofort. ID1-ID3 sind auf der Redbox die selben wie auf der 132er CU. (oder annähernd, habe kein Oszi).


    Dann habe ich dieses Signal direkt auf die Redbox gelegt und sie zählte auch. Dann habe ich einen IR-Lichtschranken gebaut und die Fehler fingen an. Die CU erkannte immer wieder andere ID's, hier muss ich nochmal ran und den Fehler finden.


    Probehalber habe ich noch einmal das Doppelherz versucht, aber hier bekomme ich noch mehr Fehler. So wie es aussieht liegt es an der "Freischaltung" der Schaltung um zu senden.


    Leider bin ich auf Atmel noch nicht so fit um die "Digiloge" Simulationsplatine nachzubauen, vielleicht triggert diese besser!



    Hat jemand schon die selben Erfahrungen gemacht und vielleicht einen Lösungsansatz für mich?


    Das ganze wird aktuell noch ohne Fahrzeuge getestet um Störung von dieser Seite auszuschliessen.


    lg
    Harry

  • Hallo miteinander,


    nun habe ich mich ein wenig mit dem Arduino beschäftigt und mir mein "Doppelherz" nachgebaut.


    Funktioniert nun einwandfrei, allerdings verwende ich den Befehl Delay im Programm welcher mir natürlich andere "Funktionen" nicht zulässt.


    Anbei der Code:

    Die Funktion Sloti_3 dient nur dazu um Fehlmessungen zu vermeiden.


    Ich stecke bei der Programmierung noch in den Kinderschuhen, vielleicht könnte mir jemand Fähiger erklären wie ich das mit dem Timer umsetzte. Ich versteh es einfach nicht.



    Nun kann ich endlich meinen GO Digital143 Rundenzähler für analoge Autos verwenden, sowie die CU für analoge Autos.


    Beide Bahnen werden nach ProXUdo umgebaut.


    lg
    Harry

  • arbeit ohne delay: entweder mit einem timer, der dann alle 32 us auslöst (scheint mir hier unser größter gemeinsamer teiler zu sein) oder du nimmst dir zeitstempel und vergleichst. dafür wäre dann das hier dein gesuchter befehl: https://www.arduino.cc/referen…ge/functions/time/micros/
    allerdings kommtjetzt erschwerend dazu, das digitalRead eine grottige performance hat. daher empfehle ich dir digitalWriteFast (https://github.com/NicksonYap/digitalWriteFast - da steht auch die ausführungszeit des regulären befehls verglichen mit der der fast-methode), wenn du dich nicht mit registern rumschlagen möchtest.
    edit: im nachhinein gefunden - ich würde statt dem vorherigen link aber das hier nehmen: https://github.com/watterott/A…teFast/digitalWriteFast.h (den vorherigen link habe ich drin gelassen, weil da die ausführungszeiten verglichen sind).


    basics abgehandelt. ab zum code. ich würde hier, wenn eine lichtschranke auslöst, einen zähler auf einen bestimmten wert setzen und den zähler dann jedes mal verringern, wenn ich einen ausgang setze. kryptisch umschrieben - code folgt.

    so in etwa könnte das ablaufen. hauptsächlich merkst du dir, ob was zu tun ist (counter_slot) und ob dafür schon genug zeit vergangen ist (timestamp). ist jetzt baer einfach nur so runtergeschrieben ohne syntaxcheck oder sonst irgendwas.

  • Mal eine vielleicht blöde Frage:
    Ist das mit den selbstgebauten Timern (also eine Variable hochzählen) nicht dadurch recht ungenau, weil das Hochzählen von der Geschwindigkeit der Programmroutine abhängt?
    Sollte man nicht lieber die Micros miteinander vergleichen?


    also
    alt= micros();
    neu = micros();
    if (neu -alt >= 32).......


    VG
    Markus

  • @splits11 hat halt alles sein für und wider. micros sieht so aus:
    Anmerkung 2020-06-29 134759.png
    das braucht auch ausführungszeit... dadurch verlängerst du dir schon wieder einen schleifendurchlauf. deshalb bevorzuge ich es, den wert einmal zu holen und dann ein wenig damit weiter zu arbeiten.


    kann man machen wie man lustig ist. wirkliche antworten bekommst du aber auch nur mit einem oszi.

  • ebay Werbung
  • Hallo Sven,


    danke für die Rückmeldung. Ich werde versuchen deinen Quellcode für mich zu implementieren. Allerdings verstehe ich beim kurzen durchlesen des Codes nicht viel.


    Hier muss ich mich mehr damit beschäftigen!


    Mal sehen ob ich das so schaffe!


    Verstehe ich das richtig dass ich das so vor dem Setup verwenden muss?


    # include <digitalWriteFast.H>


    Parallel dazu beschäftige ich mich gerade das mit den Timern zu verstehen.


    Hast du eine Empfehlung für ein gutes Buch für den Arduino? Es gibt ja eine Menge davon.


    lg
    Harry

  • Allerdings verstehe ich beim kurzen durchlesen des Codes nicht viel.

    hab extra (als für meine verhätnisse) viele kommentare reingemacht

    Verstehe ich das richtig dass ich das so vor dem Setup verwenden muss?


    # include <digitalWriteFast.H>

    ja. die includes macht man meist am anfang. zur installation (musst du vorher machen) steht hier was: https://learn.watterott.com/arduino/watterott-libs/

    Hast du eine Empfehlung für ein gutes Buch für den Arduino? Es gibt ja eine Menge davon.

    ne. hatte noch nie eines...

  • Hallo miteinander,


    nicht das es den Anschein macht das "Projekt" wäre abgebrochen. Ich habe meinen Sketch nun mit der Funktion Micros gelöst. Funktioniert soweit im Probebetrieb perfekt. Nun werden noch die Reflexlichtschranken in die Schiene eingebaut und getestet.


    Leider bin ich aktuell im Umzugsstress, welcher mit meinen kleinen Zwillies nicht gerade einfach ist.


    Sobald wieder Ruhe einkehrt und wir "angekommen" sind, geht's wieder weiter. Vorteil der ganzen Aktion, ich hab einen extra Raum für die Kleine 143er. Die 132er befindet sich auf dem Dachboden meines Vaters.


    lg und bis bald


    Harry

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!