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ę

Prosty miernik obrotów

Awatar użytkownika
Futrzaczek
-
-
Posty:782
Rejestracja:4 gru 2005, o 17:48
Lokalizacja:Piotrków Tryb
Kontaktowanie:

Postautor: Futrzaczek » 13 mar 2006, o 20:27

To w takim razie połączmy nasze rozwiązania ;)
Rezystor podciągający = 2...5k
Rezystor szeregowy = policzysz sobie :)
Kondek = 100nF ... 100uF
Transoptor/fototriak dowolny
Wg mnie, nie jest to kwesja żadnych drgań - styk jest dociskany jak na rysunku. Blaszka jest dociskana przez klocek na wale tak mocno, że aż sie wygina, więc wg mnie nie ma mowy o drganiach lub jakiś krótkich otwarciach obwodu - jednak proc głupieje - i dodatkowo nie są to warości określone
Tak, ale w chwili łączenia się obydwóch styków występuje iskrzenie. To co z tego, że go nie widać? Styki w przekażnikach i wyłącznikach też się jakoś wypalają, pomimo że nie widać tych iskier. Kiedyś do AT90S2313 podpiąłem kwarc 10 MHz i zapodałem program, który ma powiększać zmienną o 1 kiedy wykryje zmianę stanu na wejściu. Liczby wychodziły: 127, 79, 213...
Może przy wolniejszym taktowaniu to by zmieniło sprawę, ale kosztem szybkości działania programu - coś za coś :)
Załączniki
sche.GIF
sche.GIF (2.76KiB)Przejrzano 5895 razy

czarutek

Postautor: czarutek » 13 mar 2006, o 22:30

Sova, od chwili pierwszego do chwili ostatniego zwarcia 'szczotką' [P1.0] < - > [masa], na P1.0 masz niepoliczalną serię impulsów 0/5V.
Niepoliczalną, to znaczy np. 10000.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 13 mar 2006, o 23:54

Nie dam Opampa bo mam zasilanie asymetryczne, trzeba robić przetwornice napięcia na +/- 5V - i po co sie w to p**** jak mozna zrobić mechaniczne rozwiązanie?!
A o asymetrycznym zasilaniu opampa slyszal ?? W czym to niby mialo by Ci przeszkadzac ??
porostu warto pomysleć, gdzie teraz jest błąd w rozwiązaniu mechanicznym (...) Wg mnie, nie jest to kwesja żadnych drgań - styk jest dociskany jak na rysunku. Blaszka jest dociskana przez klocek na wale tak mocno, że aż sie wygina, więc wg mnie nie ma mowy o drganiach lub jakiś krótkich otwarciach obwodu
Ale to tylko wg. Ciebie.... nie obraz sie, ale nie masz pojecia o czym mowisz... Najlepiej odpowiedzial Ci na to Czarutek
Sova, od chwili pierwszego do chwili ostatniego zwarcia 'szczotką' [P1.0] < - > [masa], na P1.0 masz niepoliczalną serię impulsów 0/5V.
Niepoliczalną, to znaczy np. 10000.
A to wszystko w czasie pojedynczych ms (albo nawet us - zalezy m.in. od sily docisku).

czarutek

Postautor: czarutek » 14 mar 2006, o 06:38

... A to wszystko w czasie pojedynczych ms (albo nawet us - zalezy m.in. od sily docisku).
Dokładnie.
Nie umiem dobrze zrozumieć fragmentu programu, ale będzie to działać tak, że jeśli moment zwarcia szczotki ma coś wyzerować, to nieee... - będzie zerowane do chwili jej rozwarcia. I na odwrót - jeśli zwarcie szczotki miało gdzieś dodać 1, to nieee... - do chwili jej rozwarcia doda tyle, ile zdoła (sprzętowo/prpgramowo) wychwycić port P1.0.
Należy kilkoma R i C wyeliminować iskrzenie styków i po ptokach.
Po kilkakrotnym już przeczytaniu całej nitki naprawdę nie widzę potrzeby stosowania żadnych dodatkowych 'seperatorów/adapterów'.
Sova, co jaki czas i z jaką dokładnością ma być znana prędkość obrotowa? Czy mógłbyś dokładniej narysować swój schemat?

P.S. Z tym ołówkiem rozbawiłeś mnie do łez...

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 14 mar 2006, o 17:11

Wiec to jest tak, silnik obraca sie wolno około 1Hz, proc taktowany jest przez kwarc 11,0592Hz. Proc wykonuje pętle DJNZ powiedzmy 128 razy więc to będzie trwało

Kod: Zaznacz cały

( 1 / częst. kwarca ) * 12 * ilosc cykli na komendę * ilość razy wykoniania pętli
więc

