Skocz do zawartości

Problem z tcrt5000, prośba o pomoc


SOYER

Pomocna odpowiedź

Cześć, popełniłem taki czujnik na wodomierzu:

Podłączyłem do mojego starego arduino mega.

Wszystko działa ok, prawie...

Raz na promil zatrzymań kółeczka wodomierza, zatrzymuje się w takim miejscu, na granicy odczytu, że czujnik nabija impulsy z częstotliwością deboucingu. 

Pytanie jak to obejść? Dołożyć drugi czujnik i porównywać odczyty jak w enkoderze? Czyli flaga od pierwszego czujnika, czekamy na flagę od drugiego, dajemy impuls i resetujemy flagi?

Czy może jeszcze inaczej?

Wszelkie dziwne pomysły mile widziane. 

 

Link do komentarza
Share on other sites

1 minutę temu, Harnas napisał:

Najprostsza opcja jaka mi przychodzi do głowy to dodanie histerezy. Ten czujnik ma w sobie Op Amp jako komparator, więc wystarczy dołożyć jeden rezystor między wyjściem a wejściem nieodwracającym.

Przybliż pomysł bo nie łapię, nadmieniam, że teraz sygnał czerpię z pinu z wyjściem cyfrowym nie analogowym.

  • Lubię! 1
Link do komentarza
Share on other sites

3 minuty temu, Harnas napisał:

Najprostsza opcja jaka mi przychodzi do głowy to dodanie histerezy. Ten czujnik ma w sobie Op Amp jako komparator, więc wystarczy dołożyć jeden rezystor między wyjściem a wejściem nieodwracającym.

Chodzi o to, żeby różnica między Low i High była powyżej pewnej ustawionej granicy, wtedy nie będzie wyłapywać małych przeskoków między stanami?

  • Lubię! 1
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

9 godzin temu, farmaceuta napisał:

Ja bym odkręcił że trzy krany, odczytał max odstępy czasu między stanami i tak napisał kod żeby nic co ma większą częstotliwość nie nabijało impulsu...

No to wyobraź sobie, że ten odstęp czasu to np. 10s, zakładając, że zmieniam kółeczko na to nie liczące litrów tylko np.10l. Jest noc, wieczorem kółko zatrzymało się w "złym" miejscu, przez całą noc nie ma poboru i kółko stoi. Zadanie matematyczne ile litrów naliczy czujnik, pamiętając, że impuls to 10L.

Odpada.

Link do komentarza
Share on other sites

14 godzin temu, Harnas napisał:

Najprostsza opcja jaka mi przychodzi do głowy to dodanie histerezy. Ten czujnik ma w sobie Op Amp jako komparator, więc wystarczy dołożyć jeden rezystor między wyjściem a wejściem nieodwracającym.

Zgadzam się, szersza pętla histerezy powinna pomóc (trzeba równolegle dolutować rezystor w dodatnim sprżeżeniu zwrotnym opamp'a lub komparatora).

Pozdrawiam

Link do komentarza
Share on other sites

1 godzinę temu, Treker napisał:

A w tym przypadku nie pomoże zwyczajne zmniejszenie czułości czujnika - tak, aby sygnalizował, gdy ma przed sobą 100% czarnego pola?

Ustawiłem na minimalnym poziomie na którym wyłapuje "lusterko". Bez efektu.

14 minut temu, FlyingDutch napisał:

Zgadzam się, szersza pętla histerezy powinna pomóc (trzeba równolegle dolutować rezystor w dodatnim sprżeżeniu zwrotnym opamp'a lub komparatora).

Pozdrawiam

Elektronik ze mnie taki jak programista, ale postaram się dolutować. Sprawdzę jaki tam jest kompatator( nie jest czasem tam podwójny?)i do których nóżek go przylutować.

1MOm?

 

Link do komentarza
Share on other sites

5 godzin temu, SOYER napisał:

Odpada.

A mi się podoba, tylko program trzeba napisać porządnie. Coś w stylu:

static time_t ostatni_impuls;
if (przyszedł_impuls) {
  if (millis() - ostatni_impuls > MIN_MILLIS) {
    dodaj_impuls();
  }
  ostatni_impuls = millis();
}

czy jakoś tak...

Pomysł z dwoma transoptorami też mi się podoba. Używałem tych transoptorków bez żadnej elektroniki (dwóch rezystorów nie liczę) i zwykłym wejściem analogowym w Arduino czy ESP8266 mierzyłem różnicę między odczytem przy zapalonej i zgaszonej diodzie. Działa całkiem dobrze (zarówno czujniki w robocie, jak i np. wyłącznik do lampki reagujący na zbliżenie dłoni). 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

50 minut temu, ethanak napisał:

Coś w stylu

Jeśli przyszedł impuls i czas od ostatniego impulsu jest większy od minimalnego ustawionego czasu(?), to wtedy inkrementuj zmienną.

Nie łapię jak to ma działać, bo to mi wygląda na zwykły debouncing, a to nie eliminuje problemu naliczania imulsów kiedy woda nie leci, a kółeczko zatrzymało się w "najgorszym" miejscu.

 

Link do komentarza
Share on other sites

Patrzyłeś na linkowany wpis? Niema znaczenia jaki komparator tam siedzi, może być nawet LM358, dajesz rezystor pomiędzy wyjście a wejście dodatnie, możesz zacząć od 1MΩ.

21 minut temu, SOYER napisał:

Nie łapię jak to ma działać, bo to mi wygląda na zwykły debouncing

Bo @ethanak podał przykład który można dopracować tak aby działało to z twoim licznikiem (czyli podał wędkę nie rybę), poza tym jest tutaj spory artykuł o maszynie stanów, również napisany przez @ethanaka. No i jest (chyba) w arduino biblioteka debouncing, dlaczego nie skorzystasz? 

Edytowano przez _LM_
  • Lubię! 1
Link do komentarza
Share on other sites

19 minut temu, SOYER napisał:

to nie eliminuje problemu naliczania imulsów kiedy woda nie leci, a kółeczko zatrzymało się w "najgorszym" miejscu.

Jak nie eliminuje? Liczony jest czas od ostatniego impulsu, czyli jak przyjdzie za wcześnie to co prawda inkrementacji licznika nie będzie, ale czas zostanie zapamiętany.

 

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.