Guest MarkyZiP Posted April 10, 2007 Share Posted April 10, 2007 Hello !!! Va propun spre rezolvare urmatoarea problema: - avem 2 encodere care la o rotatie furnizeaza 250 de impulsuri (TTL); - aceste encodere se afla montate pe axul a doua valturi ce sunt actionate de motoare (fiecare valt cu motorul sau); - mai stim ca unul din valturi se invarte ceva mai repede decat celalalt (cu 10 % pana la 60%), viteza valturilor intre 10 rpm si 120 rpm; - Cum se poate masura viteza data de cele 2 encodere si afisa (pe un afisor cu LED-uri) diferenta dintre ele (eventual diferenta data in procente). Cu un singur PIC sa faci doua task-uri presupun ca e o provocare. Eu am incercat cu instructiunile "btfss" sau "btfsc" pentru o perioada de timp dupa care sa afisez dar apar probleme mari mai ales daca se schimba viteza si nu mi se pare ca masurarea ar avea o acuratete prea buna. Va multumesc si va astept cu idei !!! Link to comment
sofian Posted April 10, 2007 Share Posted April 10, 2007 Se poate face simplu asa :iesirile celor doua encodere le pui la intrarea a doua timere (TMR0 si TMR1)si la fiecare secunda citesti valoarea din ele si o afisezi pe display cu leduri Link to comment
Abram Burel Posted April 10, 2007 Share Posted April 10, 2007 O chestie simplificatoare ar fi sa desparti masurarea de calcul si afisare. Adica o perioada (sa zicem pentru simplitate 1 secunda) numeri si o alta perioada calculezi ce trebuie si afisezi.Avand in vedere "generozitatea" numarului de impulsuri oferite de traductori si vitezele de lucru, probabil ca perioada e mult mai mica (de exemplu 10ms), dar suficient de mare pentru a nu avea prea multe griji referitoare la durata calculeleor si afisarii.In conditiile astea, un "interrupt on change" poate fi suficient si merge chiar si pentru mai multe motoare (fiecare cu pinul lui).Totusi, avand in vedere cele circa 30K impulsuri pe secunda (33us), chiar si la un clock de 20KHz e nevoie ca traductorul sa ofere semnal "pur".In conditiile astea, numaratoarea poate avea loc chiar si la 4KHz. Un PIC16F630 ar putea fi suficient (7+1 biti afisaj, 2 intrare), daca te multumesti cu XX% (ceea ce inseamna ca ceasul intern are o "precizie" suficienta). Link to comment
Cristiano Posted April 10, 2007 Share Posted April 10, 2007 Pentru a simplifica software-ul, foloseste modulele CCP (de ex. cu un 18F242, eventual cu prescaler 1:16), in felul asta poti face linistit calculul si afisarea simultan. Alternativ, poti folosi un numarator hardware care sa reduca frecventa pulsurilor (similar cu prescalerul de la modulul CCP). Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now