Kod: Zaznacz cały

( 1 / 11059200 ) * 12 * 4 * 128 = około 5,5 * 10^-4[sek]. DJNZ to operacja trwająca 4 cykle

Tyle powinien minimalnie rejstrować proc, jednak wiem, że tych pętli w takim okresie obrotu wału o 240(to jest 2/3 * 360) stopni mieści minimum koło 30, więc doładność może być nie większa niż do 0,005 sekundy - od tego uzależniony jest silnik krokowy, więc on także powinien pracować jakoś stabilnie, a nie "szarpać" raz szybciej raz wolniej, więc myślę, że 0,005 będzie już ok - chyba iskrzenie nie osiąga takich okresów :?

Czy dobrze rozumiem, że te 0,005 sekundy to ma być czas ładowania kondensatora? Jak mam teraz zrobić ten filtr RC aby nóżka P1.0 rejstrowała zmiany stanów większe lub równe 0,005 sek?

[ Dodano: 14-03-2006, 17:21 ]
Czy nie może to być zwykły filtr górnozaporowy? 10k ze stykiem generuje syngał zmienny o konkretnej czstotliwości(jakby sygnał prostokątny), a filtr R C tłumi go lub nie. Nie wiem tylko czy tak jest dobrze i czy opór wejściowy P1.0 ma wpływ na pracę filtru - niestety nie uczyłem sie nigdy o filtrach w szkole :). Jeśli jest ok to iloczyn R*C musi wynosić właśnie nasze 0,005 sekundy - czy znów jakies herezje głoszę :)?
Załączniki
filtr.GIF
filtr.GIF (1.8KiB)Przejrzano 5847 razy

czarutek

Postautor: czarutek » 14 mar 2006, o 20:48

Żadnych herezji nie głosisz. O to nam z grubsza właśnie chodzi.
Ale, Ty przecież nie możesz tam pod styki/szczotki podłączać 5V, bo to chyba chodzi na 12V...
No nie pamiętam jak ten przełącznik jest zbudowany, bo byłoby mi łatwiej.
W każdym razie prostym układem RC starałbym się wygenerować w chwili zwarcia (albo rozwarcia) styków pojedyńczy impuls 0 albo 5V o czasie tylko takim, jaki jest niezbędny do wychwycenia przez P1.0, a czas niezbędny do wygenerowania kolejnego impulsu byłby znacznie dłuższy od 'okresu' iskrzenia styków.
Układ poniżej w chwili zwarcia styków aż do ich rozwarcia, choćby sobie w międzyczasie iskrzyły, poda na P1.0 pojedyńczy impuls 0. Nie będzie on superprostokątny - zejście 5V->0V będzie bardzo strome, ale wejście 0V->5V będzie wykładnicze. Portowi to raczej nie zaszkodzi, jednak dodając przed portem choćby tranzystor, prostokąt będzie już aż za ładny. Czas tego impulsu i 'czułość na okres' iskrzenia styków zależy od wartości elementów.
Boję się tylko, że przy rozwartym włączniku, na jego górnym styku jest, z racji konstrukcji pod wycieraczki w samochodzie, 12V. Wtedy to jest do kitu.
Załączniki
Sova1.jpg
Sova1.jpg (2.2KiB)Przejrzano 5847 razy

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 14 mar 2006, o 22:03

Ten styk normalnie chodzi tak, że raz zwiera do 12V a raz do masy, ale ja jak mówiłem uszkodziłem sobie dwa proce przez te 12V wiec kombinerkami wyłamałem co terzeba i teraz jest najnormalniejszy styk, moge zwierać do czegokolwiek, w zależności co sobie przylutuję, czyli nie ma mowy już o 12V. Przylutowałem właśnie 5V czyli potencjał jaki port potrzebuje aby rozpoznać stan wysoki.

Ogólnie, to moje przeczucie okazało sie prawdziwe, zastosowanie filtru górnozaporowego zadziałało! Proc nie łapie iskrzenia :D. Co prawda chyba dałem zbyt dużą wartość konda i rezsytora, liczyłem dla 200Hz(1/0,005sek) i wyszły 10k i 100uF. Jednak teraz proc nie regauje nawet na zwarcie :P. Aczkolwiek oznacza to, że idziemy już w dobrą stronę, Jutro zobacze jak zadziała przy 100n i 10k, jeśli będzie ok, to projektuję nową płytke i biorę się za nawijanie pierwszego trnsformatora :D.

Czarutek łapię o co Ci chodzi, jak nie zadziała ze 100n to sprubuję twój schemat.

[ Dodano: 14-03-2006, 22:09 ]
Jeszcze dodam - czy to nie jest dziwne, że filtr jest dla f=200Hz a proc nie łapie zmian? Wg mnie coś tu nie jest tak jak trzeba, toć 200Hz to duzo więcej niż 1/3 1-goHz(okres obrotu wału) :?

