Obwód obrotomierza Arduino do precyzyjnych odczytów

Wypróbuj Nasz Instrument Do Eliminowania Problemów





Obrotomierz to urządzenie mierzące prędkość obrotową lub prędkość kątową obracającego się ciała. Różni się od prędkościomierza i licznika kilometrów, ponieważ te urządzenia radzą sobie z liniową lub styczną prędkością ciała, podczas gdy tachometr, czyli „tach”, zajmuje się bardziej podstawową prędkością obrotową.

Ankit Negi



Obrotomierz składa się z licznika i timera, oba pracujące razem zapewniają obroty.W naszym projekcie zamierzamy zrobić to samo, używając naszego Arduino i niektórych czujników, ustawimy zarówno licznik, jak i timer, a także opracujemy poręczny i łatwy tach .

Wymagania wstępne

Licznik to nic innego jak urządzenie lub konfiguracja, która może zliczać dowolne regularnie występujące zdarzenia, takie jak przejście kropki na dysku podczas obrotu. Początkowo liczniki były budowane przy użyciu mechanicznego układu i połączeń, takich jak koła zębate, zapadki, sprężyny itp.



Ale teraz używamy licznika posiadającego bardziej wyrafinowane i bardzo precyzyjne czujniki i elektronikę. Timer jest elementem elektronicznym, który jest w stanie mierzyć odstępy czasu między zdarzeniami lub mierzyć czas.

W naszym Arduino Uno są timery, które nie tylko śledzą czas, ale także zachowują niektóre z ważnych funkcji Arduino. W Uno mamy 3 timery o nazwach Timer0, Timer1 i Timer2. Te timery mają następujące funkcje- • Timer0- Dla funkcji Uno, takich jak delay (), millis (), micros () lub delaymicros ().

• Timer1 - do pracy biblioteki serwo.

• Timer2 - dla funkcji takich jak tone (), notone ().

Wraz z tymi funkcjami te 3 timery są również odpowiedzialne za generowanie wyjścia PWM, gdy polecenie analogWrite () jest używane w wyznaczonym pinie PMW.

Pojęcie przerwań

W Arduino Uno znajduje się ukryte narzędzie, które może dać nam dostęp do wielu funkcji znanych nam jako Przerwania Timera. Przerwanie to zestaw zdarzeń lub instrukcji, które są wykonywane na wezwanie przerywając bieżące funkcjonowanie urządzenia, tj. Bez względu na wszystko. kody, które twój Uno wykonywał wcześniej, ale gdy Interrupt zostanie nazwany Arduino, wykonaj instrukcje wymienione w Interrupt.

magnes na wale silnika

Teraz Interrupt można wywołać w określonych warunkach określonych przez użytkownika za pomocą wbudowanej składni Arduino. Będziemy używać tego przerwania w naszym projekcie, dzięki czemu nasz tachometr jest bardziej zdecydowany i dokładniejszy niż inny projekt tachometru obecny w Internecie.

Komponenty wymagane dla tego projektu obrotomierza przy użyciu Arduino

• Czujnik Halla (Rys.1)

moduł czujnika Halla

• Arduino Uno

Płytka Arduino UNO

• Mały magnes

mały magnes

• Przewody połączeniowe

• Obracający się obiekt (wał silnika)

Silnik prądu stałego

Konfiguracja obwodu

• Konfiguracja tworzenia jest następująca:

• W wale, którego prędkość obrotowa ma być mierzona, mocuje się mały magnes za pomocą pistoletu do kleju lub taśmy izolacyjnej.

• Czujnik Halla ma czujnik z przodu i 3 piny do połączeń.

• Piny Vcc i Gnd są podłączone odpowiednio do pinów 5V i Gnd Arduino. Pin wyjściowy czujnika jest połączony z cyfrowym pinem 2 Uno, aby zapewnić sygnał wejściowy.

• Wszystkie komponenty są zamocowane na płycie montażowej, a detektor Halla jest skierowany na płytę.

Programowanie

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

Prześlij kod.

Poznaj kod

Nasz tachometr wykorzystuje czujnik efektu Halla Czujnik efektu Halla oparty jest na efekcie Halla nazwanym na cześć odkrywcy Edwina Halla.

Efekt Halla to zjawisko generowania napięcia na przewodniku przewodzącym prąd, gdy pole magnetyczne jest wprowadzane prostopadle do przepływu prądu. To napięcie generowane z powodu tego zjawiska pomaga w generowaniu sygnału wejściowego.Jak wspomniano, w tym projekcie zostanie użyte Interrupt, aby wywołać Interrupt musimy ustawić jakiś warunek. Arduino Uno ma 2 warunki wywołania przerwania -

RISING - Gdy jest używane, Interrupt są wywoływane za każdym razem, gdy sygnał wejściowy przechodzi z LOW do HIGH.

FALING - Gdy jest używany, Interrupt są wywoływane, gdy sygnał przechodzi z HIGH do LOW.

Użyliśmy RISING, co się dzieje, gdy magnes umieszczony w wale lub obracający się obiekt zbliża się do detektora Halla, generowany jest sygnał wejściowy i wywoływane jest przerwanie, przerwanie inicjuje funkcję Interrupt Service Routine (ISR), która obejmuje przyrost wartość zliczeń, a zatem zliczanie ma miejsce.

Użyliśmy funkcji millis () Arduino i wcześniejszego czasu (zmiennej) w korespondencji do ustawienia timera.

RPM jest zatem ostatecznie obliczane przy użyciu zależności matematycznej

RPM = Liczby / Zajmowany czas Zamieniając milisekundy na minuty i przestawiając otrzymujemy wzór = 60 * 1000 / (millis () - poprzedni czas) * zliczeń.

Opóźnienie (1000) określa przedział czasu, po którym wartość obrotów na minutę zostanie zaktualizowana na ekranie, możesz dostosować to opóźnienie do swoich potrzeb.

Uzyskana wartość RPM może być dalej wykorzystana do obliczenia prędkości stycznej obracającego się obiektu z zależności v = (3,14 * D * N) / 60 m / s.

Wartość obrotów można również wykorzystać do obliczenia odległości przebytej przez obracające się koło lub tarczę.

Zamiast drukowania wartości na monitorze szeregowym, to urządzenie może być bardziej użyteczne, podłączając wyświetlacz LCD (16 * 2) i baterię w celu lepszego wykorzystania.




Poprzedni: Obwód sterownika silnika krokowego za pomocą IC 555 Dalej: Obwód cyfrowego miernika pojemności za pomocą Arduino