PDA

Επιστροφή στο Forum : Βοήθεια: Μέτρηση ΟΝ διακόπτη με PIC16F84A



zorak1083
15-05-06, 18:41
Γειά σε όλους(ες),

Εχώ το εξής πρόβλημα:
Θέλω να προγραμματίσω το PIC16F84A έτσι ώστε να κάνει την εξής εργασία..
Υπάρχει ένα κύκλωμα στο οποίο ένα μοτέρ γυρνάει με μία f συχνότητα. Πάνω σε ένα γρανάζι υπάρχει ένα μεταλικό εξάρτημα το οποίο σε κάθε στροφή του κινητήρα πιέζει ένα μικρό διακοπτάκι το οποίο είναι συνδεδεμένο με 2 ποδαράκια του PIC. Κάθε φορά που βραχυκυκλώνουν τα ποδαράκια του PIC σε ένα display 1 γραμμής και 16 χαρακτήρων θα εμφανίζει τον αριθμό 1. Την δεύτερη φορά που θα βραχυκυκλώνει ο διακόπτης τα δύο ποδαράκια θα εμφανίζεται ο αριθμός 2 κλπ. Φανταστείτε όμως οτί ο αριθμός αυτό θα αποθηκεύεται στο ολοκληρωμένο και κάθε φορά που θα ξεκινάει την λειτουργία το κύκλωμα, θα συνεχίζει το μέτρημα από τον αριθμό που θα έχει σταματήσει την προηγούμενη φορά..Σκεφτείτε οτί θέλω αυτή η ιστορία να γίνει πάνω 1.000.000 φορές και να ξεκινάει το μέτρημα από μια τιμή που θα έχω προκαθορίσει στον μικροελεγχτή. Δηλαδή αν του έχω αποθηκευμένη την τιμή 60690 και λειτουργεί το μοτέρ στην επόμενη περιστροφή του θέλω να γράψει το display 60691 κλπ...
Εάν κάποιος έχει γνώσεις από PIC και μπορεί να μου πεί τον κώδικα γι' αυτό που χρειάζομαι, θα του ήμουν ευγνώμων.
Εκτός από το πρόγραμμα του PIC χρειάζομαι κάτι επιπλέον για την υλοποίηση του κυκλώματος, (τι τύπο LCD-display, αντιστάσεις, πυκνωτές κλπ)?
Εάν δεν γίνεται να καταλαβαίνει το πρόγραμμα πότε βραχυκυκλώνω τα 2 ποδαράκια τι πρέπει να χρησιμοποιήσω στη θέση του διακόπτη που έχω ήδη?


Σας ευχαριστώ πολύ για το χρόνο σας..

gsmaster
15-05-06, 21:01
Μια χαρά μπορείς να το φτιάξεις σε γλώσσα C ή (κάποια άλλη) που υποστηρίζει 32bit καταχωρητές. 32bit σημαίνει 2^32 που σημαίνει 4.294.836.225, κάτι παραπάνω απο 4 δισ δηλαδή. σου φτάνουν? :P

Ο διακόπτης που έχεις μια φορά κάνει αρκεί να μην φθαρούν οι επαφές του απο τις πρώτες χρήσεις. Πόσο γρήγορα γυρνάει ο τροχός δλδ πόσο γρήγορα ανοιγοκλείνει ο διακόπτης?

PANOS_
15-05-06, 21:55
μπορεις πολυ απλα να το κανεις και με ενα κομπιουτερακι του 1 ευρω.
ενωνεις τον διακοπτη στο (=) και πληκτρολογεις (0+1).
καθε φορα που θα πατας τον διακοπτη θα σου προσθετει και 1
αν θελεις μπορεις να ξεκινησεις απο οποιαδηποτε τιμη π.χ την τιμή (60690 +1)
και σου συνεχιζει την μετρηση

electronic
16-05-06, 09:37
Καλημέρα zorak1083.

"Σκεφτείτε οτί θέλω αυτή η ιστορία να γίνει πάνω 1.000.000 φορές και να ξεκινάει το μέτρημα από μια τιμή που θα έχω προκαθορίσει στον μικροελεγχτή. Δηλαδή αν του έχω αποθηκευμένη την τιμή 60690 και λειτουργεί το μοτέρ στην επόμενη περιστροφή του θέλω να γράψει το display 60691 κλπ... "

