eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaArduino - zliczanie impulsów
Ilość wypowiedzi w tym wątku: 39

  • 11. Data: 2017-07-07 12:56:43
    Temat: Re: Arduino - zliczanie impulsów
    Od: "Michal M. Lechanski" <m...@d...eu>

    W dniu 07/07/2017 o 11:01, Michal M. Lechanski pisze:

    > Ja po prośbie do doświadczonych bardziej niż ja...

    Panowie, dziękuję bardzo - spróbuję najpierw wyeliminować wpływ opóźnień
    związanych z obsługą LCD.

    Pozdrawiam

    --
    Michał


  • 12. Data: 2017-07-07 12:58:36
    Temat: Re: Arduino - zliczanie impulsów
    Od: Cezar <c...@B...pl.invalid>

    On 07/07/2017 11:53, Michal M. Lechanski wrote:
    > W dniu 07/07/2017 o 11:40, Nifhelm pisze:
    >
    >> Swoją
    >> drogą dziwię się, że przy wolnych obrotach nie zlicza po dwa, trzy i
    >> więcej impulsów na obrót.
    >
    > Taki efekt zaobserwowałem z magnesami i kontaktronem - zliczane były
    > impulsy gdy kontaktron "najeżdzał" nad magnes i gdy się od magnesu
    > oddalał. Czyli licznik zliczał dwa razy więcej impulsów niż było
    > magnesów. Zmniejszenie odległości kontaktronu od magnesu usunęło ten efekt.
    >

    Ale w dalszym ciągu możesz dostać złe dane. Przez odsunięcie magnesów
    skróciłeś długośc impulsów. Musisz zliczać *zbocza* a nie stany.

    c.


  • 13. Data: 2017-07-07 13:00:33
    Temat: Re: Arduino - zliczanie impulsów
    Od: Cezar <c...@B...pl.invalid>

    On 07/07/2017 11:56, Michal M. Lechanski wrote:
    > W dniu 07/07/2017 o 11:01, Michal M. Lechanski pisze:
    >
    >> Ja po prośbie do doświadczonych bardziej niż ja...
    >
    > Panowie, dziękuję bardzo - spróbuję najpierw wyeliminować wpływ opóźnień
    > związanych z obsługą LCD.
    >
    > Pozdrawiam
    >

    to jest (nie) rozwiązanie problemu od dupy strony :-)

    c.


  • 14. Data: 2017-07-07 13:04:01
    Temat: Re: Arduino - zliczanie impulsów
    Od: Nifhelm <pytaj@grupie>

    W dniu 07.07.2017 o 12:53, Michal M. Lechanski pisze:
    > W dniu 07/07/2017 o 11:40, Nifhelm pisze:
    >
    >> Swoją
    >> drogą dziwię się, że przy wolnych obrotach nie zlicza po dwa, trzy i
    >> więcej impulsów na obrót.
    >
    > Taki efekt zaobserwowałem z magnesami i kontaktronem - zliczane były
    > impulsy gdy kontaktron "najeżdzał" nad magnes i gdy się od magnesu
    > oddalał. Czyli licznik zliczał dwa razy więcej impulsów niż było
    > magnesów. Zmniejszenie odległości kontaktronu od magnesu usunęło ten efekt.
    >
    Funkcja loop() wykonuje się ciągle od nowa. Za każdym przejściem
    dokonywane jest sprawdzenie wartości na pinie analogowym i za każdym
    razem gdy wykrywana jest taśma stan jest zwiększany. Przy każdym
    przejściu zapisywane są też dane d wyświetlacza LCD. Efektem jest długi
    czas przejścia pętli oraz to, że jeśli nastąpi dwukrotne sprawdzenie
    wejścia analogowego za jednym przejściem taśmy przed czujnikiem, to
    zliczone zostaną dwa impulsy.
    Po pierwsze zrezygnuj z pomiaru analogowego, bo jest zbyt wolny. Dodaj
    komparator i wynik na wejście cyfrowe.
    Po drugie zrezygnuj z zapisu LCD jeśli nie zmienia się wartość licznika.
    Po trzecie zastosuj wykrywanie przejścia z koła na taśmę, a nie
    wykrywanie taśmy (zmiana sygnału a nie jego stan).
    A najlepiej zastosuj przerwania.
    Pozdrawiam.


  • 15. Data: 2017-07-07 13:42:16
    Temat: Re: Arduino - zliczanie impulsów
    Od: Pcimol <...@...com>

    On 2017-07-07 12:09, Michal M. Lechanski wrote:
    > W dniu 07/07/2017 o 11:05, Zenek Kapelinder pisze:
    >> Kup za 20 zlotych licznik do roweru. Bedzie dzialal i jeszcze bedzie mial bezcenna
    czesc. Bedzie mial ladna obudowe.
    >>
    > Już kupiłem.
    > Nadal jednak próbuję to zrozumieć.

    Do zliczania impulsów najprosciej skonfigurować licznik TCNT1 by zliczał
    z wejścia T1.

    Osobiście jednak trzymam się z dala od kompilatorów typu Arduino, więc
    nie wiem jak to dokładnie się robi w tym czymś kompilatoropodobnym.
    Natomiast w dowolnym C robi się to bez problemu.


  • 16. Data: 2017-07-07 13:45:17
    Temat: Re: Arduino - zliczanie impulsów
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Michal M. Lechanski" napisał w wiadomości grup
    dyskusyjnych:ojnp7k$c2c$1$m...@n...chmurka.net...
    W dniu 07/07/2017 o 11:40, Nifhelm pisze:
    >> Swoją
    >> drogą dziwię się, że przy wolnych obrotach nie zlicza po dwa, trzy
    >> i
    >> więcej impulsów na obrót.

    >Taki efekt zaobserwowałem z magnesami i kontaktronem - zliczane były
    >impulsy gdy kontaktron "najeżdzał" nad magnes i gdy się od magnesu
    >oddalał. Czyli licznik zliczał dwa razy więcej impulsów niż było
    >magnesów. Zmniejszenie odległości kontaktronu od magnesu usunęło ten
    >efekt.

    Tu nam moze program to filtrowac.
    Wylapujemy pierwsze zwarcie, wyswietlamy cos na ekranie, czas mija,
    odczytujemy pin ponownie ... i z powodu minietego czasu drgan juz nie
    ma ..

    J.


  • 17. Data: 2017-07-07 14:03:55
    Temat: Re: Arduino - zliczanie impulsów
    Od: Nifhelm <pytaj@grupie>

    W dniu 07.07.2017 o 13:42, Pcimol pisze:
    > On 2017-07-07 12:09, Michal M. Lechanski wrote:
    >> W dniu 07/07/2017 o 11:05, Zenek Kapelinder pisze:
    >>> Kup za 20 zlotych licznik do roweru. Bedzie dzialal i jeszcze bedzie
    >>> mial bezcenna czesc. Bedzie mial ladna obudowe.
    >>>
    >> Już kupiłem.
    >> Nadal jednak próbuję to zrozumieć.
    >
    > Do zliczania impulsów najprosciej skonfigurować licznik TCNT1 by zliczał
    > z wejścia T1.
    >
    > Osobiście jednak trzymam się z dala od kompilatorów typu Arduino, więc
    > nie wiem jak to dokładnie się robi w tym czymś kompilatoropodobnym.
    > Natomiast w dowolnym C robi się to bez problemu.
    >
    W sumie dość prosto.
    Trzeba podłączyć sygnał do wejścia D2 lub D3 w Arduino, uruchomić
    przerwania zewnętrzne na tym wejściu i napisać procedurę obsługi
    przerwania która będzie zwiększać wartość licznika o 1 o ile od
    poprzedniej zmiany minął określony czas (likwidacja drgań). I sprawa
    załatwiona.
    Pozdrawiam.


  • 18. Data: 2017-07-07 14:18:59
    Temat: Re: Arduino - zliczanie impulsów
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Pcimol" napisał w wiadomości grup
    dyskusyjnych:ojns34$tgg$...@m...internetia.pl...
    On 2017-07-07 12:09, Michal M. Lechanski wrote:
    >Do zliczania impulsów najprosciej skonfigurować licznik TCNT1 by
    >zliczał z wejścia T1.

    Ale wtedy bedzie wszystkie drgania zliczal.

    I trzeba zmienic koncepcje, albo dodac na plytce uklad eliminujacy
    drgania :-)


    Wiec zmieniajac watek ... no nie, tu sie z Piotrem zgodze, ze to zaden
    przyklad, bo o drganiach to w kazdej ksiazce pisza, wiec projektant
    powinien od poczatku dobrze zaprojektowac.

    P.S. te optyczne uklady chyba maja jakas histereze ... wiec zachodzi
    potrzeba rozpoznania bojem czy wystarczajaca.
    Aaa ... tu mamy jakis "analogowy", to histerezy nie ma, a bój sie
    komplikuje :-)

    Summa summarum - moze kolega dobrze zrobil, ze pod DAC podpial, tylko
    teraz trzeba bedzie dobry program napisac :-)


    J.


  • 19. Data: 2017-07-07 17:22:10
    Temat: Re: Arduino - zliczanie impulsów
    Od: Marek <f...@f...com>

    On Fri, 7 Jul 2017 13:42:16 +0200, Pcimol <...@...com> wrote:
    > nie wiem jak to dokładnie się robi w tym czymś kompilatoropodobnym.

    Akurat Arduino to opakowany avr-gcc więcć trudno to nazwać
    kompilatoropodobnym...

    --
    Marek


  • 20. Data: 2017-07-07 22:19:33
    Temat: Re: Arduino - zliczanie impulsów
    Od: s...@g...com

    W dniu piątek, 7 lipca 2017 12:01:02 UTC+2 użytkownik Michal M. Lechanski napisał:
    > Ja po prośbie do doświadczonych bardziej niż ja...
    >
    > Otóż próbuję zliczać obroty koła.
    >
    (...)
    > Z góry dziękuję za jakiekolwiek sugestie.
    >


    Zacząc nalezy od tego że wykrywasz poziom zamiast zmiany stanu.

    Zmien program na dwa sposoby:
    po pierwsze wykrywaj zmiane stanu. Czyli jak czujnik przechodzi ze stanu 0 do 1 i
    odwrotnie to zliczaj te zmiany.
    Po drugie zmien program tak aby szybko ustalał jaki jest stan czujnika.

    Po trzecie musisz pamietac że styki mogą podskakiwać więc musisz to też oprogramować.

    Moja sugestia:
    Korzystaj z kontaktronu o ile tenże kontaktron pozwala na tak szybkie zmierzenie
    stanu.
    W przypadku koła o średnicy 28 cali masz obwód 223cm.
    Przy prędkości 30km/h (8m/sek) to daje około 4 obroty na sekunde. I do tego czas
    styku kontaktronu to pi*oko 1/100 z tej ćwiartki sekundy.

    Musisz upewnic się że ten kontaktron potrafi sie otwoerać i zamykać te 5-10x na
    sekunde.
    Warto to zmierzyć np. przepuszczając przez niego sygnał dzwiekowy i nagrac przez
    karte muzyczna jesli nie masz oscyloskopu.

    Tak zobaczysz czy ten kontaktron po pierwsze potrafi sie tak często rozłączać i
    łączyć oraz jak mocno mu styki podskakują.

    Program napisz tak aby procedura działała na przerwaniach zegarowych. Odczytuj status
    kontaktronu około 500-1000-2000x na sekunde i wynik pomiaru wkładaj do zmiennej jako
    pojedynczy bit i przesuwaj bity w lewo (zwiekszasz wartośc zmiennej) w sytuacji kiedy
    masz w zmiennej odpowiednio wysoką wartość wiesz ze styk jest trwale zwarty.
    Zgodnie z tym ustawiasz sobie wartosci globalnych zmiennej w rodzaju "styk_zwarty".

    Jest jeszcze pare alternatyw ale jak zrobisz powyższe to raczej będzie najprościej o
    ile całośc sie uda (kontaktron nadąży sie zamykać itp.).

    Kolejny krok to zbudowac sobie układ z histerezą i nim wywoływać przerwanie.

strony : 1 . [ 2 ] . 3 . 4


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: