Sari la conținut
ELFORUM - Forumul electronistilor

Probleme de incepatori


Postări Recomandate

Nici o idee legata de masurarea lungimii pulsurilor?

Intreruperi?PIC-urile genereaza intreruperi cand nivelul semnalului de pe anumiti pini se schimba/cand semnalul la o intrare are un front (programabil).Daca si controllerul tau are asa ceva, la prima schimbare pornesti un timer/counter iar la schimbarea de sens contrar il citesti.Stiind frecventa cu care incrementezi timerul/counterul, calculezi durata pulsului.
Link spre comentariu

Dacă nu merge cu un singur pin, atunci duci acelaşi semnal la doi pini puşi în paralel.Un pin dă intrerupere pe frontul crescător, celălalt, pe frontul căzător. :dans:

Link spre comentariu

Adica ceva de genul?

 

Config Int0 = FallingOn Int0 blabladim mode as integermode = 0do.........loopblabla:if mode = 0 then    Config Int0 = rising    mode = 1else     Config Int0 = falling    mode = 0endifreturn

 

@RoGeorge, da, asa ma gandisem si eu, doar ca la atmega8 am un numar limitat de intreruperi, de care am nevoie, deci pot folosi doar una pentru asa ceva.

Link spre comentariu

Cred ca pana la urma o sa folosesc un counter.Adica la interrupt-ul de rising pornesc counterul si il opresc la interrupt-ul de falling, apoi vad cate incrementari a facut.Ce ziceti, este o idee buna? De incrementat se incrementeaza cu viteza ceasului/prescaler, corect?Edit: Cred ca nu este o idee buna, ca am nevoie de o frecventa externa foarte stabila ca sa am un timer bun.

Link spre comentariu

Ma gandeam asa:Initial sa setez INT0 pe Risingla primul interrupt pornesc T1 si setez INT0 pe fallingCand ajunge in falling pun valoarea lui T1 intr-un buffer.In loop-ul principal la fiecare 500ms-1s calculez valoarea medie a lungimii impulsurilor primite in acest interval.Valoarea medie o inmultesc cu o variabila stocata in EEPROM (un coeficient) care imi da exact cantitatea de fluid trecuta prin acel injector (l/h). Apoi in functie de aceasta valoare si datele furnizate de ABS (viteza) calculez si Consumul.Ca sa previn overflow-ul o sa aleg un prescaler suficient de mare sa nu se ajunga la 65000+, dar suficient de mic sa fie foarte precisa masuratrea.De fapt calculele sunt mult mai complexe, am capacitatea injectorului (420 cmc/minut), presiunea rampei de injectie (5 bari), dar printr-un meniu "learn" vor calcula direct acel parametru.

Link spre comentariu

Nu uita să citeşti despre capture compare, cum ţi-a zis şi ratza.

Capture compare se potriveşte cel mai bine pentru aplicaţia ta, împreună cu reprogramarea frontului de întrerupe, desigur, cum ţi-a zis Liviu M.

Link spre comentariu

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
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări