Sari la conținut

Afisare timp dintre 2 impulsuri


ata

Postări Recomandate

Timpul dintre doua impulsuri este asazisul tOFF. Daca factorul de umplere e 50% atunci tOFF = 1 / T, deci jumatate de perioada. Asa este mai simplu. Daca e variabil, atunci se complica solutia problemei:

tOFF = T - (PWM/100)*T (1)

 

Pai sa o luam metodic:

 

1. Iti alegi un uC pe 8bit, PIC sau AVR Atmel.

 

2. Impulsurile astea sunt generate de uC?

a. Daca da, cu ce frecventa?

b. Daca nu, atunci va trebui sa creezi o parte de cod care sa masoare frecventa.

 

3. Dupa ce aplici pasul 2a sau 2b, va trebui sa:

a. daca cunosti frecventa generata de uC atunci creezi un semnal PWM unde stabilesti factorul de umplere. E mai simplu asa, dupa aceea aplici formula (1) de mai sus, stiind ca T = 1/ f.

b. partea cea mai grea, dupa ce ai masurat frecventa, e sa masori factorul de umplere a trenului de impulsuri care vine la microcontroler. Asta, din pacate, nu am facut niciodata.

 

Sarbatori fericite

Editat de prog
Link spre comentariu
Distribuie pe alte site-uri

iti spun pentur AVR (la pic e cam la fel cu mici diferente)

1. aduci impulsurile la orice pin la microcontroller, si faci enable in pin change interrupt (intrerupere la scchimbarea starii unui pin) - sau la un pin de intrerupere dedicat

 

2. iti setezi un timer sa ruleze in mode counter fara intrerupere (un timer de 16 biti) iti alegi ca sursa de clock, clock-ul intern divizat cu un factor ales in functie de durata intre impulsuri (cam banuiesti dinainte ce durata o sa ai intre doua pulsuri)

 

3. in rutina de intrerupere pentru pinul ales:

- cand pinul genereaza o intrerupere detectezi daca e 0 sau 1 (adica a fost un front crescator sau nu) daca e frontul cum vrei tu sa masori, resetezi timerul, si pui un flag ca e o masurare in curs.

- la urmatoarea data cand pinul ala genereaza o intrerupere te uiti daca frontul e crescator/cazator si testezi daca e o masurare in curs, daca e o masurare citesi contunutul timerul, care-ti va da numarul de impulsuri de ceas (inmultite cu un factorul de divizare in caz ca ai folosit prescalerul) - stiind perioada unui impuls de ceas poti calcula timpul (imultindu-le)- inmultind "numarul din counter" cu "factorul de divizare din prescaler" si cu "perioada de ceas" obtii timpul.

 

toata chestia asta nu e mai mult de 20 de linii de cod C

RR

 

PS

Sau folosesti Arduino care are o functie (paraca se cheama milis() ) care ui intoarce un timestamp in milisecunde cand o chemi. Daca chemi functia la fiecare aparitie a unui impuls si faci diferenta intre timestamps o sa ai timpul (in milisecunde) dintre cele doua evenimente.

Editat de roadrunner
Link spre comentariu
Distribuie pe alte site-uri

Tot respectul pentru promptitudine.

Sunt incepator in a face programe dar stiu destule despre montaje electronice.

Sunt dator cu completarea datelor problemei-

Am punctul A fix exterior

Am punctul B fix pe o piesa care se roteste cu diferite viteze

Am Punctul C generat de -A-,cand -B- ajunge in dreptul lui -A-,

si este dependent de viteza de rotatie a lui -B-.

Punctul -C- poate avea o intarziere incepand de la -0- ms.

Aceasta vreau sa i-mi fie afisata.

 

Am un turometru facut cu Pic 16f628A si lcd 16*2 si un montaj

care i-mi realizeaza punctul -C-, cu intarzierile de rigoare.

Ar fi bine daca s-ar putea afisa intarzierea pe acelas display cu turometru.

 

Sunt prezent cu alte lamuriri care probabil i-mi scapa acum.

Multumesc.

 

Atasez si un desen.

post-12180-025689600 1325157838_thumb.jpg

Editat de ata
Link spre comentariu
Distribuie pe alte site-uri

punctul C se misca si el sau e fix?

daca e fix (si stii unghiul) nu mai e nevoie decat sa masori turatia (perioada) semnalului in punctul A.

daca cunosti turatia, respectiv viteza unghiulara, poti calcula timpul necesar ca piesa rotativa sa parcurga unghiul C.

ce e treaba asta ca mie-mi suna a aprindere electronica sau tester auto?

RR

Link spre comentariu
Distribuie pe alte site-uri

C nu este fix.

Punctul -C- poate avea o intarziere fata de punctu-B- incepand de la -0- ms.

Se apropie sau se departeaza de -B- in functie de turatie.

Cu cat creste turatia se apropie, 0 ms si cu cat scade turatia se departeaza, 5-7-10 ms.

Editat de ata
Link spre comentariu
Distribuie pe alte site-uri

Dupa ce am aprofundat proiectul pe care vroiam sa il fac am observat ca nu este realizabil, are multe variabile de la motor la motor, nu mai intru in amanunte.

 

Toate cele bune si un an nou fericit.

Link spre comentariu
Distribuie pe alte site-uri

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.

ATENTIE !!! Functionarea Tehnium Azi depinde de afisarea de reclame.

Pentru a putea accesa in continuoare site-ul web www.tehnium-azi.ro, va rugam sa dezactivati extensia ad block din browser-ul web al vostru. Dupa ce ati dezactivat extensia ad block din browser dati clic pe butonul de mai jos.

Multumim.

Apasa acest buton dupa dezactivarea extensiei Adblock