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

[ATtiny13][C] Przedłużacz sygnału IR

20 Mar 2011 23:25 3730 26
  • Poziom 9  
    Witam!
    Konstruuję sobie właśnie przedłużacz IR, tj. na jednym końcu mam zamontowany odbiornik podczerwieni (TSOP1736), a na drugim kabel idący do innego pomieszczenia, na którego końcu znajduje się dioda nadawcza IR.
    Czujnik odbierając sygnał z pilota przekazuje go po prostu do innego pokoju (długość kabla ok. 30m). Urządzenie mam już zmontowane, problem tkwi we wsadzie do uC (ATtiny13). Wymyśliłem dość prosty sposób na przekazywanie sygnału z odbiornika do nadajnika, mianowicie uC oczekuje na przerwanie (zbocze narastające, impulsy z TSOPa), kiedy napotka zbocze narastające - włącza diodę nadawczą IR, a kiedy opadające - wyłącza ją. Jednak coś mi nie działa, mimo całego dnia spędzonego nad kodem nie doszedłem o co chodzi. Dioda IR podłączona do portu PB2, dodatkowa dioda pomocnicza LED (umożliwia podgląd pracy diody IR bo zachowuje się dokładnie tak jak ona) do portu PB0.
    Problemy są dwa:
    - dioda nadawcza 'coś tam' nadaje, jednak urządzenie odbiorcze (telewizor) nie reaguje
    - po chwilowym wciśnięciu przycisku na pilocie diody pozostają włączone, tak jakby nie zadziałało ostatnie przerwanie zboczem opadającym

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Urządzenie musi być w miarę uniwersalne, docelowo ma obsługiwać dekoder (najprawdopodobniej Sagem ISD 83). Bardzo bym prosił o naprowadzenie co może być źle, i czy w ogóle moje rozwiązanie ma szansę zadziałać.
    Pozdrawiam!
  • Przedłużacze helukabelPrzedłużacze helukabel
  • Poziom 21  
    adivip125 napisał:
    Witam!
    Konstruuję sobie właśnie przedłużacz IR, tj. na jednym końcu mam zamontowany odbiornik podczerwieni (TSOP1736), a na drugim kabel idący do innego pomieszczenia, na którego końcu znajduje się dioda nadawcza IR.


    Ale chwila, po co tutaj uC ? sygnał który idzie z TSOP podajesz kabelkiem gdzie na jego końcu jest tranzystorek, który włącza i wyłącza diodę IR. Czy to nie proste ?

    Dodano po 1 [minuty]:

    Albo lepiej, daj na końcu zamiast tego tranzystorka, jakąś bramkę Schmitta przy okazji, pozbędziesz się zakłóceń.
  • Pomocny post
    Poziom 32  
    Zaraz a co z nosną?
    Dodatkowo trzeba zrobic nośną bo ten sygnal z odbiornika masz juz bez nosnej
  • Poziom 35  
    Proponuję poczytać o modulacji i demodulacji sygnału IR Sygnał z pilota jest bardziej złożony niż się to wydaje. A większość scalonych odbiorników IR posiada wbudowany demodulator . W celu ponownego wysłania trzeba go ponownie zmodulować... Do całej zabawy wystarczy odbiornik i kilka tranzystorków i ewentualnie NE 555 . Bardziej przystępnie pisząc jak z odbiornika IR otrzymujesz jeden stan logiczny dioda powinna migać z częstotliwością np 56kHz jak otrzymujesz stan przeciwny dioda nie świeci. Trzeba tylko ustalić częstotliwość nośnej i i który sygnał w odbiorniku odpowiada za otrzymywanie nośnej a który za jej brak .
  • Poziom 9  
    kamyczek napisał:
    Proponuję poczytać o modulacji i demodulacji sygnału IR Sygnał z pilota jest bardziej złożony niż się to wydaje. A większość scalonych odbiorników IR posiada wbudowany demodulator . W celu ponownego wysłania trzeba go ponownie zmodulować... Do całej zabawy wystarczy odbiornik i kilka tranzystorków i ewentualnie NE 555 . Bardziej przystępnie pisząc jak z odbiornika IR otrzymujesz jeden stan logiczny dioda powinna migać z częstotliwością np 56kHz jak otrzymujesz stan przeciwny dioda nie świeci. Trzeba tylko ustalić częstotliwość nośnej i i który sygnał w odbiorniku odpowiada za otrzymywanie nośnej a który za jej brak .


    no właśnie przez ostatnie dni zgłębiłem nieco temat i faktycznie sprawa nie jest prosta... napisałem program do pomiaru czasu między pierwszym napotkanym zboczem malejącym i rosnącym (na wyjściu TSOP mamy sygnał zdemodulowany ZANEGOWANY) co dało mi możliwość pomiaru długości pierwszej logicznej jedynki sygnału IR (dla TSOPa bedzie to dlugosc dwoch jedynek, bo najczesciej jako header sygnalu (start bramki) stosuje się właśnie dwie jedynki). Obserwacje:
    - pomiary czasu pierwszego impulsu na TSOP zależą od pilota, dla każdego otrzymywalem inne wartości, jednak każdy z pilotów 'trzymał się swojej wersji', która dodatkowo zgadzała się z katalogową długością headeradla danego pilota. Zmierzone czasy były rzędu 1000-3500us
    - stosując ten sam zabieg dla podłączonej fotodiody spróbowałem zmierzyć czas znowu pierwszej jedynki, i tu ku mojemu zaskoczeniu niezależnie od pilota zawsze wychodziło 11us.
    Pytanie:
    co tu jest grane? jeśli zastosowano kodowanie Manchester to mniemam iż te 11us to czas połówki bitu, co przy zaokrągleniu daje częstotliwość ok 40kHz. dlaczego jednak w odbiornikach nie jest tak, że zbocze rosnące daje 1 na wyjściu tsopka a opadające daje 0? czemu te sygnału są tak rozwleczone, że dwie jedynki trwają 3500us zamiast 44us jak na wejściu? czy jeśli odbiorę sygnał z tsop i podzielę na jedynki i zera (przypuszczając że znam kombinacje czasów odpowiadających jedynkom i zerom - np odbieram sygnal i mam 0011) to zadziała mi nadajnik gdy wysle 0011 poprzez kodowanie Manchester z półbitem 11us?


    Edit: już wiem o co chodzi, podstawy rc5...
    dla potomnych: zmierzone przeze mnie 11us to jeden bit z nosnej, półbity są tworzone przez wiele takich jedynek i zer trwających po 11us. bardzo dobre wytłumaczenie: http://www.sbprojects.com/knowledge/ir/rc5.htm
  • Poziom 9  
    mam już wizję całego programu, pojawił się niespodziewany problem którego od kilku godzin nie mogę przeskoczyć... otóż wg wyliczeń wyszło mi, ze aby w PWMie uzyskać 36kHz to należy dołączyc zewnętrzny kwarc o czestotliwości 9,216MHz (preskaler=1). W związku z kwarcem zmieniłem procka na ATtiny 2313, kwarc podpiąłem pod XTAL1 i XTAL2 i do masy przez 2 kondensatory 22pF. Skonfigurowalem fusebity zgodnie z notą, w makefile ustawiłem F_CPU=9216000, w programie dalem #define F_CPU 9216000UL. Celem przetestowania częstotliwości podłączyłem diodę i dałem miganie w pętli z _delay_ms(1000) - jednak co się stało? dioda migała nie co 1s, a co ok. 9,5s - podejrzewałem, ze procek chodzi zamiast 9,216MHz to na 1MHz. Drugi test to sprawdzenie timera - ustawilem timer bez preskalera (wtedy dla 1MHz częstotliwość przepełnień 8-bit wynosi ok 3906) i okazało się ze mialem racje - procek chodzi na czestotliwosci 1MHz. pomyslalem ze cos nie tak z prockiem, powtórzylem dla atmegi8 - to samo, z dwoma różnymi kwarcami... co robię nie tak? coś zapominam ustawić? przetestowałem wiele ustawień fusebitow, aktualne dla atmegi8 to: low 0xDC, high 0xC9, dioda kontrolna podpieta pod PC5, program:
    Code:

    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h> 

    #define F_CPU 9216000UL
    volatile int count;

    void main()
    {   
       DDRC=0xFF;
       TCCR0|=(1<<CS00);
       TIMSK|=(1<<TOIE0);
       TCNT0=0;
       count=0;
       sei();
       
        while(1)
        {
                     //_delay_ms(1000);    //test1
                     //PORTC=~PORTC;
        }
    }

    ISR(TIMER0_OVF_vect)
    {
       count++;
       if(count==3906)
       {
          //PORTC=~PORTC;     //test2
          //count=0;   
       }
    }

    tyle nauki o timerach, preskalerach, przerwaniach, a glupiego kwarca nie moge prawidlowo podłączyć... za każdym razem przeprowadzałem test1 lub test2, opisane wyżej. bardzo proszę o jakąkolwiek wskazówke...


    Edit: problem nie dawał mi spać i znalazłem przyczyne - fusebity nie byly zapisywane. zassałem inny program - mkavrcalculator, zmiana fusebitow zadzialala prawie idealnie. teraz funkcja delay odmierza mi sekundy trwające w przyblizeniu 1s, a timer rowniez jest bliski ideału i stuka mi sekundy jak count dojdzie do 36000. iteraz moge iść spać... :]
  • Pomocny post
    Poziom 42  
    adivip125 napisał:

    no właśnie przez ostatnie dni zgłębiłem nieco temat i faktycznie sprawa nie jest prosta...


    Nie demonizujmy tego zagadnienia - to proste - tylko właśnie! trzeba zacząć od poznania podstaw kodowania IR zamiast domyślania się po omacku jak to działa.


    adivip125 napisał:

    co tu jest grane? jeśli zastosowano kodowanie Manchester to mniemam iż te 11us to czas połówki bitu, co przy zaokrągleniu daje częstotliwość ok 40kHz. dlaczego jednak w odbiornikach nie jest tak, że zbocze rosnące daje 1 na wyjściu tsopka a opadające daje 0? czemu te sygnału są tak rozwleczone, że dwie jedynki trwają 3500us zamiast 44us jak na wejściu? czy jeśli odbiorę sygnał z tsop i podzielę na jedynki i zera (przypuszczając że znam kombinacje czasów odpowiadających jedynkom i zerom - np odbieram sygnal i mam 0011) to zadziała mi nadajnik gdy wysle 0011 poprzez kodowanie Manchester z półbitem 11us?


    Tu kolega coś mocno, oj mocno pokiełbasił :(


    adivip125 napisał:

    Edit: już wiem o co chodzi, podstawy rc5...
    dla potomnych: zmierzone przeze mnie 11us to jeden bit z nosnej, półbity są tworzone przez wiele takich jedynek i zer trwających po 11us.


    No nie, lepiej żeby tego jednak potomni nie próbowali nawet zapamiętać, bo to nie ma nic wspólnego ze standardem RC5 co napisał kolega powyżej :( i to jeszcze powołując się na to co poniżej:

    adivip125 napisał:


    Przecież w tym linku masz jak na patelni podane czasy, że pół bitu w RC5 trwa 889us a nie jakieś wymyślone wyżej przez ciebie 11us ....

    Rzuć sobie okiem na te animowane rysunki na tej stronce:

    http://www.ustr.net/infrared/infrared1.shtml

    to może w końcu wyjaśni ci się dokładnie jaką rolę pełni nośna zarówno od strony diody nadawczej (dioda nadaje nośną tylko przez połowę trwania bitu) oraz od strony odbiorczej (na wyjściu TSOP'a masz stan 0 gdy nadlatuje nośna i stan 1 gdy nośnej brak) ...

    Reasumując - aby zrobić taki przedłużacz na procku (pomijam tu sprawy długości kabla itp) to trzeba badać stan na wejściu przerwania - najlepiej po prostu zrobić sobie dokładne dekodowanie ramki i na drugim końcu drugi procek ma dostać tylko kod klawisza jaki ma nadać. Tam natomiast trzeba już tylko zrobić nadajnik RC5 ;) To najszybsza droga.

    Oczywiście powyższe proponowane przeze mnie rozwiązanie będzie działać tylko dla RC5, aby więc zrobić to samo dla dowolnego pilota - trzeba sprawdzać nadlatujące ramki z dowolnego pilota i na drugiej stronie w odpowiednich miejscach (półbitach) załączać nośną. Tu jest przykład - taki ogólny tego typu dekodera:

    https://www.elektroda.pl/rtvforum/topic1795099.html
  • Przedłużacze helukabelPrzedłużacze helukabel
  • Poziom 9  
    ajajaj, za dużo filozofowałem... dzięki mirekk36, okazało sie że za dużo kombinowałem z TSOPem, a on nie robi nic tylko "czyści" sygnał z nośnej... dziękuje za wszystkie porady, przedłużacz już działa, na razie na Atmedze8. wejście TSOPa na INT0 (PD2), dioda IR podłączona do OC2 (PB3) przez 120ohm i do masy, no i kwarc 9,216MHz między wejścia XTAL i przez kondensatory 22pF do masy.
    Code:

    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h> 
    #define F_CPU 9216000UL

    ISR(INT0_vect)
    {
       if (MCUCR & ((1 << ISC01) | (1 << ISC00))) 
       {
          OCR2=0;
         MCUCR = (MCUCR | (1 << ISC01)) & !(1 << ISC00);//set falling edge
       }
       else
       {
          OCR2=128;
         MCUCR |= (1 << ISC01) | (1 << ISC00); //set raising edge
       }
    }

    void main()
    {   
       DDRD=0xFB;
       PORTD=0xFF;
       DDRB=0XFF;  // OC2 as output
       TCCR2 = _BV(WGM20)  // PWM phase correct mode
             | _BV(COM21)  //
             | _BV(CS20);  // preskaler 1
       OCR2=0;
       
       MCUCR = (MCUCR | (1 << ISC01)) & !(1 << ISC00);//set falling edge
       GIMSK |= (1 << INT0);
       sei();
       
        while(1)
        {
        }
    }

    jestem już w pełni zadowolony z wyniku, mam jeszcze tylko ostatnie pytanko - otóż zasięg nadajnika IR mojego przedłużacza jest niewielki, tylko ok. 70cm. znacie jakieś sztuczki żeby go zwiększyć? pominięcie opornika nic nie daje, testowałem z dwoma różnymi diodami IR, niestety nie znam ich długości fal.
  • Poziom 42  
    Po pierwsze rezygnacja z rezystora do diody IR co ci daje ? wiesz ? czy nie wiesz ? ;)

    Procek i tak autoamtycznie ogranicza prąd do max 20mA więc lipa - tak się nie robi po prostu. Do tego celu masz coś takiego jak tranzystor ;) dzięki temu możesz spokojnie zwiększyć prąd diody nawet do 80mA albo i więcej - tylko uważaj ;) żeby nie poszła z dymem. Pomoże ci tutaj regulacja wypełnienia no i tak na prawdę to wcale nie trzeba aż tak dużych prądów. Wystarczy trochę go zwiększyć i po bólu ;)

    Niestety może się okazać, że jeśli to ci nie pomoże to wina leży po stronie programu nadawczego, który np zamiast generować 36kHz to generuje np 12kHz bo coś źle policzyłeś itp ..... Niewielkie odchyłki w częstotliwości nośnej - nic nie przeszkodzą - czyli np spokojnie zamiast 36kHz mogłoby być 40kHz albo 32kHz .... i tyż będzie działać. Gorzej z coraz większymi odchykłkami
  • Poziom 32  
    mirekk36 napisał:

    Procek i tak autoamtycznie ogranicza prąd do max 20mA więc lipa -

    Czyżby na pewno? i mnie ma na myśli autoamamtacznnynie
  • Poziom 42  
    asembler napisał:
    mirekk36 napisał:

    Procek i tak automatycznie ogranicza prąd do max 20mA więc lipa -

    Czyżby na pewno? i mnie ma na myśli autoamamtacznnynie


    Literówka, przepraszam a jak już kolega taki czepialski to co to ma znaczyć:

    [quote=asembler] i mnie ma na myśli [/quote]

    A co do samej wartości ograniczenia - o matko! ;) no zajrzy sobie kolega do noty odpowiedniego procka to sprawdzi jaki procek jakie ma ograniczenie. Ja po prostu średnio sobie przyjmuję że każdy ma ze 20mA i już. A jak kolega chce takim wyjściem procka zasilać jakieś bardziej prądożerne odbiorniki ? może nawet silniki to powodzenia.

    Jeśli chodzi o meritum podpowiedzi to jest ok - bo jakby się kolega nie przyczepiał do mojej wypowiedzi o 20mA - to i tak trzeba w takim przypadku dać tranzystor.
  • Poziom 32  
    Oczywiście że trzeba tran. tylko w zalezności na jakie odległości.
    Ja się nie czepiam z tym że drażni mnie zasłanianie się tym że w PDF tak napsiali i tak musi być to tak to nie działa niestety. Wszystko zalezy od zależy.
    W tym wypadku spokojnie mozna w impulsie 100mA osiągnąć i pozbyć sie tranzystora oczkolwiek nie jestem zwolennikiem takiego rozwiązania,
    Ja tylko piłem do tego ze te 20mA zaleca PDF w w ciagłym poborze natomiast w impulsie tak jak na przykład jest z LED spokojnie można 8x tyle brać i żebym nie był gołosłowny 3/4 świata (chiny) podłącza diode LED bezpośrednio do drivera bez opornika wymuszając impulsowy prąd na pozimie 70-120mA czy to jest błędem? ano jest z tym że kasa rządzi i nie zmienisz tego.
    I żebyś nie mówił ze asembler jak coś powie to powie bo akurat w tym niestety robie i rzygam tym we wszystkich kierunkach
  • Poziom 38  
    W duuużym przybliżeniu wyjście sink ma 30ohm.
    fig. 177 dla ATMega32.
    Tak więc ogranicza- na poziomie 160mA dla 5V.
    Ale diodzie jest jakiś spadek napięcia- ze 2V.
    No to będzie ze 100mA.
    Procesor to może nawet wytrzymać- ale nie mam ochoty sprawdzać.
    Już niedawno niechcący sprawdziłem efekty odwrotnego podłączenia DS.
    Cały wieczór się męczyłem z "prawie działającym" czujnikiem.
    P.S.
    Dałbym tranzystor BC337 i prąd w diodę 0.5-1A.
    Dioda wytrzymuje w impulsie 1.2A- tranzystor więcej.
  • Poziom 42  
    asembler napisał:
    I żebyś nie mówił ze asembler jak coś powie to powie bo akurat w tym niestety robie i rzygam tym we wszystkich kierunkach


    A jednak coś cię ugryzło.

    Co do prezentowanej opinii z twojej strony teraz to to wygląda mniej więcej tak (sorki bez urazy).

    "no to jest OK, tylko że źle. Można tak zrobić ale lepiej nie robić. Chińczycy tak robią bo liczy się kasa, ale ja tym ..piiii.... piiiii... i bym tak nie zrobił"

    w skrócie:

    "Jest dobrze tylko że jest źle"

    Zamiast więc się oburzać może lepiej dać jakąś konkretną i jasną podpowiedź wynikającą z własnej praktyki. Nie mam zamiaru ani cię obrażać ani wyśmiewać itp ... i nigdy to nie było moim celem. Co najwyżej chodziło mi może o tego typu wypowiedzi - z których niezbyt jasno wynika o co chodzi.
  • Poziom 32  
    Nic mnie nie ugryzło bo przeciez nie miałes racji jak chyba pamietasz ale nie żebym ci wypominał.
    No niestety przychylam sie do twojej opinii ale cóz jakas firma opracowała płytkę bez oproników bezpośredno sterowanych z driwerów a druga to podchwyciła i produkują tego miliony ( bez przesady) a to że w przypadku zatrzymania sygnału zegarowego dzieją sie cuda to od tego bo jest gwarancja. Ma wytrzymac powiedzmy rok i wytrzymuje z mojego doświadczenia wynika że takie strerowanie wytrzymuje ok 2-3 lat w zalezności od zastosowanych diod a bywało że po dwóch tygodniach padało.
    Chylę czoła bo takie rozwiazanie jest super nie dośc że tanie to tu występuje syndrom powracającego klienta i napędza koniunkturę. Nie obraź się ale co z tego że zrobisz dobrze klientowi i bedziesz sie chwalił że twoje rozwiązanie wytrzyma nawet trzesienie ziemi w Japoni skoro sprzedaż jednemu raz a dobrze a wprzypadku badziewia sprzedaż kilka razy a dobrze z tym że dla ciebie a nie dla klienta.
    Niestety własnie elektronika spada na psy i jak sam widzisz nie jesteś w stanie z tym walczyć.
  • Poziom 42  
    asembler napisał:
    Niestety własnie elektronika spada na psy i jak sam widzisz nie jesteś w stanie z tym walczyć.


    Ja tam nie uważam, że schodzi na psy ;) .... nie obraź się ale mogę mieć inne zdanie. Troszkę mało mnie obchodzi to co robią ci o których piszesz i ich produkty. Powiem więcej - (bo się dziwię skąd ci to przyszło do głowy) - ja nawet nie zamierzam z tym walczyć ani o tym nie myślałem i nie będę myślał.

    Moim klientem docelowym nie są miliony odbiorców na całym świecie. Nawet nie są setki tysięcy ani tysiące. Po co w ogóle skakać z takiego tematu na jakąś zaraz tam chińską produkcję? ;) i narzekać ?

    Ja nie mam powodów do narzekań, a to co robię jest dla mnie opłacalne. I sprzedaję układy, które mają rezystory pomiędzy diodami LED jak w tym przypadku. Powiem więcej - dobrze je sprzedaję, i całkiem nieźle na tym wychodzę.

    Zresztą teraz to ja już w ogóle nie wiem o co tobie za bardzo chodzi i co wg ciebie jest poprawne ? Sterowanie diody LED przez rezystor czy bez ? Zresztą to nawet już nie istotne bo może jesteś coś dzisiaj w jakimś złym nastroju. A poza tym przez takie "niech będzie" że nasze - klepanie to - mało wynika z tego tematu dla kogoś kto chciałby się czegoś konkretnego dowiedzieć.
  • Poziom 38  
    No to oprócz tego co podałem str. 287 DS dla ATMegi32.
    Może wytrzymać 200mA dla DIL albo nawet 400mA dla TQFP w impulsie między VCC a GND.
    Ale może powodować trwałe uszkodzenie elementu.
    Może zamiast sie kłócić poczytać DS?
  • Poziom 42  
    janbernat napisał:
    Dałbym tranzystor BC337 i prąd w diodę 0.5-1A.
    Dioda wytrzymuje w impulsie 1.2A- tranzystor więcej.


    No ale o to mi chodzi od samego początku.

    Przecież próby nakarmienia odbiorników bezpośrednio z nogi procka i nie w żadnym impulsie prądami większymi niż 20-30mA to już wg mnie nieporozumienie. Można - no można! tylko po co? Co z tego, że ja wiem czy asembler wie czy janbernat wie że można? ..... Niektórzy wiedzą jeszcze przy okazji jak sobie radzić ze skutkami takich działań - jesli są już konieczne. Ale np podpowiadanie takich rozwiązań komuś początkującemu, kto nawet nie do końca sobie zdaje sprawy do czego tak na prawdę są kondensatory filtrujące blisko nóg zasilania i jak dobrać np pojemność elektrolita w takiej parze kondków - to o czym my tu mówimy ?

    Co najwyżej jak pisze janbernat - można próbować wyciskać z nogi procka 100mA - tylko czy warto? Wg mnie dyskusja nawet na ten temat dalej i podpowiadanie jak to chińczycy robią i że nie ma co z nimi walczyć to już na prawdę oznaka hmmm no może przesilenia wiosennego ;)

    a potem przychodzi do mnie osoba z gotowym swoim układem, pięknie zrobioną płytką PCB nawet na zamówienie - tylko smutna mina bo całość się zawiesza co jakiś czas i nawet "osoba" nie może dostrzec że ma to związek z momentem gdy programowo zapalane są diody LED w układzie. Krótki rzut oka na całość - i widać brak rezystorów do diod LED .... oscyloskop w rękę i pokazanie "osobie" co się dzieje na nodze np zasilania procka w trakcie zapalania czy gaszenia diod - i "osoba" - sama już zaczyna rozumieć - dlaczego jednak warto myśleć o rezystorach w takich przypadkach.
  • Poziom 32  
    Ja się nie kłocę ale zwróciłem uwage ze sobie procesor sam ograniczy 20mA max to jest błąd skoro janbernat mówi ze 400mA:-)
    Mirek to nie chodzi o to czy ja mam racje czy ty poprostu zostałem postawiony przed faktem że produkcja wyświetlaczy w chinach bez oporników stała sie faktem i sam byłem zdziwiony dlaczego to tak długo działa, a poniewaz akurat zostałem zatrudniony do naprawy takich wyświetlaczy to co chwile "tirówki" lecą no ale cóż suma sumarum wychodzi to na plus. Podejrzewam że długo nie będę tego naprawiał ze względów o których ty piszesz właśnie.

    W takim wypadku konieczny jest tranzystor żeby nie było że przekonuje do bzdurnych rozwiazań. Tranzystor kosztuje tyle co nic a załatwia wszystko a taki 300ma w impulsie potrafi wytrzymac 3A i transmitować na 20 metrów.
  • Poziom 38  
    Mirek- nie ma automatycznego ograniczenia prądu do 20mA.
    Asembler- nie ma nic o dopuszczalnym prądzie przy pracy impulsowej.
    Mirek i asembler- jest tylko dopuszczalny prąd miedzy Vcc a GND.
    Mogący doprowadzić do trwałego uszkodzenia struktury
    Mirek- nie ma przesilenia wiosennego- ma być śnieg i mróz.
    A biedny adivip125 nic z tej dyskusji nie zrozumie.
    P.S.
    Nic sobie sam nie ograniczy- ma 30ohm jako sink i MOŻE wytrzyma 400 mA.
    Czyli MOŻE nawet 12V na wyjściu.
  • Poziom 32  
    buahahaha no własnie o tym mówie,
  • Poziom 42  
    janbernat napisał:
    Mirek- nie ma automatycznego ograniczenia prądu do 20mA.


    eeee tam - jak to nie ma ? ;) zobacz jak to wyjaśnił jeden gostek na AVRFreaks ;)

    Cytat:
    The AVR has over current limit indicator (OCLI). Tiny holes appear in the package when you exceed the current limit and smoke comes out of them. When that happens it indicated the you have exceed the current limit and the chip needs to be send back to the factory to get refilled with smoke.....


    No ok - chyba przesadziłem z tą automatyką przyznaję - ale to co wyżej napisane ubawiło mnie do łez - bo co by nie mówić to prawdziwy ogranicznik.

    Oczywiście janbernat masz rację no i tu asembler miał rację z tą moją automatyką.
  • Pomocny post
    Poziom 38  
    Zresztą jako source też ma 30ohm.
    Przyznam się że to mnie nieco zdziwiło- jest symetryczne to wyjście.
    A zwykle w takich układach struktura dolnego tranzystora ma większą powierzchnię i mniejszą oporność kanału.
    No ale Atmel tak zrobił i tak jest.
    Wolno mu zrobić taką maskę na strukturę jaką chce.
    Z tego wynika tylko tyle że podłaczanie led do Vcc i przez opornik i sterowanie niskim stanem pinu jest być może przesądem ze starych procesorów.
    Takich NMOS.

    Dodano po 10 [minuty]:

    No to wracając do tematu adivip125:
    Dodaj tranzystor BC337 i w kolektor wepnij diodę IR.
    W szereg z diodą daj opornik- 10- a może nawet 5ohm?
    Między pin procesora a bazę tranzystora daj opornik np.100-470ohm.
    Równolegle do tego opornika daj kondensator ceramiczny albo ferroelektryczny 100-470nF.
    Między bazę a masę tranzystora wepnij opornik 1-4.7kohm- tak dla świętego spokoju.
    P.S.
    Zresztą- wogóle was nie interesuje jak te struktury są zbudowane. :cry:
    A przecież to są układy analogowe- maja miliony atomów domieszek w jednym złączu.
    I te atomy migrują, elektrony też- ale szybciej- i taka pamięć traci pamięć- itd.
    I taki asembler to jest język takiego wysokiego poziomu że hoho.
  • Moderator Mikrokontrolery Projektowanie
    Nie czytałem całości, ale jeżeli o ten kawałek chodzi:

    janbernat napisał:
    Z tego wynika tylko tyle że podłaczanie led do Vcc i przez opornik i sterowanie niskim stanem pinu jest być może przesądem ze starych procesorów. Takich NMOS.


    ... to w PICach jest tak (zaznaczyłem kolorami pary dla tych samych portów prądy ze źródła i do masy - są takie same):

    [ATtiny13][C] Przedłużacz sygnału IR

    + oczywiście max wspólny prąd.

    a temat ten przerabiałem tutaj: https://www.elektroda.pl/rtvforum/topic1906426.html

    Dodano po 1 [godziny] 18 [minuty]:

    A jednak nie we wszystkich bo właśnie natknąłem się na :

    [ATtiny13][C] Przedłużacz sygnału IR
  • Poziom 9  
    już mi wszystko hula na ATtiny 2313, pozostało tylko wytrawić płytke :) dzięki wszystkim za pomoc, niezła dyskusja się zawiązała ;) wszystko działa, można zamknąć temat.
    dzięki!
  • Poziom 38  
    No to teraz podaj jak to rozwiązałeś- że wszysko hula...
  • Poziom 9  
    Rozwiązanie:
    Code:

    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h> 
    #define F_CPU 9216000UL

    ISR(INT0_vect)
    {
       if (MCUCR & ((1 << ISC01) | (1 << ISC00))) 
       {
          OCR0A=0;
         MCUCR = (MCUCR | (1 << ISC01)) & !(1 << ISC00);//set falling edge
       }
       else
       {
          OCR0A=128;
         MCUCR |= (1 << ISC01) | (1 << ISC00); //set raising edge
       }
    }

    void main()
    {   
       DDRD=0xFB;
       PORTD=0xFF;
       DDRB=0XFF;  // OC2 as output
       
       TCCR0A = _BV(COM0A1)
              | _BV(WGM00);
       TCCR0B = _BV(CS00);
       
       OCR0A=0;
       
       MCUCR = (MCUCR | (1 << ISC01)) & !(1 << ISC00);//set falling edge
       GIMSK |= (1 << INT0);
       sei();
       
        while(1)
        {
        }
    }


    Zasada jest prosta: TSOP generuje przerwania, które - w zależności od kierunku zbocza zmieniają wypełnienie impulsu PWM między 0 a 128. PWM razem z kwarcem 9,216MHz generuje nośną o częstotliwości 36kHz. Zasięg nadajnika zwiększyłem poprzez zastosowanie transyztora BC337, w sposób opisany w poprzednich postach. To chyba wszystko, w razie czego odpowiem na pytania.