Re: Arduino i obsługa silnika krokowego
: 18 sty 2017, 14:02
Ja wiem, ze może nie czas itd, ale IMHO wiedza z tego kursu jest zarąbiście podstawowa i aktualna i fajnie ją mieć, może nawet nie pamiętać, ale wiedzieć skąd co i jak .
Arduino ułatwia, ale jak coś nie działa, to zaciemnia.
A kod powyżej jest w C i robi tak:
-zainicjowanie rejestrów (sygnały wej/wyj każdego procesora są podzielone na rejestry, u nas 1 rejestr to 8 sygnałów (dlatego 8 bit));
-ustawienie rejestrów D na wyjście, C na wejście;
-struktura o nazwie krok zawiera ustawienia wyjść portu D, ma 8 wartości (od 0 do 7). I przejście z wartości 0 do 1 powoduje przekręcenie silnika o jeden krok w prawo, z 1 do 0 w lewo, z 1 do 2 w prawo, z 2 do 3 w prawo, z 7 na 6 w lewo itd;
-naciśnięcie klawisza + lub - (podłączonego do portu C procesora) powoduje przechodzenie po wartościach struktury w prawo lub lewo i przy okazji kręcenie się silnika, bo na wyjściach zmieniają się wartości.
-----
a swoją drogą zobacz, ten kod co masz, to dokładnie jest odzwierciedlenie togo co napisałem wyżej i zmianę stanu na wyjściu. Strzałki czerwona i niebieska pokazują kierunek zmian i kierunek ruchu silnika. I jeszcze jedno, w rozwiązaniu pokazanym przeze mnie wszystkie piny zmieniają stan w tym samym momencie, w Twoim sekwencyjnie, jeśli dość szybko to nie ma problemu, ale jeśli procesor jest wolny, to zajmuje to kilka taktów i silnik może drgać w chwili zmian a w najgorszym przypadku może się w ogóle nie obrócić, mimo że w teorii wszystko jest OK.
Ale chyba włażę z zbyt wielkie szczegóły
Arduino ułatwia, ale jak coś nie działa, to zaciemnia.
A kod powyżej jest w C i robi tak:
-zainicjowanie rejestrów (sygnały wej/wyj każdego procesora są podzielone na rejestry, u nas 1 rejestr to 8 sygnałów (dlatego 8 bit));
-ustawienie rejestrów D na wyjście, C na wejście;
-struktura o nazwie krok zawiera ustawienia wyjść portu D, ma 8 wartości (od 0 do 7). I przejście z wartości 0 do 1 powoduje przekręcenie silnika o jeden krok w prawo, z 1 do 0 w lewo, z 1 do 2 w prawo, z 2 do 3 w prawo, z 7 na 6 w lewo itd;
-naciśnięcie klawisza + lub - (podłączonego do portu C procesora) powoduje przechodzenie po wartościach struktury w prawo lub lewo i przy okazji kręcenie się silnika, bo na wyjściach zmieniają się wartości.
-----
a swoją drogą zobacz, ten kod co masz, to dokładnie jest odzwierciedlenie togo co napisałem wyżej i zmianę stanu na wyjściu. Strzałki czerwona i niebieska pokazują kierunek zmian i kierunek ruchu silnika. I jeszcze jedno, w rozwiązaniu pokazanym przeze mnie wszystkie piny zmieniają stan w tym samym momencie, w Twoim sekwencyjnie, jeśli dość szybko to nie ma problemu, ale jeśli procesor jest wolny, to zajmuje to kilka taktów i silnik może drgać w chwili zmian a w najgorszym przypadku może się w ogóle nie obrócić, mimo że w teorii wszystko jest OK.
Ale chyba włażę z zbyt wielkie szczegóły