Αυτή η τιμή θα είναι σταθερή κάθε φορά ή θα είναι η τελευταία τιμή που μέτρησε όταν ήταν ανοιχτό το κύκλωμα. Εάν είναι το δεύτερο θα πρέπει να συνδέσεις επάνω και μία μνήμη όπου θα καταχωρείς τον αριθμό που θα μετράς. Όταν ξεκινάει το κύκλωμα την λειτουργία του θα πρέπει ο PIC να διαβάζει την μνήμη και να εμφανίζει την τιμή στο display. Με το που συνεχίζει την λειτουργία του τότε θα πρέπει να συνεχίζει να γράφει τιμές στην μνήμη.

Μπορείς να κάνεις το εξείς. Να συνδέσεις στην πόρτα Α του PIC τον διακόπτη π.χ. στο Α1 μόνο το ένα άκρο του και το άλλο να πάει ήστο συν ή στην γή. Να ξέρεις ότι αυτός ο PIC δουλεύει με αρνητική λογική. Δηλαδή το + είναι - και το - είναι + και μιλάω πάντα για τις είσόδους του... Εκτός από διακόπτη μπορείς να βάλεις οπτικό διακόπτη όπως αυτους που έχουν η διάφορες συσκευές και ελέγχουν αν άνοιξε κάποια πόρτα. Αυτοί είναι με τρεία καλώδια. Το + το - και η έξοδος. Στην έξοδο βάζεις μια pullup αντίσταση και το αδηγείς σε ένα τρνζίστορ το οποίο δουλέυει σαν διακόπτης ΟΝ-OFF, αλλά μπορείς να το συνδέσεις και στην είσοδο του PIC.

Αυτά για τώρα....

gsmaster
16-05-06, 13:05
...
Να ξέρεις ότι αυτός ο PIC δουλεύει με αρνητική λογική. Δηλαδή το + είναι - και το - είναι + και μιλάω πάντα για τις είσόδους του...
....

Δεν το κατάλαβα αυτό, μια χαρά κανονικά δουλεύουν οι είσοδοι, αν έχεις + είναι λογικό "1" και άν έχεις γείωση είναι λογικό "0".
Εσύ τι εννοείς?

electronic
17-05-06, 09:26
Γιάννη καλησπέρα

Θα ψάξω να βρώ τις σημειώσεις που έχω για τον PIC και θα αιτιολογήσω το παραπάνω σχόλιο. Μέχρι τότε ρώτα αν θές στην σχολή στο εργαστήριο Μ/Υ για την αρνητική λογική του PIC16F84. Αυτές τις σημειώσεις θα ψάξω να βρώ...


Λοιπόν θυμήθηκα κάτι και μάλλον αυτό είναι. Λόγο του ότι βάζουμε pullup αντίσταση 4,7Κ στις δυο εισόδους έχουμε μόνιμα τις εισόδους σε λογικό 1. Οπότε κάνουμε το πρόγραμμα έτσι ώστε αυτό να είναι λογικό 0 και όταν γίνετε πραγματικά αλλαγή κατάστασης και έχουμε 0volt τότε το πρόγραμμα μας καταλαβαίνει λογικό 1. Αυτό με την pullup αντίσταση μας το είχαν πει οι βοηθοί στο εργαστήριο του Χατζηγκ..... το 1997 για να μην έχουμε αδιάφορη κατάσταση στις εισόδους κατά την λειτουργία του.
Αυτά προς το παρών. Περισσότερα όταν έχω τις σημειώσεις μπροστά μου.

gsmaster
17-05-06, 19:02
Αυτό ναι έτσι είναι, αυτό λέγεται αρνητική λογική,όταν βάλεις pull-up και βάλεις και διακόπτη προς την γείωση, όταν πατήσεις τον διακόπτη θα έχεις 0V στην είσοδο άρα λογικό 0, και όταν αφήσεις τον διακόπτη, θα έχεις λογικό 1.

Ο μικροελεκτής μηχάνημα είναι, αμα δει 0V θα το διαβάσει 0, και άμα δει 5V θα το διαβάσει λογικό 1. Απο εκεί και πέρα εξαρτάται πώς θα το κάνει ο καθένας το κυκλωμά του.

Η αρνητική λογική που λες παίζει ρόλο πώς θα συνδέσεις την είσοδο του μΕ, εγώ πχ μπορεί να μην έβαζα Pull-up αλλά να έβαζα pull-down, ότι τον βολέυει τον καθένα.

zorak1083
26-05-06, 19:54
Σας ευχαριστώ όλους για την βοήθεια.
Αρχίζω και μπάινω λίγο στο νόημα.
Συγνώμη αν άργησα να σας απαντήσω δεν μπορώ να είμαι στο ίντερνετ ΄κάθε μέρα..

Σας ευχαριστώ και πάλι..