Sterowanie urzadzeniem przez port drukarkowy

Loading thread data ...

Fri, 11 Feb 2005 12:45:51 +0100, na pl.misc.elektronika, the4dK napisał(a):

Loodzie, co Wy z tą dokładnością Windows, czy to ma sterować startem promu?

100 Hz dostaniesz bez żadnego problemu ( no chyba, że jednocześnie na maksa obciążysz peceta czymś innym ). Taki prosty układzik :

- dwa rejestry szeregowe z latchem ( 595 albo podobny )

- trzy transoptory ( najlepiej niskoprądowe , 6N139 albo podobne ) sterowane z linii TxD, RTS, DTR ) i obsługujące linie data, clk i strobe rejestrów ( od razu masz separację galwaniczną portu )

- ew. za transoptorami dodatkowa kostka Schmitt ( np. 4093 ) do zregenerowania zboczy

- co 10 ms ( f=100Hz ) odświeżasz rejestry nową 16 - bitową próbką wyzwalania stroboskopów pobieraną ze skryptu. Taktowanie liniii kontrolnych z użyciem funkcji API może z powodzeniem osiągnąć kilkadziesiąt kHz a więc wystarczy w zupełności. Jak czasem Windows przesunie coś o parę ms - nic nie szkodzi, to będzie zupełnie niezauważalne. Przy tym używając API zapewnisz przenośność kodu na w2k i XP. Do odmierzania 10 ms nie używaj timera systemowego ! Pod w98 ma on rozdzielczość nie lepszą niż 55 ms a więc się nie nadaje. Weź timer multimedialny - można na nim na ogół zjechać do 1 ms i ma dobrą powtarzalność .

To IMHO powinno biegać bez problemu - a sprzęt ( bez części wykonawczej ) to kilkanaście PLN.

Jeśli wersja w uP to proponuję wziąć jakiś z trochę większym ramem. Tam ustawisz sobie przełączane bufory na kilka sekund sterowania ( 1 sekunda =

100 2-bajtowych próbek ). W momencie opróżnienia bufora uP przełacza się na drugi i śle do peceta żądanie nowego bloku danych, którym doładowuje zużyty bufor. To tylko przykład oczywiście. Zastosowanie uP umożliwi rozbudowę i zwiększenie uniwersalności - jak przyjdzie ochota można dodać obsługę np. CF i tam mieć różne nagrane sekwencje do puszczania już bez żadnego PC
Reply to
Jurek Szczesiul

Taaa. Niedawno dostałem od Maxima próbki z max233 na czele i zmontowałem układzik z uC at89s52 mający za zadanie odebrać bajt z portu COM, zinkrementować i odeslać z powrotem. Na PCta napisałem programik w BCB i... coś wysyła, ale nic nie odbiera.

Albo ja jestem zbyt tępy, albo to może wina lutowania i programowania po nocach, bo wydawało mi się, że układ realizujący coś tak prostego musi działać poprawnie od pierwszego odpalenia. Jak widać nie...

Dlatego jeśli ktoś dysponuje sprawdzonym "gotowcem" (program na PC + schemat połączeń od wtyczki DSub9 do max233) to bardzo proszę o kontakt.

Ja swój program pisałem w oparciu o książkę "RS232 - Praktyczne Programowanie" i aż głowa mnie bolała od WinAPI. Szukałem w necie darmowych komponentów do ułatwienia sobie życia, ale znalazłem tylko komercyjne.

Pomęczę się z tym problemem jeszcze dzisiaj i jeśli nic nie uda mi się wskórać, to jutro zacznę zadawać duuużo pytań. Bądźcie więc czujni :D

PS. Czy jest jakiś prosty sposób na sprawdzenie, czy mój program pod Windowsem w ogóle potrafi coś wysłać i odebrać? Może zewrzeć we wtyczce linie TxD i RxD?

pozdrawiam

Reply to
krzych

O! To sie nazywa konstruktywny post ;]

Jurek Szczesiul napisał(a):

tez tak mysle

[ciach]

A to jest w komponentach? Czy musze sie odwolywac do funkcji WinAPI, np. GetTickCount?

Eee, za duzo kombinowania chyba. W sumie, to przeciez duzej (jak na elektronike) czestotliwosci nie potrzeba, ani tym bardziej dokladnosci. Najwazniejsze, zebym mogl napisac skrypt mrugania o dlugosci kilkudziesieciu instrukcji.

W kazdym razie, wielkie dzieki za rade!

Reply to
the4dK

Fri, 11 Feb 2005 17:02:29 +0100, na pl.misc.elektronika, the4dK napisał(a):

