Hassas Okumalar için Arduino Takometre Devresi

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bir takometre, dönen bir gövdenin RPM'sini veya açısal hızını ölçen bir cihazdır. Bu cihazlar gövdenin doğrusal veya teğetsel hızıyla ilgilendiğinden, takometre a.k.a. 'tak' daha temel RPM ile ilgilendiğinden, hızölçer ve kilometre sayacından farklıdır.

Ankit Negi tarafından



Takometre, bir sayaç ve bir zamanlayıcıdan oluşur, bunların her ikisinin birlikte çalışması RPM'yi sağlar.Projemizde de aynısını yapacağız, Arduino ve bazı sensörlerimizi kullanarak hem bir sayaç hem de bir zamanlayıcı kurup kullanışlı ve kolay takmamızı geliştireceğiz. .

Önkoşullar

Sayaç, dönüş sırasında diskteki bir noktanın geçmesi gibi düzenli olarak meydana gelen belirli olayları sayabilen bir cihaz veya kurulumdan başka bir şey değildir. Başlangıçta sayaçlar mekanik düzenleme ve dişliler, mandallar, yaylar vb. Gibi bağlantılar kullanılarak inşa edildi.



Ancak şimdi daha sofistike ve oldukça hassas sensörlere ve elektroniğe sahip sayaç kullanıyoruz. Zamanlayıcı, olaylar arasındaki zaman aralığını ölçebilen veya zamanı ölçebilen elektronik bir unsurdur.

Arduino Uno'muzda yalnızca zamanı takip etmekle kalmayan, aynı zamanda Arduino'nun bazı önemli işlevlerini de sürdüren zamanlayıcılar vardır. Uno'da Timer0, Timer1 ve Timer2 adlı 3 zamanlayıcı var. Bu zamanlayıcılar aşağıdaki işlevlere sahiptir: • Timer0- delay (), millis (), micros () veya delaymicros () gibi Uno fonksiyonları için.

• Timer1- Servo kitaplığının çalışması için.

• Timer2- Tone (), notone () gibi işlevler için.

Bu işlevlerin yanı sıra, bu 3 zamanlayıcı, PMW ile belirlenen pimde analogWrite () komutu kullanıldığında PWM Çıkışı oluşturmaktan da sorumludur.

Kesinti Kavramı

Arduino Uno'da, Timer Interrupts olarak bilinen çok sayıda işleve erişim sağlayabilen gizli bir araç mevcuttur. Interrupt, cihazın mevcut işleyişini kesintiye uğratma çağrısı yapıldığında yürütülen bir dizi olay veya talimattır, yani ne olursa olsun Uno'nuzun daha önce yürüttüğü kodlar, ancak bir Interrupt Arduino olarak adlandırıldığında, Interrupt'ta belirtilen talimatı yürütür.

motor mili üzerindeki mıknatıs

Artık Kesinti, dahili bir Arduino Sözdizimi kullanılarak kullanıcı tarafından tanımlanan belirli bir koşulda çağrılabilir.Bu Kesmeyi, takometremizi daha kararlı ve web'de bulunan diğer Takometre projesinden daha hassas hale getiren projemizde kullanacağız.

Arduino kullanarak bu Takometre projesi için gerekli bileşenler

• Hall Etkisi Sensörü (Şekil 1)

hall etkisi sensör modülü

• Arduino Uno

Arduino UNO kurulu

• Küçük mıknatıs

küçük mıknatıs

• Atlama telleri

• Dönen Nesne (Motor mili)

DC motoru

Devre Kurulumu

• Oluşturma kurulumu aşağıdaki gibidir -

• Dönüş hızı ölçülecek şafta, tutkal tabancası veya elektrik bandı kullanılarak küçük bir mıknatıs takılır.

• Hall Effect sensörünün önünde bir dedektör ve bağlantılar için 3 pim bulunur.

• Vcc ve Gnd pinleri sırasıyla Arduino'nun 5V ve Gnd pinlerine bağlıdır. Sensörün Çıkış pini, giriş sinyalini sağlamak için Uno'nun dijital pini 2'ye bağlanır.

• Tüm bileşenler bir montaj panosuna sabitlenmiştir ve Hall detektörü panodan işaretlenmiştir.

Programlama

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
}

Kodu yükleyin.

Kodu bilin

Takometremizde Hall Etkisi Sensörü Hall Etkisi sensörü, keşfi Edwin Hall'un adını taşıyan Hall efektine dayanmaktadır.

Hall Etkisi, akımın akışına dik olarak bir manyetik alan verildiğinde, akım taşıyan bir iletken boyunca voltaj oluşumu olgusudur. Bu fenomen nedeniyle üretilen bu voltaj, Giriş sinyali üretiminde yardımcı olur. Belirtildiği gibi Interrupt bu projede kullanılacaktır, Interrupt'ı çağırmak için bazı koşulları ayarlamamız gerekir. Arduino Uno'nun Kesintileri aramak için 2 koşulu vardır.

YÜKSELEN - Bu kullanıldığında, Giriş sinyali DÜŞÜK'ten YÜKSEK'e her gittiğinde Kesme çağrılır.

YANLIŞ - Bunu kullandığınızda, sinyal HIGH'dan LOW'a gittiğinde Interrupt çağrılır.

RISING'i kullandık, şudur ki şafta veya dönen nesneye yerleştirilen mıknatıs Hall dedektörüne yaklaştığında Giriş sinyali üretilir ve Interrupt çağrılır, Interrupt, Interrupt Service Routine (ISR) işlevini başlatır ve sayım değeri ve dolayısıyla sayım gerçekleşir.

Zamanlayıcıyı kurmak için yazışmalarda Arduino'nun millis () fonksiyonunu ve previoustime (değişken) işlevini kullandık.

RPM, sonunda matematiksel ilişki kullanılarak hesaplanır.

RPM = Sayımlar / Alınan Zaman Milisaniyeleri dakikalara çevirerek ve yeniden düzenleme formülüne ulaşırız = 60 * 1000 / (milis () - önceki zaman) * sayılar.

Gecikme (1000), ekranda RPM değerinin ne kadar süre sonra güncelleneceğini belirler, bu gecikmeyi ihtiyaçlarınıza göre ayarlayabilirsiniz.

Elde edilen bu RPM değeri ayrıca dönen nesnenin teğet hızını hesaplamak için v = (3.14 * D * N) / 60 m / s ilişkisini kullanarak kullanılabilir.

RPM değeri, dönen bir tekerlek veya disk tarafından kat edilen mesafeyi hesaplamak için de kullanılabilir.

Değerleri Seri monitöre yazdırmak yerine, bu cihaz daha iyi kullanım için bir LCD ekran (16 * 2) ve pil bağlanarak daha kullanışlı hale getirilebilir.




Önceki: IC 555 kullanarak Step Motor Sürücü Devresi Sonraki: Arduino Kullanarak Dijital Kapasitans Ölçer Devresi