Sari la conținut
ELFORUM - Forumul electronistilor

Mica automatizare


Mihai85

Postări Recomandate

Acum 2 ore, Mihai85 a spus:

Ultima cifra mai oscileaza, pentru ca nu mai pot introduce delay().

 

Poti incerca delay fara delay().
Ceva de genul:
 

long prev_millis=0;

#define read_interval 100
int V1=0,V2=0, cate_citiri=0;


if(millis()-prev_millis>read_interval)	// citesc la fiecare 100ms
{
	V1+=analogRead(1);
	V2+=analogRead(2);
	if(++cate_citiri==10)		// afisez la 1sec
	{
         V1=V1/10;			// media celor 10 citiri
         V2=V2/10;
	     // calcul temp. si afisare		
         V1=0;
         V2=0;
	 cate_citiri=0;
	}

	prev_millis=millis;
}

 

Editat de Vizitator
Link spre comentariu
  • Răspunsuri 18
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Mihai85

    9

  • nico_2010

    3

  • Bandi Szasz

    2

  • Elison

    1

Top autori în acest subiect

Imagini postate

Pentru a revenii la zero unde ai acel "if(flag)" si calculezi "RPM" salveaza intr-o variabila si millis(), mai apoi dupa acel "if" mai pui un "if" unde verifici cat timp a trecut de la ultima calculare ( cand flag a fost 1), iar daca au trecut mai mult de X millis atunci resetezi variabila "RPM" la 0. Ce trebuie sa faci este sa verifici cat timp a trecut de la ultima detectare a magnetului sa iti dai seama cand sa oprit magnetul si asta o faci verificand cat timp a trecut de la ultima detectie iar daca sa zicem au trecut X millisecunde inseamna ca mult mai probabil nu se mai roteste. Timpul il calculezi aproximativ fata de rotatia minima pe care vrei sa o poti detecta. 

Link spre comentariu

Se poate și matematic în sensul ca avem un sistem mecanic la care nu poți fi variații prea bruște ale valorilor și atunci se poate calcula pe baza ultimilor valori citite cit va fi aproximativ urmatoarea valoare. 

La fel și cu intervalul maxim între citirea magnetului. Unui motor nu-i poate varia prea mult viteza în citeva milisecunde/zeci de milisecunde. 

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