ATNEL tech-forum
https://forum.atnel.pl/

Czujnik HC-SR04
https://forum.atnel.pl/topic21270.html
Strona 1 z 1

Autor:  Pixelxx [ 10 wrz 2018, o 10:48 ]
Tytuł:  Czujnik HC-SR04

Witam.

Postanowiłem się zabrać za czujnik HC-SR04. Kod wygląda na chwilę obecną tak i coś źle mierzy czas w us i też źle przelicza na cm.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  Situs [ 10 wrz 2018, o 17:33 ]
Tytuł:  Re: Czujnik HC-SR04

Zakładając że konfiguracja timera jest OK, radziłbym Ci zerowac TCNT1 w funkcji hc_pomiar() a w przerwaniu tylko przypisywać do EchoWidth TCNT1.


Do tego ten delay dać tuż po hc_pomiar()

Autor:  andrews [ 11 wrz 2018, o 05:28 ]
Tytuł:  Re: Czujnik HC-SR04

Pixelxx napisał(a):
#define HC_ECHO (1<<PD6)
#define ECHO_PORT PORTC
#define ECHO_DIR DDRC

Jaki typ mikrokontrolera i właściwie do którego pinu masz podłączony sygnał ECHO?
Próbowałem szukać mikrokontrolera z pinem ICP1 na szóstym pinie PORTC i jakoś nie mogłem znaleźć.

Pixelxx napisał(a):
coś źle mierzy czas w us

Mógłbyś sprecyzować, co to dokładnie oznacza?

Autor:  Pixelxx [ 11 wrz 2018, o 09:53 ]
Tytuł:  Re: Czujnik HC-SR04

uC to Atmega32 i częstotliwość ma na 8Mhz i rezonator wewnętrzny.

Zle mierzy tzn pokazuje jakiś czas i jakąś odległość, ale na wysokość gdzieś 1m pokazuje 15cm
I ICP1 jest na PD6 w Atmega32


Obrazek

Autor:  Marhef [ 11 wrz 2018, o 10:07 ]
Tytuł:  Re: Czujnik HC-SR04

Jak kolega wyżej zauważył, w programie echo port masz ustawiony na port C

Autor:  andrews [ 11 wrz 2018, o 10:21 ]
Tytuł:  Re: Czujnik HC-SR04

Pixelxx napisał(a):
ICP1 jest na PD6 w Atmega32

Gdzie jest to wiadomo. Pytanie było raczej gdzie to fizycznie podłączyłeś, bo w programie masz pomylone - podciągasz do Vcc pin 6 PORTC.
Pixelxx napisał(a):
Zle mierzy tzn pokazuje jakiś czas i jakąś odległość, ale na wysokość gdzieś 1m pokazuje 15cm

A jak zmieniasz wysokość, to wskazanie się zmienia proporcjonalnie?

Autor:  Pixelxx [ 11 wrz 2018, o 10:28 ]
Tytuł:  Re: Czujnik HC-SR04

Fakt pomyliłem DDRD miało być, poprawiłem już to i nadal to samo.
Tak zmienia się proporcjonalnie

Autor:  andrews [ 11 wrz 2018, o 17:06 ]
Tytuł:  Re: Czujnik HC-SR04

Pixelxx napisał(a):
Fakt pomyliłem DDRD miało być, poprawiłem już to i nadal to samo.

Oczywiście, że to nic nie zmieni, bo przecież i tak do tego rejestru nic nie wpisujesz. Wpisujesz za to do rejestru zdefiniowanego jako ECHO_PORT, któremu przypisałeś PORTC, a intencją było raczej wpisanie do PORTD. Ale to mniej istotne, chciałem się upewnić, że to pomyłka w kodzie, a wyjście ECHO z modułu HC-SR04 masz prawidłowo podłączone do pinu 6 portu D, bo uznałem, że skoro pomyliłeś się w kodzie, to może też źle podłączyłeś. A Ty i tak nie odpowiedziałeś na moje pytanie (czyli gdzie jest podłączone, a nie jak jest w kodzie). To co jest w kodzie i tak jest zapewne nieistotne, bo to tylko włącza na pinie rezystor podciągający do Vcc, co najprawdopodobniej jest zbędne, bo ja nie zauważyłem w dokumentacji modułu, że jest to wymagane.

Poprawiłem nieco Twój kod. Teraz powinien działać prawidłowo (o ile masz to prawidłowo podłączone). Główny błąd znajdował się w linii 31 Twojego kodu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Właściwie zwykle wymagane jest także zapewnienie atomowego dostępu do zmiennej wielobajtowej modyfikowanej w przerwaniu, jednak w tym przypadku nie jest to konieczne, chyba że znacząco skrócisz opóźnienie po wywołaniu funkcji hc_pomiar();

Autor:  Pixelxx [ 12 wrz 2018, o 10:01 ]
Tytuł:  Re: Czujnik HC-SR04

Dziękuje za pomoc. Działa!

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/