Sari la conținut
ELFORUM - Forumul electronistilor

Probleme de incepatori


ole

Postări Recomandate

Nici o idee legata de masurarea lungimii pulsurilor?Ca frecventa maxima nu va trece de 100-150Hz.O idee ar fi sa pun un condensator si o rezistenta de valori cunoscute (in functie de lungimea pulsului condensatorul se incarca mai putin sau mai mult), dar nu va putea fi o masuratoare prea precisa.

Link spre comentariu

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

La PIC (pe-asta il stiu) sunt doua posibilitati - cu intrerupere la schimbare de stare logica si cu intrerupere pe front. In ultimul caz frontul (crescator, cazator) se reprogrameaza dupa fiecare intrerupere.

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

Am facut ceva de genul, functioneaza oarecum. Acum trebuie totusi sa sacrific un port ca sa rulez un timer. pe el (sa am o baza de timp in functie de care sa calculezi width-ul pulsului).

Link spre comentariu

Nu poti porni un timer fara sa fie conectat la port? Parca nu-mi vine sa cred. La PIC-uri sigur merg si independent (timerele fata de porturi).

Link spre comentariu

Nu stiu sigur daca pot porni timer1 spre exemplu fara sa am utilizat pinul T!Voi mai incerca, pana acum incercarile au cam esuat. Trebuie sa imi scriu programul in pseudocod ca altfel ma incurc in variabile :d

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

Poţi porni timerul şi fără a fi conectat la port, nu au legătură. Pentru ce vrei tu să faci ai nevoie de input capture, care e explicat detaliat în datasheet.

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

Puteti sa imi dati un exemplu de folosire a "capture"(pinul ICP1)? ca in datasheet este exemplu in C++.Nici help-ul de la bascom nu ma ajuta foarte tare :(Multumesc anticipat.

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