Witajcie, ostatnio zająłem się troszkę starym już tematem enkoderów. Więc zabrałem się za podłączanie wszystkich komponentów do zestawu ATB (enkoder + zestaw rezystorów, kondensatorów) do płytki stykowej. Następnie odpaliłem sobie poradnik Pana Mirka dotyczący elementu wyż. wym. i najpierw jednego dnia przeszedłem przez serię poradników wyłącznie oglądając i słuchając. Następnego dnia wziąłem się za brzydko mówiąc "przerżnięcie" kodu z poradnika. Jako, że jestem osobą, która szanuje czyjąś pracę i osobą która docieka i chce na własnej skórze poczuć samo pisanie kodu zacząłem kod przepisywać krok po kroku. I o dziwo po przejściu odcinków 1-5 kod działał poprawnie i enkoder spełniał swoją funkcję. Widzicie to na dwóch pierwszych wsadach. Pierwszy z nich to moja modyfikacja sterowania LED'em za pomocą PWM - tak wiem, jest kiepska i niedokończona. Nie działa to tak jak powinno ale nie o tym mowa. Drugi wsad to oryginalny wsad, który napisał Pan Mirek. Trzeci wsad to jest właśnie ta nieszczęsna biblioteka (ale biblioteka z Youtube) - nie ta biblioteka o nazwie MK_ENCODER.
No i problem jest taki, że Panu Mirkowi to działa - mi nie. Działam na enkoderze pełno-krokowym czyli z tego co rozumiem zanim mikrokontroler wykryje krok to mam 3 mikrokroki przed - czyli 4 w sumie (wtedy jest wykrywany pojedynczy krok). Działam nie na pullingu a właśnie na przerwaniach INT0 i INT1. I prosiłbym was o sprawdzenie mojego bądź co bądź przepisanego kodu z poradnika. Kod niby się kompiluje bez żadnych błędów. Nie mam zielonego pojęcia o co chodzi. Siedziałem nad tym wczoraj chyba z 9 godzin. Chciałem nadmienić, że Panu Mirkowi już program na tym etapie działał, mam identyczny zestaw, i tak samo podpięty. Enkoder pod piny PD2, PD3. Dodatkowo buzzerek i wyświetlacz LCD. Wszystkie pliki nagłówkowe mam dołączone. Wydaje mi się, że problem jest gdzieś z jakąś niedomkniętą klamrą ale eclipse nie pluje błędami. No tylko wtedy gdy nie mam zarejestrowanego eventu dotyczącego użycia switcha (gdy ustawiam jego obsługę w pliku nagłówkowym). Aha i właśnie wiem, że niektórzy mnie zlinczują za brak rezystora podłączonego do diody. Tak wiem, LED steruje się prądem nie napięciem. Ale w tym wypadku gdy steruję ją PWM'em uznałem, że nie muszę. Dioda pobiera tylko i wyłącznie 8,9 mA przy maksymalnym poziomie jasności. Poniżej kolejno znajdują się kody źródłowe + załączam filmik na Youtube, który nagrałem: 1. Plik nagłówkowy biblioteki 2. Plik kodu źródłowego biblioteki 3. Plik główny main.c
widzę literówki... w pliku .h w lini 46 zjadłeś "T" na koncu w pliku .c w funkcji encoder_init() chociażby zamiast INT piszesz INIT np.. #if USE_INIT_IRQ, #if USE_INIT w lini 100 i 102
Ale w tym wypadku gdy steruję ją PWM'em uznałem, że nie muszę.
To jeśli na takiej samej zasadzie podszedłeś i podchodzisz do innych rzeczy to nie dziwne że masz problemy .... Ciekawe skąd to przekonanie że nie potrzeba rezystora ... a szczególnie przy PWM o wartości bliskiej 100% albo 100% - zastanów się więc bo niestety opowiadasz kosmiczne historie albo innymi słowy mówiąc fantasmagorie - że w takim wypadku nie trzeba rezystora
BePower napisał(a):
Dioda pobiera tylko i wyłącznie 8,9 mA przy maksymalnym poziomie jasności.
No niestety - warto jednak głębiej poduczyć się ABSOLUTNYCH PODSTAW ELEKTRONIKI i nie piszę tego broń boże złośliwie - bo widać, że przy takim podejściu to kolega KOMPLETNIE ale to KOMPLETNIE nie rozumie jak działają diody ani też nie za bardzo się orientuje co to jest i do czego "Prawo Ohma" ....
W skrócie dioda LED - sama nie bierze panie kochany ... dioda może wziąć ILE WLEZIE aż do spalenia - bo to ile ona weźmie zależy od tego jak ty ograniczysz ten prąd - jeśli go nie ograniczysz rezystorem ... a tego jak widać nie robisz ... To przez twoją diodę przy MAX PWM 100% jak mówię poleciałoby nawet 1A - zasilacz podałby ile mu fabryka dała .... ale wtedy ograniczeniem jest wydajność prądowa pinu procka - która może być na poziomie max ok 30-40 mA !!! więc pomyśl pan sobie to właśnie TYLE wtedy leci przez twoją diodę LED bez rezystora a nie żadne tam 8,9 mA!
jak w nocie PDF widzisz że dioda LED świeci max przy 9mA to oznacza TYYLKO TYLE i AŻ TYLE - że to ty jako elektronik musisz zadbać aby ograniczyć ten prąd do takiej wartości - a nie odwrotnie !
Pomyśl sobie gdyby tak było że dioda LED bierze ile ona chce to podłącz ją do gniazdka 220V ! (żartuję nie rób tego) ... wtedy co? ona też pobierze sobie 8,9mA ? i będzie świecić ładnie ? czy po prostu ODPARUJE ? ... a jak odparuje to jak myślisz dlaczego ?
Ale ok zamiast 220V ... podłącz swoją diodę LED bez rezystora wprost do wyprowadzeń +5V i GND z zasilacza komputerowego - to powinno być dla ciebie ważne doświadczenie .... Tylko załóż okulary bo dioda może błysnąć i strzelić kawałkami plastiku - wtedy się ostatecznie przekonasz że dioda nie bierze ile ona zechce ....
teraz jaśniej ?
A nawiasem mówiąc - podłączanie diod LED bez rezystora może powodować TAK PRZERÓŻNE CYRKI na zasilaniu procka - ponieważ KATUJESZ jego pin jego MAKSYMALNYM DOPUSZCZALNYM prądem - że w ogóle procek może świrować albo nawet się restartować jeśli do tego nie zadbałeś o prawidłową np i sporą filtrację zasilania
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników