PDA

Επιστροφή στο Forum : Περιστροφικος ανιχνευτης με PIC16f84a



^NightWish^
12-06-06, 19:20
Γεια σας, θα θελα την βοηθεια σας σχετικα με μια πτυχιακη που εχω αναλαβει. Θα θελα αν καποιος ξερει καλα απο προγραμματισμο για PIC να μου πει πως μπορω να μετρησω την ταχυτητα ενος περιστροφικου ανιχνευτη. Με απλα λογια, ενας δισκος περιστρεφεται με ακανονιστη ταχυτητα αλλα καθε περιστροφη του παραγει και εναν παλμο τασης 1 Volt DC. Εγω αυτο που θελω ειναι να προγραμματισω ενα PIC ουτος ωστε να μετραει αυτους τους παλμους και να μου βγαζει σε μια LCD οθονη ποσες στροφες κανει ανα λεπτο ο δισκος. Με βαση αυτα τα στοιχεια μπορει καποιος να με βοηθησει? Αν καποιος εχει καποιον τετοιο κωδικα σε pascal για PIC16F84A ακομα καλυτερα. Θα ημουν ειλικρινα υποχρεος. Σας ευχαριστω.

^NightWish^
16-06-06, 00:09
καλησπερα και παλι, μου ειπαν οτι για αυτην την κατασκευη χρειαζομαι ενα 18f452, ξερει κανεις να με βοηθησει πανω σε αυτο?

gsmaster
16-06-06, 00:58
Μπορείς και με τον 16F84A να το κάνεις, Στην ουσία μετράς τον χρόνο απο τον έναν παλμό μέχρι να έρθει ο επόμενος και μετά με πράξεις βρίσκεις πόσες στροφές κάνει σε ένα λεπτό.

^NightWish^
17-06-06, 01:27
θα μπορουσες να με βοηθησεις λιγο με τον κωδικα? τους παλμους τους περνω απο ενα οπτο καπλερ στο οποιο περναω την εξοδο του μεσα απο ενα 4N25 για να ανεβασω τους παλμους στα 5 V, μηπως αυτο δεν χρειαζεται? το οπτο καπλερ βγαζει παλμους περιπου 1V. μηπως ξερεις καμια σελιδα με τιποτα παρομιο για να παρω λιγο μπρος :lol: εχω να ασχοληθω με το αντικειμενο 2 χρονια και τωρα μου φαινεται βουνο. Ανωτερα βια ομως!

gsmaster
17-06-06, 03:13
Η απλός κι εύκολος, αλλά όχι πολύ ακριβής τρόπος:
1-περιμένεις να έρθει παλμός
2-όταν έρθει παλμός, αρχίσεις να μετράς χρόνο
3-οταν έρθει ο επόμενος παλμός σταματάς να μετράς, και υπολογίζεις πόσο θα είναι στο λεπτό και το εμφανίζεις.
4-περιμέεις να έρθει ο επόμενος παλμός (ξαναπάς δλδ στο βήμα 1)

Ο πιο σωστός όμως τρόπος είναι να εκμεταλλευτείς κάποιο hardware timer (CCP module αν δουλεύεις με PIC) με το οποίο θα έχεις ακριβέστερες μετρήσεις.

Στο hardware τώρα.... Γιατί βάζεις 2 optocouler, θα μπορούσες να βάλεις έναν τελεστικό, νομίζω θα ήταν καλύτερα....

όσο καιρό και να έχεις να ασχοληθείς, άμα κάτσεις και τα βάλεις κάτω έρχονται σιγά-σιγά....

^NightWish^
17-06-06, 11:11
εβαλα εναν τελεστικο ενισχυτη αλλα ο παλμος που μου βγαζει δεν ειναι καθαρος τετραγωνικος, για ccp εχει σημασια αυτο η αρκει μονο να φτανει τα 5V? μετα πχ για το 18f452 (που εχει ccp) απλα συνδεω την εξοδο του τελεστικου στο ccp και ειμαι οκ?

