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ępodłaczenie diody do komputera przez port szeregowy(rownol).
Moderatorzy:Jacek Bogusz, Moderatorzy
Czesc,
moglibyście powiedzieć mi w jaki najprostszy sposób mogę podłączyć diodę przez port szeregowy do komputera, abym mogł np. napisac program który będzie ją zapalał i gasił.
edit:
Hm, znalazlem troche w internecie, ale jednej rzeczy dalej nie wiem. Wiem, ze potrzebuje 8 diodek, 8 opornikow (prawd. 470 Omowych) i samej koncowki portu szeregowego. Problemem jest jak to wszystko polaczyc . Jedyne co umiem wymyśleć to przylutować poprostu do kabla/drutu, ale jak tak luzem to będzie to mogą sie stykać.
moglibyście powiedzieć mi w jaki najprostszy sposób mogę podłączyć diodę przez port szeregowy do komputera, abym mogł np. napisac program który będzie ją zapalał i gasił.
edit:
Hm, znalazlem troche w internecie, ale jednej rzeczy dalej nie wiem. Wiem, ze potrzebuje 8 diodek, 8 opornikow (prawd. 470 Omowych) i samej koncowki portu szeregowego. Problemem jest jak to wszystko polaczyc . Jedyne co umiem wymyśleć to przylutować poprostu do kabla/drutu, ale jak tak luzem to będzie to mogą sie stykać.
Ostatnio zmieniony 2 lut 2006, o 16:06 przez frea, łącznie zmieniany 1 raz.
- Futrzaczek
- -
- Posty:782
- Rejestracja:4 gru 2005, o 17:48
- Lokalizacja:Piotrków Tryb
- Kontaktowanie:
Jeśli nie masz żadnego doświadczenia w obchodzeniu się z drutami to najlepiej polutuj to na płytce uniwersalnej, albo zmontuj na solderless-breadbord. Zawsze to bezpieczniej dla portu niż zabawa z gołymi drutami wiszącymi w powietrzu.Problemem jest jak to wszystko polaczyc . Jedyne co umiem wymyśleć to przylutować poprostu do kabla/drutu, ale jak tak luzem to będzie to mogą sie stykać.
Z tego co pamiętam to rozwiazanie przedstawione w CHIPie było trochę nietypowe - program był napisany w VBA dla Excela (nie trzeba instalować żadnego kompilatora). Pozatym nie sterowało się ledami bezpośrednio z portu, tylko za pośrednictwem rejestru szeregowo-równoległego.
Jeśli posiadasz port drukarki to sterowanie ledami bezpośrednio z portu jest bardzo proste. Port szeregowy wymaga troszkę więcej pracy. Napisz jaki masz kompilator, coś pomyślimy nad szczegółami.
- Futrzaczek
- -
- Posty:782
- Rejestracja:4 gru 2005, o 17:48
- Lokalizacja:Piotrków Tryb
- Kontaktowanie:
No to może mam na myśli jakiś wcześniejszy projekt (nie chce mi sie wetować góry CHIPów i tego szukać).radziu
Program do tego był napisany w C. Lecz mi sie nie chciało pisać go jeszcze raz
Owszem, tam jest ten rejestr i jeszcze coś
Ale sa piekne efekty, jak do portu będzie się wysyłać z małą prędkością jakiś plik np. jpg. Wtedy takie coś podłączyć do choinki i ma się piękne sterowanie
gcc version 3.4.4Napisz jaki masz kompilator, coś pomyślimy nad szczegółami.
Chcialem isc za tym tutorialem : http://www.epanorama.net/circuits/paral ... rogramming
[ Dodano: 01-02-2006, 21:27 ]
Proboje podlaczyc te diody do portu drukarki. Montuje na żenskiej czesci, dluzsza nozke diodki podlaczylem do datapin1 (czyli do dziurki nr. 2), a krotsza nozke podlaczylem do opornika 470 omowego, a opornik potem do 18 dziurki.Jeśli posiadasz port drukarki to sterowanie ledami bezpośrednio z portu jest bardzo proste. Port szeregowy wymaga troszkę więcej pracy. Napisz jaki masz kompilator, coś pomyślimy nad szczegółami.
Program uruchamiam taki:
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
#define base 0x378 /* printer port base address */
#define value 255 /* numeric value to send to printer port */
main(int argc, char **argv)
{
if (ioperm(base,1,1))
fprintf(stderr, "Couldn't get the port at %x\n", base), exit(1);
outb(value, base);
while(1){}
}
Ps. Czy jezeli mam kabel do drukarki z oby stron zakonczony koncowkami meskimi, to czy prad powinien plynac z bolca n-tego do n-tego z drugiej strony. czy do jakiegos innego? Moj kabel laczy 2->15 3->16, etc. i wydaje mi sie to dziwne, ale sie nie znam .
Diodka swieci sie minimalnie jak podlacze do data pin 1 i do ground 18. I nie ma roznicy w jasnosci tego swiatla czy wysle 0 czy 255.Podany przez Ciebie program dziala. Wina wiec lezy po stronie polaczen. Kabel powinien laczyc 1-1, 2-2, itd. Sproboj podlaczyc sie bezposrednio do zlacza.
Dzieki za wiadomosc o kablu - widze ze mam jakis dziwny kabelek .
Dzieki, ale dalej jak podlaczam diodke bezposrednio to ona sie swieci bardzo slabo i wysylanie 255 nic nie zmienia. Probowalem nawet wpisywac w /dev/port i dalej to nie dziala.
edit:
o! dziwne jak podlacze do data pin5 i wysle 128 to zapala sie . Czyli wogole nie tam gdzie powinno, co jest? .
edit2: dziala, moj komputer odbil symetrycznie port, co jest dla mnie dosyc dziwne . Tj. pin 1 zamienil z 13,2 z 12 etc. i tak samo 14 w 25, 15 w 24.
edit:
o! dziwne jak podlacze do data pin5 i wysle 128 to zapala sie . Czyli wogole nie tam gdzie powinno, co jest? .
edit2: dziala, moj komputer odbil symetrycznie port, co jest dla mnie dosyc dziwne . Tj. pin 1 zamienil z 13,2 z 12 etc. i tak samo 14 w 25, 15 w 24.
Na komputerze niestety nie sa podpisane, ale ja probowalem wczesniej to zrobic tak, ze przystawialem zenska koncowke do tej koncowki w kompie i sprawdzalem, ktore to ktore. Tak czy siak na koncowce zenskiej gdzie lutuje teraz wszystko i jak narazie diodki dzialaja, to numeracje mam wlasnie taka odwrocona . (tj pierwszy data pin ma nr. 12.)Hmmm komputer sam z siebie nie może odbić portu. Musiałeś od złej strony liczyć piny (mnie też sie to zdarzyło). Więszkość wtyczek czy gniazdek ma ponumerowane poszczególne wyprowadzenia (przyjrzyj się dokładnie powinny być cyfry, przynajmniej na końcach).
No i nie mialem na mysli ze komputer sam z siebie, tylko ze byc moze taka portu dziwna budowa .
Radzio, czy znasz jakiś układ scalony który będzie konwertował dane z interfejsu szeregowego(nawet 9600bps lub 14400bps - więcej nie trzeba, choć i to jest chyba za dużo) na interfejs równoległy, chce sterować powiedzmy 8led(wyświetlaczami led) więc nie potrzeba mi nawet jakiś super szybkich transferów danych, wystarczy jak bede w stanie zmieniać zawartość wyświetlacza co 200ms? Obiecałem w szkole zrobić takie coś, a nie chce marnować do tego mojego AT89C2051
Najprościej będzie własnie na mikrokontrolerze. Na zwykłych scalakach też będzie możliwe, ale na jednym tego nie zrobisz. Transmisja jest asynchroniczna, więc oprócz rejestru będziesz potrzebował generator itp. Takie rozwiązania publikowano w Elektorze w okolicach roku 1998, czyli kiedy mikrokontrolery były znacznie mniej popularne i trudniejsze w użyciu. Dodatkowo jeśli to ma być wyświetlacz kilkucyfrowy (tak przypuszczam) to układ komplikuje się jeszcze bardziej. Natomiast AT89C2051 wydaje sie do tego celu odpowiedni, zważając na niski kosz i małe wymiary.
-
- -
- Posty:175
- Rejestracja:10 paź 2003, o 20:44
- Lokalizacja:Białystok
- Kontaktowanie:
Dokładnie to chce zrobić odbiornik DFC77 na AT89C2051 a info jakie odbiorę wyświetlać na 6 wyświelaczach(gg:mm:ss) 1-nocyfrowych składajacych się z 8 led. Gdyby łatwo dało sie wyświetlić dane z TxD przez scalak na takim wyświetlaczu problem byłby znikomy, zakładając, że scalak zmieniałby dane wyjściowe(w postaci równoległej) dopiero po otrzymaniu info z TxD(w postaci szeregowej). Wtedy wystarczyłoby TxD zwierać z poszczególnymi nazwijmy to driverami wyświetlacza co jakis czas, tak, że np. na 1 sekunde AT89C2051 przeleciałby wszytkie drivery odświerzając cyferkę na każdym wyświetlaczu. Tak ja to planowałbym, ale może robi sie to inaczej. Wiem, że są drivery sterujące już takimi wyświetlaczami, ale je steruje się jakimiś sygnałami A,B,C, czego osobiście nie potrafie. Jeśli macie jakieś art. na temat tych sygnałów podeslijcie, ale raczej zostałbym przy tym pierwszym sposobie.
Czy ja dobrze rozumiem ta rzecz :
jak do portu wysylam liczbe. to zapalane sa te diodki, dla ktorych w reprezentacji binarnej liczby przypada 1. Tj dla 96 zapalona jest diodka nr. 5 i 6.
U mnie zachowuje sie ciut inaczej ;/, wysylam 2, zapala sie 1-sza dioda, wysylam 4 zapala sie 3-cia, wysylam 8 zapala sie 2-ga. Co znowu moglem zle zrobic? .
jak do portu wysylam liczbe. to zapalane sa te diodki, dla ktorych w reprezentacji binarnej liczby przypada 1. Tj dla 96 zapalona jest diodka nr. 5 i 6.
U mnie zachowuje sie ciut inaczej ;/, wysylam 2, zapala sie 1-sza dioda, wysylam 4 zapala sie 3-cia, wysylam 8 zapala sie 2-ga. Co znowu moglem zle zrobic? .
-> Sova
Jeśli możesz zmodyfikować program w odbiorniku DCF to możesz zastosować transmisję synchroniczną i sterować rejestrami 4094. Jeśli niski pobór prądu nie jest warunkiem to możesz sterować wyświetlaczami statycznie (każdy wyświetlacz ma swój rejestr) i będziesz zapisywał dane tylko przy ich zmianie. Sterowanie dynamiczne będzie wymagało stałego zaangażowania procesora ponieważ będzie wymagane "odświeżanie" każdego wyświetlacza.
Podaj model tych sterowników, pomyslimy jak sie je steruje
->frea Znowu musiałeś pomylić końcówki
Jeśli możesz zmodyfikować program w odbiorniku DCF to możesz zastosować transmisję synchroniczną i sterować rejestrami 4094. Jeśli niski pobór prądu nie jest warunkiem to możesz sterować wyświetlaczami statycznie (każdy wyświetlacz ma swój rejestr) i będziesz zapisywał dane tylko przy ich zmianie. Sterowanie dynamiczne będzie wymagało stałego zaangażowania procesora ponieważ będzie wymagane "odświeżanie" każdego wyświetlacza.
Podaj model tych sterowników, pomyslimy jak sie je steruje
->frea Znowu musiałeś pomylić końcówki
O takie własnie statyczne sterowanie mi chodzi. Chcę aby info była zapisywana przy zmianie, tylko trzeba to robić na 6 wyświetlaczach. Program na procesor nawet nie jest zaczęty tak więc moge dostosowac sie do każdego rozwiązania.
DCF77 nadaje jeden bit co sekundę, tak więc jedyne co musze robić to odbierać ten bit i z odebranych danych odliczać czas(dokładniej: program musi odliczać czas z informacji która odebrał minutę temu[przez 60 sek nadaje info:godznie, minute, sekundę i inne zbędne o następnej minucie], ale i na bierząco odbierać info zawarte w nowych 60sek. Dodatkowo musze sterować tymi wyświetlaczami, aby wyświetlić godzinę która jest wg europejskiego wzorca czasu). Jednak odebranie takiego bitu i przetrawienie go to jest kwestja nie dłużej niż 200ms, a kwarc moge dac nawet 24MHz, tak więc na sterowanie pozostaje mi 800ms. Nie znam sie na sterowaniu wyświetlaczy totalnie, dlatego proszę o wyrozumialość . Narazie jedynie mam pomysł jak odbierać te bity(o tym pisany był temat sygnał analogowy na cyfrowy)
Radzio na marginesie, chyba dałem 12V na P1.0 w AT89C2051 - teraz proc nie chce sie programować, bo podczas weryfikacji programu zapisanego na flash jest błąd, czy to oznacza, ze 12V niszczy nóżkę? Osobićie sie dziwie, bo wcześniej działało tak cały czas i dobrze sie programowało - teraz jak to odkryłem widocznie jest tak jak mówie . Odpisz proszę czy jest taka możliwość.
DCF77 nadaje jeden bit co sekundę, tak więc jedyne co musze robić to odbierać ten bit i z odebranych danych odliczać czas(dokładniej: program musi odliczać czas z informacji która odebrał minutę temu[przez 60 sek nadaje info:godznie, minute, sekundę i inne zbędne o następnej minucie], ale i na bierząco odbierać info zawarte w nowych 60sek. Dodatkowo musze sterować tymi wyświetlaczami, aby wyświetlić godzinę która jest wg europejskiego wzorca czasu). Jednak odebranie takiego bitu i przetrawienie go to jest kwestja nie dłużej niż 200ms, a kwarc moge dac nawet 24MHz, tak więc na sterowanie pozostaje mi 800ms. Nie znam sie na sterowaniu wyświetlaczy totalnie, dlatego proszę o wyrozumialość . Narazie jedynie mam pomysł jak odbierać te bity(o tym pisany był temat sygnał analogowy na cyfrowy)
Radzio na marginesie, chyba dałem 12V na P1.0 w AT89C2051 - teraz proc nie chce sie programować, bo podczas weryfikacji programu zapisanego na flash jest błąd, czy to oznacza, ze 12V niszczy nóżkę? Osobićie sie dziwie, bo wcześniej działało tak cały czas i dobrze sie programowało - teraz jak to odkryłem widocznie jest tak jak mówie . Odpisz proszę czy jest taka możliwość.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości