Programowanie Arduino wykorzystuje procedurę obsługi przerwania do określenia prędkości silnika. Wykonany przez autorów prototyp projektu przedstawiono na fotografii powyżej.
Układ i działanie
Głównymi komponentami wykorzystanymi w tym projekcie są:
Arduino Uno. Arduino Uno jest płytką rozwojową opartą na mikrokontrolerze AVR ATmega328P z sześcioma analogowymi pinami wejściowymi i czternastoma cyfrowymi pinami I/O. Mikrokontroler posiada 32 kB pamięci ISP flash, 2 kB RAM i 1 kB EEPROM.
Czujnik prędkości. W tym projekcie zastosowano moduł czujnika prędkości oparty na opto-sprzęgle. Czujnik tego typu generuje falę kwadratową o określonej częstotliwości, która zależy od prędkości obrotowej silnika. Do badań wykorzystano moduł opto-sprzęgacza FC-03.
Kodowany enkoder tarczowy. Posiada on pewne otwory, które pomagają czujnikowi prędkości typu opto-sprzęgacz w generowaniu fali kwadratowej, jak wspomniano powyżej. W tym projekcie zastosowano kodowany koder dyskowy z dwudziestoma otworami.
Moduł Bluetooth. Popularny moduł Bluetooth HC-06 użyty w tym projekcie przesyła dane z Arduino Uno do smartfona z systemem Android. Możesz również użyć modułu Bluetooth HC-05 zamiast HC-06.
Sterownik Bluetooth Arduino. To oprogramowanie jest oparte na platformie Android i pomaga w komunikacji smartfona z modułem Bluetooth HC-06. Podczas testów użyty został Arduino Bluetooth Controller firmy Giumig Apps.
Schemat wewnętrzny modułu czujnika prędkości typu opto-sprzęgacz (FC-03) przedstawiono na rysunku 1. Schemat układu do monitorowania prędkości obrotowej silnika na smartfonie za pomocą Arduino Uno przedstawiono na rysunku 2.
Jak widać na rysunku 3, wyjście modułu czujnika prędkości jest podłączone do cyfrowego pinu 2 (D2) Arduino. Wykorzystując podejście oparte na przerwaniu, możemy wykryć impuls wytwarzany przez moduł czujnika (co dziesięć sekund), który zależy od prędkości silnika. Ponieważ w zakodowanej tarczy znajduje się dwadzieścia otworów, prędkość (w RPM) =((impuls×6)/20).
Po określeniu prędkości obrotowej silnika, Arduino wysyła te dane do smartfona (do wyświetlenia) poprzez moduł Bluetooth. Do tego celu wykorzystywany jest pin TX w Arduino.
Oprogramowanie
Kod źródłowy został napisany w języku programowania Arduino. Układ ATmega328/ATmega328P jest programowany za pomocą oprogramowania Arduino IDE.
Należy wybrać odpowiednią płytkę z menu Tools → Board w Arduino IDE i nagrać program (szkic) przez standardowy port USB w komputerze. Tutaj funkcja Serial.begin(9600) inicjalizuje port szeregowy z szybkością transmisji 9600. Funkcja attachInterrupt(0,counter,FALLING) wywołuje obsługę przerwania "counter" za każdym razem, gdy sygnał podłączony do pinu przerwania 0 Arduino przechodzi z wysokiego na niskie, tzw. opadające zbocze.
Po wgraniu kodu na płytkę Arduino (Board1), podłącz HC-06 Bluetooth do CON4, a wyjście cyfrowe czujnika do CON3. Zamontować koło enkodera tarczowego na wale silnika DC. Umieść enkoder tarczowy pomiędzy rowkami optoczujnika, jak pokazano na powyższym prototypie.
Sparuj Bluetooth pomiędzy smartfonem a HC-06. Otwórz aplikację Arduino Bluetooth Controller na telefonie z Androidem i wybierz tryb terminala. Teraz włącz silnik. Gdy tarcza enkodera obraca się pomiędzy rowkami enkodera optycznego, na smartfonie można odczytać liczbę obrotów silnika. Obroty można również odczytać na monitorze szeregowym Arduino.