W komponentach raczej nie będzie. Szukaj w helpie MS-multimedia-reference haseł timeProc, timeBeginPeriod, timeSetEvent, timeEndPeriod,timeKillEvent itd.

Przykłady zastosowania mam tylko dla Delphi ( podobnie jak komponent sterowania pinami RS-a - zrobiony specjalnie do takich nietypowych przypadków ).

Reply to
Jurek Szczesiul

Jurek Szczesiul napisał(a):

Dzieki za info. Poszukam.

Jesli mozesz, to podrzuc mi na priv. Moze byc dla Delphi.

Reply to
the4dK

no ja yyyy...... ja nigdy nie mialem stroboskopu w reku, dlatego pytam; swoja droga - zaciekawil mnie ten watek, i zrobilbym sobie tez jakies strobo :) /najlepiej mrugajace w rytm muzyki, ale to chyba trzeba widmo na jakims dsp obliczac :(

Reply to
Q

Rytmu na DSP raczej nie bardzo da sie obliczyc (za wolne), po za tym rytm trzeba miec on-line i synchronicznie z muzyka. Najwyzej mozna by liczyc 'chwilowe' widmo i na tej podstawie generowac sygnal taktujacy PLL. Ale to porywanie sie z armata na muchy. Kiedys, gdzies tak w liceum (poczatek lat 80) bawilismy sie z kolegami ilumofoniami i zrobilismy eksperymentalnie uklad skladajacy sie z rejestru przesuwajacego 8 bitowego polaczonego w licznik Johnsona sterowane z jakiegos prostego ukladziku wejsciowego na 1 tranzystorze i bardzo fajnie chodzilo. Niestety byl to tylko uklad eksperymentalny z LEDami (a wtedy LEDy byly slabe) zamiast zarowek. Pamietam tylko ze jakos podejrzanie fajnie wylapywalo rytm. Uklad wejsciowy to byla dioda ladujaca kondensator (prostownik jednopolowkowy), tranzystor byl odtykany w momencie ladowania kondensatora, czyli w momencie gwatlownego wzrostu glosnosci.

Krzysiek Rudnik

Reply to
Krzysztof Rudnik

Widmo można wyjąć bezproblemowo jakimś pluginem wprost z Winampa. A jeśli chcesz się ze stroboskopem podpiąć bezpośrednio pod źródło sygnału np. do głośników, to może jakiś wtórnik a za nim układ rezonansowy dostrojny do danej częstotliwości, na którym napięcie będzie sterowało częstotliwością błysków? Tak tylko rzucam pomysł z rękawa bo sam nic podobnego nie robiłem :)

pozdrawiam

Reply to
krzych

Ja prawdę mówiąc działałem bez schematu bo uznałem, że szkoda coś tak prostego rysować. Na szczęście Rx i Tx nie poświergoliłem. W sumie popełniłem tylko jeden błąd, ale za to zasadniczy: chwyciłem się za lutownicę po pierwszej w nocy :) I chyba to było powodem, że zapomniałem przyłączyć w procku /EA do zasilania. Jak to poprawiłem zaczął się wykonywać program z pamięci wewnętrznej i się okazało, że wszystko działa, hula, śmiga itp. Szkoda tylko, że kosztowało mnie to półtorej dnia sprawdzania i nerwów.

Mi się ta zasada wydawała całkiem naturalna :) Dopiero jak się okazało, że "nie działa" zacząłem wątpić w swoją intuicję.

Wad jest więcej: trzeba go jeszcze znaleźć :) Z czytanem, jarzeniem i kodowaniem już sobie poradzę (zresztą jak się okazało mój program na PC działał od początku dobrze).

No tak, okiełznałem, jestem z siebie dumny. A życie ułatwiłbym sobie chyba tylko pisząc jakąś klasę do obudowania wywołań WinAPI. Na to jestem jednak zbyt leniwy, choć kto wie, może kiedyś zamiast robić kopiuj kod-wklej kod będę wolał pisać #include rs232.h :D

Tutaj sam sobie odpowiem: to działa! I jest to genialny w swojej prostocie sposób na testowanie transmisji :)

pozdrawiam i dziękuję za uwagę ;)

Reply to
krzych

Bez przesady, wystarczy dowolny Atmelek z przetwornikiem ADC dokonujacy filtracji pasmowej i adaptacyjnie ustalajacy poziom wyzwalania stroboskopu na podstawie sredniej glosnosci w pomieszczeniu. Ewentualnie ten sam Atmel liczacy 32-punktowa transformate Fouriera i szukajacy istotnych zmian w widmie. Zlozonosc obliczeniowa tego miesci sie z zapasem w wydajnosci AVRow.

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.