czarutek

Postautor: czarutek » 15 mar 2006, o 08:27

Jeszcze dodam - czy to nie jest dziwne, że filtr jest dla f=200Hz a proc nie łapie zmian? Wg mnie coś tu nie jest tak jak trzeba, toć 200Hz to duzo więcej niż 1/3 1-goHz(okres obrotu wału) :?
Ale mówisz o filtrze z Twojego drugiego rysunku? Jeśli tak, to o którym R mówisz?
Największą wadą takiego układu jest większy błąd czasu początku impulsu na P1.0, gdyż musi się rozładować C.
Ale wszystko zmierza najwyraźniej w dobrym kierunku.

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 15 mar 2006, o 15:43

Schemat który podałem wyżej niby działa jak trzeba, ale nadal coś nie pasuje procowi, raz łapie ok, ale jeszcze czasem łapie te iskrzenie - połączyłem równolegle 3 kondy: 100u, 100n, 100p. Jak były wszytkie trzy to proc wogóle nie widział zwarcia, dla 100n+100p zachowywał sie chyba najlepiej, sam 100p nie starczał, proc widział pewnie każdą iskę.

Teraz spróbuję generować jedynie jednorazowe 0 przy zwarciu wg Twojego schematu Czarutek - byłem nie chętny bo całkowicie musze zmienić algorytm, ale no co pozostaje :(.

Popatrzmy oczami kondensatora :): Na obu okładkach jest 5V, bo jest naładowany przez rezystory. Po zwarciu ma nastapić zero(cały ładunek ucieka z okładki do masy przez styk), więc przyjmę, że stanie się to w tym samym momencie co zwarcie - brak oporu styku - ogólnie bardzo stromy przebieg(nawet nie obchodzi nas ile to bedzie trwało - obchodzi nas tylko okres kiedy potencjał na P1.0 jest poniżej 0,5V). Zaraz po tym, kond zaczyna się ładować się na nowo. Znając przebieg wiemy, że z początku bardzo szybko potencjał rośnie, a dopiero potem zwalnia, my chcemy, aby ten potencjał poniżej 0,5V trwał jakiś dłuższy okres czasu(taki aby proc zdążył zauważyć, że jest 0), więc można przyjąć nawet, że poniżej 0,5V odpowiada 1/100 czasu ładowania sie konda do "pełna" - czyli do 5V. Chcę aby zero trwało:

Kod: Zaznacz cały

cykl = ( 1 / 11059200 ) * 12 = około 1,085 * 10^-6 [sek] okres zera = cykl * 1000 = około 1,085 * 10^-3 to dajmy 10^-3 sekundy to odpowiada 1000 cyklom. (np. komenda sprawdzająca czy na porcie jest zero "JNB bit , etykieta" trwa 4 cykle[48 taktów] więc proc zdążyłby sprawdzić 250 razy czy zero wystąpiło)
Jeśli zero przy takich założeniach trwa 10^-3 sekundy to kod musi się ładować 10^-3 * 100 = 0,1 sek(z założenia, że potencjał poniżej 0,5V panuje przez 1/100 czasu ładowania się konda). Taki okres spokojnie mieści się w 1 sekundzie(czyli naszym 1Hz - obrocie silnika) więc możemy tak zrobić - żadne iskrzenie nie będzie w stanie zamotać procesora.

Więc jesli nie pomyliłem nic wcześniej kond ma ładować sie przez 0,1 sek. Czas ładowania to t = C * R więc przy C = 100u R musi wynosić 1M. Drugi rezystor to tylko rezystor ładujący drugą okładkę, więc nie ma on wpływu na potencjał portu P1.0, więc dam 10k, tak aby był mały pobór prądu, a kond zdążył się naładować przed ewentualnym zwarciem.

Dla pewności zapytam - nic nie pomyliłem? Będzie ok?
Załączniki
styk.GIF
styk.GIF (1.71KiB)Przejrzano 5812 razy

czarutek

Postautor: czarutek » 15 mar 2006, o 16:18

Moim zdaniem powinno być ok.
Tylko mała poprawka:
... Popatrzmy oczami kondensatora :): Na obu okładkach jest 5V, bo jest naładowany przez rezystory...
On teraz jest rozładowany... ;)

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 15 mar 2006, o 16:43

Możliwe :P kodensatory i elektrostatykę miałem w tamtym semestrze :mrgreen: No no to ide sprawdzić

[ Dodano: 15-03-2006, 23:04 ]
Uwaga czas ogłosić wyniki :569: schemat działa poprawnie ALE :) nie w mojej aplikacji :(. Dla kodna 100n i rezystora 1M proc liczy jedeno zwarcie jako kilka obrotów - więc tez nie dobrze, dla 1,5n widział najlepiej - jedno zwarcie i już jak program sprawdzał jeszcze raz to zera nie było na porcie, jednak przy tak małej wartości już łapie śmieci!

[ Dodano: 19-03-2006, 19:02 ]
Schemat który podałem poprzednio nie działa tak jak planowałem(jeśli Trigger jest na stałe z masą to nie występuje stan niski), więc przyjżałem się temu układowi w innych aplikacjach.

Ostatecznie pozostałem przy schemacie który podaję teraz, w wersji pierwotnej jest to generator prostokątny. Gdyby styk był zwarty na stałe, czyli Trigger(nr 2) byłby zawrty z nóżką nr 6, układ gerenrowałby sygnał prostokątny(szczegóły w dokumentacji). Jesli trigger jednorazowo zewrze się z nóżką nr 6, ne555 ustali stan wysoki na określiny czas, a następnie stan niski na określony czas i dopiero po odczekaniu całości okresu sprawdzi czy na triggerze nie ma sygnału kolejnego startu.

Może wyszliśmy trochę z tematu, ale jak przypome chodziło nam o to, aby uniezależnić styk od iskrzenia, tak aby procesor dostawał 0ro na określony czas, a potem był zabezpieczony przed ewentualnymi iskrzeniami styku mechanicznego. Układ który zamieszczam po ustaleniu na określony czas stanu wysokiego, potem niskiego, nie zmienia stanu znów na wysoki, tylko pozostawia niski, aż do momentu następnego zwarcia nóżki nr. 2 z nózką nr. 6. Jeśli okres st. wysoki + st. niski ustalimy dłuższy niż okres wciśnięcia(i iskrzenia) styku, ne555 przeczeka cały obrót wału i prawidłowo odczyta kolejne zwarcie triggera(styku). Jedyny problem jaki jest to to, że w momencie kiedy proc ma dostać 0ro(stan niski na porcie P1.0) dostaje z nóżki nr. 3 układu ne555 stan wysoki, i odwrotnie, wtedy kiedy ma być stan wysoki, ne555 daje stan niski - nalezy tylko zastosować negator.

Kończe temat bo stał sie już monotonny - mam nadzieję, że ktoś z niego jeszcze kiedyś skorzysta :)
Załączniki
styk.GIF
styk.GIF (4.86KiB)Przejrzano 5781 razy

KLON
-
-
Posty:25
Rejestracja:5 kwie 2005, o 10:58
Lokalizacja:Kraków

licznik

Postautor: KLON » 21 mar 2006, o 01:09

Spróbuj zastosować do sterowania poniższy układ. Jest w nim zastosowany kontaktron sterowany magnesem, ale można z powodzeniem użyć zestyku mechanicznego. U mnie pracuje w krokomierzu i nie narzekam.
Załączniki
A1.jpg

Andree
-
-
Posty:17
Rejestracja:22 mar 2003, o 13:50
Lokalizacja:Poznań

Postautor: Andree » 21 mar 2006, o 18:26

Tak się tylko wtrącę, ale jakiś czas temu pisałem WĄTEK , w którym miałem problem z wyzwalaniem mechanicznie przerwania - zawsze wychodziło to samo, pewnie też coś "iskrzyło". Zresztą głupie zliczanie przez zmianę stanu z zetknięciem drutów wywołuje czasem straszne bzdury. W moim przypadku pomogło od razu (program w Bascomie) ustawienie wyzwalania przerwania nie stanem, a zboczem. Leciało to jakoś t.con0... coś tam, juz nie pamiętam, w momencie definiowania przerwania.

U mnie od tej pory nie było problemów z pasożytniczymi sygnałami :564:

A co do transoptorów, są oczywiście z szerszymi szczelinami, np. www.vishay.com/docs/83764/83764.pdf
Wyjście fototranzystora z transoptora podłączyłem bezpośrednio pod bazę zwykłego NPN i śmiga 0V/5V bez problemu.

Pozdrawiam!

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 21 mar 2006, o 20:01

No masz Ci los: zekrnałem do PDFa i co zaobaczyłem:

wzór na okres stanu wysokiego: 0,693 * (R1 + R2) * C1
wzór na okres stanu niskiego: 0,693 * R2 * C1

:evil: :evil: :evil: :evil:

i jak tu teraz zrobić, aby stan wysoki trwał 4,34 * 10^-6 sek, a niski 0,5 sek :? :? :?
Tak już sie cieszyłem, że to wkońcu zrobie.

Wróć do „Elektronika - tematy dowolne”

Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 14 gości