• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie silnikiem proporcjonalnie w czasie
#1
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.
 
Odpowiedź
#2
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
 
Odpowiedź
#3
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.
 
Odpowiedź
#4
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
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości