www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik IR-Steuerung von Roboter (Gleichstrommotor)


Autor: slimer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

ich versuche gerade einen Gleichstrommotor mit Hilfe einer herkömmlichen 
Multi-Fernbedienung, einem IR-Sensor (TSOP 1736, Datenblatt: 
http://www.scribd.com/doc/13663771/tsop1736) und einem 
Microcontroller-Board (AT89S8253) zu realisieren. Die Fernbedienung hab 
ich auf den RC5-Code programmiert. Glaub ich zumindest, das Signal der 
Taste 1 entspricht laut Oszi auf jeden Fall dem des RC5-Codes. Den 
Empfänger hab entsprechend dem Datenblatt aufgebaut, allerdings hab ich 
den 10k-Widerstand durch einen 1k-Widerstand ersetzt, da es trotzdem 
noch zu Schwingungen beim Signal gekommen ist, wenn der Empfänger mit 
dem Microcontroller verbunden war. Den Empfängerausgang hab ich an einem 
beliebigen PIN angeschlossen. NUN zur Programmierung:
CSEG AT 0

; IR-Signal-Auswertung
IRinput        BIT        P1.3
IRCode        DATA    7fh
IRempfadr    DATA    7eh

; Zuweisung der Fernbedinung

IRrechts    EQU       00101110b
IRlinks        EQU       00101011b
IRvor        EQU       00101101b
IRzurueck    EQU       00101100b
IRstopp        EQU       00101111b

; Gleichstrom-Motor-Steuerung
Motoren        DATA    P2
Mstopp        EQU        00000000b
Mvor        EQU        11001100b
Mzurueck    EQU        10101010b
Mrechts        EQU        11001000b
Mlinks        EQU        10001100b

LEDs        DATA     P0

start:
MOV Motoren,#Mstopp

;RC5-Empfang

ireinlesen:
JB         IrInput,    ireinlesen
CLR     A
LCALL     Zeit34
MOV     B,            #7
loopAdr:
MOV     C,            IrInput
RLC     A
LCALL     Zeit
    DJNZ    B,        loopAdr
ANL     A,            #00111111b
MOV     IRempfadr,    A
CLR     A
MOV     B,            #6
loopDaten:
MOV     C,            IrInput
RLC     A
LCALL     Zeit
DJNZ     B,            loopDaten
MOV     IRcode,        A
CALL     zeit
CALL     zeit

; Ende RC5-Empfang
MOV     A,            IRempfadr
ANL     A,            #11011111b
JNZ        IReinlesen

; Motorsteuerung
MOV     A,            IRcode
CJNE    A,            #IRrechts,m1
MOV     motoren,    #Mrechts
SJMP     anzeigen
m1:
CJNE     A,            #IRlinks,m2
MOV        motoren,    #Mlinks
SJMP    anzeigen
m2:
CJNE    A,            #IRvor,m3
MOV        motoren,    #Mvor
SJMP    anzeigen
m3:
CJNE    A,            IRzurueck,m4
MOV        motoren,    #Mzurueck
SJMP    anzeigen
m4:
CJNE    A,            IRstopp,anzeigen
MOV        motoren,    #Mstopp
SJMP    anzeigen

;LED-Anzeige
anzeigen:
MOV        LEDs,        IRCode
SJMP    IReinlesen

;Zeitverzögerung 1768us
Zeit:
MOV        R6,            #5
loop1:
MOV        R7,            #172
loop0:
DJNZ    R7,            loop0
DJNZ    R6,            loop1
RET

;Zeitverzögerung 1328us

Zeit34:
MOV        R6,            #5
loop3:
MOV        R7,            #131
loop2:
DJNZ    R7,            loop2
DJNZ    R6,            loop3
RET

END

Das Programm ist äußerst schlecht kommentiert, ich weiß! Aber wer fragen 
hat kann diese ruhig stellen. Wenn ich das Programm auf den 
Microcontroller (Flashspeicher) spiel, passiert aber an den Ausgängen 
vom Motortreiber nichts, nada! Hardware-Fehler dürften es nicht mehr 
sein, darum suche ich jetzt Fehler in der Software. Vllt kann mir ja 
einer von euch bei der Suche helfen. Ganz bin ich aus dem Programm auch 
nicht schlau geworden. Soll dieses Programm nur abändern, hab es nicht 
selbst geschrieben. Zu den einzelnen Stellen. Die Zeitverzögerungen sind 
klar, LEDAnzeige auch, Motorsteuerung und auslesen der 6 Kommandobits 
auch. Nur wie kommt der Autor des Programms auf z.B. diese Zuweisung:
IRrechts    EQU       00101110b

Diese entspricht nach einer Überprüfung des Signals mit dem Oszi nicht 
den 6 Kommandobits. Bin für jede Hilfe dankbar.

so long, lg slimer

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.