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

Mikroprocesor AVR - nadawanie i odbieranie radiowe 433MHz

01 Gru 2007 15:47 3443 9
  • Poziom 16  
    Witam,
    buduję urządzenie, które ma pracować wysyłać dane poprzez moduł radiowy http://www.sklep.avt.com.pl/go/_info/?id=481367, a odbierać dane z http://www.sklep.avt.pl/go/_info/?id=481368. Moduły podpięte są do mikroprocesorów AVR taktowanych rezonatorem kwarcowym o częstotliwości 8MHz. Programy piszę w BASCOMie, używam poleceń SEROUT i SERIN przy prędkości przesyłu danych 2400 bodów. Niestety układ odbiorczy nie odczytuje żadnych danych... Według mnie przyczyną jest niepoprawne działanie modułu odbiorczego, który odbiera cały czas jakiś stan logiczny. Z domu pozbyłem się wszystkich urządzeń, które mogą zakłócać jego działanie. W module odbiornika jest cewka za pomocą, której coś się ustawia. Może trzeba ją ustawić zgodnie z kanałem mojego nadajnika... Nie znam się na tym, dlatego pytam...

    Proszę o szybką pomoc...
    Pozdrawiam ;)
  • Poziom 43  
    Podłącz diodę LED z rezystorem do odbiornika. Podłącz tak żeby nie świeciła w spoczynku. I zobacz czy zacznie migać jak zaczniesz nadawać nadajnikiem.
    No i dobrze odfiltruj zsilanie odbiornika. Nie podłączaj go bezpośrednio do zasilania procesora. Tylko poprzez rezystor 33...330R i kondensator 100u + 100n.

    PS. Dlaczego używasz SEROUT i SERIN.

    Dodano po 1 [minuty]:

    Cewka faktycznie służy do dostrajania, ale tylko w ostateczności. Powinna byc fabrycznie dobrze ustawiona. Narazie jej nie ruszaj.
  • Poziom 16  
    Wczoraj dość długo bawiłem się tym odbiornikiem i w końcu zadziałał. Z tym, że napisałem krótki program reagujący tylko na stany logiczne i wszystko działa. Jednak jak chciałem wprowadzić przesyłanie danych używając SERIN i SEROUT już niestety nic nie działało. Wychodziło mnóstwo błędów. A co innego mam wykorzystać do przesłania kilku bajtów danych. Potrzebuję odczytać dane z przetwornika AC i przesłać je radiowo, a następnie odebrać w drugim urządzeniu...

    Pozdrawiam ;)
  • Poziom 16  
    Wszystko fajnie z tym, że mój nadajnik i odbiornik są podłączone do nóżki Portd.2. Nadajnikiem steruje ATMEGA8535, a odbiornikiem ATMEGA8... Gdybym nie potrzebował do innych celów sprzętowego RS232 to podłączyłbym pod niego. Niestety potrzebuję go do innych celów :| Wydaje mi się, że moje problemy z poleceniem SEROUT i SERIN polegają na tym, że źle synchronizuję układ odbiornika :|

    Pozdrawiam ;)
  • Poziom 43  
    Podłącz bezpośrednio (kablem) to zobaczymy co z tą synchronizacją.

    Ale według mnie wina leży w odbiorniku, który zapewne jest superreakcyjny. To najgorszy rodzaj odbiornika jaki może być.
    Zmiejsz prędość. Ja kiedyś też nie mogłem uzyskać żadnej transmisji na podobnych odbiornikach. Dopiero zbliżanie ręki do anteny powodowało jakikolwiek odbiór, a zmniejszenie prędkości do 120baud pozwoliło dopiero przesłać poprawnie jakiekolwiek dane (ponad połowa danych była dobra. Dla 240baud tylko 10% była dobra!).
  • Poziom 16  
    Chyba będę Cię musiał rozśmieszyć :D Napisałem jeszcze jeden program, który na diodzie LED pokazywał mi stan logiczny w nadajniku i odbiorniku. Zgadnij co zauważyłem :?:

    Jeżeli poślę stan logiczny 1 to odbiornik odbiera 0, a jeżeli zero to odbiornik odbiera 1 :D :D :D

    Coś nieprawdopodobnego :D Tylko jak ja teraz mam używać gotowych poleceń :?: Albo wstawić jakąś bramkę, albo napisać całe polecenie nadawania i odbierania samemu :D

    Pozdrawiam ;)
  • Poziom 43  
    Wstaw jeden tranzystor do negowania sygnału. A jeżeli juz chcesz sam pisać procedury, to napisz wysyłanie. Bedzie łatwiejsze do napisania niż odbieranie.

    Dodano po 5 [minuty]:

    Ty!
    Po procedurze SEROUT dopisz po przecinku "INVERTED"

    To chyba neguje wysyłanie.

    Z odbieraniem jest tak samo.

    Napisz jak rezultaty jak to sprawdzisz.
  • Poziom 16  
    Mam pytanie czy SERIN czeka aż coś się pojawi na wejściu :?: INVERTED użyć na samym końcu :?: Mniej więcej tak: Serin Licznik , 1 , D , 2 , 2400 , 0 , 8 , 2 , Inverted :?:

    Pozdrawiam ;)
  • Poziom 43  
    SERIN czeka. Musisz wywołać SERIN zamin coś przyjdzie z odbiornika.

    Dokadnie tak jak napisałeś ale nie gwarantuje że to będzie działało bo po zdekompilowaniu programu nie widzę prawie żadnej różnicy w kodzie.



    Do dobrej praktyki należy takie zaprojektowanie toru radiowego, aby w czasie gdy nie są nadawane żadne dane to żeby nadajnik nie nadawał.
    Czyli musisz zrobic tak aby w czasie gdy nie nadajesz danych stan pinu w procesorze tym od nadawania był taki jaki ma panowac na wejściu nadajnika w momencie gdy ma nie nadawać.

    Czyli jeszcze nie wiadomo czy masz INVERTED dodac po SERIN w pierwszym procesorze czy po SEROUT w drugim procesorze.

    Na razie na próbę podłącz diodę LED do tego pinu co wysyła dane i zobacz jak dioda miga. A potem dodaj INVERTED i zobacz czy coś się zmieni. Najlepiej dodaj jakies opuźnienie pomiedzy nadawanymi danymi. Tak żeby dioda żadko się zapalała. Potem po zmianie programu powinna sie świecić i żadko gasnąć. Bez opuźnienia bedzie ciężko sprawdzić czy cos sie zmieniło bo dioda w obydwu przypadkach bedzie świeciła z połowa pełnej jasności.