Skocz do zawartości

Pomocna odpowiedź

Napisano

Cześć

Zrobiłem wszystko według tego kursu i totalnie nic mi nie działa. Żadnej reakcji. Zainspirowałem się pewnym projektem termometru analogowego na diodach programowalnych i postanowiłem wykonać swój tyle że na diodach WS2812b bo miałem ich sporo. Najpierw żeby potestować to chciałem na Nucleo sprawdzić i totalnie zero reakcji, nawet bufor podmieniałem (do projektu kupiłem smd) i nadal nic. Już drugi dzień nad tym siedzę, a niestety oscyloskopu w domu nie mam. Ani na płytce stykowej nie działa, ani w docelowym projekcie. 

Ktoś dałby jakieś wskazówki?

@korzenbdg witam na forum 🙂 Pytanie wydzieliłem do osobnego tematu, ponieważ jeśli dobrze rozumiem nie posiadasz zestawu do tego kursu i korzystasz z jakiegoś innego sprzętu. Czy tak jest? Jakie dokładnie Nucleo posiadasz? Czy masz pewność, że posiadane przez Ciebie diody są sprawne? Testowałeś je np. z Arduino?

Pytanie zostało wydzielone z tego tematu: https://forbot.pl/forum/topic/20299-kurs-stm32l4---15---diody-rgb-ws2812b-liczniki-quiz/

 

STM32 ma logikę 3.3V. Jak masz szczęście i Twoja dioda jest w dolnym przedziale binu napięciowego to będzie Ci działać. Jak jest w górnej to Ci nie będzie działać.

To co możesz zrobić najprościej to sterować nią poprzez tranzystora OC z napięcia 5V z pull-upem, jeśli to Twój problem.

(edytowany)

@Treker Dzień dobry 🙂

Chaotycznie może to opisałem - oczywiście posiadam zestaw, ale też robię osobny projekt. Korzystając z zestawu i składając wszystko tak jak w kursie nic mi właśnie nie działa. Próbowałem bufor wymieniać i na pająka lutowałem i podłączałem do płytki stykowej i też nie działa. Żadna dioda się nie włącza po wykonaniu wszystkiego krok po kroku jak jest w kursie i zachodzę w głowę co może być nie tak. 5 buforów już wykorzystałem, diody RGB działają, bo na Arduino sprawdziłem, płytkę mojego projektu programuję przy pomocy Nucleo ściągając zworki i też nie działa, ale jestem pewien, że programator jak i cała płytka Nucleo działają.

nucleo.thumb.jpg.4fb00dcd5a979b3984272a089bc5d712.jpg

Użyłem buforu dołączonego do zestawu, jak i tego który zakupiłem do swojego projektu.

pcb.thumb.jpg.cddfd7f3a4fab63ad4975af9a7f371bd.jpg

W projekcie użyłem STM32G030K8T6 16MHz, ale w liczniku ustawiłem Counter Period na 19, więc jak dobrze rozumiem 16MHz dzielone jest przez 20 i również wychodzi 800kHz czyli 1,25us. 

Ani tu, ani tu diody się nie świecą. PCB się programuje, ponieważ czujnik wypluwa na terminal temperaturę, więc PCB na pewno się programuje przez Nucleo.

Edytowano przez korzenbdg
dodanie zdjęć.

Z częstotliwością 800kHz nadawany jest 1 bit, natomiast zauważ, że ten jeden bit ma swój timing. Dla "1" 60% czasu jest stan wysoki 30% jest niski, a dla niskiego 30% czasu to stan wysoki, 60% to czas niski (oczywiście w przybliżeniu). Zatem, żeby wyrobić się z timingiem musisz sobie podzielić ten bit na 3 albo 4 części czyli dla "1" nadajesz 110 ( lub 1110) a dla "0" 100 (lub 1000). Żeby wyrobić się z tymi bitami w czasie musisz 800kHz pomnożyć przez 3 albo 4 i to będzie Twój zegar. Weź też pod uwagę, że instrukcję trochę trwają (w ESP32-S2 z tego co pamiętam to zmiana stanu 1 na 0 lub 0 na 1 korzystając z instrukcji digitalWrite trwała 450ns), więc może trzeba też będzie wziąć to pod uwagę.

Nie wiem jak to implementujesz, bo nie pokazałeś kodu, ale to jest jedna z metod jak to można zrobić.

(edytowany)

Generalnie kwestie mojego projektu na razie odłóżmy na bok, na samym początku chciałbym żeby zadziałało mi to co jest w kursie. Będzie to jakaś baza wyjściowa do dalszej pracy.

Edytowano przez korzenbdg

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