Vizitator MarkyZiP Postat Aprilie 10, 2007 Partajează Postat Aprilie 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 spre comentariu
sofian Postat Aprilie 10, 2007 Partajează Postat Aprilie 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 spre comentariu
Abram Burel Postat Aprilie 10, 2007 Partajează Postat Aprilie 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 spre comentariu
Cristiano Postat Aprilie 10, 2007 Partajează Postat Aprilie 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 spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum