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


von slimer (Gast)


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:
1
CSEG AT 0
2
3
; IR-Signal-Auswertung
4
IRinput        BIT        P1.3
5
IRCode        DATA    7fh
6
IRempfadr    DATA    7eh
7
8
; Zuweisung der Fernbedinung
9
10
IRrechts    EQU       00101110b
11
IRlinks        EQU       00101011b
12
IRvor        EQU       00101101b
13
IRzurueck    EQU       00101100b
14
IRstopp        EQU       00101111b
15
16
; Gleichstrom-Motor-Steuerung
17
Motoren        DATA    P2
18
Mstopp        EQU        00000000b
19
Mvor        EQU        11001100b
20
Mzurueck    EQU        10101010b
21
Mrechts        EQU        11001000b
22
Mlinks        EQU        10001100b
23
24
LEDs        DATA     P0
25
26
start:
27
MOV Motoren,#Mstopp
28
29
;RC5-Empfang
30
31
ireinlesen:
32
JB         IrInput,    ireinlesen
33
CLR     A
34
LCALL     Zeit34
35
MOV     B,            #7
36
loopAdr:
37
MOV     C,            IrInput
38
RLC     A
39
LCALL     Zeit
40
    DJNZ    B,        loopAdr
41
ANL     A,            #00111111b
42
MOV     IRempfadr,    A
43
CLR     A
44
MOV     B,            #6
45
loopDaten:
46
MOV     C,            IrInput
47
RLC     A
48
LCALL     Zeit
49
DJNZ     B,            loopDaten
50
MOV     IRcode,        A
51
CALL     zeit
52
CALL     zeit
53
54
; Ende RC5-Empfang
55
MOV     A,            IRempfadr
56
ANL     A,            #11011111b
57
JNZ        IReinlesen
58
59
; Motorsteuerung
60
MOV     A,            IRcode
61
CJNE    A,            #IRrechts,m1
62
MOV     motoren,    #Mrechts
63
SJMP     anzeigen
64
m1:
65
CJNE     A,            #IRlinks,m2
66
MOV        motoren,    #Mlinks
67
SJMP    anzeigen
68
m2:
69
CJNE    A,            #IRvor,m3
70
MOV        motoren,    #Mvor
71
SJMP    anzeigen
72
m3:
73
CJNE    A,            IRzurueck,m4
74
MOV        motoren,    #Mzurueck
75
SJMP    anzeigen
76
m4:
77
CJNE    A,            IRstopp,anzeigen
78
MOV        motoren,    #Mstopp
79
SJMP    anzeigen
80
81
;LED-Anzeige
82
anzeigen:
83
MOV        LEDs,        IRCode
84
SJMP    IReinlesen
85
86
;Zeitverzögerung 1768us
87
Zeit:
88
MOV        R6,            #5
89
loop1:
90
MOV        R7,            #172
91
loop0:
92
DJNZ    R7,            loop0
93
DJNZ    R6,            loop1
94
RET
95
96
;Zeitverzögerung 1328us
97
98
Zeit34:
99
MOV        R6,            #5
100
loop3:
101
MOV        R7,            #131
102
loop2:
103
DJNZ    R7,            loop2
104
DJNZ    R6,            loop3
105
RET
106
107
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:
1
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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.