Der variable rote Bereich

    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!

    • Der variable rote Bereich

      Hallo

      Hier ist mal (wieder) mein Projekt das seit mehreren Jahren klaglos seinen Dienst in meinem 91er Passat G60 verrichtet.
      Hintergrund : Der G60 ist ein Sensibelchen was das zusammenspiel von Öltemperatur und Lebensdauer betrifft . Da ich nicht dauernd auf die kleine Digitalanzeige im M(ulti)F(unktions)A(nzeige) Display gucken wollte hab ich meinen Drehzahlmesser modifiziert und nen Arduino nano V3 dahinte gebaut .
      Der originale rote Bereich beginnt bei 6250 U/min und ich habe den Bereich ab 3000 U/min mit roten LED aufgefüllt . Ab 75 Grad öl wird dieser dann reduziert und gibt mir so rein Optisch immer mehr Drehzahl frei . Ein Eingriff in die Motorsteuerung erfolgt natürlich nicht . Der Sensor ist ein in die Ölwanne eingbauter DS18S20 . Als Zusatz gibt es noch ein Tankwarnleuchte die ab ca 15 L kurz aufblinkt und ab 3 L Restinhalt nicht mehr ausgeht . Die Leuchtphasen dazwischen werden immer länger - was aber nicht an meinem Code liegt sondern an den Bewegungen des Schwimmers .

      Bisher gibt es nur ein Problem , bei Frost muss der Arduino erst warm werden bevor der sinnvolle Sachen macht , bis dahin sind alle LED wild am blinken .

      Der Beastmaster
      gestartet mit KC Basic ... angekommen bei BASCOM
    • Das ist übrigens mein erstes Bascomprojekt gewesen .


      Sollte die Temperatur mal zu hoch gehen , wird zunächst der Bereich über 4000 U/min blinken und bei erreichen von 125 Grad der komplette Bereich und so sagen : Geh vom Gas Du Quälgeist !

      Der Code :

      Quellcode

      1. $regfile = "m328pdef.dat"
      2. $crystal = 8000000
      3. $hwstack = 40
      4. $swstack = 16
      5. $framesize = 32
      6. $baud = 9600
      7. Dim E As Single
      8. Dim T As Byte
      9. Dim G As Byte
      10. Config Portd = Output
      11. Config 1wire = Portd.2
      12. Config Portb = Output
      13. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      14. Config Portc.0 = Output
      15. Config Portc.3 = Output
      16. Config Portc.4 = Output
      17. Start Adc
      18. Dim V As Word
      19. Dim Sep(9) As Byte
      20. For T = 3 To 7
      21. Portd.t = 1
      22. Waitms 100
      23. Next T
      24. For G = 0 To 4
      25. Portb.g = 1
      26. Waitms 100
      27. Next G
      28. For G = 2 To 5
      29. Portc.g = 1
      30. Waitms 100
      31. Next G
      32. T = 5
      33. For G = 1 To 3
      34. T = T - 1
      35. Portc.t = 0
      36. Waitms 100
      37. Next G
      38. T = 5
      39. For G = 1 To 5
      40. T = T - 1
      41. Portb.t = 0
      42. Waitms 100
      43. Next G
      44. T = 8
      45. For G = 1 To 8
      46. T = T - 1
      47. Portd.t = 0
      48. Waitms 100
      49. Next G
      50. D:
      51. 1wreset
      52. 1wwrite &HCC
      53. 1wwrite &H44
      54. Waitms 500
      55. V = Getadc(1)
      56. If V >= 999 Then Portb.5 = 1
      57. If V < 990 Then Portb.5 = 0
      58. If Sep(1) >= 120 Then Portd.3 = 0
      59. If Sep(1) <= 120 Then Portd.3 = 1
      60. If Sep(1) >= 122 Then Portd.4 = 0
      61. If Sep(1) <= 122 Then Portd.4 = 1
      62. If Sep(1) >= 123 Then Portd.5 = 0
      63. If Sep(1) <= 123 Then Portd.5 = 1
      64. If Sep(1) >= 124 Then Portd.6 = 0
      65. If Sep(1) <= 124 Then Portd.6 = 1
      66. If Sep(1) >= 125 Then Portd.7 = 0
      67. If Sep(1) <= 125 Then Portd.7 = 1
      68. If Sep(1) >= 126 Then Portb.0 = 0
      69. If Sep(1) <= 126 Then Portb.0 = 1
      70. If Sep(1) >= 127 Then Portb.1 = 0
      71. If Sep(1) <= 127 Then Portb.1 = 1
      72. If Sep(1) >= 128 Then Portb.2 = 0
      73. If Sep(1) <= 128 Then Portb.2 = 1
      74. If Sep(1) >= 129 Then Portb.3 = 0
      75. If Sep(1) <= 129 Then Portb.3 = 1
      76. If Sep(1) >= 130 Then Portb.4 = 0
      77. If Sep(1) <= 130 Then Portb.4 = 1
      78. If Sep(1) >= 131 Then Portc.3 = 0
      79. If Sep(1) <= 131 Then Portc.3 = 1
      80. If Sep(1) >= 132 Then Portc.4 = 0
      81. If Sep(1) <= 132 Then Portc.4 = 1
      82. If Sep(1) >= 180 And Sep(1) < 185 Then Gosub Blinker2
      83. If Sep(1) >= 186 Then Gosub Blinker
      84. 1wreset
      85. 1wwrite &HCC
      86. 1wwrite &HBE
      87. Sep(1) = 1wread(9)
      88. E = Sep(1) / 2
      89. Print E
      90. Print Sep(1)
      91. Print V
      92. Wait 1
      93. Goto D:
      94. End
      95. Blinker:
      96. Portd.3 = 1
      97. Portd.4 = 1
      98. Portd.5 = 1
      99. Portd.6 = 1
      100. Portd.7 = 1
      101. Portb.0 = 1
      102. Portb.1 = 0
      103. Portb.2 = 0
      104. Portb.3 = 0
      105. Portb.4 = 0
      106. Portc.3 = 0
      107. Portc.4 = 0
      108. Waitms 300
      109. Toggle Portd
      110. Toggle Portb
      111. Toggle Portc.3
      112. Toggle Portc.4
      113. Waitms 300
      114. Toggle Portd
      115. Toggle Portb
      116. Toggle Portc.3
      117. Toggle Portc.4
      118. Return
      119. Blinker2:
      120. Portd.7 = 1
      121. Portb.0 = 1
      122. Portb.1 = 1
      123. Portb.2 = 1
      124. Portb.3 = 1
      125. Portb.4 = 1
      126. Portc.3 = 1
      127. Portc.4 = 1
      128. Waitms 600
      129. Toggle Portd.7
      130. Toggle Portb
      131. Toggle Portc.3
      132. Toggle Portc.4
      133. Waitms 600
      134. Toggle Portb
      135. Toggle Portd.7
      136. Toggle Portc.3
      137. Toggle Portc.4
      138. Waitms 600
      139. Return
      Alles anzeigen
      Bilder folgen .
      gestartet mit KC Basic ... angekommen bei BASCOM
    • Beastmaster schrieb:

      Bisher gibt es nur ein Problem , bei Frost muss der Arduino erst warm werden bevor der sinnvolle Sachen macht , bis dahin sind alle LED wild am blinken .
      Nach dem Befehl Wandlung starten ($H44) muss etwa 1 Sekunde gewartet werden, bevor das Scratchpad ausgelesen wird.
      Du wartest hier nur 500ms.
      Das Frostproblem ist vermutlich deshalb, weil deine Software keine negativen Werte verarbeitet.
      Schau mal hier:
      DS1820 DS18S20 DS18B20 Temperatursensor 1Wire
      Da gibt es ein Softwarestück, mit dem du auch die negativen Werte bekommst.