Skocz do zawartości

Pomocna odpowiedź

Nie, żebym był natrętny ale dalej masz nie połączone ścieżki.Ale jak masz już płytkę to spróbuj jakimś drutem.

Jak nie masz pomysłu to spróbuj opcji follow-me (Route) pojeździć trochę myszką po ekranie i Eagle pokaże ci możliwe prowadzenia, ale czasami trzeba trochę po poprawiać.

Płytkę wytrawiłem i pocynowałem, ale oczywiście pojawił się inny problem - czujniki. Czy ktoś mógłby mi wytłumaczyć jak najlepiej i najłatwiej wygenerować 36khz ? używam timera z pinu pd.5

Skleciłem taki program na podstawie artykułu KD93 ale działa slabo ( na pewno coś robię źle tylko nie wiem co ):

$regfile = "m16def.dat"
$crystal = 16000000

Config Portb = Output
Config Porta = Input
Config Portd.5 = Output
Config Portd.7 = Output
Config Portd.4 = Output
Config Portd.6 = Output



Ocr1a = 21

Ocr1a = 21

Tccr1a = &B10111111

Tccr1b = 1

Portd.4 = 1
Portd.7 = 1


Do

If Pina.1 = 0 Then
Portb = &B00000

Elseif Pina.1 = 1 Then
Portb = &B11111
End If

Loop

Co to znaczy, że "działa słabo"? Generuje złą częstotliwość czy w ogóle nie działa? Sprawdzę dokładniej program za ~2h, teraz nie mogę.

Po prostu robi tak :

Gdy przejadę ręką z góry na dół czujnik reaguje poprzez jaśniejsze zapalenie się diod led.

Za to gdy przybliżam rękę stopniowo ( poziomo) diody zaczynają 'dragć' po czym gasną.

To jest SFH czy TSOP? Jakie masz diody (pasmo i średnica)?

Dodaj sobie paczkowanie dla diodek, zobacz w dokumentacji odbiornika jaka powinna być długość impulsów. Pokombinuj w okolicach tej długości, wychodzą całkiem ciekawe wyniki.

Odbiotniki to TSOP'Y ( sfh nie mogę nigdzie dopaść) , diody LD271, o paczkowaniu nie wiem nic więc idę szukać 😉

[ Dodano: 15-04-2012, 09:10 ]

Znalazłem w dokumentacji, gdy wpisałem wavelength ale nie wiem czy to to.

Są takie rysunki z paczkami, str. 3, tam jest "Optical Test Signal", pooglądaj sobie tez inne wykresy, tam mogą być jakieś zależności. Zrób jeszcze zdjęcie jak masz zabezpieczone diody. Jesteś pewny, że światło nie odbija się od podłoża? Spróbuj skierować czujnik w przestrzeń, daleko od wszelkich przeszkód.

Tsop jest obudowany z każdej strony kartonem ( tylko soczewka wystaje poza karton )

I jeśli dobrze myślę to gdy dodam paczkowanie to diody będą pulsowały niezależni czy jest przeszkoda czy jej nie ma, ponieważ tsop będzie odbierał paczki ( jeśli źle myślęto proszę o wytłumaczenie lub jakiśprzykładowy program )

Z datasheeta wyczytałem że ta paczka (lub przerwa między paczkami ) powinna mieć ok 600us, tak?

Tak, 600us tam było.

Tsop jest obudowany z każdej strony kartonem ( tylko soczewka wystaje poza karton )

No to kijowo, soczewka nie może wystawać, bo światło jest upierdliwe, zawsze się gdzieś poodbija i wpadnie do odbiornika 😉 Zostaw TSOP'a w spokoju, zajmij się izolowaniem diodek IR, najlepiej przy pomocy rurek aluminiowych i plasteliny. U mnie wygląda to tak:

Malutkie zdjęcie, bo wycinane z wycinanego etc, ale widać o co chodzi.

[ Dodano: 15-04-2012, 09:42 ]

A, zapomniałem. Z tym paczkowaniem to jest tak, że TSOP jest bardzo "mądry", sam sobie reguluje czułość, po dłuższym czasie odbierania blokuje się (możliwe, że dlatego gasła ci dioda po tym migotaniu). Dlatego wysyła się z diody krótkie impulsy i przerwy, żeby odbiornik je odebrał, ale nie zablokował się. Do tego do minisumo paczkowanie jest niemal konieczne, pamiętaj że czujniki na TSOP'ach są w dalszym ciągu stosowane w wielu robotach i emitując światło ciągiem dajesz przeciwnikowi informację, gdzie się znajdujesz, innymi słowy twój robot "świeci jak latarnia". Jeśli paczkujesz to twoje impulsy nie pokryją się z impulsami przeciwnika i roboty nie będa się zakłócać.

  • Pomogłeś! 1

No dobra diody zaizoluję( niestety dopiero jak wrócę z kościoła :-> )

Chodzi mi o te 600us to musi być długość paczki czy odstep między nimi ? I jak to zealizować w programie? Włączać diodę na 600 us i włączać odbiornik w tym samym momencie ( na 600us) by czekał na sygnał ?

Ja to robię tak:

-włączasz diodę

-czekasz 600us

-sprawdzasz stan na TSOP

-wyłaczasz diodę

-czekasz 600us

W pętli oczywiście. Ja to robię jeszcze nieco inaczej z racji moich 6 diodek, ale zawsze działa to na takiej zasadzie.

  • Pomogłeś! 1
                      $regfile = "m16def.dat"
$crystal = 16000000

Config Portb = Output
Config Porta = Input
Config Portd.5 = Output
Config Portd.7 = Output
Config Portd.4 = Output
Config Portd.6 = Output



Ocr1a = 21

Ocr1a = 21

Tccr1a = &B10111111

Tccr1b = 1


Do
Portd.4 = 1
Portd.7 = 1
Waitus 600

If Pina.1 = 0 Then
Portb = &B00000

Elseif Pina.1 = 1 Then
Portb = &B1111111

Portd.4 = 0
Portd.7 = 0
Waitus 600


End If

Loop

Coś w tym stylu ?

[ Dodano: 15-04-2012, 10:14 ]

                      $regfile = "m16def.dat"
$crystal = 16000000

Config Portb = Output
Config Porta = Input
Config Portd.5 = Output
Config Portd.7 = Output
Config Portd.4 = Output
Config Portd.6 = Output
Pina.1 = 1
Portd.4 = 0

Ocr1a = 21

Ocr1a = 21

Tccr1a = &B10111111

Tccr1b = 1


Do
Portd.4 = 1
Waitus 600

If Pina.1 = 0 Then
Portb = &B00000

Elseif Pina.1 = 1 Then
Portb = &B1111111

Portd.4 = 0
Waitus 600


End If

Loop

Ten program działa jako tako. gdy przed czujnikiem znajduje się przedmiot diody zaczynają mrugać a gdy nie ma nie palą się.

Teraz to już się pogubiłem 😋

Róbmy po kolei, bo walczymy tu już z izolacją a okazuje się, że już rejestry są źle ustawione. Chcesz mieć OC1A jako generator 36kHz, a OC1B jako zwykły pin I/O. Spójrz w DS'a:

http://www.atmel.com/Images/doc2466.pdf

Strona 110. Dla każdego pinu są po 2 bity do ustawienia, w tabelkach jest napisane jak ustawić te dwa bity żeby osiągnąć zamierzony efekt. Patrz na tabelki dla non-PWM. Wspomóż się polską wersja DS'a, akurat masz szczęście bo jest pod megę16. Spróbuj to sam poustawiać, bo wtedy najlepiej się nauczysz. Jak skończysz to Ci ewentualnie poprawię.

No dobra znalazłem tabelkę, i te rejestry tylko zupełnie nie wiem gdzie wpisać te wartości...

Znalazłem nawet artykuł black jacka ale nadal nic nie rozumiem.

[ Dodano: 15-04-2012, 14:20 ]

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...