Skocz do zawartości

Czujnik odleglosci attiny13 - schemat i program


lukaszinfer

Pomocna odpowiedź

Witam

Pracując nad swoim robotem postanowiłem wyposażyć go w taki właśnie czujnik odbiciowy. Swoją wersję wykonałem na atmega16 + dwie diody IR + TSOP1736. Atmega generuje nośną za pomocą timera i dodatkowo ja moduluje. Czujnik wykrywa obiekty po lewej, prawej stronie i dodatkowo po środku.

Niedługo pewnie pokażę swojego robota.

Link do komentarza
Share on other sites

Właśnie próbowałem uruchomić timer0 w ATtiny13 w tryb CTC (założyłem nawet temat z pytaniem) i udało mi się ;D Ze względu na małą ilość wyjść mikrokontrolera ATtiny13 udało mi się uruchomić jak na razie jedną diodę IR, w najbliższym czasie spróbuję również uruchomić drugą.

Link do komentarza
Share on other sites

Dzięki za wskazówki i dalsze badania 🙂

W tym tygodniu zakupie NE555 i wszystko zobacze 😃 Bascom juz naprawiony.

Ale mam jeszcze jedno pytanko czy istnieje fukcja toggle LCD w BASCOMIE ???

Chodzi mi o to ze gdy S1 naciskam wysakuje na LCD ON a za nastepnym razem OFF itd...

Link do komentarza
Share on other sites

fukcja toggle LCD w BASCOMIE

Pierwszy raz o czymś takim słyszę. Jest wogóle taka funkcja? Zawsze można ustawić zmienną typu bit, żeby było wiadomo który raz jest przycisk naciśnięty i dalej IFy a dalej to już wiadomo.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Znaczy ze chodzilo mi o to ze:

LCD wyswietla OFF

jesli s1 wcisniety to lcd wyswietla ON (zmienia z OFF na ON)

potem jesli na lcd ON i s1 wcisniety zmienia na OFF ( z ON na OFF )

..

..

..

i powrot do poczatku

Link do komentarza
Share on other sites

Damn you, człowieku.

Togglujesz sobie bit, i w jednym ifelsie masz wszystko załatwione. Jak chcesz "togglować" wyświetlacz? 😃

Ja rozumiem biblioteki z funkcjami, ale bez jaj.

Link do komentarza
Share on other sites

Spokojnie to bylo tylko w przenosni powinienem dac "toggle" 😃

[ Dodano: 30 Mar 10 08:10 ]

Zrobiłem tak jak rasta no i działa 😉

wklejam kod moze sie komus przyda 😃

$regfile = "m16def.DAT"                                     'deklaracja procesora, w tym wypadku Atmega16
$crystal = 8000000                                          'deklaracja cześtotlwiości pracy
'Deklaracja portów od wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5

Config Lcd = 16 * 1a                                        'ustawiamy typ wyświetlacza

Config Rc5 = Pind.3

Config Portb.0 = Output

Enable Interrupts
Cursor Off


Dim Address As Byte
Dim Command As Byte
Dim Var As Byte

Cls

Do

Getrc5(address , Command )
Command = Command And &B01111111

If Address = 0 And Command = 1 Then
Toggle Portb.0
Waitms 800
End If

If Portb.0 = 0 Then
Cls
Locate 1 , 1
Lcd "---ON---"
Else
Cls
Locate 1 , 1
Lcd "--OFF--"
End If


Loop
End
Link do komentarza
Share on other sites

niewiem dlaczego wszyscy uparli się na czujniki odbicia oparte o IR nie prościej zrobić to na ultradzwiękach masz wtedy pewny pomiar odległości

No właśnie nie prościej, mało jest dobrze opisanych, działających poprawnie rozwiązań pomiaru odległości na ultradźwiękach.

Link do komentarza
Share on other sites

Poza tym przy stopniu wejściowym z dużym wzmocnieniem sonar taki potrafi się wzbudzić jeżeli na biurko spadnie cokolwiek, akumulatorek albo coś. W robocie nie miałoby to racji bytu. Trzeba by stosować aktywne filtry, co znacznie komplikuje budowę, ale jest to dość ciekawy temat, warty testów, szczególnie że przetworniki mam.

Link do komentarza
Share on other sites

Naskrobałem sobie taki o to program do Attiny13-20pu

$regfile = "ATtiny13.DAT"
$crystal = 1200000

Config Pinb.3 = Input 'fotodioda IR
Config Portb.1 = Output 'dioda informująca o przeszkodzie
Config Portb.2 = Output 'dioda nadawcza IR

Portb.1 = 0 'obie diody wyłączone
Portb.2 = 0

'Konfiguracja przetwornika analog-cyfra zaczerpnięta z jakiegoś tematu
Config Adc = Single , Prescaler = Auto , Reference = Avcc

'Deklaracje zmiennych
Dim Irka As Word 'napięcie przy wyłączonej diodzie nadawczej
Dim Irkanext As Word 'przy włączonej
Dim Wynik As Word 'różnica

Start Adc

Do

Irka = Getadc(3)

Set Portb.1
Waitms 1

Irkanext = Getadc(3)

Waitms 1
Reset Portb.1

Wynik = Irkanext - Irka

If Wynik > 0.03 Then Set Portb.2
If Wynik < 0.03 Then Reset Portb.2

Loop



End

To mój 3 program w życiu i pierwszy z ADC. Ma on w zamyśle sprawdzać napięcie na fotodiodzie, zapisywać, włączać diodę IR na te milisekundy i ponownie sprawdzać napięcie na fotodiodzie. Napięcia w zależności od przeszkód przed czujnikiem wahają się mniej więcej od 0.150V do 0.350V. Różnica napięć miałaby informować o odległości.

Pierwszy błąd to za mało pamięci SRAM w attiny jak sądzę...

Link do komentarza
Share on other sites

Tak, też coś takiego miałem. W opcjach należy zmniejszyć rozmiar ramki (stosu?), zaraz ci znajde której i na co.

Kurczę, nie umiem znaleźć. Chyba chodziło o HW Stack - zmniejsz do 16. Jezeli nie pomoże, to pogogluj: wpisz tiny 13 i error jaki ci wywala, ja kiedyś tak szukałem i znalazłem, tyle że nie pamiętam jaki to był error.

PS. Sprawdziłem u mnie, zmniejszenie HW Stack pomaga, ale i tak masz oprócz tego 3 błedy. Zmienna wynik powinna byc zmienną Single a nie Word, jak to zmienisz to już nie wywala błedów.

  • Lubię! 1
Link do komentarza
Share on other sites

Wielkie dzięki za porady. Program działa, ale muszę go skalibrować.

Co do czujników, to leniwie podłączyłem fotodiody IR anodą do masy, katodą wprost na pin procesora. Pracowała więc jak słabiutkie źródło napięciowe. To wielki błąd, prawda ?!

Jutro zrobię sprawdzoną konfigurację - fototranzystor szeregowo z rezystorem i to wpięte między VCC a GND.

Link do komentarza
Share on other sites

KD93 A propo naszej wcześniejsze rozmowy w innym temacie.

Do generowania 36 kHz używam 555. do kalibracji użyłęm miernika my-68 nie wiem na ile jest to dokładne, ale przy testowaniu zasięgu najlepsze wyniki miałem około wskazań miernika w ganichach 37-38 kHz. Postaram sie to zweryfikować w najbliższym czasie za pomocą oscyloskopu cyfrowego.

Zastosuje się do twojej rady i postaram sie jeszcze zwiekszyć prąd na diodach.

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.