gsmaster
17-06-06, 18:16
Ξεκίνα με τον κώδικα πρώτα, για να εξομοιώσεις τον παλμό, μπορείς να χρησιμοποιήσεις ένα μπουτόν.

^NightWish^
17-06-06, 18:18
επισης ο τετραγωνικος παλμος που περνω απο τον τελεστικο ενισχυτη δεν ειναι απο 0 εως 5V. Ειναι απο 2 εως 5, μηπως κανω καποιο λαθος στην συνδεσμολογια? το PIC για να δουλεψει δεν πρεπει να εχει παλμους απο 0 εως 5? Αν ναι υπαρχει καποιο σχεδιο να μου διξει καποιος για να εχω παλμους ακριβως απο 0 εως 5V?

gsmaster
17-06-06, 18:26
Και με 2-5 λογικά θα δουλέψει. Για να έχεις 0-5 (ή όσο το δυνατόν πιο κοντά στο 0-5) πάρε ένα άλλο τελεστικό.

^NightWish^
17-06-06, 18:44
Σε ευχαριστω πολυ gsmaster, παω να κανω τα πειραματα μου και θα σου πω :)

^NightWish^
17-06-06, 20:29
λοιπον, η κατασκευη πετυχε αλλα υπαρχει ενα προβλημα, οταν μειωνω αρκετα την ταχυτητα του δισκου τοτε στην οθονη μου δειχνει οτι θελει, αυτο πιστευω οφειλετε γιατι δεν εχω τετραγωνικο παλμο απο 0-5V αλλα απο 2 περιπου μεχρι 5, για να παρω μετρησεις κατευασα την πηγη στα 3 V για να πλησιασει περισσοτερο στο 0 αλλα αυτο εχει σαν αποτελεσμα το PIC στις λιγες στροφες να μην μπορει να διαβασει τους παλμους. Δοκιμασα οτι τελεστικους εχω και περνω σε ολους ακριβως το ιδιο πλατος στους παλμους με την ιδια αποκληση απο το 0. Μπορει να μου πει καποιος αν ξερει μια συνδεσμολογια στην οποια να εχω απο 0 εως 5V? Γιατι μαλλον κατι δεν εχω κανει σωστα στην συνδεσμολογια στον τελεστικο ενισχυτη. Ευχαριστω.

gsmaster
18-06-06, 01:31
Γιατί πώς τον έβαλες? βάλτον σαν μη αναστρέφοντα συγκριτή τάσης, με αναφορά περίπου 3-3,5 V

^NightWish^
18-06-06, 12:49
Θα μπορουσες σε παρακαλω να μου διξεις το θεωρητικο κυκλωμα για τον τελεστικο? Οι παλμοι που περνω απο το οπτο καπλερ ειναι 1V.

gsmaster
18-06-06, 13:02
Ρυθμίζεις το ποτενσιόμετρο για τάση αναφοράς. Όσο η άλλη είσοδος του τελεστικού είναι κάτω απο την τάση αναφοράς, η έξοδος θα είναι 0V ενώ αν είναι πάνω θα είναι 5V

^NightWish^
18-06-06, 13:32
Σε ευχαριστω πολυ φιλε μου

Pantelis
18-06-06, 15:24
Έχω να προτείνω την εξής λύση.

Όσον αφορά το κύκλωμα, μπορείς να συνδέσεις τον τελεστικό να σου δίνει μια ενίσχυση x3 η x4, την έξοδο του να την στέλνεις σε ένα Schmitt-trigger για να έχεις όσο τον δυνατόν πιο "καθαρούς" τετραγωνικούς παλμούς και την έξοδο του S-Trigger την στέλνεις σε μια είσοδο του PIC.
Αν θέλεις να έχεις καλύτερη ακρίβεια, τότε χρειάζεσαι στο κύκλωμα κάτι που να σου δίνει παλμούς με συχνότητα ακριβώς 1 sec. Αυτό μπορεί εύκολα να πραγματοποιηθεί με ένα 555-timer (πχ. LM555).

Η βασική αρχή είναι η εξής: Μετράς πόσοι παλμοί έρχονται στον PIC ανά δευτερόλεπτο. Δηλαδή: Πρώτος παλμός από το 555 --> Interrupt στον PIC --> Ξεκινά να μετράει παλμούς --> Επόμενος παλμός από το 555 --> Στέλνει στο LCD την μέτρηση, καθαρίζει την θέση μνήμης που είναι ο counter, ξεκινά πάλι να μετρά --> Επόμενος παλμός από το 555 --> ούτω καθ'εξής...

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

gsmaster
18-06-06, 15:57
Έχω να προτείνω την εξής λύση.

Όσον αφορά το κύκλωμα, μπορείς να συνδέσεις τον τελεστικό να σου δίνει μια ενίσχυση x3 η x4, την έξοδο του να την στέλνεις σε ένα Schmitt-trigger για να έχεις όσο τον δυνατόν πιο "καθαρούς" τετραγωνικούς παλμούς και την έξοδο του S-Trigger την στέλνεις σε μια είσοδο του PIC.
...

Με μια αντίσταση ανάδρασης στο κύκλωμα που έδωσα παραπάνω, μπορεί να πάρει μια χαρά καθαρούς παλμούς.



...
Αν θέλεις να έχεις καλύτερη ακρίβεια, τότε χρειάζεσαι στο κύκλωμα κάτι που να σου δίνει παλμούς με συχνότητα ακριβώς 1 sec. Αυτό μπορεί εύκολα να πραγματοποιηθεί με ένα 555-timer (πχ. LM555).
...

Δεν θα το πρότεινα, εφόσον ο μΕ έχει μια χαρά δυνατότητες για μέτρηση χρόνου, ειδικά αν χρονίζεται και απο κρύσταλλο...



...
Η βασική αρχή είναι η εξής: Μετράς πόσοι παλμοί έρχονται στον PIC ανά δευτερόλεπτο. Δηλαδή: Πρώτος παλμός από το 555 --> Interrupt στον PIC --> Ξεκινά να μετράει παλμούς --> Επόμενος παλμός από το 555 --> Στέλνει στο LCD την μέτρηση, καθαρίζει την θέση μνήμης που είναι ο counter, ξεκινά πάλι να μετρά --> Επόμενος παλμός από το 555 --> ούτω καθ'εξής...

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

Ένας μικροελεκτής είναι αρκετά δυνατό εργαλείο, μην το υποτιμάς. Δες εδώ μια συζήτηση για συχνόμετρο (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=3496)

Pantelis
19-06-06, 12:47
Με μια αντίσταση ανάδρασης στο κύκλωμα που έδωσα παραπάνω, μπορεί να πάρει μια χαρά καθαρούς παλμούς.
Τετραγωνικούς και με καθαρές γωνίες;



Δεν θα το πρότεινα, εφόσον ο μΕ έχει μια χαρά δυνατότητες για μέτρηση χρόνου, ειδικά αν χρονίζεται και απο κρύσταλλο...
...
Ένας μικροελεκτής είναι αρκετά δυνατό εργαλείο, μην το υποτιμάς. Δες εδώ μια συζήτηση για συχνόμετρο (http://www.hlektronika.gr/phpBB2/viewtopic.php?t=3496)

Οι μεγαλύτεροι PIC (που κολλιούνται και με το χέρι, και επίσης, όχι dsPIC) δουλεύουν με συχνότητα 64MHz, η οποία διαιρείται και δια του 4, άρα με 16MHz. Σίγουρα δεν μπορεί να χρησιμοποιήσει πλήρως αυτή την συχνότητα για μέτρηση, γιατί πρέπει να κάνει και άλλες εργασίες, όπως εμφάνιση στην LCD. Άρα, του μένουν περίπου 10 MHz χρήσιμα. Αν του αρκούν, τότε εντάξει! Μετά πάμε σε απλό κύκλωμα διαίρεσης της συχνότητας, με το οποίο όμως θα έχει μεγάλα σφάλματα στις υψηλότερες συχνότητες και περιορισμένη ακρίβεια. Αν δεν τον νοιάζουν τα σφάλματα και η ακρίβεια, τότε πάλι εντάξει. Αν όμως τον νοιάζουν, τότε πρέπει να πάει υποχρεωτικά σε ένα πιο προχωρημένο και ευέλικτο κύκλωμα διαίρεσης της συχνότητας, στο οποίο όμως ο PIC έχει απλά τον ρόλο του οργανωτή και όχι του μετρητή.

Επίσης, στο προηγούμενο μήνυμα μπερδεύτηκα, για ακρίβεια στον χρονισμό δεν κάνει το 555, αλλά το 4521 (πχ. HCF4521B) σε συνδιασμό με έναν κρύσταλλο 4.194304MHz.

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

gsmaster
19-06-06, 19:46
Τετραγωνικούς και με καθαρές γωνίες;
Γιατί όχι? με έναν καλό τελεστικό...



....
Οι μεγαλύτεροι PIC (που κολλιούνται και με το χέρι, και επίσης, όχι dsPIC) δουλεύουν με συχνότητα 64MHz, η οποία διαιρείται και δια του 4, άρα με 16MHz. Σίγουρα δεν μπορεί να χρησιμοποιήσει πλήρως αυτή την συχνότητα για μέτρηση, γιατί πρέπει να κάνει και άλλες εργασίες, όπως εμφάνιση στην LCD. Άρα, του μένουν περίπου 10 MHz χρήσιμα. Αν του αρκούν, τότε εντάξει! Μετά πάμε σε απλό κύκλωμα διαίρεσης της συχνότητας, με το οποίο όμως θα έχει μεγάλα σφάλματα στις υψηλότερες συχνότητες και περιορισμένη ακρίβεια. Αν δεν τον νοιάζουν τα σφάλματα και η ακρίβεια, τότε πάλι εντάξει. Αν όμως τον νοιάζουν, τότε πρέπει να πάει υποχρεωτικά σε ένα πιο προχωρημένο και ευέλικτο κύκλωμα διαίρεσης της συχνότητας, στο οποίο όμως ο PIC έχει απλά τον ρόλο του οργανωτή και όχι του μετρητή.

Με διαιρέτη εννοούσα φυσικά....



Επίσης, στο προηγούμενο μήνυμα μπερδεύτηκα, για ακρίβεια στον χρονισμό δεν κάνει το 555, αλλά το 4521 (πχ. HCF4521B) σε συνδιασμό με έναν κρύσταλλο 4.194304MHz.
ΟΚ είπα κι εγώ, πόσο ακριβές μπορεί να είναι ένα 555 και πόσο αναίσθητο στις ανοχές των εξαρτημάτων....



Και δεν υποτιμώ καθόλου τους PIC, για την ακρίβεια μόνο αυτούς δουλεύω από μΕ, ....

Άντε, δικός μας κι εσύ, τι έγινε εδώ μέσα, είμαστε όλοι παιδιά της microchip.....

^NightWish^
19-06-06, 22:57
Βασικα το προβλημα που ειχα δεν ηταν στις υψηλες συχνοτητες, εξαλλου ενα μοτερακι για γκαραζοπορτα των 12V δεν θα μπορουσε να αναπτυξει πανω απο 3000-3500 στροφες το λεπτο, οποτε παει αυτο. Το προβλημα το οποιο δεν εχω καταλαβει ακομα γιατι υπαρχει, ειναι στις πολυ χαμηλες συχνοτητες, δλδ απο τις 900 στροφες περιπου το λεπτο και κατω δεν μπορει να τις διαβασει o μΕ. Οσον αφορα τον μΕ ειναι ο pic18f452 ο οποιος απ'οτι ξερω και απο την εταιρεια που δουλευω για την πρακτικη μου κανει θαυματα οσον αφορα την μετρηση συχνοτητων.