Sari la conținut
ELFORUM - Forumul electronistilor

Lucreaza cineva cu FLOWCODE ?


bercioiu

Postări Recomandate

Salutare 

 

 Sunt curios daca cineva a incercat sa foloseasca TIMER1 pentru masurarea lungimii unui impuls, folosind functia Gate control, disponibila in PIC16F887.  Aceasta  functie ar fi foarte utila in cazul unui senzor pentru masurarea distantei cu ultrasunete (HC-SR04). Eu am incercat cateva teste si am constatat, simuland in Real Pic Simulator, ca TIMER1 numara indiferent daca Gate este activata sau nu. 

 Am gasit pe forumul Flowcode un program pentru HC-SR04, dar ei nu folosesc Gate control si astfel eroarea de masurare este ceva mai mare pentru ca intervin cateva cicluri masina necesare programului sa execute anumite instructiuni. (https://www.matrixtsl.com/mmforums/viewtopic.php?f=26&t=10694&hilit=tmr1+pulse)

 
Link spre comentariu

Pentru masurarea distantei cu HC-SR04 nu se determina lungimea unui impuls,se masoara  durata de intoarcere a undei ultrasonice din momentul in care s-a dat un trigger.In simularea facuta de tine, ce sursa era setata pentru gate, din cele  posibile(timer 1 gate pin,timer 0 overflow, comparator outputs) ? Bitul TMR1GE(timer 1 gate enable) din registrul de control al timerului 1, era 1?Poarta era in mod toogle sau single puls?

Link spre comentariu

Sunt si eu interesat de realizarea acestui proiect insa la simulare imi da eroare din cauza ca nu stiu cum sa foloseste butonul ECHO. La simulare cand il apas nu face nimic.

Link spre comentariu

@aureliu67, in simularea din flowcode nu functioneaza pentru ca timer 1 nu poate sa contorizeze la viteza reala, in plus nici tu nu poti sa actionezi butonul cateva milisecunde.Viteza undei ultrasonice este egala cu aproximativ 340 m/s si este influentata de temperatura.Acel buton este pus ca sa simuleze faptul ca s-a detectat ecoul undei emise in momentul cand s-a dat trigger de 10 us.Daca vrei o simulare mai apropiata de realitate, o poti face in Proteus.Pe pinul de echo legi iesirea unui generator de semnal cu fregventa de ordinul sutelor de Hz si semnal dreptunghiular cu amplitudinea de 5V.

Link spre comentariu

Pentru masurarea distantei cu HC-SR04 nu se determina lungimea unui impuls,se masoara  durata de intoarcere a undei ultrasonice din momentul in care s-a dat un trigger.In simularea facuta de tine, ce sursa era setata pentru gate, din cele  posibile(timer 1 gate pin,timer 0 overflow, comparator outputs) ? Bitul TMR1GE(timer 1 gate enable) din registrul de control al timerului 1, era 1?Poarta era in mod toogle sau single puls?

Din ce am inteles eu se masoara durata impulsului pe pinul Echo, care este proportionala cu distanta. Iata un extras din datasheet: If a 10μs width trigger pulse is sent to the signal pin, the Ultrasonic module will output eight 40kHz ultrasonic signal and detect the echo back. The measured distance is proportional to the echo pulse width and can be calculated by the formula above. If no obstacle is detected, the output pin will give a 38ms high level signal.  In fine.... pana ne decidem ce masuram sa vedem cum masuram. 

Ca sursa am selectat  T1G pin, T1GSS (Timer1 Gate Source Select bit din registrul CM2CON1 ) = 1 . Indiferent cum am setat bitul TMR1GE, Timer 1 inceremnta. Pic 16F887 nu are modul togle sau single pulse.

Link spre comentariu

Logic ar fi sa masoare timpul intre lansarea semnalului si receptionarea ecoului lui .  10μs este durata impulsului de generare a semnalului sonor (este mereu acelasi) care este lansat spre obstacole pentru a masura timpul de intoarcere a ecoului inapoi. Distanta se calculeaza impartind timpul obtinut la 2 (dus-intors) si inmultind rezultatul cu viteza sunetului. Astfel vad eu lucrurile, poate gresesc

Editat de aureliu67
Link spre comentariu

Corect... exista si poze. Proaspat extrasa din datasheet.

Ups... acum am reusit sa atasez si poza. Eu sunt de parere ca mai bine gandim cum masuram un impuls folosind TIMER1 si functia Gate control cu PIC16f887. Acesta este primul pas, dupa care vedem ce masuram. Aplicatiile pot fi multe, nu doar senzor cu ultrasunete. 

post-221141-0-30650200-1457560402_thumb.jpg

Link spre comentariu
  • 2 săptămâni mai târziu...

Buna ziua!

 

   Saptamana asta m-am tot "jucat" cu Flowcode ca sa-mi fac un termometru pentru masina. Am fost foarte incantat de rezultatele rapide pa care le-am obtinut in simulari, dar cand am facut montajul pe breadboard ... dezamagire totala!! Am atasat o arhiva in care se afla cam tot cea am lucrat eu pana acum.

   Imi poate spune cineva unde este hiba??  Multumesc!

 

Termo.rar

Link spre comentariu

Ar putea fi asta o problema?

Ce-am facut in flowcode e OK? Nu de alta, dar e primul program pe care il fac si ma gandesc ca ar fi unele probleme in setari sau altceva!

Mai exact ce probleme ai ?

Imi apare doar partea de introducere si atat pe display.

Link spre comentariu

La cat este setat oscilatorul intern ?

In proteus ..dublu click pe 16f690 si la "procesor clock frequency" ce valoare ai ? Schimba la 32 Khz si vezi daca se comporta ca in realitate.

Incearca sa compileze fara watch dog timer si vezi daca merge asha.

Editat de djvas
Link spre comentariu

Daca era de la oscilator nu mai pornea programul deloc, vedeai pe ecran doar patratele. Dezactiveaza WDT ca iti reseteaza picul si de asta apare doar partea de introducere.  Ruleaza programul pana la un punct dupa care face reset si o ia de la capat.

LE: Cred ca oscilatorul trebuie INTERNAL NO CLOCK OUT.

Editat de mikella
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