Skocz do zawartości

Czujnik ir - tsop 4836 problem z działaniem


Buczex

Pomocna odpowiedź

Nie wiem co nazywasz PWM, więc może tak:

1. Gdyby spojrzeć przez lupę, to dioda sterowana jest przebiegiem prostokątnym o częstotliwości np. 36kHz. To nie musi być sygnał symetryczny, w którym "górki" są takie same jak "dołki" - czyli wypełnienie 50%, ale możesz to regulować. Jeśli przebieg ten będziesz generował przy pomocy timera pracującego w którymś trybie PWM, to zmieniając wypełnienie od np. 10% do 50% możesz regulować średni prąd diody więc niejako emitowaną energię bez zmiany częstotliwości. Im będziesz bliżej zera tym mniej prądu będziesz ciągnął z zasilania, ale tym słabszy będzie zasięg - trzeba to dobrać do wymagań stawianych czujnikowi. Mozna oczywiście regulować opornikiem (czyli chwilowym prądem diody), ale to jest niewygodne. Lepiej ustawić go na jakiś w miarę duży a potem "kręcić" ustawieniami timera. Przekraczanie 50% wypełnienia nie ma sensu, bo wtedy zawartość podstawowej harmonicznej (czyli tych 36kHz) także spada czyli zasięg również, ale prąd rośnie, czyli - bez sensu. Tak więc mamy pierwszy PWM.

2. Gdybyś po prostu puścił timer i o nim zapomniał, będzie generował falę ciągłą a tego większość TSOPów nie lubi. Tak więc musisz co jakiś czas timer zatrzymywać by wyłączył prąd diody, a po jakimś czasie znów zaczął generować falę nośną 36kHz. Masz więc kolejny PWM - tym razem wolniejszy. Ma on "jedynkę" gdy fala 36kHz jest nadawana i "zero" gdy dioda nie świeci w ogóle. Jego obwiednią będzie więc przebieg prostokątny i to do tej właśnie obwiedni odwołuje się pokazany przez Ciebie wykres. Pokazuje on konieczne wypełnienie tego PWMa w zależności od tego, ile okresów fali 36kHz przepuszczasz podczas "jedynki" tego przebiegu. Gdybyś np. wypuścił od 80 do 120 okresów fali 36kHz, to musisz zrobić tak długą przerwę by sumaryczne wypełnienie obwiedni było nie większe niż 30% (prawa część wykresu). Czyli po wygenerowaniu np. 100 okresów fali 36kHz musisz wyłączyć diodę aż na 200 okresów. Jeżeli tego nie zrobisz, firma nie gwarantuje niczego a więc czułości, zapowiedzianych zniekształceń sygnału wyjściowego itd. Nie gwarantuje, że w ogóle coś odbiornik odbierze. Idąc w lewo wykres się podnosi: po wysłaniu "paczki" 60 okresów fali 36kHz możesz robić najkrótsze przerwy, bo wypełnienie obwiedni możesz zwiększyć do 70%. Jeszcze bardziej skracając długość "paczek", znów musisz schodzić z wypełnieniem obwiedni i dla krótkich, 10-impulsowych musisz znów powrócić do wypełnienia 30% czyli odczekiwania 20 okresów fali 36kHz w ciszy.

Czy to jakoś tłumaczy ten wykres?

Nie wiem w jakim kontekście pytasz o siłę sygnału więc nie wiem co odpowiedzieć.

Link do komentarza
Share on other sites

zmodyfikowalem program

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

int main() {


TCCR0B |= (1 << CS00);	//bez preskalera
TCCR0A |= (1 << WGM01);	//tryb ctc
TIMSK0 |= (1 << OCIE0A);					//timer regulujacy wysylaniem sygnalu przez diode
TCCR0A |= (1 << COM0A0);
OCR0A = 110;	//zliczanie do 110

DDRC |= (1 << PC4);	//dioda ir
DDRB &= ~(1 << PB2);	// wejscie dla odbiornika ir
PORTB |= (1 << PB2);	// podicagniecie pb2 pull upem



DDRD |=(1<<PD7);
DDRD |= (1 << PD5);
sei();

while (1) {
	//PORTD ^=(1<<PD6);
	//PORTD ^=(1<<PD7);
if(!(bit_is_set(PINB,PB2))){	//sprawdza czy tsop daje stan niski
		PORTD ^= (1 << PD5);
		_delay_ms(50);
}

};
}



ISR(TIMER0_COMPA_vect) {	// timer reguluje wysylanie sygnalu przez diode

static uint8_t licznik_wysylania=0;



/*test 2*/
if(licznik_wysylania<=120){	//wysyla 20 paczek
		licznik_wysylania++;
		PORTC ^= (1 << PC4);

		}
		else{
			licznik_wysylania++;
			if(licznik_wysylania==166){		// 50 paczek czeka, dajac wypelnienie 0,4
				licznik_wysylania=0;
				}
			}

	}


wszystko dziala, tylko jest jeden maly mankament, zaraz po wlaczeniu ukladu dioda(sygnalizacyjna na PD5) miga sama z siebie przez ok 3s, czym moze to byc spowodowane?

Link do komentarza
Share on other sites

Cieszę się, że działa choć nie wiem co to znaczy. Jakie uzyskałeś zasięgi? Na jakich przeszkodach? Z jakim prądem zasilania? Z jakim prądem chwilowym diody? itd..

Co do mrugania: jeśli nie dzieje się nic nadprzyrodzonego, Twoja dioda mruga 10 razy na sekundę gdy na pinie PB2 jest zero. To może zamiast pytać internet, zmierz tam napięcie? Być może TSOP musi mieć trochę czasu po włączeniu na stabilizację swoich wewnętrznych stanów i w tym czasie wypuszcza stan zero?

Mam też kilka uwag/pytań:

1. Widzę, że wciąż korzystasz z przerwania 72kHz - to bardzo, naprawdę bardzo często. W sumie to nie jestem pewien czy procesor się wyrabia z taką częstotliwością i czy rzeczywiście nadawana jest fala 36kHz. Do nadawania IR masz tryb sprzętowej generacji przebiegów PWM (np. tryb 7 timera 0). Dlaczego z tego nie korzystasz? Możesz wtedy dowolnie ustawić okres i wypełnienie fali 36kHz. Wystarczy diodę nadawczą podłączyć do OC0B i odpowiednio ustawić timer0. Czas (obwiednię) nadawanych paczek możesz liczyć innym timerem lub w ostateczności - tak dla próby - odliczać delay_us().

2. W ISR, w zależności od stanu licznika odwracasz bit PC4 lub nie, co produkuje symetryczną falę 36kHz. Skąd wiesz w jakim stanie zatrzymujesz ten pin gdy nic nie nadajesz? Wtedy dioda IR powinna być zgaszona a pin "zaparkowany" do stanu 0.

3. Nieprawdziwe komentarze to gorzej niż żadne.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.