Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją 22.06.2019 we wszystkich miejscach

  1. 1 punkt
    @Mikolaj witam na forum Twoja próba widoczna na drugim i trzecim zdjęciu, nie ma niestety żadnego sensu. Zastanów się jak jest zbudowana płytka stykowa i zobacz jak wpiąłeś te kondensatory. One tam wcale nie są wpięte równolegle/szeregowo, one nie robią tam zupełnie nic Czerwona ścieżka na płytce stykowej to w całości plus, a Ty wetknąłeś do niej zarówno "plusa" jak i "minusa" od kondensatora, czyli właściwie zwarłeś jego wyprowadzenia w jednym punkcie obwodu. Efekt byłby taki sam jakbyś skręcił wyprowadzenia kondensatora i położył go na stole obok Przeanalizuj jeszcze raz schemat wewnętrzny płytki stykowej: https://forbot.pl/blog/jak-dziala-plytka-stykowa-zdjecia-budowa-przyklady-id21978
  2. 1 punkt
    WDT ma dwie główne funkcje, jedną z nich jest wybudzanie procesora z trybu SLEEP_MODE_PWR_DOWN, drugą to dbanie o ciągłość pracy programu. W trybie uśpienia nic Ci się nie zawiesi (bo wszystko przecież sam zatrzymałeś) i korzystasz z funkcji wybudzania, po ponownym wznowieniu działania programu możesz go "ustawić" w tryb ochrony przed zawieszeniem - do ewentualnego generowaniem resetu. W trybie uśpienia budzisz uC co max 8s, bo tyle max można ustawić czas WDT, jak potrzebujesz ustawić spanie na ~60s to możesz go uśpić na 15x4s lub 8x8s. Gdy to nie jest to właściwe przebudzenie to natychmiast usypiasz go ponownie. Gdy uC nie ma się okresowo wybudzać to po prostu wyłączasz WDT, włączasz po ponownym wybudzeniu. Dzięki temu można zejść ze zużyciem prądu w czasie uśpienie poniżej 200nA. Z włączonym WDT zużycie prądu sporo rośnie, coś w końcu musi działać. No i generalnie to "sporo" ma znacznie na swojej płytce, ewentualnie w PRO MINI z wylutowanymi LED, w UNO i tak działają ledy/mostki/itp, które nawet jak wyjmiesz Atmegę z płytki zjadają kilkadziesiąt mA. Opis użycia do wybudzania: http://www.gammon.com.au/forum/?id=11497 , przy okazji sporo informacji jak to robić by uzyskać te 100-200nA, jak wyłączyć naprawdę wszystko.
  3. 1 punkt
    Rozwiązania sprzętowe są eleganckie i szybkie i zaprzęgnięcie do tego 7 timerów na pewno zadziała bez obaw o prędkości impulsów. Kolega pytał jednak o Arduino i tej klasy procesorki. Moim zdaniem wszystko zależy od częstotliwości, czyli w tym przypadku od prędkości kątowych jakie chcesz nadzorować. Każdy enkoder to dwa wejścia kwadraturowe czyli mamsz ich tutaj 14. Wczytanie 14 bitów równolegle to chwila no a potem trzeba zrobić 7 identycznych (i trywialnych) automatów dekodujących zmiany stanu oraz modyfikujących liczniki programowe. Wydaje mi się, że 1ms na zrobienie tego wszystkiego spokojnie wystarczy a to oznacza, że możesz zapodawać do kilkuset zboczy sygnału na sekundę. Wiedząc jakie masz enkdery sam oceń czy to dużo czy mało. Tak na marginesie mając łańcuch złożony z węzłów to nie spodziewałbym się jakiejś dokładności. Luzy na łożyskach, wiotka konstrukcja i masz kilka milimetrów (strefy martwej) na końcu czujnika. Myślałeś o tym? Bo bezluzowe łożyskowanie tego wszystkiego i megasztywność ramion to będą najtrudbniejsze zagadnienia z jakimi się zderzysz. Nie żadne tam enkodery. Naprawdę nie wystarczą Ci 2-3 przeguby plus pionowa oś obrotu u podstawy? Ile masz na to pieniędzy, bo to wydaje się bardzo drogie rozwiązanie, takie z gatunku przemysłowo-wyczynowych.
  4. 1 punkt
    A możesz uprzejmie podać jakie polecenie wydajesz czy trzeba zgadywać? Jak coś takiego wyskakuje to znaczy, że w podanej lokalizacji nie ma pliku blink.sh, i to właśnie jest nie tak.
  5. 1 punkt
    Treker dokładnie napisał, dlaczego to u mnie nie działało, Ja je połączyłem szeregowo i wpiąłem je szeregowo w układ, to był błąd. Kondensatory trzeba połączyć szeregowo, ale w układ dać je równolegle, czyli łaczysz + z -, ale ich nie wpinasz w układ, nastepnie dajesz wolny + do plusa z zasilania, wolny - do minusa z zasilania . U ciebie to działa, dlatego, że do linii w której masz + jest wpięty także rezystor, gdyby połączeniem rezystora i lini zasilającej był kondensator, to by ci nie zadziałało. edit :Wybacz za prymitywny obrazek :D, tak to powinno być
  6. 1 punkt
    5.1 Usunąłem wszystko z if oprócz polecenia ,, wypelnienie = wypelnienie + zmiana; " i działa bez problemu. Przeczytałem komentarze i faktycznie logiczna była zmiana z int na byte ale bez tej zmiany też wszystko działa poprawnie. Gdzie tkwi rozwiązanie? 5.2 Najlepszy efekt przy delay(10); #define diodaPIN 3 byte wypelnienie = 0; int zmiana = 5; void setup() { pinMode(diodaPIN, OUTPUT); } void loop() { analogWrite(diodaPIN, wypelnienie); //punkt startwoy = 0 if (wypelnienie < 255){ // jeżeli to wypelnienie = wypelnienie + zmiana; //zwiekszac wypelnienie delay(10); } else { while(wypelnienie > 0); //jeżeli wypelnienie powyżej 0 to wypelnienie = wypelnienie – zmiana // odjąć 5 analogWrite(diodaPIN, wypelnienie); //wykonac delay(10); } } }
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...