Elektroda.pl
Elektroda.pl
X
PCBwayPCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Impulsator i 8051

07 Maj 2003 08:58 10767 33
  • Poziom 10  
    Czy ma ktoś gotowy kod do 8051 z wykorzystaniem impulsatora?? Prosiłbym o dwie wersja gdyż są dwie wersje impulsatorów. Bardziej zależy mi na wersji z impulsatorem działającym tak samo jak impulsator w myszcze z PC. Drugą wersję już mam ale jakby ktoś miał super zminimalizowany kod to proszę również o przesłąnie. Z góry wszystki THX
  • PCBwayPCBway
  • Poziom 26  
    Też czegoś takiego poszukuję, jak masz jakiś program to podeślij.

    Było coś o tym w kilku neumerach Ep, raz też w EDW w artykule o cyfrowym regulatorze mocy, ale nigdzie dokładnie nie opisali. Wysłałem list do EDW, żeby przysłali mi program, niestety w związku ze śmiercią pana Z. Raabe trochę im się zamieszanie zrobiło i program gdzieś wcięło.

    Impulsatorów jest lkilka rodzajów, np: z myszy, inny firmy burr-brown bez charakterystycznego cykania i jest jeszcze jakiś cykający z EP (z tunera cyfrowego) taki mam - i teraz próbuję napisać jakiś prog w Bascomie. Może wspólnie jakoś znajdziemy rozwiązanie.

    PS: Zagadaj też z "Kuba_Em", on coś robił chyba z impulsatorem. Tak wogóle to ten post powinien chyba być w dziale - Mikrokontrolery i programowanie, ale mogę się mylić :-))

    Ogólnie mówiąc ja wysłałem już 4 posty (sprawdz: wpisz impulsator w szukaj) i nie dowiedziałem się za bardzo nic ciekawego :-(((



    Tekst dwóch wiadomości został scalony w jedną.
    LEM
  • Poziom 26  
    Może ktoś łaskawie dołączy się do rozmowy ?????????
    Bo to juz będzie 4 nie rozwiązany post na ten temat. Czy nikt z pośród kilku tysięcy grupowiczów nie spotkał się z podobnym problemem ?? :evil: :evil:
  • PCBwayPCBway
  • Poziom 33  
    Może więcej szczegółów co się kryje pod tym Waszym impulsatorem? Piszecie sobie nie wiedzieć o czym i dziwno Wam, że nikt się nie dołącza...
  • Poziom 19  
    Pod tym adresem:
    https://www.elektroda.pl/rtvforum/topic14743.html
    można przeczytać mój post o sposobie zastosowania starego silnika krokowego, w roli impulsatora. Podane tam linki wskazują strony, które opisują ten sposób, a drugi z nich odnosi się do strony, na której podano również program (na AVR) do obsługi impulsatora.
    Oto ten link:
    http://members.iinet.net.au/~richardh/Rotenc.htm

    Pozdrawiam.

    P.S. Korzystajcie z opcji "Szukaj"
  • Poziom 26  
    :arrow: Tdv
    Myślałem, że to raczej mniej/więcej znany element, ale mogłem się mylić :-)

    Jest to taki element który ma ośkę, można sobię nią kręcić w lewo i prawo :) tak jak zwykłym potencjometrem, działa jednak na zasadzie 2 styczników odpowiednio zależnie od prędkości i kierunku obrotu ośką rozłączanych i złączanych. Pracuje w jakimś dziwnym kodzie nie pamiętam jakiego gościa. Masz tu przebieg impulsów w załączniku.

    :arrow: Mirek81

    Dzięki wielkie !! Na pewno skorzystamy, w razie czego zwrócimy się do Ciebie.
  • Specjalista - oświetlenie sceniczne
    chyba raczej Marek81...


    co wy chcecie od impusatorów? potraktujcie to jak dwa zwykłe przyciski z jednym wspulnym wyprowadzeniem, które możemy sobie np: podłaczyć do masy. pozostałe dwa wyjścia możemy podciagnać do plusa. i teraz tak
    mamy te dwa wyjscia niech bedzie A i B ---są tam wzgledem siebie jakies tam przebiegi- jakie?

    powiedzmy że przy obracaniu w każdą ze stron na wyjsciu A pojawia sie nam opadajace zbocze. I teraz uwaga! jesli kręcimy w lewo to na wyjsciu B mamy stan wysoki. Jesli krecimy w prawo to mam y stan niski....
    Cała filozofia!. jak odczytać? wyjscie A do przerwania, a B do jakeigos portu, trzeba tylko odczekac jakiś czas po zgłoszeniu przerwania z odczytywaniem wyjscia B... ale to już chyba wiadome względy...[/b]
  • Poziom 33  
    To tshabyło pisać że chodzi o zwykłe enkodery...
    Impulsator to mnie się kojarzyz trzonkowym impulatorem kinetycznym, w skrócie młotek.
  • Poziom 19  
    Gwoli ścisłości - rozróżniamy dwa rodzaje enkoderów:
    1. Enkoder obrotowy - inne nazwy: Rotary encoder, pulse generator, impulsator. Dostarcza dwa, lub trzy ciągi impusów, na osobnych wyjsciach A, B i C, z czego A i B to n impulsów na obrót (n= 100 - 10 000, w zależności od wykonania), a C to jeden impuls na obrót (służy do synchronizacji pozycji wału). Impulsy na wyjściach A i B są takie same, lecz przesunięte względem siebie o 1/4 okresu. To przesunięcie określa kierunek obrotu wałka impusatora. Np. jeśli wałek kręci się w prawo, to zbocze 0-1 impulsu na wyjsciu A wyprzedza o 1/4 okresu zbocze 0-1 impulsu na wyjściu B. Jeśli kręci się w lewo, to jest odwrotnie. Są specjalne układy, które wykrywają kierunek obrotów i wydają ciągi impulsów na wyjściach tylko "naprzód" i "wstecz".
    2.Enkoder rzeczywisty - inne nazwy: real encoder, (po prostu) encoder, przetwornik kąta. Ma od 14 wzwyż wyjść bitowych, które dostarczają rzeczywistą wartość kąta obrotu wału, nawet do 16 i więcej obrotów. Wartość na wyjściach jest w kodzie gray'a, co pozwala na natychmiastową korekcję błędów. Stosuje się do bardzo precyzyjnych nastaw urządzeń mechanicznych.
    W obu przypadkach, do przetworzenia obrotu na impulsy lub kod, wykorzystuje się głowice optyczne (LED - fototranz.) i tarcze szklane z naniesionym mikrorastrem.
    Oczywiście w urządzeniach audio impulsatory nie muszą być tak precyzyjne i wytrzymałe, więc wykonuje się je na bazie mikrostyków i zębatki.
    No, kończę ten przydługi wykład i pozdrawiam.
  • Poziom 26  
    Dzięki za tak wyczerpujące wykłady, nawet nie wiedziałem, że jest tyle rodzajów, mi chodzi o jakiś najprostszy dostępny w handlu ze stykami :)

    :arrow: Marek81 sorki że przechciłem cię na Mirka81, to było niechcący...
  • Poziom 28  
    jak jusz bedziesz mial jakis kupiony, to napisz jaki to rodzaj

    tez bede pisal w bascomie obsluge impulsatora co ma 3 nogi
    jak sie go kreci w jedna strone, to najperw zwiera jedna noge z masa
    potem dwie
    a potem druga
    na koncu obie wisza w powietrzu (stan spoczynku)
    no to chyba reszte latwo wykombinowac (w tym przypadku moze nie szczegolnym -impulstor alpsa z jakiejs wiezy zlomowanej)
    najlepiej podpiac dwie pod and i do przerwania,
    a potem w zaleznosci od kolejnosci znikania mas z pozostalych dwoch nog
    mozna odczytac w ktora strone sie kreci.
    sposob z irq chyba najpewniejszy, bo 89c nie za szybki jest, a poco tracic czas na sprawdzanie wejsc
    pozdrawiam
  • Poziom 26  
    Mam już kupiony, ten z AVT od tunera stereo, taki mały (jak malutki pot) i nadodatek cyka: cyk - cyk - cyk :-))) wydałem na ten badziew 7,5zł
    Ten imp będzie do wyboru funkcji a kupię jeszcze jakiś porządny (Bourns) do głośności.

    Jak do czegoś ciekawego dojdziesz to możesz się podzielić. Ja muszę szybko zklecić jakiś programatorek AT89C51. Mam już pcb więc to tylko kwestia 1-2 dni i mogę eksperymentować.
  • Poziom 12  
    Mnie uczyli, że to się nazywa enkoder przyrostowy lub absolutny, każdy z nich może (jest) obrotowy. Wymyśliłem krótką procedurkę, która realizuje plan wg. tego co napisał bolek, a którą możnaby było wcisnąć pod TIMER z odpowiednią częstotliwością, 2x większą od tej, którą max. może dostać na wejściu a porty można podpiąć dowolnie. Jeśli to nie starczy to kłaniają się przerwania. Tylko nie wiem, czy nie ma błędów literowych / znakowych bo nie sprawdzałem. Pozdrawiam.
  • Poziom 42  
    BTW gdzie kupić takie gotowe enkodery impulsowe, chodzi mi o mechanike razem z częścią elektroniczną.
  • Poziom 22  
    Dorzucę jeszcze swoje "trzy grosze" do tego co napisał Marek81.
    Ten enkoder z dwoma przesuniętymi w fazie wyjściami tak naprawdę to to samo co enkoder z wyjściem binarnym w kodzie graya. Po prostu dwubitowy kod graya wygląda tak:
    00
    01
    11
    10
    00
    01
    11
    10 itd.
  • Poziom 26  
    :arrow: elektryk

    Są na pewno na Wolumenie - wiem bo sam kupiłem sobie ostatnio kilka po ok 5zł za sztukę, masz do wyboru cykające (jak potencjometry ze sprzętu slim unitry), płynnie poruszające się, różnej wielkości itp. U takich gości co mają z jakiegoś ciężarowego samochodu otwarte tylne drzwi i tam pełno elementów stykowych, Led-ów, LCD itp. Są dość często. Wiem że można też zamówić w AVT, ale mnie bardziej przypadły do gustu te z wolumenu ...
  • Poziom 12  
    witam
    kiedys zrobilem impulsator do przewzmacniacza z optyki i kolka myszki, do wyjsc transoptorow podpialem komparatory bodajze na lm234, i sygnal podalem na 2051. procedura obslugi polegala na sprawdzeniu czy jedna nozka impulsatora (p1.0) byla na masie, i jesli tak to nastepnie po czasie 1ms sprawdzana byla druga (P1.1) i w zaleznosci od jej stanu inkrementowana/dekrementowana jakiejs zmiennej. nastepnie po tym warunku byla petla ktora nie pozwalala wrocic do warunku sprawdzajacego stan impulsatora przez czas kiedy na p1.0 utrzymywalo sie 0. wydaje sie troche zamotane, ale w rzeczywistosci to bylo kilka linijek programu w bascomie. jak znajde zrodla to umieszcze na forum
    pozdrawiam
    karol
  • Poziom 26  
    Jak byś mógł walnąć na forum program lub chociaż sam algorytm (wolałbym prog :) i jakiś chemacik ideowy tego prostego układziku, bo akurat mam zbedną optykę a zasada działania jest chyba podobna do tego stykowego impulsatorka więc do niego też się przyda. Co to był za przedwzmacniacz ?
  • Poziom 12  
    Aby zrozumieć działanie impulsatora dziłającego w kodzie Gray'a przedstawiam fragment mojej pracy dyplomowej.


    Impulsator jest elementem mechanicznym, który wysyła impulsy przesu-nięte o 90° na 2 liniach (L1, L2) podczas kręcenia jego osią. Konstrukcja impul-satora umożliwia określenie kierunku kręcenia.

    Przy obsłudze impulsatora wykorzystano właściwość, że podczas zbocza opadającego linii L1 stan linii L2 określa kierunek. Zbocze opadające linii L1 generuje przerwanie INT0, które sprawdza linię L2 w celu określenia kierunku, wyniki przekazuje do programu obsługi.
  • Poziom 12  
    witam
    tu jest schemacik tego impulsatora na optyce od myszki. nie mialem akurat na dysku zadnego programiku do rysowania schematow, wiec narysowalem go... w windowsowskim paincie :))). ale mysle ze sie bedzie mozna polapac o co chodzi. moze dalo by sie go troche uproscic, ale jak go robilem to nie myslalem o tym, bo projekt robilem od razu na plytce uniwersalnej. przy uruchamianiu nalezy najpierw ustawic sobie prad diody LED taki aby na wyjsciu byly impulsy, a nastepnie wzmocnienie oraz progi zalaczania komparatorow. schodzi z tym jakies 15 minut, ale uklad potem dziala bez problemow ( u mnie we wzmacniaczu juz jakies 2 lata) .co do procedury obslugi tego impulsatora, to gdzies zgubilem kody zrodlowe, ale wlasnie robie kolejny przedwzmacniacz, tym razem na tda7318 i rowniez z impulsatrem, wiec za pare dni wrzuce na forum procedure obslugi tego impulsatora.
    ps. najlepiej optyke umiescis w jakims ciemnym pudelku (ja wykorzystalem pudelko od zapalek :) )
    pozdrawiam
    karol
  • Poziom 27  
    Dawno, dawno temu, gdy urodziła się Amiga 500, zobaczyłem co to jest myszka. Wówczas pracowałem ostro na ZX Spectrum+ (dzisiaj też). Pomyślałem sobie, że mi się też przyda myszka, więc zacząłem prząść program. Najpierw zrobiłem ruchomą strzałkę sterowaną klawiszami komputerka, a potem rozebrałem myszkę z amigi i okazało się że jest zrobiona na LM 339! (4 komparatory napięcia), czyli do komputera trzebabyło podłączyć owe 4 przewody, 2 przewody od przycisków i zasilanie do lm339.

    Po kilku dniach zmagań z ulepszaniem odczytu danych z lm 339 (też dwubitowy kod Graya) i doszedłem do maksymalnego wykożystania tegoż kodu:

    Każda zmiana kodu w kierunku zgodnym z ostatnim odczytanym powodowała zmianę jednego z liczników (softwarowych - pozycja kursora na ekranie)

    Jedna zmiana w kierunku wstecznym od ostatniej odczytanej nie powodowała nic

    dwie zmiany w kierunku wstecznym zmieniała na stałe kierunek ruchu kursora.

    Programik chodził niespełna 1M instrukcji na sekundę, odczytywanie kodu z myszy było w pętli, a zmiana pozycji kursora na ekranie występowała na przerwaniach chyba 10 razy na sekundę. Przy szybkim ruchu myszą program już nie wyrabiał.

    Mozna to zrobic prosciej: jeden z sygnałów podłączyć do wejścia INTx, to przerwanie nastawić żeby reagowało na zbocze, a w obsłudze przerwania odczytanie drugiego sygnału można przyjąć tak: stan 1 to ruch gałą w prawo, a stan 0 - w lewo.

    Ten ostatni sposób jest bardzo wrażliwy na niestabilność sygnałów wejściowych, jeśli wyjście z komparatora napięcia z optyki niema dorego układu schmitta, to nastawienie gały na 'progu' spowoduje wieczne podawanie przerwań! (takim szajsem jest właśnie lm339 i z nim długo walczyłem, dopuki nie dodałem martwego odczytu, czyli cyfrowej histerezy)

    czyli tak: jeden sygnał jest podłączony do INT0, a drugi do p1.7

    obsługa przerwania:

    push psw ;+ inne używane rejestry, to samo w pop ale odwrotnie
    mov c,p1.7
    mov stan,#0 ; zaznaczenie że była zmiana na impulsatorze
    jc wprawo
    [tutaj procedurka zmniejszająca jakiś licznik] ; ruch gałą w lewo
    koniec:
    pop psw
    reti
    wprawo:
    [tutaj procedurka zwiększająca jakiś licznik]; ruch gałą w prawo
    sjmp koniec

    teraz trzeba co jakiś czas sprawdzić czy licznik się zmienił:

    mov a,stan
    mov stan,#255 ; zaznaczenie że odczytano stan
    jnz bezzmian
    [tutaj np. wysłanie nowego licznika na LCD, albo cośtam]
    bezzmian:
    [dalszy ciąg programu albo RET]

    Program jest naprawdę bardzo prosty co wiąże się z marnotrawstwem impulsów: co czwarta zmiana kodu z impulsatora powoduje reakcję.

    Ale od czegoś trzeba zacząć! Może jest tu zdolny programista, który wykożysta każdą zmianę kodu graya do zmiany licznika?
  • Poziom 27  
    Dzisiaj mnie natchnęło do napisania oprogramowania na '51 do obsługi impulsatora pracującego w kodzie Graya. Obsługuje on każdą zmianę kodu, pomijając cofnięcie o jedną pozycję, co zapobiega powstawaniu serii niekontrolowanych zmian licznika (stan licznika jest zmieniany poprzez kręcenie gałą impulsatora). Program jest przetestowany i działa w 100%.

    Nie napisałem tego specjalnie dla forumowiczów, poprostu sam potrzebowałem to do radia; a skoro w postach już pojawił się takowy temat i nie było zbyt wielu praktycznych rozwiązań, postanowiłem się podzielić :)

    Tak naprawdę to nie jest kod Graya tylko Johnsona pseudopierścieniowy, chociaż przy dwuch bitach można to nazwać kodem Graya
  • Poziom 13  
    Witam.
    Skoro tak rzucacie swoje rozwiązania to dorzucę moje. Jest to procedurka
    napisana w C obsługująca impulsator frimy Piher (ten sam którysprzedaje EP) podłączony do 51. Kręcąc osią impulsatora inkrementujemy lub dekremetujemy wartość licznika który jest wyświetlany na LCD. Procedura ta nie jest pozbawiona wad. Pierwsza to niedokładne odczytywanie kierunku obrotu osi impulsatora a dokładniej nie odczytywanie każdego obrotu ("cyknięcia"). Druga wada to nadmierne obciążenie procesora procedurą obsługi impulsatora. Uważam iż pierwsza wada spowodowana jest przez nadmiernie drgania styków. Próbowałem już stosować układy całkujące o różnych stałych czasowych lecz i to nie pomogło. Procedura umieszczona w załączniku zawiera pozostałości procedury LCD można je usunąć.
    Pozdrawiam.
    Andrzej
  • Poziom 20  
    Czasem można dostać stare (i wielkie) enkodery na Wolumenie. Widziałem i te z przesunięciem fazy AB i z kodem Gray'a. Sprzedają je tacy co przywożą złom od Niemców.
  • Poziom 26  
    Witam, a czy ktoś już może opracował dobrą procedurkę lub chociaż algorytm, który by dekodował co do pojedynczego skoku ośki impulsatora, napisałem sobie w bascomie dekoder ale czasami potrafi się zgubić i nie reaguje na pojedynczy skok tylko na pełny obrót. Myslę że nie obędzie się bez zastosowania przerwań .. szczególnie w przypadku wolnych miktokontrolerów typu '51 :? Z

    własnych obserwacji zauwazyłem też że chyba nie da się podłączyć impulsatora czysto do mikrokontrolera z powodu odbić styków - można to co prawda elyminować programowo przez wprowadzenia opóźnień ale taka metoda zmniejsza szybkość dekodowania i tym samym trzeba się bardziej "nakręcić" żeby uzyskać zmianę warości jakieś zmiennej o potrzebną wartość. Muszę przeprowadzić próby z jakimiś bramkami Shmitta i niewielką stałą czasową RC, mozę to pomoże...