Arduino Polska Forum

Pełna wersja: Sterowanie silnikiem proporcjonalnie w czasie
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam
Mam pytanie.
Chcę zrealizować sterowanie silnikiem proporcjonalnie do odczytu wartości analogowej.
Ma to wyglądać tak 
Mam do dyspozycji sygnał z czujnika halla w zakresie 0-5V, chcę żeby np co 1mV odczytu silnik kręcił się np przez 1/100 Sekundy .
Chodzi o płynny ruch silnika w zależności od odczytanej z czujnika wartości.
Jak takie coś zrealizować.
Proszę o sugestie.
Na pewno przypisujesz wartosc pinu analogowego do jakiejs zmiennej poprzez funckje analogRead(). Beda to wartosci w zakresie od 0 do 1023, proporcjonalne do napiecia. Mozesz wykorzystac mostek H albo sterowanie tranzystorowe silnikiem, bezposrednio do Arduino silnika nie mozesz podpiac. Proponuje tez uzyc funkcji delay(), ktora bedzie wykorzystywac odczyt z pinu analogowego przemnozony przez odpowiedni wspolczynnik. Wartosci ktore podajesz w funkcji delay() sa wyrazone w milisekundach. Bedziesz mogl otrzymac rodzielczosc 0,005V
Ok ale jak to napisać.
delay ma być do momentu zmiany wartości na pinie analogowym in.
Czyli Mam z czujnika np wartość 2.05V i dla tego odczytu silnik się zakręci przez określony czas.
Jest też kwestia narastania wartości napięcia z czujnika. Czyli od 0 do 5 V silnik kręci się w prawo w zależności od odczytu, natomiast od 5V do 0V silnik kręci w lewo. Kwestię wysterowania silnika mam już zrobioną wlaśnie mostkiem h.
W takim razie utworz sobie bufory - zmienna ktora bedzie przechowywac odczyc z poprzedniej petli. I teraz w zaleznosci od warunku jaki spelni odczytana wartosc przypisana w obecnej petli do innej zmiennej ustawisz wyjscia tak, aby silnik zakrecil sie w prawo, lewo, lub wcale, tzn if(obecna>poprzednia) to prawo if(obecna<poprzednia) to lewo if(obecna==poprzednia) to silnik stoi i na koncu petli loop przypisujesz do poprzedniej wartosc obecnej tj. poprzednia=obecna