Τετάρτη 27 Απριλίου 2011

Build a simple robot/Φτιαξε ενα απλο Ρομποτ


 ΠΛΑΚΕΤΑ ΡΟΜΠΟΤΟΪΔΟΥΣ.

Την προηγουμένη σελίδα είδαμε το κύκλωμα της πλακετας του LIGHT TRACER ρομοτοιδους ένα από τα πιο βασικά στοιχειά τού κυκλώματος είναι το δικτυομα PULL-DOWN RESISTORS
Όταν έχουμε ένα μικροεπεξεργαστή και θέλουμε να έχουμε είσοδο high στη περίπτωση μας +5V τότε ένα βασικό πρόβλημα είναι στο ότι ο PIC16F84A μπορεί να πάρει είσοδο high από τιμή άνω των 1,8V, μέσα σε ένα μεγάλο κύκλωμα που βρίσκετε σε μικρή πλακετα όπως στην περίπτωση μας ανάπτονται θόρυβοι που ο PIC16F84A τους θεωρεί ως εισόδους με αποτέλεσμα να έχουμε σφάλμα στην λειτουργία του.
Έτσι συνδέουμε μια αντίσταση στην κάθε είσοδο του PIC16F84A με την γη για να απαλείφουμε τα παράσιτα και τους θορύβους , η τιμή της αντίστασης αυτής πρέπει να είναι άνω των 10KΩ ώστε να μην έχουμε βραχυκύκλωμα με την είσοδο των +5V.

Το κύκλωμα PULL-DOWN RESISTOR φαίνεται παρακάτω:


Τα υλικά που χρησιμοποιήσαμε στην πλακετα του ΡΟΜΠΟΤΟΪΔΟΥΣ φαίνονται παρακάτω:


ΡΕΛΕ
4τεμ. ρελε 5V DC

ΠΟΝΤΕΣΙΟΜΕΤΡΑ
2τεμ. 10KΩ

ΒΑΣΕΙΣ ΟΛΟΚΛΗΡΩΜΕΝΩΝ
1τεμ. 16pins για το ULN2003A
1τεμ. 18pins για το PIC16F84A

ΑΝΤΙΣΤΑΣΕΙΣ
13τεμ. 330Ω
1τεμ. 10ΚΩ
1τεμ. 1ΚΩ
1τεμ δικτυοματος αντιστάσεων 10ΚΩ

ΚΡΥΣΤΑΛΛΟΙ
1τεμ. 4MHZ

ΟΛΟΚΛΗΡΩΜΕΝΑ
1τεμ. μικροεπεξεργαστή PIC16f84A
1τεμ. ULN2003A

ΦΩΤΟΑΝΤΙΣΤΑΣΕΙΣ
4τεμ. φωτοαντιστασεων μεγάλου μεγέθους

LED
1τεμ. διπλού φωτισμού (πράσινο-κόκκινο)
4τεμ, LED υψηλής φωτεινότητας

ΠΡΟΤΕΙΝΟΜΕΝΑ ΕΞΑΡΤΗΜΑΤΑ
Μια φυσά 20 PINS για FLAT CABLE
Ένα BCD
Ένα δίκτυα διακοπτων (6 επαφών)



Η τελειωτική μορφή του ΡΟΜΠΟΤΟΪΔΟΥΣ φαίνεται παρακάτω.


















11.ΑΝΑΛΥΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΤΟΥ ΡΟΜΠΟΤΟΪΔΟΥΣ.

Το ρομποτοιδες είναι κατασκευασμένο ώστε να παρατήσουμε την συνολική δυνατότητα του PIC16F84A,ετσι η λειτουργία του χωρίστηκε σε τρεις λειτουργίες όπως φαίνονται παρακάτω.

1η ΠΕΡΙΠΤΩΣΗ: ΑΚΟΛΟΥΘΙΑ ΓΡΑΜΜΗΣ
Το ρομποτοιδες ακολουθά μια μαύρη γραμμή χωρίς να φεύγει από αυτή:

2η ΠΕΡΙΠΤΩΣΗ: ΑΚΟΛΟΥΘΙΑ ΦΩΤΟΣ
Το ρομποτοιδες ακολουθεί το φως που δέχεται στις πάνω φωτοαντιστασεις

3η ΠΕΡΙΠΤΩΣΗ: ΑΠΟΦΥΓΗ ΦΩΤΟΣ
Το ρομποτοιδες αποφεύγει το φως που δέχεται στις πάνω φωτοαντιστασεις


Το πρόγραμμα για τις παραπάνω λειτουργίες φαίνεται παρακάτω.

;*********************************************************************
;*************** ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ******************************
;***********ΕΠΑΜΕΙΝΩΝΔΑΣ ΜΕΣΣΗΝΗΣ************************


LIST P=16f84A
ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES
#include

;*******************************************************************
; {{ΟΡΙΣΜΟΣ Ι/0 ΤΟΥ pic16f84a}}
;*******************************************************************
PORTA EQU 5
PORTB EQU 6
TRISB EQU 86H
TRISA EQU 85H
;*******************************************************************
; {{CONFIGURATION ΤΟΥ pic16f84a}}
;*******************************************************************
Init
BSF STATUS,RP0 ;μεταβαση στο bank,1 του pic16f84a
CLRF TRISA ;clear porta
CLRF TRISB ;clear portb
movlw B'11111111';οριζουμε αλλα τα pins στο
porta σαν εισοδους
movwf TRISB ;porta input // trisregister
BCF STATUS,RP0 ; μεταβαση στο bank,0
του pic16f84a
CLRF PORTA ;καθαρισμος του PORTA
CLRF PORTB ;καθαρισμος του PORTΒ
movlw B'0000000'
movwf INTCON ;disable hardware
interrupts


;******************************************************************
; {{ΚΥΡΙΟΣ ΠΡΟΓΑΜΜΑ}}
;******************************************************************
; {{ ΥΠΟΡΟΥΤΙΝΑ ΑΚΟΛΟΥΘΙΑΣ ΜΑΥΡΗΣ ΓΡΑΜΜΗΣ}}
;******************************************************************
LOOP
BTFSS PORTB,6 ;αν το αριστερη
φωτοαντσταση ειναι 0
BTFSS PORTB,5 ;αν το δεξια φωτοαντσταση ειναι 0
GOTO FRONT ;τοτε πιγενε στην υπορουτινα

FRONT

BTFSC PORTB,6 ;αν το αριστερη φωτοαντσταση
ειναι 1
GOTO RIGHT ;τοτε πιγενε στην υπορουτινα

RIGHT
BTFSC PORTB,5 ;αν το αριστερη φωτοαντσταση ειναι 1
GOTO LEFT ;τοτε πιγενε στην υπορουτινα LEFT
GOTO LOOP ;πιγενε στην υπορουτινα LOOP

FRONT

BSF PORTA,1 ;αριστερος τροχος κινηση προς τα
μπροστα
BSF PORTA,3 ;δεξιος τροχος κινηση προς τα
μπροστα

LEFT
BSF PORTA,1 ;αριστερος τροχος κινηση προς τα
μπροστα

RIGHT

BCF PORTA,3 ;δεξιος τροχος κινηση προς τα μπροστα

`1
;*****************************************************************
; {{ ΥΠΟΡΟΥΤΙΝΑ ΑΚΟΛΟΥΘΙΑ ΦΩΤΟΣ}}
;*****************************************************************

LOOP1

BTFSS PORTB,7 ;αν ο διακοπτησ επιλογης mod ειναι 1
BTFSS PORTB,4 ;αν το αριστερη φωτοαντσταση ειναι 0
BCF PORTA,3 ;σταματα τον δεξιο τροχο
BTFSS PORTB,4 ;αν το αριστερη φωτοαντσταση ειναι 1
BSF PORTA,3 ;δεξιος τροχος κινηση προς τα
μπροστά
BTFSS PORTB,3 ;αν το δεξιά φωτοαντσταση ειναι 0
BCF PORTA,1 ;σταματα τον αριστερο τροχο
BTFSC PORTB,3 ;αν το αριστερη φωτοαντσταση
ειναι 1
BSF PORTA,1 ;δεξιος τροχος κινηση προς τα
μπροστα
GOTO LOOP1


;*****************************************************************
; {{ ΥΠΟΡΟΥΤΙΝΑ ΑΠΟΦΥΓΗΣ ΦΩΤΟΣ}}
;*****************************************************************

LOOP2
BTFSS PORTB,2 ;αν το αριστερη φωτοαντσταση ειναι 0
BCF PORTA,2 ;σταματα τον δεξιο τροχο
BTFSS PORTB,2 ;αν το αριστερη φωτοαντσταση
ειναι 1
BSF PORTA,2 ;δεξιος τροχος κινηση προς τα
πισω
BTFSS PORTB,1 ;αν το δεξια φωτοαντσταση ειναι 0
BCF PORTA,0 ;σταματα τον αριστερο τροχο
BTFSC PORTB,1 ;αν το αριστερη φωτοαντσταση
ειναι 1
BSF PORTA,0 ;δεξιος τροχος κινηση προς τα πισω
GOTO LOOP2

END ;τελος προγραμματος

Δεν υπάρχουν σχόλια: