Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

jeszcze raz impulsator, enkoder itp.

JJMafia
-
-
Posty:6
Rejestracja:3 cze 2005, o 09:56
Lokalizacja:Lublin
jeszcze raz impulsator, enkoder itp.

Postautor: JJMafia » 30 lis 2006, o 23:04

Witka !
Po długich i mozolnych próbach z impulsatorem (no name, podobny do tego taniego z oferty AVT) udało mi się go odpalić :573: .
Wszystkie kody obsługi jakie znalazłem w necie (łącznie z moim z przed paru lat :546: )
niestety nie dawały sobie rady :567: .
W sumie impulsator generuje przebieg w kodzie Graya, ale stany spoczynkowe to na zmianę 11 (3) i 00 (0), a w momencie przejścia generuje na zmianę 10 (2) i 01 (1).
Najlepiej sobie radził kod z noty AN #115 MCS.
Niestety pojawiało się dużo błędnych odczytów kierunku, gubił impulsy ale podstawową niedogodnością było zlicznie co drugi impuls.
Niewielka przeróbka kodu umożliwiła poprawną pracę impulsatora.
A oto poprawiony kod :

'impulsator podpięty do int0 i int1 (pind.2 i pind.3 AT90S8535) z zew. rezystorami podciągającymi 10k.
'Pomiędzy masę a wyprowadzenia impulsatora przylutowane kondensatory 100N.

config int0 = falling
config int1 = rising
config potrd = input

dim value as byte

on int0 imp0
on int1 imp1

enable int0
enable int1
enable interrupts

do
............
............
loop

imp0:
if pind.2 <> pind.3 then
incr value
else
decr value
end if
return

imp1:
if pind.2 <> pind.3 then
decr value
else
incr value
end if
return

Powodzenia w bojach z impulsatorami !!!!

Pozdrawiam JJMafia

mw
-
-
Posty:242
Rejestracja:23 lut 2003, o 23:22
Lokalizacja:Busko Zdrój
Kontaktowanie:

Postautor: mw » 30 lis 2006, o 23:19

A testowales gotowa komende obslugi impulsatora w Bascom?

JJMafia
-
-
Posty:6
Rejestracja:3 cze 2005, o 09:56
Lokalizacja:Lublin

Postautor: JJMafia » 30 lis 2006, o 23:36

Właśnie po nieprzespanej nocy udało mi się wszystko uruchomić.
Kodzik sprawdzony, aktualnie bawię się pisaniem obsługi !!
Pzdr JJMafia

[ Dodano: 30-11-2006, 22:45 ]
No i mam chyba zaćmienie umysłu !!
Pytasz o jedno a ja o drugim !!
Niestety nie - nawet nie szukałem.
Możesz podpowiedzieć gdzie tego szukac ??
Pzdr. JJMafia

mw
-
-
Posty:242
Rejestracja:23 lut 2003, o 23:22
Lokalizacja:Busko Zdrój
Kontaktowanie:

Postautor: mw » 1 gru 2006, o 09:06

Służy do tego instrukcja ENCODER.

Franek
-
-
Posty:46
Rejestracja:24 lut 2006, o 21:34
Lokalizacja:Ustroń

Postautor: Franek » 1 gru 2006, o 13:39

Marcin, skąd wziąłeś tą instrukcję ENCODER? - mam Bascom AVR i czegoś takiego nie znalazłem. Także w Twojej książce nic na ten temat nie znalazłem.
Drugie pytanie: na ile oceniasz max. częstotliwość impulsów z enkodera na jaką pozwala Bascom AVR?
Pozdrawiam
Franek

mw
-
-
Posty:242
Rejestracja:23 lut 2003, o 23:22
Lokalizacja:Busko Zdrój
Kontaktowanie:

Postautor: mw » 1 gru 2006, o 13:45

Którą wersje Bascom AVR posiadasz?

Franek
-
-
Posty:46
Rejestracja:24 lut 2006, o 21:34
Lokalizacja:Ustroń

Postautor: Franek » 1 gru 2006, o 14:11

Mam wersję demo 1.11.8.3.

mw
-
-
Posty:242
Rejestracja:23 lut 2003, o 23:22
Lokalizacja:Busko Zdrój
Kontaktowanie:

Postautor: mw » 1 gru 2006, o 14:13

Poszukaj w helpie wpisujac ENCODER.

Franek
-
-
Posty:46
Rejestracja:24 lut 2006, o 21:34
Lokalizacja:Ustroń

Postautor: Franek » 1 gru 2006, o 14:42

Hi, mam cuś nie tak z helpami. W helpie "z html" nie ma takiej instrukcji. W helpie " u góry ekranu" znajduję ENCODER ale nie mogę wejść do opisu instrukcji. Może help niekompletny; no problem; ściągnę go na nowo. Dobrze że wiem że taka instrukcja istnieje.
Czy enkoder musi "wisieć" na liniach INT0 i INT1, czy może na innych?
Przy okazji pytanie dodatkowe: brakuje mi trochę pinów na ATMega8; czy na liniach służących do programowania (MOSI, MISO, SCK) można jeszcze coś "powiesić" - linie pracowałyby jako output sterując innymi kośćmi - czy to nie będzie się gryzło przy programowaniu?

Franek

Awatar użytkownika
Pantera33
-
-
Posty:62
Rejestracja:25 sie 2004, o 15:23
Kontaktowanie:

Postautor: Pantera33 » 1 gru 2006, o 16:38

Też mam taki impulsator i niestety po wielu próbach z bascom działa kiepsko. Najlepiej sprawdziła by się własna procedura.

JJMafia
-
-
Posty:6
Rejestracja:3 cze 2005, o 09:56
Lokalizacja:Lublin

Postautor: JJMafia » 2 gru 2006, o 12:05

Witam ponownie,
Pantera33 - próbowałeś tą moją procedurkę ??
Właśnie dlatego że żadna z procedur dostęnych w necie,
nie sprawdziła się, napisałem swoją i działa jak należy.

MW - niestety, ale funkcja enkoder nie działa prawidłowo.
Przy kręceniu w prawo - na zmiane liczy w górę i w dół.
Przy kręceniu w lewo - kierunek rozpoznaje poprawnie.
Niepoprawnie są też liczone impulsy.
Jeden skok impulsatora powoduje naliczenie 1 lub 2 impulsów.

Zwracam uwagę, że używam nietypowego impulsatora i dlatego
byłem zmuszony do napisania obsługi po swojemu.
I mam nadzieję że jeszcze komuś pomogłem.
Pozdrawiam JJMafia

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 2 gru 2006, o 17:52

Można samemu napisać procedure odczytu enkodera. Wystarczy 1 przerwanie, reakcja na zbocze. W przerwaniu sprawdzic trzeba jaki jest stan drugiego wejścia. W zależności od wyniku albo zwiększać albo zmniejszac wskazanie.
Cos takiego:
on int0 przerwanie
drugi_sygnal alias pind.5
...
...
przerwanie:
if drugi_sygnal=1 then
incr licznik
else
decr licznik
end if
return

Awatar użytkownika
Pantera33
-
-
Posty:62
Rejestracja:25 sie 2004, o 15:23
Kontaktowanie:

Postautor: Pantera33 » 3 gru 2006, o 12:55

Przykład JJMafi'ii działa dobrze. Obowiązkowo muszą być 100n. Dla M16 wystarcza wewnętrzne podciągnięcie. No niestety zużywa 2 przerwania. Co do drugiego przykładu kolegi Fredy to potrzeba 2 przeskoków impulsatora, bo nie jest wywoływane przerwanie dla jednego z wejść - to może się da obejść za pomocą diody. Aczkolwiek oba rozwiązania są dobre - nie gubią impulsów.

Awatar użytkownika
piotr_go
-
-
Posty:159
Rejestracja:27 sie 2004, o 12:18
Lokalizacja:far far away

Postautor: piotr_go » 3 gru 2006, o 16:54

Co do drugiego przykładu kolegi Fredy to potrzeba 2 przeskoków impulsatora, bo nie jest wywoływane przerwanie dla jednego z wejść - to może się da obejść za pomocą diody.
jeżeli chodzi o te małe impulsatory z avt to nie
Obrazek
wystarczy jeden przeskok i nie są potrzebne 2 przerwania, procedura Fredyego jest dla nich jak najbardziej OK

Awatar użytkownika
Pantera33
-
-
Posty:62
Rejestracja:25 sie 2004, o 15:23
Kontaktowanie:

Postautor: Pantera33 » 3 gru 2006, o 21:34

Jeśli w stanie spoczynku oba piny mają zawsze taki sam stan to wystarczy polecenie encoder. Ja kupiłem swoje po 8 zł i niestety muszę używać własnych procedur.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 19 gości