AUTOMATIC TROLLEY H K Hwang K K Chen J-S Lin S-C Wang M-L Li C-C Lin W-B Lin Dept. Of Electrical Engineering Far East College ABSTRACT This paper proposes an automatic trolley which can move automatically along the pre paved path The procedures are first infrared sensor detects the path and then transmits data to microcomputer Finally the microcomputer sends signal to activate DC motors and then Dc motors control the trolley to move forwards move backwards turn right and turn left. Keyword automatic trolley infrared sensor DC motor microcomputer Ni MH rechargeable battery 347
1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q3 9013 VDD=12V C A - Q8 TIP41C M2 L 1 D10 1N4001 B 1.1 2. 1.1 (Relay) 1.2 SW2 D Q 4 1.2(a) ML_FB = 0 Q 4 D (NC Normal Close) (b) ML_FB=1 Q 4 D 0.3V L 2 (NO Normal Open) (c) 348
ML_FB VCC R20 10K R16 1K 0:forward 1:reverse VCC Red Light VDD RELAY R30 L2 D Q4 9013 D7 SW2 1N4001 + M2 A - CPU (a) (c) 1.2 (a) (b) (c) 3. 1. CNY70 CNY70,,, 1.3 12V 6,000rpm 6000 = 30 30 200rpm 1.3 : CNY70,,,,, 1.3,, 2. 2.1 CNY70 349
(a) (b) (c) IC 4584 2.2 (a) (b) (LED) CNY70 (c) 3. CNY70 89C51 8bit CPU I/O Port 4584 LED 4K byte ROM VCC R24 R25 R26 ISO1 ISO2 ISO3 89C51 CNY70 R34 500K R10 1K 1 2 R33 U3A 4584D3 LED CNY70 R35 500K R12 1K 3 4 R32 U3B 4584D2 LED CNY70 R36 500K R13 1K 5 6 R27 U3C 4584D1 LED SensorR SensorC SensorL Reset power-on reset reset 10uf 100ms reset 89C51 Reset program counter pointer 0000h 12MHZ 12MHZ 2.1 (1). (CPU) LED CPU ( ALU) 500K R 34 R 35 R 36 CPU L C R CPU( MCS-96) 2.2(a) ( ) BCD (b) (2). (MEMORY) (1) (ROM) (2) (RAM) (3). (I/O PORT) / CPU I/O (RELAY) 350
(4). (PERIPHERAL) / I/O / 32 (4 PORT) (TIMER/COUNTER) (UART) I/O / (A/D) (PWM) 128 BYTES / RAM (DMA) I/O(HIGH 16 TIMER/COUNTER SPEED INPUT/OUTPUT) UAET( I/O) (5). (CLOCK GENERATOR) 8 CPU 5 CPU CPU (CLOCK) ( 12MHZ) (OSCILLATOR) (6). 89C51 4K 64K (EPROM) 64K (RAM) (7). 89C51 A 351
352
; : ; : ; LEFT SW: ; MID SW: ; RIGHT SW: ; FUN SW:ON/OFF ; RLY1:M1 / ; RLY2:M1 / ; RLY3:M1 / ; RLY4:M2 / ; RLY5:M2 / ; RLY6:M2 / ; : ;89C51 ;P0.7 = NC P1.0 = LEFT SENSOR [1] 8051/8751 ;P0.6 = RLY6 P1.1 = MID SENSOR ;P0.5 = RLY5 P1.2 = RIGHT SENSOR ;P0.4 = RLY4 P1.3 = ON/OFF SW [2]8051 ;P0.3 = RLY3 P1.4 = NC ;P0.2 = RLY2 P1.5 = NC ;P0.1 = RLY1 P1.6 = NC [3]8051 ;P0.0 = AUX P1.7 = NC ;R0 = [4] ;R1 = ;R2 = ;R3 = http://home.kimo.com.tw/s07368/ [5] 2 ;R4 = ;R5 = ;R6 = [6] ;R7 = [7] ---- SYMBOLS ON ; A ;FILES NAME = ; :89C51 RLY6.REG P0.6 ;P0.6 = RLY6 RLY5.REG P0.5 ;P0.5 = RLY5 353
RLY4.REG P0.4 ;P0.4 = RLY4 CJNE A,#07H,MAIN_N ;ACC <> RLY3.REG P0.3 ;P0.3 = RLY3 #07H,GO MAIN_N RLY2.REG P0.2 ;P0.2 = RLY2 LJMP MAIN_L2 ;ACC = RLY1.REG P0.1 ;P0.1 = RLY1 #07H,GO MAIN LEFT_SW.REG P1.0 ;P1.0 = MAIN_N: LEFT_SW MID_SW.REG P1.1 ;P1.1 = MID_SW NOP LCALL D_50MS ; 50MS RIGHT_SW.REG P1.2 ;P1.2 = MAIN_L3: RIGHT_SW LCALL RD_PHOTO_SW ; FUN_SW.REG P1.3 ;P1.3 = FUN_SW ----- CJNE A,#02H,MAIN_N1 ;ACC <> ORG 0000H #02H,GO MAIN_N1 AJMP MAIN MOV P0,#11011011B ;ACC = #02H, ------ ; MAIN_1: ------ LCALL RD_PHOTO_SW ; MAIN: LCALL SET_IO ;I/O CJNE A,#02H,MAIN_L3 ;ACC <> PORT #02H,GO MAIN_L3 MAIN_L: LCALL D_10MS ; LCALL D_10MS ; 10MS 10MS JB FUN_SW,MAIN_L ;FUN_SW = LJMP MAIN_1 ;GO H,GO MAIN_L LCALL WAIT_FUN_OFF ; MAIN_1 MAIN_N1: FUN_SW CJNE A,#03H,MAIN_N2 ;ACC <> LCALL D_2S ; 2S #03H,GO MAIN_N2 MAIN_L1: MOV P0,#11011001B;ACC = #03H, LCALL RD_PHOTO_SW ; CJNE A,#07H,MAIN_L1 ;ACC <> MAIN_2: LCALL RD_PHOTO_SW ; #07H,GO MAIN_L1 MAIN_L2: CJNE A,#03H,MAIN_L3 ;ACC <> MOV P0,#11001001B ;ACC = #03H,GO MAIN_L3 #07H, LCALL D_10MS ; LCALL D_50MS ; 50MS 10MS LCALL RD_PHOTO_SW ; LJMP MAIN_2 ;GO MAIN_2 354
MAIN_N2: LCALL D_10MS ; CJNE A,#01H,MAIN_N3 ;ACC <> 10MS #01H,GO MAIN_N3 LJMP MAIN_5 ;GO MOV P0,#11001111B ;ACC = MAIN_5 #01H, MAIN_3: MAIN_N5: CJNE A,#04H,MAIN_N6 ;ACC <> LCALL RD_PHOTO_SW ; #04H,GO MAIN_N6 MOV P0,#11111001B ;ACC = #04H, CJNE A,#01H,MAIN_L3 ;ACC <> #01H,GO MAIN_L3 MAIN_6: LCALL D_10MS ; 10MS LCALL RD_PHOTO_SW ; LJMP MAIN_3 ;GO MAIN_3 CJNE A,#04H,MAIN_L3 ;ACC <> #04H,GO MAIN_L3 MAIN_N3: LCALL D_10MS ; CJNE A,#07H,MAIN_N4 ;ACC <> 10MS #07H,GO MAIN_N4 LJMP MAIN_6 ;GO MOV P0,#00000000B ;ACC = #07H, MAIN_6 MAIN_N6: MAIN_4: CJNE A,#00H,MAIN_L3 ;ACC <> LCALL RD_PHOTO_SW ; #00H,MAIN_L3 MOV P0,#00000000B ;ACC = #00H, CJNE A,#07H,MAIN_L3 ;ACC <> #07H,GO MAIN_L3 LCALL D_200MS ; LCALL D_10MS ; 10MS 200MS LJMP MAIN_4 ;GO MOV P0,#10100101B ; MAIN_4 MAIN_N4: MAIN_7: CJNE A,#06H,MAIN_N5 ;ACC <> LCALL RD_PHOTO_SW ; #06H,GO MAIN_N5 MOV P0,#11001011B ;ACC = #06H, CJNE A,#00H,MAIN_N7 ;ACC <> #00H,GO MAIN_N7 MAIN_5: LCALL D_10MS ; 10MS LCALL RD_PHOTO_SW ; LJMP MAIN_7 ;GO CJNE A,#06H,MAIN_L3 ;ACC <> MAIN_7 MAIN_N7: #06H,GO MAIN_L3 MOV P0,#00000000B ;RLY 355
OFF LCALL D_200MS ; 200MS LJMP MAIN_L3 ;GO MAIN_L3 ---------- ;* ;* I/O PORT SET_IO: - D_10MS: SETB LEFT_SW ;LEFT_SW(P1.0) MOV R7,#20 ;R7 = 20 D_10MS_L: SETB MID_SW ;MID_SW(P1.1) MOV R6,#250 ;R6 = 250 SETB RIGHT_SW DJNZ R6,$ ;R6-1 > 0, ;RIGHT_SW(P1.2) DJNZ R7,D_10MS_L ;R7-1 > 0,GO LCALL OFF_RLY ; D_10MS_L ; ; ;* 50mS OFF_RLY: MOV LCALL P0,#00000000B D_200MS ;* FUN_SW WAIT_FUN_OFF: JNB FUN_SW,$ ;FUN_SW = L, ; ;* RD_PHOTO_SW: P1 MOV A,P1 ;ACC = ANL A,#07H ;ACC BIT0,1,2 ; -- ;* DELAY - ;* 10MS D_50MS: MOV R7,#100 ;R7 = 100 D_50MS_L: MOV R6,#250 ;R6 = 250 DJNZ R6,$ ;R6-1 > 0, DJNZ R7,D_50MS_L ;R7-1 > 0,GO D_50MS_L ; ;* 200MS D_200MS: MOV R7,#4 ;R7 = 4 D_200MS_L1: 356
MOV R6,#100 ;R6 = 100 D_200MS_L2: MOV R5,#250 ;R5 = 250 DJNZ R5,$ ;R5-1 > 0, DJNZ R6,D_200MS_L2 ;R6-1 > 0,GO D_200MS_L2 DJNZ R7,D_200MS_L1 ;R7-1 > 0,GO D_200MS_L1 ; ;* 500MS D_500MS: MOV R7,#10 ;R7 = 10 D_500MS_L1: MOV R6,#100 ;R6 = 100 D_500MS_L2: MOV R5,#250 ;R5 = 250 DJNZ R5,$ ;R5-1 > 0, DJNZ R6,D_500MS_L2 ;R6-1 > 0,GO D_500MS_L2 DJNZ R7,D_500MS_L1 ;R7-1 > 0,GO D_500MS_L1 ; ;* 2S D_2S: MOV R7,#40 ;R7 = 40 D_2S_L1: MOV R6,#100 ;R6 = 100 D_2S_L2: MOV R5,#250 ;R5 = 250 DJNZ R5,$ ;R5-1 > 0, DJNZ R6,D_2S_L2 ;R6-1 > 0,GO D_2S_L2 DJNZ R7,D_2S_L1 ;R7-1 > 0,GO D_2S_L1 ; ;==================================== END ; B 357
358