logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[BASCOM][ATTINY2313] licznik obrotów góra/dół

corepride 01 Wrz 2009 18:28 4349 7
REKLAMA
  • #1 6968662
    corepride
    Poziom 12  
    Witam.
    Potrzebuję wykonać układ licznika obrotów wału silnika (poglądowy rysunek
    [BASCOM][ATTINY2313] licznik obrotów góra/dół) . Licznik musi zliczać obroty do przodu i do tyłu. O ile z samym liczeniem w jedną stronę i wyświetleniem wyniku nie mam problemu, o tyle nie wiem jak wykonać sekwencję zmiany kierunku liczenia. Domyślam się że trzeba to zrobić na zasadzie np. magnes przechodzi przez czujnik_1 dwa razy pod rząd - wówczas następuje zmiana kierunku liczenia np. w dół. Tylko jak to zapisać w programie? Pozdrawiam.[/img]
  • REKLAMA
  • #2 6968749
    m.bartczak
    Poziom 16  
    Potrzebujesz czegoś co się nazywa enkoder obrotowy, można go zrobić samemu jeśli chcesz.

    Cała zabawa polega na zadbaniu o to, aby czujniki właczały się w sekwencji:

    ŻADEN <-> LEWY <-> LEWY+PRAWY <-> PRAWY <-> ŻADEN

    W ten sposób w każdym momencie możesz stwierdzić w którym kierunku nastąpiło przejście.

    Najczęściej robi się takie enkodery za pomocą dwóch fotodiod i odpowiednio wykonanej tarczy z nacięciami.

    Przykład: www.societyofrobots.com/sensors_encoder.shtml
  • REKLAMA
  • #3 6969120
    corepride
    Poziom 12  
    W związku z tym że mam dostęp do fabrycznego enkodera, jakie stosuje się w maszynach przemysłowych, poszedłem nieco inną drogą. Posłużyłem się ostatnim programem ze strony Link i skleciłem układ - działa bardzo dobrze. Teraz pytanie - jak przerobić ten program, aby na wyświetlacz wyświetlał ilość obrotów w zależności od tego ile obrotów zrobi enkoder. Na przykład enkoder wykona 100 obrotów i dopiero wówczas na wyświetlaczu pojawi się cyferka 1. Mam nadzieję że jasno się wyraziłem o co mi chodzi :D Dziękuję za wszystkie uwagi i pozdrawiam.

    [
  • REKLAMA
  • #4 6969673
    snow
    Poziom 31  
    Musisz zliczoną ilość impulsów podzielić przez 100 :>
  • #5 6969693
    corepride
    Poziom 12  
    snow napisał:
    Musisz zliczoną ilość impulsów podzielić przez 100 :>



    Tak właśnie myślałem :D Z tym że jak narazie w programowaniu jestem "noga" i muszę mieć wyłożone jak kawa na ławę którą linijkę programu zmienić itd.
  • REKLAMA
  • #6 6970361
    Konto nie istnieje
    Poziom 1  
  • #7 6972738
    corepride
    Poziom 12  
    Cytat:

    Nie, nie wyraziles sie jasno!
    Przyklad na ktorym sie wzorujesz nie odnosi sie do typowego/przemyslowego encodera. To jest jedno.
    Druga sprawa, to rozdzielczosc encodera. Bardzo rzadko stosuje sie encodery o rozdzielczosci 1 (1impuls/1 obr. walu). Niemniej jednak jezeli taki wlasnie (specjalny enc.) masz do dyspozycji i chcesz pomniejszyc pojedyncza rozdzielczosc o wspolczynnik x100 to istotnie, zgodnie z zyczeniem.... nalezaloby dodac w glownym programie,
    (nie w Do.....loop, ale przed wyswietleniem wyniku) dodatkowa linie:

    Encounter = Encounter/100
    co moim zdaniem, nie ma merytorycznego i praktycznego sensu.
    A jakiego wyniku spodziewasz sie po obroceniu walu o 50 obrotow w kierunku przeciwnym? Czy bedziesz znal polozenie walu w odniesieniu do pozycji poczatkowej?

    e marcus


    Witam.
    Żeby trochę usystematyzować:
    - posiadam enkoder 100pulsów/obrót
    - spodziewam się wyniku na wyświetlaczu z rozdzielczością powiedzmy 1/10 obrotu

    Poczyniłem taki krok, że zmienną Encounter zmieniłem jak Single.
    Dodatkowo wstawiłem linijkę Encounter=Encounter/100 poza pętlą Do...Loop według sugestii Kolegi.
    Niestety nadal wyświetlana jest ilość pojedyńczych impulsów z enkodera, tak jakby program nie widział tej linijki.
  • #8 6974093
    Konto nie istnieje
    Poziom 1  
REKLAMA