Skocz do zawartości

Jak dobrze zliczyć ilość stanów niskich?


Dzonzi

Pomocna odpowiedź

1 minutę temu, Dzonzi napisał:

teraz jeszcze gorzej. Nawet jak zmieniłem te dwa typy zmiennych to pokazywało ciągle 0.

może przez kontrolę typów, daj wszystko na int.

Link do komentarza
Share on other sites

@atMegaTona aż takie oblatany nie jestem, volatile można dać dla tablicy?

7 minut temu, atMegaTona napisał:

zastosowanie przy tym średniej z kilku wyników np. 10 dałoby

Rozumiem że robimy tablicę-bufor gdzie kolejkujemy kilka ostatnich pomiarów. Czy dostawienie volatile załatwi sprawę?

Jaki w ogóle jest koszt volatile w C/C++, kiedyś zgłębiałem temat w Javie ale to inna sprawa.

Link do komentarza
Share on other sites

1 minutę temu, Gieneq napisał:

@atMegaTona aż takie oblatany nie jestem, volatile można dać dla tablicy?

można dać volatile gdzie się chce ale będzie ciężka. Koszt jest chyba maksymalny bo jej nie optymalizuje wcale więc lepiej przepisywać do zmiennych lokalnych i dopiero zmienne lokalne tablicować jeśli potrzeba. Dla średniej nie jest potrzebna tablica, wystarczy jedna zmienna dodatkowa nadpisywana co pomiar - taka średnia krocząca do np.10 kroków a później od nowa (dsp low pass filter 😉 )  - oszczędność pamięci. 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Optymalizacja nie jest problemem. Mam wystarczająco dużo pamięci i mocy obliczeniowej. Problem jest to, że program podaje złe wyniki pomiaru - są o wiele za duże i nie wiem czym to może być spowodowane

Link do komentarza
Share on other sites

A jak te rpm liczysz? *60 czy po swojemu? 50Hz to 3000rpm  więc jeśli masz 50 przerwań na sekundę to rpm wynosi 3000 bo 50*60=3000. rpm to rotations per minut, mierzysz co 1000ms czyli co sekundę więc aby obliczyć rpm musisz pomnożyć przez 60 bo w minucie jest 60 sekund. Jako, że w każdej sekundzie może być 1 mniej lub 1 więcej (zależy jak złapie i jak szybko się kręci) , dobrze jest tu wyliczyć średnią dodatkowo. Na prawdę nie wiem w czym problem.

Link do komentarza
Share on other sites

Źle, źle, źle jak mawiają arduinowcy. Czytasz zmienną co 1s więc *60. Proponował bym nawet czytać tą zmienną co 100ms i co 1s drugować uśredniony wynik.

Link do komentarza
Share on other sites

Dobra. Teraz mi pokazuje 1176 lub 1200 RPM podczas gdy prędkość tego wentylatora odczytana przez program SpeedFan jest 1185, 1191, 1166... tak się zmieniają te wartości. 

Link do komentarza
Share on other sites

czyli dobrze, lepiej przy takim podejściu nie będzie. To normalne, że się zmieniają. Jak chcesz na sztywno to trzeba doprecyzować sterowanie silnikiem i odfiltrować odczyt. Czym ten silnik sterujesz?

Link do komentarza
Share on other sites

No właśnie nie mam żadnego regulatora ;/ Podłączyłem na sztywno do płyty głównej. Będę musiał iść i wypróbować na wale jakiegoś silnika elektrycznego. Tylko mam jeszcze taki problem, że wał silnika jest przecież z metalu, a metal odbija IR ;/

Link do komentarza
Share on other sites

13 minut temu, Dzonzi napisał:

że wał silnika jest przecież z metalu, a metal odbija IR ;/

Do wału przymocuj jakiś talerzyk, niewiem... nakrętkę od butelki i naklej kawałek białego/czarnego czegoś. Tak by na jednej stronie czujnik wystawiał 0 a na drugiej 1. Strony nie muszą być równe, byle było wyraźne przejście z jednego na drugi.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.