Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

eğitim etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
eğitim etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Nisan 2021 Salı

Arduino Uno Pin Giriş/Çıkış, Örnekler, Programlama

 

Arduino Uno Pin Giriş/Çıkış, Örnekler, Programlama

Arduino Uno, bu karta programlar yükleyerek gerçek dünyadaki şeylerle etkileşime geçmek için bu kartı kullanmanıza izin verdiği için açık kaynaklı bir geliştirme kartı olarak bilinir. PIC mikrodenetleyicileri, ST mikro denetleyicileri, Texas mikrodenetleyicileri gibi birçok başka mikro denetleyici vardır, ancak Arduino çoğunlukla ucuz olduğu ve çeşitli şekillerde kullanılabildiği için kullanılır. ATMEL ATmega328p mikrodenetleyicisine dayanmaktadır .Elektrikle kontrol edilen herhangi bir şeyle herhangi bir şekilde etkileşime girebilir. Ayrıca motorlar, sensörler ve elektromıknatıslarla etkileşime girebilir. Kısaca bu panoyu kullanarak dünyaya tepki veren ve tepki veren cihazlar yapabiliriz. Kısaca Arduino binlerce projenin beyni diyebiliriz.

Arduino UNO'ya giriş

ARDUINO UNO Kartlarının farklı türleri

Arduino, her biri farklı yeteneklere sahip farklı türde geliştirme kartları yapar. Gibi Arduino Mega , Arduino UNO, Arduino Nano, Lily Pad Arduino ve çok daha fazlası avans olarak bizim projeler, çünkü Arduino bilimsel araştırmalarda kullanılıyor öğretmenleri, öğrencileri ve bu panoları olarak güncellenen ilgili diğer insanları tutmak için geliştirme kartını güncelleme devam ediyor yanı sıra robotik ve diğer birçok gelişmiş alan. Bu kartlar, pahalı olmadıkları, platformlar arası (bu geliştirme kartlarına kod yapmak için kullanılan IDE yazılımı Linux, OSX ve Windows işletim sistemi üzerinde çalışabilirken, bazı kartlar yalnızca pencerelerle sınırlıdır), genişletilebilir ve açık oldukları için yaygın olarak kullanılmaktadır. - donanım ve yazılım kaynağı.

ARDUINO Uno Giriş 

Arduino UNO, Arduino ailesinin ünlü mikrodenetleyici kartlarından biridir ve Arduino.cc tarafından geliştirilmiştir. Temel olarak Arduino.cc, açık kaynaklı bir platformdur ve temel olarak AVR mikro denetleyici Atmega328'e dayanmaktadır. Arduino ailesinin en ekonomik kartlarından biridir ve Arduino UNO'nun ağabeyi olan Arduino mega'ya göre az sayıda giriş-çıkış pini ve küçültülmüş boyutundan dolayı yaygın olarak kullanılmaktadır. Bu yazımızda kısaca Arduino UNO'dan bahsedeceğiz. Özellikleri, pin konfigürasyonu, boyutları, kalkan uyumluluğu, kodlama yazılımı, bu kartın kullanıldığı uygulamalar ve projeleri tartışacağız.

Arduino Uno Pinout Şeması

Pinout diyagramı, her bir pinin PWM, kesintiler, genel amaçlı giriş-çıkış ve analog kanal gibi birden fazla işlevi olduğunu gösterir. Ancak bir seferde her iğnenin yalnızca bir işlevini kullanabiliriz. Toplam 14 GPIO pininden oluşur Tüm pimlerin bir PWM özelliği yoktur.

Arduino Uno pinout diyagramı

Pin Yapılandırması Açıklaması ve kullanımı

Bu bölümde her bir pinin işlevini göreceğiz. Bu pinleri belirli bir özellik için nasıl başlatabiliriz?

GPIO pimleri

Son bölümde bahsedildiği gibi, Arduino Uno'da on dört adet dijital I / O pini bulunmaktadır. Tüm bu pinleri dijital giriş pinleri veya dijital çıkış pinleri olarak kullanabiliriz. Bu pinlerin sadece 2 durumu vardır, yani yüksek veya düşük veya basit kelimelerle 5 V veya 0 V arasında hiçbir değer yoktur. Bu pinler çoğunlukla anahtar açık veya kapalıyken dijital voltaj seviyesi varlığını algılamak için kullanılır). Örneğin Arduino Uno dijital girişine bağlanan switch açıkken sıfır voltaj seviyesini algılayacaktır. Anahtar kapalıysa 5 volt algılayacaktır.

  • Herhangi bir pini giriş veya çıkış olarak başlatmak için pinMode (pin_number, mode) işlevini kullanırız. Örneğin, bu işlevi bu 'pinMode (13, OUTPUT)' gibi kullanmak, 13 numaralı pini dijital çıkış pini olarak başlatacaktır.
  • Benzer şekilde bu 'pinMode (13, INPUT)', pini bir dijital giriş pini olarak başlatacaktır.
  • digitalWrite (pin_number, state) fonksiyonu, dijital çıkış pinini durum parametresine bağlı olarak yüksek veya düşük aktif hale getirir. Bu parametre YÜKSEK veya DÜŞÜK olabilir.
  •  digitalRead () işlevi, bir dijital giriş pininin durumunu okur ve giriş pini üzerindeki voltaj düzeyine göre lojik yüksek veya düşük değeri döndürür.

Analog Kanal Pinleri

Arduino Uno altı analog kanal sunar. Kartın sol tarafındaki başlıkta tüm bu analog pinler bir arada bulunur. Bu şema, analog pinlerin Pinout konumunu gösterir.

A0'dan A5'e kadar ve 10 bitlik bir çözünürlükle geliyorlar. Herhangi bir harici analog cihazı bu pinlerle bağlama esnekliği sağlarlar. Bu pinler analog voltajı 0 V ila 5 V arasında okuyabilir. Ancak, Arduino IDE'de bulunan AREF pini veya analogReference () işlevi kullanılarak daha düşük aralıkta yapılandırılabilirler. Ancak bu analog kanallarla doğrudan okuyabileceğimiz maksimum voltaj 5 volttur. Bununla birlikte, daha yüksek voltajı ölçmek için voltaj düşürme devrelerini kullanabiliriz.Bu pinleri örneklemek için ADC (analogdan dijitale dönüştürücü) kullanılır. Bu pinler analog sinyal alır ve ADC çevirici kullanarak bu analog sinyali 0 - 1023 arasında sayısal sayıya çevirirler.


Analog kanal Örnekleri

Analog kanalları kullanmak için bu işlevi kullanıyoruz

int analogoutput = analogRead (int pin_number);

analogRead () işlevi, bu işleve argüman olarak belirtilen bir pin numarasından analog voltajı okur. Çıktı değerini tam sayı tipi bir değişkene kaydediyoruz.

Arduino PWM Pinleri

