Modellbahn Geschwindigkeit messen!

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Modellbahn Geschwindigkeit messen!

      Hallo Modellbahner und interessierte,

      ich möchte ganz gerne wissen, wie schnell die Loks auf meiner Anlage so sind um keine Rennsemmeln auf der Anlage laufen zu lassen. Das sieht dann immer ziemlich unrealistisch aus. Ich bin zwar kein Nietenzähler aber ein gewisses Maß an Realität sollte schon sein. Man kann bei Digitalbetrieb ja über CV Werte eine Grundeinstellung vornehmen.
      Ich möchte also gerne per Anfangsmessung und Endmessung ( 1m bei Spur N) und folgender Formel:

      V = L x M x 3600 / t / 1000, auf einem Display sehen wie schnell die gemessene Lok fährt!

      L steht hier für Abstand der Sensoren
      M steht hier für den Maßstab der Modelle ( H0 = 87, N = 160 )
      t = gemessene Zeit in MS
      Obige Formel entspricht 1Km / h beim Vorbild 0,32cm / s bei H0

      Die Einstellung der Maßstäbe beabsichtige ich per Digi-Schalter oder Steckbrücken vorzunehmen!
      Mein Problem ist (da kommt mal wieder meine Timerschwäche zum Vorschein) die Messzeit und die anschliessende Umrechnung in Km / Std., da weis ich mal wieder nicht wie ich anfangen soll???
      Ferner weis ich auch noch nicht genau welche Sensoren ich verwenden soll. Die Loks haben ja schließlich mehr als eine Achse!
      Wer von euch kann mir da behilflich sein?

      Gruß
      Klaus
    • veryoldman schrieb:

      (da kommt mal wieder meine Timerschwäche zum Vorschein)
      Ich hoffe das ist nicht ansteckend :)

      Geschwindigkeit ist ja Weg / Zeit also lässt du einen Timer ab dem Start-Punkt zählen und stoppst ihn am End-Punkt.
      Deine Strecke ist ja bekannt. Jetzt hast du eine Zeit gemessen und kannst sie durch die Strecke teilen.
      Da du aber alles in einem Maßstab berechen willst/musst, musst du vorher die Strecke und auch die Zeit auf den "Maßstab" bringen.
      Ich hab das mal in einer Tabelle verdeutlicht.

      Geschwindigkeit.jpg

      Tabelle im Anhang.

      Als Ergebnis kommt immer 1m/s raus egal mit wechem Maßstab gerechnet wird.
      Das ist dann schon mal eine Grundlage für die zu messende Strecke und die Timer-Einstellung

      Übrigens als Messpunkte kannst du Hallsensoren auf den Gleisen befestigen und an der Lok ein Magnet.

      PS: Bei der Datei im Anhang das .txt entfernen
      Dateien
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Der eine Meter zum Messen ist zwar für die Berechnung praktisch, aber bei Spur N doch recht lang. Der Controller ist so schnell, dass m.E. eine wesentlich kürzere Strecke ausreichen würde. Bei Geschwindigkeitskontrollen im Straßenverkehr werden unter anderem auch Lichtschranken verwendet. In den ca 40cm breiten Kästen (im Realmaßstab) sind drei Lichtschranken verbaut. Die jeweils äußeren starten die Messung richtungsabhängig, die mittlere Lichtschranke ermittelt die Zeit. Löst die andere äußere vor der Mittleren aus, wird die Messung verworfen, da dann bei der Kontrolle im Straßenverkehr ein Fahrzeug aus der Gegenrichtung den Messevorgang stört.

      Eigentlich müssten 2 Sensoren im Abstand von 1cm ausreichen.das geht dann auch sehr schnell.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • @veryoldman wird das eine extra Messanlage, oder soll das innerhalb der Anlage installiert werden?
      Am einfachsten wären aus meiner Sicht 2 Ir-Lichtschanken, bestehen aus Ir-Led und Ir-Transistor. Sowas könnte man innerhalb eines Tunnels einbauen. Der Abstand kann beliebig sein, muss nur für die Berechnung bekannt sein. Das Programm wäre auch einfach. Mit bitwait wartet das Programm auf ein Durchfahren der ersten Lichtschranke. Ist das geschehen, wird ein schon laufender timer auf 0 gesetzt. Das Programm bleibt beim folgenden bitwait für die 2. Lichtschanke hängen, der timer läuft weiter. Wird die ausgelöst, dann wird der timerwert ausgelesen. Mit den bekannten Werten von timer-Takt, Anzahl der Takte, Abstand der Lichtschranken kann man die Realgeschwindigkeit berechnen, Faktor für Massstab dazu und du hast die Modellgeschwindigkeit.
      Wenn du keinen Tunnel hast, es gibt Bauformen von Led und passenden Transistor, mit einer Größe geschätzt 4x6x2mm (HxBxDicke), die Anschlüsse kommen aus einer Schmalseite raus und die optische Fläche ist auf der 4x6 Fläche im oberen Bereich. Die kann man relativ leicht beiderseits des Gleise platziern.
      goo.gl/images/XWisVv
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • ftelektro, Pacos Seite kenn ich und auch diesen Messwagon, nur ist meine Spur die Spur N und da sind die Wagons um einiges kleiner. Es gibt zwar auch jemand der das umgesetzt hat aber die Lösung gefällt mir nicht sonderlich.

      djmsc, die Tabelle ist schon gut, hilft mir aber nicht so richtig!

      Stefan, jetzt weis ich und finde mich bestätigt warum ich mich nicht mehr im Forum vom MiWuLa tummele. Wikipedia zeigt mir auch nicht sehr viel! Railroad ist leider nicht erreichbar!
      Ich hab in deinem Buch mal nach einem Beispiel zum Thema "Bitwait" und "Timer" gesucht, hab aber nicht wirklich was gefunden. Ich mach leider viel zu wenig mit AVRs, deswegen vergess ich auch ziemlich viel (liegt wahrscheinlich an meiner Krankheit (Medikamente) und am Alter), sagt zumindest meine Frau! ^^

      ceperiga, da ich wahrscheinlich die Messeinheit an einem externen Gleis (Programmiergleis ca. 120cm) anbauen möchte, spielt die Geschwindigkeit des Controllers keine große Rolle. Es soll ein Startpunkt und einen Endpunkt geben.

      tschoeatsch, ich hab vor, wie schon ceperiga geschrieben, ein Programmiergleis aufzubauen und an diesem, da ich da ja sowieso die Grundeinstellungen der Loks vornehmen muss, auch die Geschwindigkeit einstellen kann. Bei dem Vorschlag mit Bitwait und Timer zu arbeiten bitte ich dich mir mal ein Beispiel dazu zu zeigen, bisher hab ich noch nichts damit gemacht! Es gibt zwar so Einiges was ich bis jetzt geschaffen hab aber mit Timern hab ich so mein Verständnisproblem. a_45_132ca9f5 Zu diesem Thema können wir gerne per PN mal reden, wenn es Dir recht ist? :)

      So, viel Geschreibsel
      Gruß und danke für euer Verständnis
      Klaus
    • Hallo tschoeatsch,

      ok, das mit dem Beispiel wäre super, ich versuche mal, dass bis jetzt geschriebene hier einzustellen:

      Quellcode: Modellbahn_Tacho_Tiny2313.bas

      1. '--------------------------------------------------------------
      2. '- Modellbahn Geschwindigkeits Messgerät für H0 und Spur N -
      3. '- ATTiny2313 mit 8MHz int.
      4. '-
      5. '--------------------------------------------------------------
      6. $regfile = "attiny2313.dat"
      7. $crystal = 8000000 ' 8MHz int.
      8. $hwstack = 32
      9. $swstack = 10
      10. $framesize = 24
      11. '---- LC Display 20 * 4 ---------------------------------------
      12. Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portb.0 'Pins (Port B) für LCD-Modul definieren
      13. Config Lcd = 20 * 4
      14. Cursor Off Noblink
      15. Cls
      16. '---- Timer0 --------------------------------------------------
      17. Config Timer0 = Timer , Prescale = 1
      18. Enable Timer0
      19. Enable Interrupts
      20. '---- Messensoren ---------------------------------------------
      21. Config Pind.0 = Input
      22. Start_a Alias Pind.0 ' Startsensor Int0
      23. Portd.0 = 1
      24. Config Pind.1 = Input
      25. End_e Alias Pind.1 ' Endsensor Int1
      26. Portd.1 = 1
      27. '---- Masstabs Umschalter -------------------------------------
      28. Config Pinb.1 = Input
      29. H0_s Alias Pinb.1 ' Maßstabs-Schalter H0 = 87
      30. Portb.1 = 1
      31. Config Pinb.2 = Input
      32. N_s Alias Pinb.2 ' Maßstabs-Schalter Spur N = 160
      33. Portb.2 = 1
      34. '----
      35. Dim L As Word ' Abstand der Sensoren
      36. Dim M As Word ' Maßstab der Modellbahn
      37. Dim V As Word ' errechnete Zeit in ms
      38. Dim T As Word ' Zeit in ms
      39. Dim Km As Word ' errechnete Geschwindigkeit
      40. Dim Sta As Bit ' Startsensor
      41. Dim Ende As Bit ' Endesensor
      42. Dim H0 As Word
      43. Dim N As Word
      44. L = 100
      45. H0 = 87
      46. N = 160
      47. V = Timer0
      48. Locate 2 , 5
      49. Lcd " Modellbahn "
      50. Locate 3 , 7
      51. Lcd " Tacho "
      52. Wait 2
      53. Cls
      54. Do
      55. If H0_s = 0 Then
      56. M = H0
      57. End If
      58. If N_s = 0 Then
      59. M = N
      60. End If
      61. 'If Start_a = 0 Then
      62. 'V = L * M * 3600 / T / 1000
      63. 'End If
      64. Locate 1 , 1
      65. Lcd "Sens Abst. = " ; L ; " cm " ' Messtrecke
      66. Locate 2 , 1
      67. Lcd " Spur = " ; M ; " " ' Spurgröße der Modelle
      68. Locate 3 , 1
      69. Lcd " Zeit = " ; V ; " ms " ' gefahrene Zeit in ms
      70. Locate 4 , 1
      71. Lcd " Tacho = " ; Km ; " Km " ' tatsächliche Geschwindigkeit
      72. If Sta = 0 Then
      73. Bitwait Sta , Set
      74. Start Timer0
      75. End If
      76. If Ende = 0 Then
      77. Bitwait Ende , Reset
      78. Stop Timer0
      79. End If
      80. Waitms 10
      81. Loop
      82. End
      Alles anzeigen
      Hat ja geklappt, Super! :)

      Gruß
      Klaus
    • Das Programm ist ja auch schon einmal eine gute Basis.
      Frage: Bist Du sicher, dass 8MHz eingestellt ist?
      Im Auslieferungszustand ist der auf 1 MHz eingestellt.
      „The device is shipped with CKSEL = “0100”, SUT = “10”, and CKDIV8 programmed. The default clock source setting is the Internal RC Oscillator with longest start-up time and an initial system clock prescaling of 8, resulting in 1.0 MHz system clock. This default setting ensures that all users can make their desired clock source setting using a„

      Hast Du das in den Fusebits verändert?
      Das ist wichtig, weil sonst die nachfolgenden Timerberechnungen nicht stimmen.
      Lass mal am Anfang des Programms TESTWEISE eine LED im Sekundenrythmus blinken.

      Danach wird der Timer konfiguriert.
    • Hallo djmsc,

      ich bin eigentlich schon recht lange mit AVRs zugange, damals im alten Forum und nun im Neuen! Mich stört auch nicht, dass unter meinem Avatar "neuer Benutzer" steht, das war im alten Forum auch anders. Macht alles nichts, ich bin mittlerweile fast 68 Jahre alt sehr krank und für meine Kinder und Enkelkinder immer noch fleißig am Basteln.
      Gut, aber das gehört alles nicht hier hinein. Das war nur so zum allgemeinen Verständnis

      Gruß
      Klaus
    • o.k. Wenn also SICHER ist, dass der Mikrocontroller mit 8 MHz läuft, dann möchtest Du also Deinen 1ms-Timer definieren, um die Zeit zu messen.



      Das Gesamt-Prinzip hatte tschoeatsch ja auch weiter oben in Beitrag 7 schon beschrieben.

      tschoeatsch schrieb:

      Mit bitwait wartet das Programm auf ein Durchfahren der ersten Lichtschranke. Ist das geschehen, wird ein schon laufender timer auf 0 gesetzt. Das Programm bleibt beim folgenden bitwait für die 2. Lichtschanke hängen, der timer läuft weiter. Wird die ausgelöst, dann wird der timerwert ausgelesen. Mit den bekannten Werten von timer-Takt, Anzahl der Takte, Abstand der Lichtschranken kann man die Realgeschwindigkeit berechnen, Faktor für Massstab dazu und du hast die Modellgeschwindigkeit.

      Nun also der 1ms-Timer:

      Ich empfehle immer gerne das Tool von
      planet-ian.com/page12_e.htm
      um damit etwas herumzuspielen.
      Du willst laut Deinem Programm 8 MHz Takt und Timer0 verwenden und einen Timer mit 1 ms definieren.
      Wenn Du die Werte 8 MHz und 1ms in dem Programm eingegeben hast, dann zeigt es Dir die Möglichkeiten an.
      Wen Du rechts in der Spalte 8-Bit-Timer bei Prescale 64 mit der Maus daraufklickst, dann zeigt Dir das Programm einen möglichen BASCOM-Code mit Erläuterungen:


      BASCOM-Quellcode

      1. const Timer0Reload = 125
      2. config timer0=timer,prescale = 64
      3. load timer0 , Timer0Reload
      4. on ovf0 Timer0_isr
      5. enable ovf0
      6. start timer0
      7. enable interrupts
      8. 'Add your code here
      9. Timer0_ISR:
      10. load timer0, Timer0Reload
      11. 'Add your ISR code here
      12. return
      13. 'Timer value explanation
      14. ' The timer is a 8Bit timer, it overflows when the timer reaches 256
      15. ' The AVR is running at 8000000Hz, the prescaler is 64
      16. ' Each tick is 0,008 ms - (1 / CPUSpeed in KHz ) * Prescaler
      17. ' The timer needs 125 ticks to reach the required time ( 125 * 0,008 = 1ms)
      18. ' The start value for the timer must be set to 131 so that it will overflow at 256 after 125 ticks
      19. ' NOTE: The load command does the inversion for you (256-value or 65536-value)
      Alles anzeigen




      Diesem Code kannst Du die Konfig-Befehle entnehmen und wenn Du die Erläuterungen durcharbeitest, dann kannst Du die Logik dahinter nachvollziehen.
      (Ergänzend natürlich ab Seite 236 im Buch - besonders auch das Beispiel Seite 246ff ;) )

      So - nun solltest Du einen 1 ms-Timer haben. Der zählt seine interne Variable Timer0 hoch, bis 1 ms erreicht ist. Dann setzt er sich wieder auf den Startwert und zählt wieder hoch.
      Beim Überlauf erfolgt alle 1 Millisekunde ein Sprung in die Timer-Routine. Dort in der Timer-Routine kannst Du einen von Dir definierten Zähler definieren. Du kannst ihn zum Beispiel 'Millisekunden' nennen. Oder T.
      Bei der ersten "Schranke" (Lichtschranke, Reedschalter, ...) setzt Du nun den Zähler mit Millisekunden=0 bzw. T=0 auf Null. Der wird nun im Hintergrund in der Timer-Routine jede Millisekunde mit INCR Millisekunden oder INCR T um eins hoch gezählt. Bei der zweiten Schranke liest Du den Zählerstand von Milisekunden bzw. T aus, rechnest das per Formel um und zeigst es an.
    • @veryoldman Dein code ist doch schon mal ein guter Einstig.
      Also, was braucht man alles: Eine Stoppuhr, eine bekannte Messstrecke und einen Rechner, um die Geschwindigkeit aus den Daten zu errechnen. Der timer bildet die Stoppuhr. Ich hätte dir dasselbe tool vorgeschlagen, was auch schon @stefanhamburg erwähnt hat, den AVR Timer 1.25

      stefanhamburg schrieb:

      Ich empfehle immer gerne das Tool von
      planet-ian.com/page12_e.htm
      um damit etwas herumzuspielen.
      Programmieren wir so mal eine Stoppuhr mit 1mS genauigkeit, das ist der code, wie ihn @stefanhamburg schon gezeigt hat. Damit wird der timer0 so eingerichtet, dass alle 1mS die interruptroutine Timer0_isr angesprungen wird. Damit man weiß, wie oft er das gemacht hat, zählt man diese Aufrufe mit.

      BASCOM-Quellcode

      1. Timer0_ISR:
      2. Load Timer0 , Timer0reload 'Lade den timer0 vor, damit immer zur gleichen Zeit diese interruptroutine angesprungen wird
      3. Incr 1msec_zaehler 'hier wird mitgezählt
      4. Return
      Es muss natürlich die Variable 1msec_zaehler auch dimensioniert werden
      dim 1msec_zaehler as word.
      Stoppuhr ist fertig, fehlen nur noch die Bedienknöpfe zum Starten und Stoppen, das sollen die Lichtschranken machen.
      Ich hab' gelesen, dass der Tacho auch für andere Massstäbe gehen soll. Da würde ich ein entsprechendes Gehäuse bauen, dass an seiner Seitenwand 2 Reed-Kontakte hat, die dann ein Waggon oder Lock mit einen angepappten Magneten bedienen können. Dieses Gehäuse schiebt man dann so an's Gleis rann, dass eben beim Vorbeifahren nacheinander die Reeds ausgelöst werden. Vorteil: Die verschiedensten Gleise (Massstäbe) können verwendet werden und der Abstand der Schalter (Reeds) bleibt immer gleich).
      Diese Schalter werden direkt zwischen pin und gnd angeschlossen und der interne pullup wird eingeschaltet. Ein Schließen des Kontakte bedeutet ein low am pin. Fertig sind die Stoppuhrschalter.
      Du hast die pins von Int0 und Int1 verwendet, die interrupts, die damit möglich wären, brauchen wir nicht. Wir brauchen auch nix entprellen.
      Was wir brauchen, wäre eine Verriegelung der Schalter untereinander. Die Variable dazu nenne ich mal 'Zustand'. Ist Zustand=0, löst ein Betätigen der ersten Reeds ein Starten der Stoppuhr aus und schaltet den Zustand auf 1.
      Nur, wenn der Zustand=1 ist wird durch Schalten von Reed2 die Stoppuhr gestoppt und schaltet den Zustand auf 2. Jetzt kann die Lock vor den Reeds hin und herfahren, ohne das was ausgelöst wird. Erst mit Drücken einer Taste wird der Zustand wieder auf 0 gesetzt und die Stoppuhr ist wieder bereit. Diese Taste könnte man auch gleich zum Umschalten des Massstabs verwenden, man braucht also 2 Taster, N und H0. Wenn man diese Taster auch zwischen pin und gnd schaltet, braucht man den internen Pullup.
      Das alles in dein Programm gepackt schaut so aus



      BASCOM-Quellcode

      1. '--------------------------------------------------------------
      2. '- Modellbahn Geschwindigkeits Messgerät für H0 und Spur N -
      3. '- ATTiny2313 mit 8MHz int.
      4. '-
      5. '--------------------------------------------------------------
      6. $regfile = "attiny2313.dat"
      7. $crystal = 8000000 ' 8MHz int.
      8. $hwstack = 32
      9. $swstack = 10
      10. $framesize = 24
      11. '---- LC Display 20 * 4 ---------------------------------------
      12. Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portb.0 'Pins (Port B) für LCD-Modul definieren
      13. Config Lcd = 20 * 4
      14. Cursor Off Noblink
      15. Cls
      16. '---- Timer0 --------------------------------------------------
      17. const Timer0Reload = 125
      18. config timer0=timer,prescale = 64
      19. load timer0 , Timer0Reload
      20. on ovf0 Timer0_isr
      21. enable ovf0
      22. start timer0
      23. enable interrupts
      24. 'Timer value explanation
      25. ' The timer is a 8Bit timer, it overflows when the timer reaches 256
      26. ' The AVR is running at 8000000Hz, the prescaler is 64
      27. ' Each tick is 0,008 ms - (1 / CPUSpeed in KHz ) * Prescaler
      28. ' The timer needs 125 ticks to reach the required time ( 125 * 0,008 = 1ms)
      29. ' The start value for the timer must be set to 131 so that it will overflow at 256 after 125 ticks
      30. ' NOTE: The load command does the inversion for you (256-value or 65536-value)
      31. '---- Messensoren ---------------------------------------------
      32. Config Pind.0 = Input
      33. Startmessung Alias Pind.0 ' Startsensor
      34. Portd.0 = 1 'pullup
      35. Config Pind.1 = Input
      36. Ende Alias Pind.1 ' Endsensor
      37. Portd.1 = 1 'pullup
      38. '---- Masstabs Umschalter -------------------------------------
      39. Config Pinb.1 = Input
      40. H0_s Alias Pinb.1 ' Maßstabs-Schalter H0 = 87
      41. Portb.1 = 1 'pullup
      42. Config Pinb.2 = Input
      43. N_s Alias Pinb.2 ' Maßstabs-Schalter Spur N = 160
      44. Portb.2 = 1 'pullup
      45. '----
      46. Dim M As String * 2 ' Maßstab der Modellbahn
      47. Dim V As Word ' errechnete Zeit in ms
      48. Dim Zeit As Word ' Zeit in ms
      49. Dim Km As Word ' errechnete Geschwindigkeit
      50. Dim Zustand As Byte
      51. Dim 1msec_zaehler As Word
      52. Const L = 100 ' Abstand der Sensoren
      53. Const H0 = 87
      54. Const N = 160
      55. Const Faktor_h0 = 1000000 * L / 3600 * 1000 / H0 '=319284,8
      56. Const Faktor_n = 1000000 * L / 3600 * 1000 / N '=173611,1
      57. Dim Faktor As Dword
      58. Waitms 100
      59. Locate 2 , 5
      60. Lcd " Modellbahn "
      61. Locate 3 , 7
      62. Lcd " Tacho "
      63. Wait 2
      64. Cls
      65. Zustand = 2
      66. Do
      67. 'Auf Messbereitschaft warten
      68. If Zustand = 2 Then
      69. Locate 1 , 1
      70. Lcd "letzte Messung= " ; Km ; " km/h"
      71. Locate 2 , 1
      72. Lcd "fuer neue Messung"
      73. Locate 3 , 1
      74. Lcd "Massstabstaste"
      75. Locate 4 , 1
      76. Lcd "druecken"
      77. Do
      78. Debounce H0_s , 0 , Start_h0 , Sub
      79. Debounce N_s , 0 , Start_n , Sub
      80. Loop Until Zustand = 0 'Warten auf Tastendruck
      81. Cls
      82. End If
      83. If Zustand = 0 Then 'Starttaste aktiv
      84. Bitwait Startmessung , Reset
      85. 1msec_zaehler = 0 'Stoppuhr auf 0 setzen
      86. Zustand = 1 'Stoppschalter aktivieren
      87. End If
      88. If Zustand = 1 Then 'Stopptaster aktiv
      89. Bitwait Ende , Reset
      90. Zeit = 1msec_zaehler 'vergangene Zeit ablesen
      91. 'Berechnen
      92. V = Zeit
      93. Km = Faktor / Zeit
      94. Locate 1 , 1
      95. Lcd "Sens Abst. = " ; L ; " cm " ' Messtrecke
      96. Locate 2 , 1
      97. Lcd " Spur = " ; M ; " " ' Spurgröße der Modelle
      98. Locate 3 , 1
      99. Lcd " Zeit = " ; V ; " ms " ' gefahrene Zeit in ms
      100. Locate 4 , 1
      101. Lcd " Tacho = " ; Km ; " Km/h " ' tatsächliche Geschwindigkeit
      102. Wait 5
      103. Zustand = 2 'Neustart ermöglichen
      104. End If
      105. Loop
      106. End
      107. Timer0_isr:
      108. Load Timer0 , Timer0reload 'Lade den timer0 vor, damit immer zur gleichen Zeit diese interruptroutine angesprungen wird
      109. Incr 1msec_zaehler 'hier wird mitgezählt
      110. Return
      111. Start_h0: 'Grundlagen der Berechnung einstellen
      112. M = "H0"
      113. Faktor = Faktor_h0
      114. Zustand = 0
      115. Return
      116. Start_n:
      117. M = "N"
      118. Faktor = Faktor_n
      119. Zustand = 0
      120. Return
      Alles anzeigen
      Jetzt bin ich gespannt, ob mein code funktioniert ^^
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ist natürlich ein Fehler drin X/ , die faktoren stimmen nicht. Statt /H0 müsste es *H0 und für N entsprechen heißen. Bei gleicher Durchfahrzeit muss die kleine Lock schneller sein, also muss auch faktor_n > faktor_h0 sein.

      Edit: stimmt auch nicht. Den faktor musst du jetzt selber mal ausrechnen.
      Vielleicht 1000000/L*H0/3600*1000? Wer bietet mehr?

      Edit#2 mal ein Beispiel. Die 100mm in H0 wären 8700mm, also 8,7m in echt. Bei einer Geschwindigkeit von 80 km/h braucht die Lock 0,0087/80 Stunden =0.00010875 Stunden = 0.3915 Sekunden = 391 1msec_zaehler.
      Dann wäre der faktor_h0 a_27_b277ca12
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von tschoeatsch ()