Skocz do zawartości

Kurs STM32L4 – #14 – czujnik odległości, wyświetlacz 7-seg.


Komentator

Pomocna odpowiedź

Kurs STM32L4 – #14 – czujnik odległości, wyświetlacz 7-seg.

Wracamy do tematu liczników w STM32L4. Tym razem wykorzystamy je do obsługi wyświetlaczy 7-segmentowych oraz do mierzenia odległości za pomocą czujnika ultradźwiękowego HC-SR04. Przy okazji w ramach ciekawostki użyjemy też jednego ze wzmacniaczy, który wbudowany jest wewnątrz mikrokontrolera STM32L476RG.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Przypominamy: w komentarzach do kursów rozmawiamy wyłącznie na tematy związane z konkretnym kursem. Mile widziane są również informacje od osób, które korzystały wcześniej z naszych poradników. Wszystko po to, aby kursanci, którzy mają zamiar korzystać z tego kursu nie musieli "przedzierać" się przez dziesiątki postów na inne tematy. Tematy na pytanie, które nie są związane z kursem można zadawać na naszym forum o mikrokontrolerach.

Link do komentarza
Share on other sites

Zachęcam do lektury kolejnej części kursu STM32L4 - tym razem pokazujemy jak wykorzystać liczniki do tego, aby obsługiwać wyświetlacze 7-segmentowe oraz czujniki odległości, a to wszystko w pełni sprzętowo (dzięki czemu pętla główna programu jest praktycznie pusta). Warto wykonać te ćwiczenia, bo nieumiejętne obsługiwanie tego typu modułów może przysporzyć wiele kłopotów. W tym artykule opisaliśmy jedną z metod, dzięki której całość jest wręcz banalnie prosta 🙂

Link do komentarza
Share on other sites

Wkradł się drobny błąd. Przy podłączeniu wyświetlacza 7 seg. jest napisane: Wszystkie piny, do których podłączyliśmy wyświetlacz, konfigurujemy jako wejścia, powinno być: konfigurujemy jako wyjścia 

Przy wzmacniaczu operacyjnym miałem trochę kłopotów z błędami kompilacji ale w końcu wszystko ruszyło.

Powtórka z timerów fajnie zrobiona.

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

Hej, miałem problem z podłączeniem układu ale sobie poradziłem 🙂

Swoją drogą nikła konwersacja pod tym odcinkiem w porównaniu do poprzednich części. Czyżby niewiele osób tu dotarło? 😄

 

Edytowano przez dudoxx
Link do komentarza
Share on other sites

1 godzinę temu, dudoxx napisał:

Czyżby niewiele osób tu dotarło? 😄

Miejmy nadzieję, że po prostu dla większości ta część nie wymagała żadnych pytań 😉

Link do komentarza
Share on other sites

Ja mam pytanie. Domyślnie CubeMX wystawia mi PA2 jak TIM2_CH3 czyli ten od generowania impulsu PWM. Niestety ten pin nie działa (w sensie mam na ekranie value=0) i faktycznie ustawienie ręczne pinu PB10 pomaga. Czemu również nie skorzystaliśmy z Kanału drugiego tylko 1 i 3?

Aktualizacja:

Ok użycie kanału drugiego jest dalej w poradniku. Nie mniej zastanawia mnie to ze pin PA2 nie działa a pin PB10 tak

Link do komentarza
Share on other sites

Może dodam jeszcze, że korzystam z USART1 więc pin PA2 z którego korzysta USART2 mam wolny 🙂

Link do komentarza
Share on other sites

Dnia 1.02.2023 o 11:33, dudoxx napisał:

Może dodam jeszcze, że korzystam z USART1 więc pin PA2 z którego korzysta USART2 mam wolny 🙂

Jeśli używasz płytki Nucleo to konieczna może się okazać modyfikacja zworek:

uart2.thumb.png.4629090842237669c9fde77e4a9c7b03.png

Może dlatego dlatego PA2 "nie działa"?

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Hej, czy nie lepiej byłoby zdefiniować zmienne start i stop (w przypadku obsługi czujnika ultradźwiękowego) przed pętlą while zamiast redefiniować je w każdym kolejnym obiegu pętli while?

Czyli np.

uint32_t start;
uint32_t stop;

while(1){
      value[1] = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_1);
      value[2] = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_2);
      ...
}

Czy nie ma to żadnego znaczenia?

Link do komentarza
Share on other sites

@pawel1218 tak, oczywiście można tak zrobić. W tym przypadku nie ma to jednak żadnego większego znaczenia. Oczywiście zakładam, że w powyższym kodzie miały być używane zmienne start/stop zamiast tablicy value i jest to tylko "literówka" przy pisaniu przykładowego kodu 😉 

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

(edytowany)

@Treker Czy do obsługi drugiego takiego czujnika odległości wystarczy użycie tylko jednego PWM'a z pierwszego timera? A wtedy innym timerem zbierać dane z drugiego czujnika? 

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

@Kamro przyznam, że nie testowałem takiego rozwiązania, jednak takie rozwiązanie powinno działać. Warto jednak pamiętać, że jeśli wyzwolimy dwa identyczne czujniki, w identycznym momencie to mogą dość mocno się zakłócać. Ultradźwięki świetnie się odbijają praktycznie od wszystkiego, więc dużo tutaj też zależy od rozmieszczenia czujników. Wydaje mi się więc, że większym problemem będzie tutaj sama charakterystyka tych czujników 😉

Link do komentarza
Share on other sites

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...

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.