Geliştirme Kurulu 14 GPIO pinine sahiptir. Ancak bunlardan sadece altı tanesi darbe genişlik modülasyon özelliğine sahiptir. 5, 6, 9, 10 ve 11 numaralı pinler PWM çıkışı sağlar. Hepsinin 8 bit çözünürlüğü var.


Tıpkı bir analog çıkış işlevi gibidir. PWM, LED'leri, motorları ve diğer aktüatörleri kontrol eder. AnalogWrite (pin_number, duty_cycle) işlevi, belirli bir görev döngüsü ile PWM çıkışı sağlar. Görev döngüsü% 0-100 veya 0-255 arasında değişebilir. Örneğin, analogWrite (5, 127) işlevi,% 50 görev döngüsüne sahip 5 numaralı pin üzerinde bir PWM oluşturur.

Diğer Pinler

  • USB girişi
  • TX ve RX pinleri (seri iletişim için)
  • SPI (seri çevre birimi arabirimi)
  • Bu panele 12 volta kadar harici güç kaynağı ile güç sağlamak için harici adaptör (kart kendi voltaj regülatörünü kullanacak ve bu voltajı gereksinimlerimize göre 5 V veya 3,3 V'a çıkaracaktır)
  • Reset Pin: Tüm kartımızı sıfırlamak ve onu çalışan programın ilk aşamasına götürmek için kullanılır. Örneğin, panomuz çalışan programımızın ortasında asılı kalır, sonra bu pini kullanabiliriz ve bu pin her şeyi temizler ve programı baştan başlatır.
  • ICSP konektörü (USB bağlantı noktasını atlamak ve kartımızı doğrudan seri aygıt olarak arabirimlendirmek için kullanılır. Bu bağlantı noktası, bozulursa ve bilgisayarımızla konuşamıyorsak yongamızı yeniden yüklemek için gereklidir)pinout diyagramı

ARDUINO UNO'NUN BELLEĞİ

  • Flash Bellek: 13KB (bir dizi talimatı kod biçiminde saklamak için kullanılır)
  • 2 KB SRAM
  • 1 KB EPROM

ARDUINO UNO'NUN TEMEL ÖZELLİKLERİ

  • 16 MHz kristal osilatör
  • Çalışma voltajı 5 V'tur ve bir USB portu veya harici bir adaptör kullanılarak elde edilebilir.
  • Harici bir mikro SD kart desteklenir
  • Bu kart yerleşik bir voltaj düzenleme özelliği ile birlikte gelir, yani cihaz diğer harici cihazlara bağlandığında voltajı kontrol altında tutar ve böylece kartın hasar görmesini önler.
  • Kolay USB arabirimi, yani harici cihazınızı bu bağlantı noktasına takın ve cihazınız kullanıma hazırdır. Bu arayüz aynı zamanda kartınızı bilgisayarınızda sanal bir seri port olarak kaydetmek için kullanılır ve avantajı, bu tip seri iletişim kurulumunun son derece kolay ve rahat olmasıdır.
  • 16 MHz saat, çoğu uygulama için yeterince hızlı olmasını sağlar.
  • Kodumuzda kolay ve hızlı hata ayıklama için yerleşik LED
  • Projemizin işlevselliği veya doğası, panomuzu daha fazla bilgi depolamak için karmaşık hale gelirse, mikro SD kartlar kullanılabilir.

Arduino Uno üzerinde D0-D13 14 adet digital pini, a0,a5 arasında 6 adet analog pini var.

Arduino Uno’ da ICSP isimli pinler digital 11, 12, 13 numaralı pinlerle aynı olup kısa devredir. Yani bu pinleri d11, d12, d13 pinleri olarak kullanabilirsiniz. Ancak ICSP’ yi veya digital pinleri kullandığınızda diğer digital 11, 12, 13 pinlerini farklı amaçla kullanamazsınız.

Arduino Uno’ da SMD ve DİP model olarak 2 farklı çipli model mevcuttur. Bu modellerin farkları DİP soketli modelde mikrodenetleyiciyi sökebilir dışarıda kullanabilirsiniz. Bunun yanı sıra DİP soket modellerinde digital pinlerin üzerinde sol tarafta 6 adet pin bulunur. Bu pinler SPI haberleşmede kullanılan MOSI(Master Out Slave In), MISO (Master In Slave Out), SCK(Serial Clock), Reset pinleridir. Bu pinler digital 11, 12, 13 pinlerinden farklı olarak kullanılabilirler. Kalan 2 pin ise 5 volt ile GND’ dir.

Digital Pinler : 0 veya 5 volt giriş, çıkış (input,output) verebilen pinlerdir. Bu pinlerden bazılarının ekstra özellikleri vardır. Mesala D13 pini Serial Clock pini olarak kullanılır yani SPI haberleşmede 2 cihazın saat hızlarını eşitleyip senkronizasyon sağlamak amaçlı kullanılır. Bunun yanı sıra PWM (pulse with modulation) dalga modülasyonu olarak kullanılabilir yani normalde digital pinler 0 veya 5 volt gerilim verebilirken PWM pinleri analogWrite komutu ile 0,019 volt hassasiyetle 0-5 volt arası gerilim verebilirler. Bu pinler hassas motor sürme gibi amaçlarla kullanılabilir.

PWM Pinleri : Yukarıda digital pin tanımında da belirttiğim gibi 0,5 volt arasında 0,019 volt hassasiyetle voltaj alabilirsiniz. Bu pinler digital pinlerden ~işaretli olanlardır.  Uno için; 3,5,6,9,10,11 numaralı digital pinlerdir.

Analog Pinler : A0-A5 Arasındaki pinlerdir, analog giriş çıkış amaçlı kullanılırlar, Analog olarak 0-5 volt arası gerilimi 5/1024 hassasiyet ile alıp verebilir. IN olarak kullanıldığında cihazların verdiği gerilimi ölçebilirsiniz.

MOSI Pini (Master Out Slave In) : Bu pin digital 11 pininde olup SPI haberleşme de master çıkışı olarak kullanılır.


MISO Pini (Master IN Slave Out) : Bu pin digital 12 pininde olup SPI haberleşme de master girişi olarak kullanılır.


SCK Pini (Serial Clock) : Bu pin SPI haberleşme de veya farklı iletişim yollarında kullanılır. 2 cihazın çalışma saat hızlarını eşitleyip senkronizasyon için kullanılır.


SS Pini (Select Slave) : Bu pin Master-Slave bağlamtılarında slave seçimi için kullanılır.


Reset Pini : Bu pin bi çok cihazda kullanılır, cihazları resetlemek amaçlı kullanılır.


IOREF : Arduino kartlar üzerindeki bu pin, mikrodenetleyicinin çalıştığı voltaj referansını sağlar.


AREF : Bu pin analog pinlerdeki voltaj ölçümü için referans pinidir.


RX Pini : Receive pinidir, Seri haberleşme de input için kullanılır, ancak arduino usb üzerinden bilgisayara bağlı ise bu pinler kullanılamaz.


TX Pini : Transmit pinidir, Seri haberleşme de output için kullanılır, ancak arduino usb üzerinden bilgisayara bağlı ise bu pinler kullanılamaz.


I2C Pinleri : Analog4 ve Analog5 pinleridir. I2C haberleşme metodu kullanılarak 2 cihaz haberleşebilir.


SDA(Serial Data) Pini : SDA Pini A4 pinidir. Bu pin analog pin özelliğinden farklı olarak I2C Bağlantısı için kullanılabilir.


SCL(Serial Clock Line) Pini : SCL Pini A5 pinidir. Bu pin analog pin özelliğinden farklı olarak I2C Bağlantısı için kullanılabilir.


3.3v Pini : 3.3 voltluk çıkış pinidir, 3.3v besleme gerektiren cihazlarınızı bu pine bağlayabilirsiniz. Ancak maksimum 50mA akım verebilir.


5v Pini : 5 voltluk çıkış pinidir. 5v besleme gerektiren cihazlarınızı bu pine bağlayabilirsiniz. Maksimum 450mA akım verebilir.


GND Pini : Toprak (-) pinidir. Cihazlarınızın gnd veya – uçlarını bu pine bağlayabilirsiniz.


VIN Pini : Voltage IN anlamına gelir, Arduino kartınızı bu pinden 5,9,12 volt gerilim ile besleyebilirsiniz. Bu pinden beslemek için güç kaynağınızın gnd ucunu da Arduino’nun herhangi bir gnd pinine bağlamanız gerekmektedir.


SPI Haberleşme Nedir ?
SPI (Serial Peripheral Interface) PIC programlama da sıklıkla kullanılan arduino’ nun da desteklediği bir haberleşme türüdür. Kısa mesafe destekler tam bir mesafe belirtilmiyor. (Ben 4 metreden sağlıklı veri alabiliyorum.) iletişim yöntemi olarak I2C e benzer. Arduino ile başka bir arduino veya sensörlerin haberleşmesi için kullanılır. Örnek olarak RFID. SPI haberleşme çok hızlıdır 8mbps civarında bir hız alınabilmektedir.

I2C Nedir ?
Inter-Integrated Circuit, Arduino’ da kullanılan seri haberleşme türüdür. 3 hat ile kullanılır bunlardan biri GND hattıdır. Yani 2 cihazın gndlerinin ortak olması gerekmektedir. Diğer hatlardan biri SDA diğeri SCL pinleridir bunlar Analog4 ve Analog5 pinleridir. Arduino da pin sayısı yetmiyor diyorsanız I2C modülleri bulunmaktadır bu modüller 8 giriş 2 çıkış şeklindedir. Yani 8 pinli 8 adet cihazı 8 adet I2C modülü ile tek bir arduino’ ya bağlayabilirsiniz.



ARDUINO UNO PROGRAMLAMA

  • Arduino ailesinin diğer geliştirme kartları gibi, bu da eskiz yapmak için Arduino IDE yazılımını kullanır (Arduino programlarına eskiz denir)
  • Arduino IDE üzerinde geliştirilen eskizler bilgisayarımıza USB portu ile bağlanarak direkt olarak aktarılabilir.
  • IDE, Linux, MAC veya Windows işletim sistemiyle uyumludur
  • Programlama dilleri C ve C ++ kullanılır
  • Arduino'nun gereksinimlerimize göre bir şeyler yapmasını sağlamak için kullanabileceğimiz binlerce önceden yüklenmiş eskiz kolayca mevcuttur.

ARDUINO UNO'NUN KODLAMASI

Kod yazacağınız zaman hatırlamanız gereken önemli şeyler:

  • Taslak bir Arduino programıdır
  • Arduino taslağındaki tüm kodlar yukarıdan aşağıya doğru işleyecek
  • Bu çizimler genellikle 10 parçaya bölünmüştür:
  • Çizimimizde ne yapacağımızı açıklayan bir başlık ile başlar.
  • Global değişkenler tanımlanır
  • Sabit isimler farklı Arduino pinlerine atanır
  • İlk değişkenler belirlenir ve yapılandırılır
  • İlk değişkenler ayarlandıktan sonra, gerekirse değişkenlerin başlangıç ​​koşullarını belirlediğimiz bir kurulum rutini ile başlar.
  • Sadece bir kez çalıştırmak istediğimiz ön kodu çalıştırır ve bu noktada seri monitörü çalıştırmak için seri haberleşme başlatılır.
  • Kurulum işlevinden döngü rutinine atlıyoruz ve bunun eskizin ana rutini olduğunu aklımızda tutuyoruz.
  • Çizimimiz çalışmaya devam ettiği sürece döngü rutini tekrar tekrar yürütülecektir.
  • Döngü rutinden sonra, birçok kullanıcı tanımlı işlev listelenir ve bu işlevler yalnızca kurulum veya döngü işlevinde çağrıldıklarında çalışır.
  • Bu kullanıcı tanımlı işlevlerin yürütülmesi, bunların kurulum işlevinde mi yoksa döngü işlevinde mi çağrıldıklarına bağlıdır. Kullanıcı tanımlı bir işlev çağrıldığında, o işleve gider, onu çalıştırır ve ardından o işlevin çağrıldığı bir sonraki çizim satırına geri döner.
  • Taslağın yalnızca 2 bölümü zorunludur, yani döngü ve kurulum işlevi

ARDUINO UNO'NUN KALKAN UYUMLULUĞU

Arduino UNO'muzun özel bir işlevi yerine getirmesini sağlamak için, kalkanları (kartın üstüne takılan pahalı bir adaptör) kullanacağız. Sayısız Arduino kalkanı mevcuttur. Kalkan seçimi, projemizin ihtiyacına ve işlevselliğine bağlıdır. Herhangi bir kalkan satın almadan önce, bu kalkanın çalışma voltajının kartımızın voltajını aşmadığından emin olun, aksi takdirde kartımızı tahrip eder. Bu nedenle, çalışma voltajından emin olduktan sonra, piyasada bulunan kalkanlardan herhangi birini kullanabiliriz. Yaygın olarak kullanılan önemli kalkanlardan bazıları aşağıda listelenmiştir:

  • Ethernet Kalkanı
  • Kablosuz Kalkan
  • Motor Kalkanı

ARDUINO UNO UYGULAMALARI

Daha önce tartışıldığı gibi, en ekonomik ve ucuz kart Arduino UNO'dur. Bu nedenle çok sayıda uygulama bu kart tarafından desteklenmektedir. Arduino UNO kullanılarak geliştirilen bazı önemli uygulamalar aşağıda listelenmiştir.Fikir vermesi amaçlı değerlendirebilirsiniz.Zaten internet üzerinde de çok fazla kaynak bulunmaktadır.

  • Yerleşik sistem
  • Robotik
  • Hareket kontrol donanımı
  • DC motor kontrolü (H köprüsü kullanarak)
  • Ardupilot (drone donanımı ve yazılımı)
  • Savunma ve güvenlik savunması
  • Otopark sayacı
  • Ev ve endüstriyel otomasyon
  • Game Duino (retro 2D oyunlar oluşturmak için)
  • Su kalitesi testi
  • Veri kaydediciler (bilimsel araştırmada kullanılır)
  • Xoscillo (açık kaynaklı osiloskop)
  • Trafik ışıkları için geri sayım sayacı

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

25 Nisan 2021 Pazar

ULN2003 tanıtımı, pin ve özellikleri

ULN2003 tanıtımı, pin çıkışı, örnek ve özellikler

Bu eğitim, ULN2003'e giriş niteliğindedir. Tüm pinlerin özelliklerini, uygulamalarını, pinlerini ve ayrıntılarını ve ULN2003 ile ilgili bu kılavuzun sonunda bir örneği göreceğiz. Aynı zamanda bir röle sürücüsü olarak da kullanılır.







Neden ULN2003'e ihtiyacımız var?

Mikrodenetleyici ve Mikroişlemci dahili bir programa veya tek bir Kontrol Ünitesinin çıkış ve giriş pinlerindeki voltajı kontrol eden bir dizi fonksiyona sahiptir. Bu kontrol fonksiyonları ayrıca tüm kontrolör devresini etkilemeden zamanlayıcı, PWM , kesintiler ve anahtarlama yöntemini dahili olarak oluşturmamıza yardımcı olur Birden çok işlev üretme sorunu basit bir denetleyici ve işlemci tarafından çözüldü.

Şimdi sorun, yüksek voltajlı DC cihazlarının devresinin nasıl kontrol edileceği ve en aza indirileceğiydi. Enerji verimliliği nedeniyle yüksek voltajlı DC motorların kullanımı oldukça yaygındı. Yaklaşık 50V ve 500mA'ya eşit olan Yüksek DC yükünü kontrol etmek için Darlington transistörlü (NPN) mantıksal bir devre kullanıldı. Bu devre yalnızca tek bir yük için kullanılabilir. Bu sorunu çözmek için bir IC adı ULN2003 tanıtıldı.

ULN2003 Giriş

ULN2003 birden fazla işlevle birlikte gelir. Aynı anda 7-Yükleri kontrol etmeye yardımcı olabilecek yedi Darlington transistörüne sahiptir. 16 pimli ve SOP, PDIP, TSSOP veya SOIC gibi çoklu paketlerle birlikte gelir. Bu, kullanıcının bir transistör devresi olarak çok fazla yer kaplamadan IC'yi herhangi bir devre ile kurmasına yardımcı olabilir. Çıkış güç kaynağı tüm çıkışlara ayrı ayrı uygulanabilir, ancak giriş tüm mikro denetleyiciler ve mikro işlemcilerle aynı olacaktır.

 Herhangi bir yük için voltaj aralığı 50V'dur, ancak akım aralığı 500mA'dır ve bu, birden fazla çıkış pini birleştirilerek artırılabilir. ULN2003, geri emf'den dahili güvenlik koruması ile birlikte gelir. Cihaza koruma sağlayan dahili geri dönüş koruma sistemine sahiptir.

ULN2003 IC'nin pin çıkışı

ULN2003 pin çıkışı

PIN YAPILANDIRMASI Açıklama 

Pin1 (Giriş 1)Bunların hepsi çıkış pinlerini kontrol etmek için kullanılan giriş pinleridir. Giriş mantığı Yüksek (5 Volt) ise, aksi takdirde Çıkış olacaktır. Giriş 1, Çıkış 1'i etkileyecektir. Giriş 2, Çıkış 2'yi etkileyecektir ve bu, Giriş 7 ve Çıkış 7'ye kadar devam edecektir.
Pin2 (Giriş 2)
Pin3 (Giriş 3)
Pin4 (Giriş 4)
Pin5 (Giriş 5)
Pin6 (Giriş 6)
Pin7 (Giriş 7)
Pin8 (GND)GND pini, hem çıkış güç kaynağının Topraklaması hem de bir giriş güç kaynağı ile ortak bir zemin olarak kullanılacaktır.
Pin9 (COM)Birden çok işlev için kullanılan ortak pim. Çoğunlukla tüm çıkışları açmak için test pinleri olarak bilinir. Bazı durumlarda endüktif yük olarak da kullanılır.
Pin10 (Çıkış 7)Çıkış pimleri, ULN2003'teki ortak topraktır. Yükü işlevsel hale getirmek için 50V ve 500mA dahilindeki herhangi bir yükü dışarıdan Çıkışa bağlayın.
Pin11 (Çıkış 6)
Pin12 (Çıkış 5)
Pin13 (Çıkış 4)
Pin14 (Çıkış 3)
Pin15 (Çıkış 2)
Pin16 (Çıkış 1)

ULN2003 IC'nin ÖZELLİKLERİ

  • Yaklaşık 50V maksimum yüksek DC voltaj aralığını kaldırabilir
  • 100V voltaj aralığına sahip başka bir versiyonda gelir.
  • Akım işleme sistemi ayrıca her giriş için 500mA'dır.
  • Aynı yük için iki pim kullanılarak akım aralığı artırılabilir.
  • Cihazı Geri EMF Korumasından korumak için dahili bir alkış diyotu ile birlikte gelir
  • ULN2003, dahili geri dönüş sistemi korumasına ve endüktif yük için kullanılabilen bir pime sahiptir.
  • Arduino, Mikroişlemci veya herhangi bir kontrolör veya IC gibi herhangi bir düşük voltajlı cihazla kontrol edebiliriz.
  • SOP, PDIP, TSSOP veya
  • ULN2003 çıkışı tüm TTL ve 5-V CMOS mantığıyla uyumludur
  • Doğrudan kendisine bağlı herhangi bir güç kaynağı kullanmadan çalışır.

ULN2003 NEREDE VE NASIL KULLANILIR? 

ULN2003, yaklaşık 50V yüksek DC voltajını kontrol etmemiz gereken herhangi bir noktada kullanılabilir. Bu IC'yi kullanmak için mükemmel çalışmasını sağlamak için izlememiz gereken bazı kurallar vardır. Giriş Pinlerine mantıksal sinyal sağlamak için herhangi bir IC veya Denetleyiciyi Giriş Kaynağı olarak ekleyin. Ardından yükün bir ucunu çıkış pimi ile bağlayın. Yükün diğer ucunu 0 - 50V Güç kaynağı ile bağlayın. Ardından, ULN2003 ile senkronizasyonu sağlamak için hem Denetleyicinin Topraklarını hem de Güç Kaynağını ULN2003 Toprak pini ile bağlayın. COM (Pin 9) olarak pin vardır. Bu pimi zemine bir düğme aracılığıyla takın.

Proteus Simülasyonu

Bu düğme tüm pinleri baypas etmek için kullanılabilir ve çıktı üretebilir. Endüktif yük koruması durumunda, bu COM pini IC güvenliği için etkili olacaktır. Her motorun güç kaynağı farklı olabilir, ancak zemin ortak kalmalıdır.


ULN2003 UYGULAMALARI

  • 7 röleler tek bir ULN2003 ile kontrol edilebilir
  • Çoğunlukla step motoru kontrol etmek için kullanılır.
  • Endüktif yüklerin ULN2003 kullanılarak kontrol edilmesi de kolaydır
  • Yüksek yüklü LED Ampüller buradan kontrol edilebilir.
  • Mantık Tamponunu çoğunlukla Dijital Elektronikte kullanmak için etkilidir.
  • Mikrodenetleyiciler ile torç sensörü olarak geniş kullanım alanına sahiptir.

Birden Fazla Yükü Kontrol Etmek İçin ÖRNEK 

Bu tek cihazla birden fazla cihazı idare edebiliriz. ULN2003 ile farklı yükleri farklı bir güç kaynağıyla bağlamanız yeterlidir. Ardından her bir yükü farklı bir güç kaynağına bağlayın. Bundan sonra IC ile zemini paylaşın. Her Giriş pini, her çıkışı kontrol eder. Şimdi, bu girişe High Logic uygulayarak açık olması gereken cihazı açın. Tüm pinleri aynı anda test etmek veya tüm cihazları aynı anda açmak için o girişte Yüksek mantık uygulayın. ULN2003'ü kullanırken her zaman tüm güç ve kontrolörlerin Topraklama'nın ULN2003 ile ortak olması gerektiğini unutmayın. Toprak, ULN2003 ile ortak değilse, çıkış üzerinde kontrolü olmayacaktır.

tek ULN 2003 ile çoklu yükler

Şekil 3: Tek bir IC ile çoklu yükler

ULN aynı anda birden fazla cihazı kontrol edebilir veya her cihazı farklı bir zamanda da kontrol edebilir. ULN2003'ün kullanımı kolaydır, ancak her IC ULN2003'ün geçerli kural ve yönetmeliklerine de kendi gereksinimlerine uyulması gerekir. Bir kullanıcı, endüktif yük veya başka herhangi bir güç devresi sorunu nedeniyle yanabileceğinden daha fazla kurallara uymuyorsa. Eğer yanmamışsa şanslısınız ve iğneleri yukarıdakilere göre değiştiriniz.



Bahadır ÖZGEN

Electronic Robotic Coding Research and Development 1975 - ∞

Learn Forever...

https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com

24 Nisan 2021 Cumartesi

MPU6050 İvmeölçer ve Jiroskop Sensörü ve Arduino

 MPU6050 İvmeölçer ve Jiroskop Sensörü Arduino



Çocukken hatırlayın, bilim fuarındaki jiroskoplar tuhaf şekillerde hareket ettikleri ve hatta yer çekimine meydan okur gibi göründükleri için bizi her zaman büyüledi. Özel nitelikleri, onları küçük RC Helikopterlerden uzay mekiğindeki gelişmiş navigasyon sistemine kadar her şeyde son derece önemli kılıyor.

Biliyor musun?

Rus Mir uzay istasyonu, güneş yönünü korumak için 11 jiroskop kullandı. Hubble Uzay Teleskobu, gözlemler sırasında teleskobun doğru doğrultuyu korumasına yardımcı olan altı navigasyon jirosuna sahiptir.

Son yıllarda, bazı kurnaz mühendisler başarılı bir şekilde mikro işlenmiş jiroskoplar yaptılar. Bu MEMS (mikroelektromekanik sistem) jiroskopları, hareket tanıma, gelişmiş oyun, artırılmış gerçeklik, panoramik fotoğraf çekimi, araç navigasyonu, fitness izleme ve daha fazlası gibi tamamen yeni bir dizi yenilikçi uygulamanın yolunu açtı.Hiç şüphe yok ki jiroskop ve ivmeölçer kendi yöntemleriyle harika. Ancak bunları birleştirdiğimizde, bir nesnenin yönelimi hakkında çok doğru bilgiler elde edebiliriz. MPU6050 burada devreye giriyor. MPU6050, hem bir jiroskop hem de ivmeölçere sahip olup, bunu kullanarak üç eksenin tümü boyunca dönüşü, yerçekimine bağlı statik ivmeyi ve ayrıca hareket, şok veya titreşim nedeniyle dinamik ivmeyi ölçebiliriz.MPU6050'yi Arduino projemizde kullanmadan önce, ivmeölçerlerin ve jiroskopların gerçekten nasıl çalıştığını görmek güzel olurdu.



İvmeölçer Nasıl Çalışır?

İvmeölçerlerin nasıl çalıştığını bilmek için, genellikle bir 3B küp içinde bir top hayal etmek yararlıdır.

İvmeölçer Çalışma İllüstrasyon - Ağırlıksız Durum

Diyelim ki, küp her şeyin ağırlıksız olduğu uzayda, top basitçe küpün ortasında yüzecek.Şimdi her duvarın belirli bir ekseni temsil ettiğini düşünelim.

Aniden kutuyu taşımak, hızlanma 1 g (tek bir G-kuvveti 1 g / yerçekimi ivmesi 9.8 m eşdeğerdir s sol 2 ), bir Biz kuvvetinin ölçülmesi durumunda bilyeli geçerli olduğu topu duvar X vuracak şüphe X duvarına X ekseninde 1g çıktı değeri alabiliriz.

İvmeölçer Çalışma İllüstrasyon - Ani Hareket

Bakalım o küpü Dünya'ya koyarsak ne olacak. Top basitçe Z duvarına düşecek ve aşağıdaki resimde gösterildiği gibi 1g'lik bir kuvvet uygulayacaktır:

İvmeölçer Çalışma İllüstrasyon - Yerçekimi Kuvveti

Bu durumda kutu hareket etmiyor ancak yine de Z ekseninde 1g okuması alıyoruz. Bunun nedeni, yerçekimi kuvvetinin topu 1g kuvveti ile aşağı doğru çekmesidir.

İvme ölçer, eğim algılama uygulamalarında yerçekiminin statik ivmesini ve ayrıca hareket, şok veya titreşimden kaynaklanan dinamik ivmeyi ölçer.

MEMS İvme Ölçer Nasıl Çalışır?

MEMS (Mikro Elektro Mekanik Sistemler) ivmeölçer, silikon bir plaka üzerine inşa edilmiş mikro işlenmiş bir yapıdan oluşur.

mems ivmeölçer çalışıyor
ivmeölçer animasyon etiketleri

Bu yapı polisilikon yaylar ile askıya alınmıştır. Belirli eksene ivme uygulandığında yapının sapmasına izin verir.

Sapma nedeniyle, sabit plakalar ve asılı yapıya takılan plakalar arasındaki kapasite değişir. Kapasitanstaki bu değişiklik, o eksendeki ivme ile orantılıdır.

Sensör, kapasitanstaki bu değişikliği işler ve bunu bir analog çıkış voltajına dönüştürür.

Jiroskop Nasıl Çalışır?

İvmeölçerler doğrusal ivmeyi ölçerken, MEMS jiroskopları açısal dönüşü ölçer. Bunu yapmak için Coriolis Etkisi olarak bilinen şeyin ürettiği gücü ölçerler .

Coriolis etkisi

Coriolis Etkisi bize, bir kütlenin (m) belirli bir yönde (v) hızıyla hareket ettiğinde ve bir dış açısal oran (Ω) uygulandığında (Kırmızı ok); Coriolis Etkisi, kütlenin dikey olarak yer değiştirmesine neden olan bir kuvvet (Sarı ok) üretir. Bu yer değiştirmenin değeri, uygulanan açısal hız ile doğrudan ilişkilidir.

coriolis bir kütle üzerindeki kuvvet

Şimdi, sürekli olarak zıt yönlerde hareket etmeleri için sürekli salınım hareketinde tutulan iki kütlenin olduğunu varsayalım. Açısal hız uygulandığında, her kütle üzerindeki Coriolis etkisi de zıt yönlerdedir, bu da aralarındaki kapasitansta bir değişikliğe neden olur; bu değişiklik hissedilir.

coriolis kuvveti iki kütleye etki eder

MEMS Jiroskopu Nasıl Çalışır?

MEMS sensörü, coriolis etkisine tepki verecek şekilde sürekli salınımlı bir hareket halinde tutulan bir dayanıklı kütleden (4 parça M1, M2, M3 ve M4 içerir) oluşur. Yatay düzlemde aynı anda içe ve dışa doğru hareket ederler.

mpu6050 accel gyro çalışma sürücü modu çıkışı

Yapıyı döndürmeye başladığımızda, hareketli dayanıklı kütleye etki eden Coriolis kuvveti, titreşimin yönünü yataydan dikeye değiştirir.

Açısal dönüşün hangi eksene uygulandığına bağlı olarak üç mod vardır.

Rulo Modu:

Koriyolis etkisi nedeniyle X ekseni boyunca açısal bir hız uygulandığında, M1 ve M3 düzlemden yukarı ve aşağı hareket edecektir. Bu, yuvarlanma açısının değişmesine neden olur, dolayısıyla buna Dönme Modu denir.

mpu6050 accel gyro çalışma rulo modu çıkışı

Adım Modu:

Y ekseni boyunca açısal bir oran uygulandığında, M2 ve M4 yukarı ve aşağı hareket edecektir. Bu, eğim açısının değişmesine neden olur, dolayısıyla Pitch Modu olarak adlandırılır.

mpu6050 accel gyro çalışma aralığı modu çıkışı

Yaw Modu:

Z ekseni boyunca bir açısal oran uygulandığında, M2 ve M4 aynı yatay düzlemde zıt yönlerde hareket edecektir. Bu, yalpalama açısının değişmesine neden olur ve buna Yalpalama Modu denir.

mpu6050 accel gyro çalışma yalpalama modu çıkışı

Koriolis etkisi tespit edildiğinde, tahrik eden kütlenin sürekli hareketi, algılama yapısı tarafından alınan ve ardından bir voltaj sinyaline dönüştürülen bir kapasitans değişikliğine (∆C) neden olacaktır.

Bilginiz olsun diye, 3 eksenli bir dijital jiroskopun MEMS yapısının kalıbı budur. ST Microelectronics'ten kesilmiş L3GD20HTR MEMS jiroskopunun görüntüsünü paylaştığı için Adam McCombs'a teşekkürler.

başı açık l3gd20htr mems jiroskop
Kredi bilgileri: Adam McCombs

MPU6050 Modül Donanımına Genel Bakış

Modülün merkezinde, 3 eksenli bir jiroskop, 3 eksenli ivmeölçer ve bir Dijital Hareket İşlemcisini (DMP) bir araya getiren düşük güçlü, ucuz 6 eksenli MotionTracking çipi, tümü küçük 4 mm x 4 mm'lik bir pakette bulunur.

Üç eksen boyunca açısal momentumu veya dönüşü, yerçekimine bağlı statik ivmeyi ve ayrıca hareket, şok veya titreşimden kaynaklanan dinamik ivmeyi ölçebilir.

mpu6050 modül donanımına genel bakış

Modül, yerleşik bir LD3985 3.3V regülatör ile birlikte gelir, böylece onu Arduino gibi bir 5V mantık mikrodenetleyici ile endişelenmeden kullanabilirsiniz.

MPU6050, ölçümler sırasında 3.6mA'dan daha az ve boşta iken yalnızca 5μA tüketir. Bu düşük güç tüketimi, pille çalışan cihazlarda uygulamaya izin verir.

Ek olarak, modülde, modüle güç verildiğinde yanan bir güç LED'i vardır.

İvme Ölçümü

MPU6050, programlanabilir dört tam ölçek aralığı ± 2g, ± 4g, ± 8g ve ± 16g olan çip üzeri ivmeölçeri kullanarak ivmeyi ölçebilir.

mpu6050 modülü ivmeölçer ekseni

MPU6050, aynı anda hareketin 3 eksenini (X, Y ve Z ekseni boyunca) örnekleyen üç 16 bit analogdan dijitale dönüştürücüye sahiptir.

Rotasyon Ölçümü

MPU6050, ± 250 ° / sn, ± 500 ° / sn, ± 1000 ° / sn ve ± 2000 ° / sn'lik dört programlanabilir tam ölçek aralığına sahip çip üstü jiroskopunu kullanarak açısal dönüşü ölçebilir.

mpu6050 modülü jiroskop ekseni

MPU6050, eşzamanlı olarak 3 dönme eksenini (X, Y ve Z ekseni etrafında) örnekleyen üç adet 16 bit analogdan dijitale dönüştürücüye sahiptir. Örnekleme hızı, saniyede 3,9 ila 8000 örnek arasında ayarlanabilir.

Sıcaklık Ölçümü

MPU6050, -40 ila 85 ° C aralığındaki sıcaklığı ± 1 ° C hassasiyetle ölçebilen yerleşik bir sıcaklık sensörü içerir.

Bu sıcaklık ölçümünün silikon kalıbın kendisi için olduğunu ve ortam sıcaklığından olmadığını unutmayın. Bu tür ölçümler genellikle ivmeölçer ve jiroskopun kalibrasyonunu dengelemek veya mutlak sıcaklıkları ölçmek yerine sıcaklık değişikliklerini tespit etmek için kullanılır.

I2C Arayüzü

Modül, Arduino ile iletişim için I2C arayüzünü kullanır. İki ayrı I2C adresini destekler: 0x68 HEX ve 0x69 HEX . Bu, iki MPU6050'nin aynı veri yolunda kullanılmasına veya veri yolundaki başka bir cihazla adres çakışmalarını önlemeye izin verir.

mpu6050 modülü i2c adres seçim pini

ADO pini, modülün I2C adresini belirler. Bu pim yerleşik bir 4.7K aşağı çekme direncine sahiptir. Bu nedenle ADO pimi bağlanmamış ayrılırken, varsayılan I2C adresi 0x68 olan HEX ve 3.3V bağladığınızda, çizgi YÜKSEK çekilir ve I2C adresi 0x69 olur HEX .

Harici Sensör Ekleme

Doğruluk düzeyini daha da artırmak için MPU6050 modülü, harici sensörleri bağlamak için bir özellik sağlar. Bu harici sensörler, ana I2C veri yolundan tamamen bağımsız olan ikinci bir I2C veri yolu (XDA ve XCL) aracılığıyla MPU6050'ye bağlanır.

mpu6050 modülü harici i2c pimleri

Bu harici bağlantı genellikle manyetik alanları üç eksende ölçebilen bir manyetometre bağlamak için kullanılır. MPU6050, ivmeölçer ve jiroskop için üçer adet olmak üzere 6 Serbestlik Derecesine (DOF) sahiptir. Bir manyetometre eklemek sensöre fazladan üç DOF ekleyerek onu 9 DOF yapar.

MPU6050 Modül Bağlantıları

MPU6050 modülünün pin açıklamaları aşağıdaki gibidir:

mpu6050 3 eksenli ivmeölçer jiroskop modülü pin çıkışı

VCCmodül için güç kaynağıdır. Arduino'nun 5V çıkışına bağlayın.

GND Arduino'nun zeminine bağlanmalıdır.

SCLbir I2C Clock pinidir. Bu, Bus Master cihazı tarafından sağlanan bir zamanlama sinyalidir. Arduino'daki SCL pinine bağlayın.

SDAbir I2C Veri pinidir. Bu hat hem gönderme hem de alma için kullanılır. Arduino'daki SDA pinine bağlayın.

XDAharici I2C veri hattıdır. Harici I2C veri yolu, harici sensörleri bağlamak içindir.

XCL harici I2C saat hattıdır.

AD0MPU6050 modülünün dahili I2C adresini değiştirmenize olanak sağlar. Modül başka bir I2C cihazıyla çakışıyorsa veya aynı I2C veriyolunda iki MPU6050 kullanmak istiyorsanız kullanılabilir. ADO pimi bağlanmamış bırakın, varsayılan I2C adresi 0x68 olan HEX ve 3.3V bağladığınızda, I2C adresi 0x69 olur HEX .

INTKesinti Çıkışıdır. MPU6050, hareket algılama, kaydırma, yakınlaştırma, kaydırma, dokunma algılama ve sarsıntı algılamada kesintiyi artıracak şekilde programlanabilir.

Arduino ile Kablolama MPU6050 Modülü

Bağlantılar oldukça basit. VCC pinini Arduino'daki 5V çıkışına bağlayarak başlayın ve GND'yi toprağa bağlayın.

Şimdi I2C iletişimi için kullanılan pinlerde kaldık. Her Arduino Board'un uygun şekilde bağlanması gereken farklı I2C pinlerine sahip olduğunu unutmayın. R3 düzenine sahip Arduino kartlarında, SDA (veri hattı) ve SCL (saat hattı), AREF pinine yakın pin başlıkları üzerindedir. A5 (SCL) ve A4 (SDA) olarak da bilinirler.

Farklı bir Arduino kartı kullanıyorsanız, lütfen aşağıdaki tabloya bakın.

SCLSDA
Arduino UnoA5A4
Arduino NanoA5A4
Arduino Mega2120
Leonardo / Mikro32

Aşağıdaki şema, her şeyi nasıl bağlayacağınızı gösterir.

arduino ile mpu6050 accel gyro modülü kablolama

Kütüphane Kurulumu

MPU6050 modülünün kurulması ve çalıştırılması nispeten kolaydır ve cihazın ham veri çıkışını yakalar. Bununla birlikte, verileri anlamlı bir şeye dönüştürmek daha zordur, ancak cihazı kullanmak için bazı kitaplıklar mevcuttur.

Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin  Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.

kitaplıkları yönet

Aramanızı 'mpu6050' yazarak filtreleyin Birkaç giriş olmalı. Arayın Adafruit MPU6050 Kütüphanesi tarafından Adafruit . Bu girişe tıklayın ve ardından Yükle'yi seçin.

adafruit mpu6050 kütüphane kurulumu

Adafruit MPU6050 kitaplığı dahili olarak Adafruit Birleşik Sensör Sürücüsü ve Adafruit Bus IO Kitaplığı kullanır Bu nedenle, kütüphane yöneticisinde Adafruit Unified Sensor ve BusIO için arama yapın ve bunları da kurun.

adafruit birleşik sensör kütüphanesi kurulumu
adafruit busio kütüphane kurulumu

Arduino Kodu - İvme Ölçer, Jiroskop ve Sıcaklık Verilerini Okuma

Her şeyi bağladığınızda aşağıdaki çizimi çalıştırmayı deneyin. MPU6050 modülünden doğrusal ivmeyi, açısal dönüşü ve sıcaklığı nasıl okuyacağınız konusunda size eksiksiz bir anlayış verecektir ve daha pratik deneyler ve projeler için temel oluşturabilir.

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}
	Serial.println("MPU6050 Found!");

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print("Acceleration X: ");
	Serial.print(a.acceleration.x);
	Serial.print(", Y: ");
	Serial.print(a.acceleration.y);
	Serial.print(", Z: ");
	Serial.print(a.acceleration.z);
	Serial.println(" m/s^2");

	Serial.print("Rotation X: ");
	Serial.print(g.gyro.x);
	Serial.print(", Y: ");
	Serial.print(g.gyro.y);
	Serial.print(", Z: ");
	Serial.print(g.gyro.z);
	Serial.println(" rad/s");

	Serial.print("Temperature: ");
	Serial.print(temp.temperature);
	Serial.println(" degC");

	Serial.println("");
	delay(500);
}

