- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: kleiner RC5 empfänger mit attiny13L und Bascom

  1. #1

    kleiner RC5 empfänger mit attiny13L und Bascom

    Anzeige

    E-Bike
    Hallo,

    ich möchte einene kleinen RC5-Infrarot Empfänger mit dem Attiny13 bauen. Dieser wird mit 2 Mignonbatterien (2,4V) versorgt.

    Da die Bascom RC5 routinen beim tiny13 nicht funktionieren möchte möchte ich das selber für 2 Befehle schreiben.

    wie kann ich das im Bascom realisieren?
    Hat jemand einen link in dem z.B das senden bzw. das Empfangen von eigenen code's erklärt.

    wäre es möglich das folgendermaßen zu machen...
    if Pin...=0 waitms.. Pin...=1 waitms...Pin...=0 waitms......then toggle Port... end if

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ganz so einfach ist es nicht. Bei RC5-Signalen werden die eigentlichen Datenbits auf eine 36Khz-Trägerfrequenz gemischt. Beim Senden muss man diese Frequenz zusätzlich erzeugen, beim Empfangen filtert der IR-Empfänger die Trägerfrequenz aus und liefert die nackten Datenbits an den Mikrokontroller. Einen RC5 sendenden tiny13 haben wir hier mal in Bascom zusammengebastelt:

    https://www.roboternetz.de/phpBB2/ze...ag.php?t=36253

    Das Empfangen ist deutlich einfacher. Die Daten sind manchestercodiert, das bedeutet, ein Flankenwechsel in der Mitte des Bits ist die eigentliche Information. Also wartet man nach dem Start des ersten Bits etwas, prüft dann den Flankenwechsel, wartet wieder bis kurz vor dem nächsten Flankenwechseln uswusw....

    Noch einfacher, aber nicht ganz korrekt: Man ermittelt die Dauer eines Bits (weiß ich grad nicht auswendig, irgendwas mit Trägerfrequenz/6 oder so ähnlich) und wartet auf den Start der Übertragung. Wenn der Beginn des ersten Bits (es werden zwei Startbits, eigentlich zur Bitlängenmessung gedacht, vorrausgeschickt) erkannt wurde wartet man 2/3 der Bitdauer und liest den Pegel für das erste Bit ein. Dann wartet man jeweils eine Bitdauer für die restlichen Bits. Fertig. So erhält man immer den Pegel nach dem Flankenwechsel, Ungenauigkeiten im Takt addieren sich bei 14 Bits nicht so sehr. Man muss nur darauf achten, dass die Abfrage immer in der richtigen Hälfte des Bits geschied.

    Achtung! Der IR-Empfänger invertiert dasSignal! Ob er mit 2,4V funktioniert bezweifle ich aber. 2 Mignonbatteriern liefern ja auch 3V. Vielleicht reicht das ja aus.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo,
    muss es denn unbedingt RC5 sein? Dein Tiny13 hat ja nicht so viel an Ressourcen an Board.
    Für mich klingt das so, als ob du Senden und Empfangen selber machen möchtest. Dann würde ich definitiv nicht RC5 als Protokoll verwenden, sondern ein eigenes stricken. Besonders wenn du eh nur 2 Befehle übertragen willst.
    Dann kann der Tiny auch noch was anderes tun als nur IR.

    Gruß

    Rolf

  4. #4
    danke für die schnellen antworten.

    muss nicht unbedingt rc5 sein. mit den 2,4V am Tsop1736 hast du recht. das geht nicht aber vielleicht gibts da ja noch ne alternative.

    das senden ist kein problem. aber wie kann ich die eingangsdaten abfragen. hat da jemand ein beispiel in Bascom oder einene link in dem so etwas erklärt wird. Mir gehts eigentlich erstmal darum die empfangenen Werte auszuwerten.

    Mic schreibt.....
    "Also wartet man nach dem Start des ersten Bits etwas, prüft dann den Flankenwechsel, wartet wieder bis kurz vor dem nächsten Flankenwechseln uswusw.... "

    kann mir jemand kurz erklären wie ich das in Bascom machen kann.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Hallo,
    die einfachste Möglichkeit in Bascom RC5 zu empfangen ist:

    $lib "mcsbyte.lbx" 'für kleineren Code

    Config Rc5 = Portb.0
    Enable Interrupts

    Config Portb.1 = Output 'TSOP an PB.1

    Dim Address As Byte
    Dim Command As Byte

    Print "Warte auf RC5..."
    Do
    Getrc5(address , Command)
    If Address < 255 Then
    Print Address
    Print Command
    If Command = ??? Then
    (Anweisung)
    End If
    End If
    Loop

    End

    mfg

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Fehler!!
    Tsop muss an PB.0
    PB.1 ist bei meinem programm für was anderes!!!

    mfg

  7. #7
    ja schon. nur ich hab gelesen das der rc5-Empfangbefehl beim Tiny nicht möglich ist.
    Ich möchte ja auch lernen wie man code auswerten kann, d.h. wie ich z.B einen Eingangscode in einem Bus auswerten kann.

    Muss ich da beim eintreffen eines bestimmten signals einen interrupt setzten und danach über den timer bei bestimmten Zeiten die pegel auswerten ob dieser high oder low ist?

    Ich wollte auch noch fragen ob mir jemand sagen kann wie ich programmieren kann das z.B eine LED erst leuchtet wenn ich die Taste 3s gedrückt hab und nicht wenn ich sie nur kurz drücke diese nicht leuchtet?

    schon mal danke für eure hilfe.

    mfg

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress