PDA

Επιστροφή στο Forum : Παραγωγή παλμών χρονισμού 1sec, 0.1min, 0.1h με PIC



GeorgeVita
19-02-11, 14:37
Αρκετές φορές χρειαζόμαστε παλμούς χρονισμού για μέτρηση ή καταγραφή συμβάντων (ωρομετρητές, καταγραφικά, συχνόμετρα). Υπάρχουν αρκετά εξειδικευμένα ολοκληρωμένα κυκλώματα που καλύπτουν αυτή την ανάγκη αλλά δεν είναι πάντα διαθέσιμα.

Παρακάτω δείχνω μια απλή εφαρμογή για "παραγωγή παλμών χρονισμού 1sec, 0.1min, 0.1h" με PIC των 8pin μικρής δυναμικότητας.

http://acomelectronics.com/GeorgeVita/OpHW/Time360/Time360.jpg

Ο χρονισμός έρχεται από τον κρύσταλλο 32768Hz. Μικρομετρική ρύθμιση μπορεί να γίνει με μεταβολή της χωρητικότητας των πυκνωτών 15pF.

Η είσοδος COUNT (pin4) ενεργοποιεί ή σταματά την παραγωγή παλμών στην έξοδο. Οταν η επαφή είναι κλειστή (pin4=0V) η παραγωγή παλμών είναι συνεχής. Οταν η επαφή ανοίξει (pin4=Vdd) οι παλμοί "παγώνουν" στο σημείο αυτό μέχρις ότου ξανακλείσει η επαφή οπότε η μέτρηση συνεχίζεται από το σημείο που σταμάτησε.

Υπάρχουν 3 έξοδοι παλμών για κύκλο 1 δευτερόλεπτο, 0.1 λεπτά και 0.1 ώρες.
Οι παλμοί στην έξοδο έχουν σχεδόν 50% duty cycle.

http://acomelectronics.com/GeorgeVita/OpHW/Time360/T360timing.jpg

Χρονισμός εξόδων:
pin7 1 sec: 500 mSec HIGH και 500 mSec LOW
pin6 1/10 min: 3 Sec HIGH και 3 Sec LOW
pin5 1/10 hour: 180 Sec HIGH και 180 Sec LOW

Η εφαρμογή δοκιμάστηκε σε PIC12C509A με το πρόγραμμα time360.hex (http://acomelectronics.com/GeorgeVita/OpHW/Time360/time360.hex)

Αν θέλετε να προσαρμόσετε το πρόγραμμα σε άλλο PIC θα ξεκινήσετε από το παρακάτω αρχείο .asm:

;************************************************* *********************
; File: time360.asm
; Date: 18-FEB-11
; Last: 19-FEB-11
;************************************************* *********************

list p=12c508a, R=DEC
#include <p12c508a.inc>

__CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _LP_OSC

;------------------------------------------------------------------------
Time6 equ 0x09
Time360 equ 0x0A
TMRbuffer equ 0x0C
OUTbuffer equ 0x0D
;------------------------------------------------------------------------
org 0x00
goto Start
;------------------------------------------------------------------------
org 0x10
dt "GeorgeVita - Time counter 360 seconds"
;------------------------------------------------------------------------

Start movlw b'11000011'
option
movlw b'00111000'
tris GPIO

clrf OUTbuffer
clrf GPIO
clrf Time6
clrf Time360

;------------------------------------------------------------------------

Main
loop_00
movfw TMR0
skpz
goto Main
loop_01
decfsz TMR0,W
goto loop_01
tstENB
btfsc GPIO,3
goto Main
toggleT1
movlw b'00000001'
xorwf OUTbuffer,F
movfw OUTbuffer
movwf GPIO
btfsc OUTbuffer,0
goto Main
incrT6
incf Time6,F
movlw .3
xorwf Time6,W
skpz
goto incrT360
toggleT6
clrf Time6
movlw b'00000010'
xorwf OUTbuffer,F
incrT360
incf Time360,F
movlw .180
xorwf Time360,W
skpz
goto Main
toggleT360
clrf Time360
movlw b'00000100'
xorwf OUTbuffer,F
goto Main

;------------------------------------------------------------------------

END



Φιλικά,
Γιώργος

GeorgeVita
14-04-11, 15:42
(Το θέμα μεταφέρθηκε στη Συζήτηση Κυκλωμάτων για να υπάρχει σχολιασμός. Τα παρακάτω "γράφτηκαν" αρχικά στα προσωπικά μηνύματα. Κοινοποιούνται για χρήση από όλους.)


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

Η ακρίβεια είναι όση του κρυστάλλου. Αν ο κρύσταλλος ταλαντώνει στους 32768 ακριβώς θα έχεις στην έξοδο παλμό με συνολική διάρκεια 1sec, 0.1min, 0.1h ακριβώς για πάντα.

Ο κάθε κρύσταλλος χαρακτηρίζεται από τη θερμοκρασιακή του σταθερότητα σε ppm/°C.
Τα 5ppm είναι καλύτερα από τα 100ppm και σημαίνει απόκλιση 5 εκατομμυριοστά (των 32768Hz) για κάθε βαθμό Κελσίου πάνω ή κάτω από τους 23°C (συνήθως). Τα κρύσταλλα όμως "τσουλάνε" και με τις χωρητικότητες που βάζουμε για να ταλαντώσουν. Οι πίστες στην πλακέτα είναι και αυτές "πυκνωτές" όπως και οι είσοδοι στο ολοκληρωμένο. Ενα ακόμη "τσούλημα" γίνεται στην προσπάθεια να μετρήσεις τη συχνότητα ταλάντωσης λόγω φορτίου (αντίσταση, χωρητικότητα) που προστίθεται με το probe μέτρησης...

Πρακτικά ακολουθείς τις οδηγίες του κατασκευαστή κρυστάλλων (μορφή πίστας, τιμές πυκνωτών, παράδειγμα εφαρμογής) και μετράς έμμεσα το αποτέλεσμα δηλαδή τον παλμό που θα σου βγάλει το κύκλωμα (λ.χ. 1Hz). Αν είναι πάλι δύσκολη η μέτρηση κοιτάς το αποτέλεσμα σε βάθος χρόνου. "Ρύθμιση" της συχνότητας γίνεται με αυξομείωση της χωρητικότητας συνήθως του ενός πυκνωτή (βλέπε datasheet κρυστάλλου και μC). Προσωπικά δεν συμπαθώ τη λύση πυκνωτή trimmer γιατί χαλάει με το χρόνο. Είναι καλύτερη η χρήση πυκνωτών NPO/COG μικρής χωρητικότητας.

Με αυτά που περιγράφω παραπάνω με ένα καλό κρύσταλλο πετυχαίνεις ακρίβεια +/- 1 έως 5 λεπτά το χρόνο για θερμοκρασίες +/-20°C από το σημείο ρύθμισης. Αν το σημείο λειτουργίας είναι διαφορετικό (λ.χ. κατάψυξη) ρυθμίζεις όσο το δυνατόν στην "θερμοκρασία λειτουργίας".

Ελπίζω να μη χρειάζεσαι καλύτερη ακρίβεια ...


... Τι εννοείς "Οι πίστες στην πλακέτα είναι και αυτές "πυκνωτές" όπως και οι είσοδοι στο ολοκληρωμένο"; Που μπορώ να βρω datasheet; Τι είναι οι πυκνωτές NPO/COG; Εντάξει είπαμε ... από 1-5 λεπτά τον ΧΡΟΝΟ είναι υπερκαλά!!!!

1. datasheet θα βρεις από εκεί που θα πάρεις τον κρύσταλλο (λ.χ. gr.mouser.com)
2. θα κάνεις το κύκλωμά σου κανονικά και θα αφήσεις χώρο για ένα πυκνωτή smd 1206 ή 0805 δίπλα στον κρύσταλλο.
3. θα μοντάρεις το κύκλωμα βάζοντας τους πυκνωτές που γράφω ή που προτείνει στο datasheet του κρυστάλλου (ακόμη και το datasheet του PIC έχει κωδικούς για κρύσταλλα και γράφει χωρητικότητες).
4. μετράς τη συχνότητα (ή την τελική περίοδο) και αν αποκλίνει κολλάς από κάτω έναν πυκνωτή 2p2 μετά 4π7 μετά 5p6 (πριν αγοράσεις θα δεις ότι αυτοί είναι COG/NPO δηλαδή σταθεροί θερμοκρασιακά). Εφόσον βρεις τι ταιριάζει στο κύκλωμά σου αλλάζεις τον σταθερό πυκνωτή που είναι από πάνω ή τα αφήνεις έτσι με το "calibration".

Φιλικά,
Γιώργος

_ab
15-04-11, 00:56
Κατι ακομα ρε γιωργο....
1)εχω δει σε καποιους κρυσταλλους που στο σασι τους "κελυφος τους",το αγκαλιαζουν με ενα συρματακι που ακουμπα την γειωση εαν θυμαμαι καλα.Αυτο παιζει ρολο?
2)Μπορει να ακουστει χαζο....Εαν λιωσουμε κερι οπως κανουν στα πηνια,θα εχουμε καλυτερα αποτελεσματα? το κερι δρα ως μονωτικο για την θερμοκρασια?
3)βρηκα αυτο εντελως τυχαια... http://www.abracon.com/Resonators/AB38T.pdf και λεει

ABRACON P/N: AB38T Series
Nominal frequency: 32.768kHz
Operating temperature: -10°C to + 60°C (see option)
Storage temperature: -40°C to + 85°C
Turn-over temperature: +25°C ± 5°C
Frequency tolerance: ± 20 ppm max.(see option)
Temperature Coefficient:
Equivalent series resistance: 30 kΩ max.
Shunt capacitance C0:
Load capacitance CL: 12.5 pF typ. (see option)
Motional capacitance C1:
Capacitance ratio:
Quality factor:
Drive level: 1.0 μW max.
Aging @ 25° C first year: ± 3 ppm max. (32.768kHz) and ± 5 ppm max. (others)
Insulation resistance: 500 Mohms min. at 100Vdc ± 15V
-0.034 ± 0.006 ppm/ T²

Ποιο απ'ολα κοιτω?


Ευχαριστω πολυ Παναγιωτης.

GeorgeVita
15-04-11, 09:21
Κατι ακομα ...
Τα μονωτικά "καθυστερούν" τη μεταφορά θερμοκρασίας από το ζεστό στο ψυχρό, δηλαδή αν έχεις κάτι που θα ζεσταθεί/παγώσει για λίγη ώρα θα μειώσεις τις αυξομειώσεις στο εξάρτημά σου.Αν όλη η συσκευή βρεθεί στη ζέστη/κρύο για μεγάλο χρονικό διάστημα το μονωτικό θα φτάσει κάποια στιγμή αυτή τη θερμοκρασία. Λ.χ. ένα κομμάτι Teflon αν το βάλεις στην κατάψυξη δεν θα παγώσει;

Κάτι "τσίχλες" που βλέπεις είναι για να μειωθούν οι κραδασμοί που μπορεί να χαλάσουν τον κρύσταλλο.
Το 3ο συρματάκι είναι γείωση του περιβλήματος, μηχανική στήριξη, ακροδέκτης του εξαρτήματος αν είναι Ceramic Resonator ή κρύσταλλος με ενσωματωμένους πυκνωτές. Πάντα "κατά περίπτωση".

Από τη σειρά που αναφέρεις καλύτερο είναι το : ABT38T-32.768KHz-12-B-1 (12pF, -20...+70°C, +/-10ppm max)
(γενικά οποιοδήποτε σου κάνει)

G

_ab
15-04-11, 10:07
Κάτι "τσίχλες" που βλέπεις είναι για να μειωθούν οι κραδασμοί που μπορεί να χαλάσουν τον κρύσταλλο.
Το 3ο συρματάκι είναι γείωση του περιβλήματος, μηχανική στήριξη, ακροδέκτης του εξαρτήματος αν είναι Ceramic Resonator ή κρύσταλλος με ενσωματωμένους πυκνωτές. Πάντα "κατά περίπτωση".


G
Tσιχλες που λες δεν εχω δει....Δεν ξερω πως ειναι....Σαν Μπλου τακ?
Αυτο δεν τοποθετηται παντα....Ειναι πως να το πω σαν Προαιρετικο και χωρις αυτο δουλευει....Εξυπηρετει σε κατι αν το γειωσεις?Καλυτερη σταθεροτητα παλμων?

Ευχαριστω πολυ

GeorgeVita
15-04-11, 11:30
Εξυπηρετει σε κατι αν το γειωσεις?Καλυτερη σταθεροτητα παλμων?
Αρα είναι γείωση/μηχανική στήριξη του περιβλήματος. Καλύτερα γειωμένο (ή ότι λέει στο datasheet).
G

GeorgeVita
16-04-11, 16:01
Βρήκα και το σχετικά application notes της Microchip:

AN-1288 - Design Practices for Low-Power External Oscillators (http://ww1.microchip.com/downloads/en/AppNotes/01288A.pdf)
TB097 - Interfacing a Micro Crystal MS1V-T1K 32.768 kHz Tuning Fork Crystal to a PIC16F690/SS (http://ww1.microchip.com/downloads/en/AppNotes/91097A.pdf)
AN943 - Practical PICmicro Oscillator Analysis and Design (http://ww1.microchip.com/downloads/en/AppNotes/00943A.pdf)

G

timekeeper
22-04-11, 19:14
Κι ότι έψαχνα κάτι ανάλογο για pic! Να σαι καλά!

GeorgeVita
22-04-11, 19:31
Κι ότι έψαχνα κάτι ανάλογο για pic! Να σαι καλά!
Κύκλωμα "ειδικό για timekeeper"!
G