IR Wireless Remote Control Module

    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!

    • Sven Loeffler schrieb:

      Das IR Empfängermodul hat eine LED onboard. Diese blinkt immer, wenn ich einen Befehl gebe
      Was ist denn das für ein Modul?
      Im Original war ja ein TSOP38 im Einsatz, der das Signal invertiert, also bei IR Empfang einen Low Level ausgibt.
      Welches Signal gibt denn dein Modul aus?

      Sven Loeffler schrieb:

      Der Tiny läuft ja mit 4 MHz.
      Wie sicher ist das? Hast du es geprüft?

      Do
      Toggle LED
      waitms 500
      Loop

      läuft mit 1 Hz?


      Es fehlt im Programm noch ein
      DDRB.5 = 1
      Die LED sollte einmal pro Telegramm aufleuchten.

      Gruß, Michael
    • Hallo Michael,

      vielen Dank für die Infos. Ich habe jetzt nochmal alle Kabel am Steckbrett getauscht. Jetzt funktioniert es. :) Aber nicht 100% zuverlässig. :/ Mal reagieren die LEDs, mal nicht. Ich habe mir mal das Datenblatt vom IR Empfängermodul ( VS1838B ) angesehen. Dort sind noch ein paar weitere Bauteile aufgezeigt. Diese sind beim Modul nicht dabei, bzw. verbaut. Könnte es evtl. daran liegen ? Es ist unter anderem ein 100 µF Kondensator zwischen VCC und GND. Außerdem ein 100 R zwischen VCC und Modul sowie ein 20KR zwischen VCC und OUT.

      Oder liegt es evtl doch an den internen 4 MHz. Das sind nicht wirklich zuverlässig laufen ?
    • Neu

      Hallo zusammen,

      Ich habe es nun auf einer Lochrasterplatine und es funktioniert einwandfrei. Vielen Dank nochmal. Jetzt habe ich nur noch ein "Hardware Problem". Ich finde den Fehler nicht. Habe schon viele Schaltungen so gemacht. Auch mit PWM. Das hat bisher immer funktioniert. Aber hier bringt es mich zur Verzweiflung: Mittels BC817 ( NPN ) möchte ich den OC1A ( PB3 ) vom Tiny verstärken. Der Anschluss sieht wie folgt aus:


      / C ---- Motor --- VCC ( 4 V )
      OC1a ( PWM01a ) ----- 470R ----- E|
      \
      > B --- GND

      Vor der Schleife der Abfrage, habe ich PWM1a auf = 0 gesetzt. Ist der Motor direkt an PB3 angeschlossen, bleibt er auch ruhig. Sobald ich mittels Pfeiltasten die PWM erhöhe läuft er auch los. Genau so wie er soll. Lasse ich das über den Transistor laufen, läuft er sofort los. Egal auf welchem wert PWM1a steht.

      Habet ihr eine Idee, was das sein könnte ?
    • Neu

      Sven Loeffler schrieb:

      Am Controller Ausgang = 0 V, am Transistor Ausgang C = voll 3,7 V ( Lipo Akku )
      ja, das ist zu erwarten, da der Transistor sperrt. Da sollte der Motor aber nicht laufen, wenn dieser richtig angeschlossen ist.

      Einen BC817 für einen Motor zu benutzen ist je nach Motor nicht gut für den Transistor.
      Welchen Strom zieht denn der Motor?
      Ist eine Schutzdiode vorhanden?

      Kannst du nicht eine richtige Zeichnung anfügen?
    • Neu

      Michael schrieb:

      verbaut man von E nach C eine Diode
      Die dann durchbricht bevor das der Transistor macht ;) oder eine Z-Diode?
      Von C nach Vcc scheint da sinniger.
      Oder besser ein kleiner Kondensator parallel zum Motor dann hält die Batterie länger.
      Da es bisher ohne ging wird der Motor wohl keine 40V induzieren? Da war das wohl ein "Montagstransistor".
      Oder ein "Lötkurzschlußklex" unter E-C ?
      Dann wäre es vielleicht besser ihn satt durch zu schalten. Die 4k7 sind da eher knapp.
    • Neu

      Michael schrieb:

      besser nicht,
      Wenn Du mal Langeweile hast schau Dir das mit einem Scope an. Gerade bei den Winzmotoren ist da einiges an Strom Ersparnis raus zu holen.
      Zu große würden auch den Transistor zunichte machen ;)
      Wenn ich mich recht erinnere war der Effekt am besten kurz unter der Durchbruchspannung :/
      @Swen Du hast nicht zufällig ein Oszillogramm eines ohne Diode laufenden?
    • Neu

      Abendgruss,

      hier mal ein funktionierendes Programm der IR-Fernbedienung vom freundlichen
      Chinesen. Es ist der abgewandelte Code von Michael mit einem ATTiny45.
      Er schaltet bei einem H0-Packwagen die Beleuchtung und das Schlußlicht wobei
      die Zustände im EEPROM gespeichert werden.

      Gruß vom Jürgen
      Dateien
      • NEC-Code2.bas

        (3,48 kB, 11 mal heruntergeladen, zuletzt: )
      • DSCN8104.JPG

        (313,43 kB, 8 mal heruntergeladen, zuletzt: )
    • Neu

      Anstelle des Transistors würde ich einen N-Kanal FET empfehlern.
      Vorteil: Nahezu leistungslose Ansteuerung durch den µC.
      Mögliche Type: IRL520 oder BUZ11

      Hinweis:
      Ein zusätzlicher Widerstand zwischen Ausgang des µC und Gate des FET dient der Strombegrenzung - dieser ist optional.
      Weiterhin sollte ein Widerstand zwischen Gate des FET und GND geschaltet werden, damit ein definierter Pegel an dem Gate liegt.

      Eine Diode zwischen Drain und VDD dient dem Schutz der übrigen Bauteile - also dem µC. Diese liegt also parallel zum DC-Motor.

      Die Anschlüsse am FET haben folgende Bezeichnung:
      D = Drain -> vergleichbar mit dem Kollector eines NPN-Transistors
      G = Gate -> vergleichbar mit der Basis eines NPN-Transistors
      S = Source -> vergleichbar mit dem Emitter eines NPN-Transistorsn

      Stichwort für Internetsuche: "FET als Schalter"

      Link:
      wolles-elektronikkiste.de/der-mosfet-als-schalter



      MfG
      LoPressure
    • Neu

      Vielen Dank für Eure Ausführungen !

      ich habe jetzt nochmal etwas getestet. Dabei ist mir etwas aufgefallen. Ich habe es nun mal mit einem IRLML2502 FET gemacht. Den hatte ich noch hier. Nun sieht es schon deutlich besser aus. Ich habe die Pwm1a nun am Start auf 255 gesetzt. Damit bleibt er beim Start ruhig. Drücke man nun die Taste, läuft er an. So wie es sein soll. Aktuell habe ich noch das Problem, wenn Pfeil nach unten Taste drücke wenn er steht, läuft er wieder voll an. Drückt man die Plus taste, bekommt man ihn auch nicht mehr ganz auf 0. Das ist definitiv ein Programmierfehler. Bin bin jetzt nur bis 10 bei der Maximalgeschwindigkeit gegangen wegen den 5er Schritten ( INCR + 4 ). Oder liegt da mein Fehler? Ich finde jedoch den Fehler nicht. Wahrscheinlich sehe ich vor lauter Bäumen den Wald nicht mehr.

      Quellcode

      1. Infrarotfernbedienung vom freundlichen Chinesen
      2. Michael Bascomforum.de 05/2018
      3. 03/2024 Anpassung auf Attiny2313
      4. 0 25
      5. 1 69
      6. 2 70
      7. 3 71
      8. 4 68
      9. 5 64
      10. 6 67
      11. 7 7
      12. 8 21
      13. 9 9
      14. asterisk 22
      15. hash 13
      16. up 24
      17. left 8
      18. ok 28
      19. right 90
      20. down 82
      21. ')
      22. $regfile = "Attiny2313.dat" 'Attiny2313 CPU
      23. $crystal = 4000000 '4 Mhz Oszillator
      24. $hwstack = 32
      25. $swstack = 16
      26. $framesize = 16
      27. Licht Alias Portb.0
      28. Ddrb.0 = 1
      29. Ddrb.5 = 1
      30. Ddrb.3 = 1 'PWM OC1A
      31. On Int0 I_0irq 'Signaleingang
      32. Config Int0 = Falling
      33. Enable Int0
      34. Config Timer0 = Timer , Prescale = 256 'Timer0 Signallänge IR Steuerung
      35. On Timer0 T0_overflow
      36. Enable Timer0
      37. Config Timer1 = Pwm , Pwm = 8 , Compare_a_pwm = Clear_down , Prescale = 64 ' Timer PWM Frequenz
      38. Enable Interrupts
      39. Led Alias Portb.5
      40. Dim X As Byte
      41. Dim Telegrammzaehler As Byte
      42. Dim Telegramm As Long
      43. Dim Temp As Byte
      44. Dim Eingang(4) As Byte At Telegramm Overlay
      45. Dim Neuesekunde As Bit
      46. Pwm1a = 255
      47. Licht = 1
      48. Do
      49. X = Eingang(3) + Eingang(4)
      50. If X = 255 Then
      51. Select Case Eingang(3)
      52. ' Taste 0
      53. Case 25:
      54. ' Taste 1
      55. Case 69:
      56. Licht = 0 ' Licht an
      57. ' Taste 2
      58. Case 70:
      59. ' Taste 3
      60. Case 71:
      61. ' Taste 4
      62. Case 68:
      63. Licht = 1
      64. ' Taste 5 ' Licht aus
      65. Case 64:
      66. ' Taste 6
      67. Case 67:
      68. ' Taste 7
      69. Case 7:
      70. ' Taste 8
      71. Case 21:
      72. ' Taste 9
      73. Case 9:
      74. ' Taste Sternchen
      75. Case 22:
      76. ' Taste Raute
      77. Case 13:
      78. ' Pfeil nach oben
      79. Case 24:
      80. If Pwm1a > 255 Then Decr Pwm1a ' Schneller
      81. Pwm1a = Pwm1a - 4
      82. Pwm1a = Pwm1a
      83. '
      84. 'Pfeil nach links
      85. Case 8:
      86. ' Taste ok
      87. Case 28:
      88. Pwm1a = 255 ' Nothalt
      89. ' Pfeil rechts
      90. Case 90:
      91. 'Pfeil nach unten
      92. Case 82:
      93. If Pwm1a < 10 Then Incr Pwm1a ' Langsamer
      94. Pwm1a = Pwm1a + 4
      95. Pwm1a = Pwm1a
      96. End Select
      97. Eingang(3) = 0
      98. End If
      99. Waitms 50
      100. Loop
      101. I_0irq:
      102. Temp = Timer0
      103. Timer0 = 0
      104. Select Case Temp
      105. Case 12 To 22
      106. If Telegrammzaehler <= 31 Then
      107. Telegramm.telegrammzaehler = 0
      108. End If
      109. Case 30 To 40
      110. If Telegrammzaehler <= 31 Then
      111. Telegramm.telegrammzaehler = 1
      112. End If
      113. Case 210 To 215
      114. Led = 1
      115. Telegrammzaehler = 255
      116. End Select
      117. Incr Telegrammzaehler
      118. If Telegrammzaehler >= 32 Then
      119. Telegrammzaehler = 32
      120. End If
      121. Return
      122. T0_overflow:
      123. Led = 0
      124. Telegrammzaehler = 32
      125. Return
      Alles anzeigen
    • Neu

      Sven Loeffler schrieb:

      läuft er wieder voll an
      Nun ist 255 + 4 = 259 = $01 $03 Die 3 im Lowbyte wird er vermutlich zum Anlass nehmen voll auf zu drehen a_217_27b18bee
      Ich würde ein Zwischenspeicher Word verwenden das dann nach der Case geprüft (>255 then 255) und danach erst ins Pwm Register geschrieben wird.
      Oder im Zeile 94 If Pwm1a < 251 Then Pwm1a = Pwm1a + 4

      Ps Deine Stacks könnten etwas größer sein. Er meldet Overflow. Das könnte vielleicht auf zukünftige Sorgen aufmerksam machen.
      Da noch Ram frei ist besser ne Schippe drauf $hwstack = 48 (33 a_38_b45e201d )