Çizimi denemek için seri monitörünüzü 115200 baud hıza ayarlamanız gerektiğini unutmayın. MPU6050'den çok fazla veri geri gönderildiği için, onu görüntülemek için bu daha yüksek hıza ihtiyaç duyar.

Doğrusal hızlanma, açısal dönüş ve sıcaklık değerlerini gösteren sayısız veri göreceksiniz. Sensörünüzü hareket ettirmeyi deneyin ve verilerin nasıl değiştiğine dikkat edin.

mpu6050 arduino kodu hızlanma gyro sıcaklık çıkışı

Kod Açıklaması:

İlk adım, gerekli tüm Arduino kitaplıklarını dahil etmektir. Daha önce belirtildiği gibi, Adafruit_MPU6050 kitaplığı MPU6050'nin donanım işlevlerini ve Adafruit_Sensor kitaplığını birleşik sensör soyutlama katmanını uygular. Arduino IDE'ye önceden yüklenmiş olarak gelen Wire kütüphanesini de eklemeniz gerekecektir. Bu kütüphane, I2C cihazlarıyla iletişim kurmamızı sağlar.

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Ardından, ilgili işlevlere erişebilmemiz için Adafruit_MPU6050 sınıfının yeni bir örneği oluşturulur.

Adafruit_MPU6050 mpu;

Kodun kurulum bölümünde öncelikle PC ile seri haberleşmeyi başlatıp begin()fonksiyonu çağırıyoruz begin()Çip İD doğru olup olmadığını fonksiyon I2C arayüzü ve kontroller başlatır. Ardından, yumuşak sıfırlama kullanarak çipi sıfırlar ve uyandıktan sonra kalibrasyon için sensör için bekler.

Serial.begin(115200);

// Try to initialize!
if (!mpu.begin()) {
	Serial.println("Failed to find MPU6050 chip");
	while (1) {
	  delay(10);
	}
}

Oluşturduğunuz cihaz nesnesini kullanmadan önce, kullanmak istediğiniz hassasiyet aralığı ile onu başlatmalısınız. Aşağıda, MPU6050'nin ölçüm aralığını ayarlayan üç işlev bulunmaktadır.

setAccelerometerRange ( mpu6050_accel_range_t )

setAccelerometerRange()Fonksiyon ivmeölçer aralığını belirler. 'SetAccelerometerRange' için izin verilen değerler şunlardır:

  • MPU6050_RANGE_2_G - ± 2g aralığı için (varsayılan)
  • MPU6050_RANGE_4_G - ± 4g aralığı için
  • MPU6050_RANGE_8_G - ± 8g aralığı için
  • MPU6050_RANGE_16_G - ± 16g aralığı için

Aralık ne kadar küçükse ivmeölçerden gelen okumaların o kadar hassas olacağını unutmayın.

setGyroRange ( mpu6050_gyro_range_t )

setGyroRange()Fonksiyon ivmeölçer aralığını belirler. 'SetGyroRange' için izin verilen değerler şunlardır:

  • MPU6050_RANGE_250_DEG - saniyede 250 derece aralık için (varsayılan)
  • MPU6050_RANGE_500_DEG - saniyede 500 derece aralık için
  • MPU6050_RANGE_1000_DEG - saniyede 1000 derece aralığı için
  • MPU6050_RANGE_2000_DEG - saniyede 2000 derece aralığı için

Daha küçük bir saniye başına derece aralığının daha hassas bir çıktı anlamına geldiğini unutmayın.

setFilterBandwidth ( mpu6050_bandwidth_t )

setFilterBandwidth()Fonksiyon dijital alçak geçiren filtre bant genişliği seçenekleri ayarlar. 'SetFilterBandwidth' için izin verilen değerler şunlardır:

  • MPU6050_BAND_260_HZ, - 260 Hz bant genişliği için (Dokümanlar bunun filtreyi devre dışı bıraktığını belirtmektedir)
  • MPU6050_BAND_184_HZ, - 184 Hz bant genişliği için
  • MPU6050_BAND_94_HZ, - 94 Hz bant genişliği için
  • MPU6050_BAND_44_HZ, - 44 Hz bant genişliği için
  • MPU6050_BAND_21_HZ, - 21 Hz bant genişliği için
  • MPU6050_BAND_10_HZ, - 10 Hz bant genişliği için
  • MPU6050_BAND_5_HZ, - 5 Hz bant genişliği için

Jiroskobun çıktı verileri, düşük geçişli bir filtre ile filtrelenir. Bant genişliği seçimi, bu filtrenin kesme frekansını değiştirmenize olanak tanır. Bant genişliği ayarının yaptığı tek şey, yüksek frekanslı gürültüyü kaldırarak sinyali biraz yumuşatmaktır.

Deneyimiz için ivmeölçer aralığını ± 8G, jiroskop aralığı ± 500 ° / s ve filtre bant genişliğini 21 Hz olarak ayarlıyoruz.

mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

Ölçüm aralığı veya tam ölçekli aralık, MPU6050'nizin okuyabileceği maksimum ivme veya açısal hızdır. Neyi ölçtüğünüzü düşünün ve buna göre limitler belirleyin. Bir plak çarkının (çok yavaş olan) veya dönen bir çarkın (çok hızlı olabilen) dönüşünü ölçmeniz gerekiyor mu?

Kodun döngü bölümünde, sensors_event_tsonuçlarımızı tutmak için önce bellekte bir nesne oluşturuyoruz sensors_event_tsadece hızlanma, cayro, sıcaklık, ışık, basınç ve çok daha fazlası gibi birçok sensör verisini tutan kullanıcı tanımlı bir veri türüdür (C'deki Yapılar). Github'da bununla ilgili daha fazla bilgi edinebilirsiniz .

sensors_event_t a, g, temp;

Sonra, getEvent()fonksiyon diyoruz Bu işlev, sensörünüzden yeni bir değerler kümesini (bir sensör 'olayı') okur, bunları uygun SI birimlerine ve ölçeğe dönüştürür ve ardından sonuçları nesnemize atar mpuBu, sensörünüzü 'okumak' için aradığınız işlevdir!

mpu.getEvent(&a, &g, &temp);

Son olarak, değerleri seri monitörde çıkarıyoruz.

Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");

Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");

Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");

Arduino Kodu - MPU6050 verilerini çizme

Sadece MPU6050'den gelen ham verilere bakmak hiçbir işe yaramayacaktır. MPU6050'nizin hareket ettirdiğinizde nasıl tepki vereceğini gerçekten görmek istiyorsanız, Seri Plotter'ı kullanın .

Arduino IDE, seri çizici adı verilen harika bir araçla birlikte gelir. Size değişkenlerin gerçek zamanlı olarak görselleştirilmesini sağlayabilir. Bu, verileri görselleştirmek, kodunuzu gidermek ve değişkenlerinizi dalga formları olarak görselleştirmek için çok kullanışlıdır.

Aşağıdaki yeni kodla deneyelim. Aşağıdaki programı derleyin ve yükleyin, ardından Araçlar> Seri Plotter'a (Ctrl + Shift + L) gidin . Kod 115200 baud hızı kullanır, seri çizicide 115200 olarak ayarlandığından emin olun.

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print(a.acceleration.x);
	Serial.print(",");
	Serial.print(a.acceleration.y);
	Serial.print(",");
	Serial.print(a.acceleration.z);
	Serial.print(", ");
	Serial.print(g.gyro.x);
	Serial.print(",");
	Serial.print(g.gyro.y);
	Serial.print(",");
	Serial.print(g.gyro.z);
	Serial.println("");

	delay(10);
}

Modülü Z ekseni boyunca yukarı ve aşağı hareket ettirirken buna benzer bir şey görmelisiniz.

mpu6050 arduino plotter çıkışı

Kod Açıklaması:

Aşağıdakiler dışında, bu çizimin çoğunun önceki çizimle tamamen aynı olduğunu fark edeceksiniz:

  • Sıcaklık okumaları yazdırılmaz
  • Diğer tüm okumalar, virgülle ayrılmış bir değerler listesi oluşturacak şekilde yazdırılır
  • Okumalar her 10 milisaniyede bir alınır.

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.