- Proje Akışı:
- Proje gereksinimleri
- Devre şeması:
- Raspberry Pi Osiloskop için Bağımlılıkları Kurun:
- Raspberry Pi Osiloskop için Python Kodu:
- Raspberry Pi Osiloskop İş Başında:
Merhaba arkadaşlar, bugünün gönderisine hoş geldiniz. Bir yapımcı olmanın en büyüleyici şeylerinden biri, geçici araçların nasıl geliştirileceğini bilmek, bu tür bir çok yönlülüğe sahip olduğunuzda hiçbir projede çalışmak zorunda kalmayacaksınız. Bu yüzden Bugün, Elektrik / Elektronik mühendisliğinin en önemli araçlarından birinin Raspberry Pi tabanlı geçici bir versiyonunun nasıl oluşturulacağını paylaşacağım; Osiloskop.
Osiloskop, genellikle zamana karşı bir veya daha fazla sinyalin işaretlendiği iki boyutlu bir grafik olarak, değişen sinyal voltajlarının görselleştirilmesine ve gözlemlenmesine izin veren elektronik bir test aracıdır. Bugünün projesi, Raspberry Pi ve analogdan dijitale dönüştürücü modül kullanarak osiloskobun sinyal görselleştirme yeteneklerini çoğaltmaya çalışacak.
Proje Akışı:
Raspberry Pi kullanarak osiloskobun sinyal görselleştirmesini çoğaltmak için aşağıdaki adımlar gerekecektir;
1. Giriş sinyalinin Dijitalden analoğa dönüşümünü gerçekleştirin
2. Ortaya çıkan verileri temsil için hazırlayın
3. Verileri canlı bir zaman grafiğine çizin
Bu proje için basitleştirilmiş bir blok diyagram aşağıdaki diyagramdaki gibi görünecektir.
Proje gereksinimleri
Bu proje için gereklilik ikiye ayrılabilir:
- Donanım Gereksinimleri
- yazılım gereksinimleri
Donanım Gereksinimleri
Bu projeyi oluşturmak için aşağıdaki bileşenler / parçalar gereklidir;
- Raspberry pi 2 (veya başka bir model)
- 8 veya 16GB SD Kart
- LAN / Ethernet Kablosu
- Güç Kaynağı veya USB kablosu
- ADS1115 ADC
- LDR (Test amaçlı olduğu için isteğe bağlı)
- 10k veya 1k direnç
- Atlama telleri
- Breadboard
- Pi'nin Masaüstünü (VNC dahil) izleme veya başka bir şekilde görme
yazılım gereksinimleri
Bu proje için yazılım gereksinimleri temelde veri görselleştirme için kullanılacak python modülleri ( matplotlib ve drawow ) ve ADS1115 ADC yongası ile arayüz oluşturmak için Adafruit modülüdür. Devam ederken bu modülleri Raspberry Pi'ye nasıl kuracağımı göstereceğim.
Bu eğitim, kullanılan ahududu pi işletim sisteminden bağımsız olarak çalışacak olsa da, Raspberry Pi streç işletim sistemini kullanacağım ve Raspberry Pi'yi Raspbian streç işletim sistemi ile kurmaya aşina olduğunuzu ve ahududuya nasıl SSH yapacağınızı bildiğinizi varsayacağım pi macun gibi bir terminal yazılımı kullanarak. Bunlardan herhangi biriyle ilgili sorunlarınız varsa, bu web sitesinde yardımcı olabilecek tonlarca Raspberry Pi Öğreticisi var.
Tüm donanım bileşenleri yerindeyken, şemaları oluşturalım ve bileşenleri birbirine bağlayalım.
Devre şeması:
Analog giriş sinyallerini Raspberry Pi ile görselleştirilebilen dijital sinyallere dönüştürmek için ADS1115 ADC çipini kullanacağız. Bu çip önemli hale geliyor çünkü Arduino ve çoğu mikro denetleyicinin aksine Raspberry Pi yerleşik analogdan dijitale dönüştürücü (ADC) içermiyor. Herhangi bir ahududu pi uyumlu ADC çipi kullanabilirdik, ancak bu çipi yüksek çözünürlüğü (16 bit) ve Adafruit tarafından iyi belgelenmiş veri sayfası ve kullanım talimatları nedeniyle tercih ediyorum. Ayrıca, daha fazla bilgi edinmek için Raspberry Pi ADC eğitimimize de göz atabilirsiniz.
ADC, I2C tabanlı bir cihazdır ve aşağıdaki şemalarda gösterildiği gibi Raspberry Pi'ye bağlanmalıdır.
Netlik sağlamak için, iki bileşen arasındaki pim bağlantısı da aşağıda açıklanmıştır.
ADS1115 ve Raspberry Pi Bağlantıları:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Tüm bağlantılar tamamlandıktan sonra pi'nizi açın ve aşağıda belirtilen bağımlılıkları kurmaya devam edin.
Raspberry Pi Osiloskop için Bağımlılıkları Kurun:
ADC'den veri çekmek ve canlı bir grafiğe yerleştirmek için python betiğini yazmaya başlamadan önce, ahududu pi'nin I2C iletişim arayüzünü etkinleştirmemiz ve daha önce bahsedilen yazılım gereksinimlerini yüklememiz gerekir. Bu, takip etmesi kolay olan aşağıdaki adımlarda yapılacaktır:
Adım 1: Raspberry Pi I2C arayüzünü etkinleştirin
I2C'yi terminalden etkinleştirmek için çalıştırın;
sudo raspi-config
Yapılandırma panelleri açıldığında, arayüz seçeneklerini seçin, I2C'yi seçin ve etkinleştir'e tıklayın.
2. Adım: Raspberry pi'yi güncelleyin
Herhangi bir projeye başlamadan önce yaptığım ilk şey Pi'yi güncellemektir. Bu sayede, işletim sistemindeki her şeyin güncel olduğundan eminim ve Pi'ye yüklemeyi seçtiğim en son yazılımlarla uyumluluk sorunu yaşamayacağım. Bunu yapmak için iki komutun altında çalıştırın:
sudo apt-get update sudo apt-get yükseltme
Adım 3: ADC için Adafruit ADS1115 kütüphanesini kurun
Yapılan güncelleme ile artık ADS115 yongası için Adafruit python modülünden başlayarak bağımlılıkları kurmaya hazırız. Çalıştırarak Raspberry Pi ana dizininde olduğunuzdan emin olun;
cd ~
daha sonra çalıştırarak yapı temellerini kurun;
sudo apt-get install build-essential python-dev python-smbus git
Ardından, kitaplık için Adafruit git klasörünü çalıştırarak klonlayın;
git klon https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Klonlanan dosyanın dizinine geçin ve kurulum dosyasını çalıştırın;
cd Adafruit_Python_ADS1x1z sudo python setup.py install
Kurulumdan sonra ekranınız aşağıdaki resimdeki gibi görünmelidir.
Adım 4: Kitaplığı ve 12C iletişimini test edin.
Projenin geri kalanına geçmeden önce, kütüphaneyi test etmek ve ADC'nin ahududu pi ile I2C üzerinden iletişim kurmasını sağlamak önemlidir. Bunu yapmak için kitaplıkla birlikte gelen örnek bir komut dosyası kullanacağız.
Hala Adafruit_Python_ADS1x15 klasöründeyken, çalıştırarak dizini örnekler dizinine değiştirin;
cd örnekleri
Ardından, ADC'deki dört kanalın değerini tablo biçiminde görüntüleyen sampletest.py örneğini çalıştırın.
Örneği kullanarak çalıştırın:
python simpletest.py
I2C modülü etkinse ve bağlantılar iyi durumdaysa, verileri aşağıdaki resimde gösterildiği gibi görmelisiniz.
Bir hata oluşursa, ADC'nin PI'ye iyi bir şekilde bağlandığından ve Pi'de I2C iletişiminin etkinleştirildiğinden emin olun.
Adım 5: Matplotlib'i kurun
Verileri görselleştirmek için python'da her tür grafiği çizmek için kullanılan matplotlib modülünü kurmamız gerekiyor. Bu, çalıştırılarak yapılabilir;
sudo apt-get install python-matplotlib
Aşağıdaki resimdeki gibi bir sonuç görmelisiniz.
Adım 6: Drawnow python modülünü kurun
Son olarak, drawow python modülünü kurmamız gerekiyor. Bu modül, veri grafiğine canlı güncellemeler sağlamamıza yardımcı olur.
Biz yüklüyor olacağım drawNow piton paket kurulum dosyası ile; pip , bu yüzden kurulu olduğundan emin olmamız gerekiyor. Bu, çalıştırılarak yapılabilir;
sudo apt-get install python-pip
Daha sonra drawow paketini kurmak için pip kullanabiliriz:
sudo pip yükleme drawow
Çalıştırdıktan sonra aşağıdaki resimdeki gibi bir sonuç almalısınız.
Yüklenen tüm bağımlılıklar ile artık kodu yazmaya hazırız.
Raspberry Pi Osiloskop için Python Kodu:
Bu Pi Osiloskop için python kodu, özellikle python matplotlib modülüne aşina iseniz oldukça basittir. Bize tüm kodu göstermeden önce, onu parçalara ayırmaya ve kodun her bir parçasının ne yaptığını açıklamaya çalışacağım, böylece kodu daha fazla şey yapacak şekilde genişletmek için yeterli bilgiye sahip olabilirsiniz.
Bu aşamada, Raspberry Pi'nizin masaüstünü görebileceğiniz herhangi bir şey, bir monitöre geçmek veya VNC görüntüleyiciyi kullanmak önemlidir, çünkü çizilen grafik terminalde gösterilmez.
Arayüz olarak monitörle yeni bir python dosyası açın. İstediğin isimle adlandırabilirsin ama ben buna kapsam.py diyeceğim.
sudo nano kapsam.py
Oluşturulan dosya ile ilk yapacağımız şey kullanacağımız modülleri içe aktarmak;
import süresi import matplotlib.pyplot as drawow dan plt import
Ardından, ADS1115 ADC'yi belirterek ADS1x15 kitaplığının bir örneğini oluşturuyoruz.
adc = Adafruit_ADS1x15.ADS1115 ()
Ardından, ADC'nin kazancını belirledik. Farklı kazanç aralıkları vardır ve ADC'nin girişinde beklediğiniz gerilime göre seçilmelidir. Bu eğitim için 0 - 4.09v olarak tahmin ediyoruz, bu nedenle 1'lik bir kazanç kullanacağız. Kazanç hakkında daha fazla bilgi için ADS1015 / ADS1115 veri sayfasını kontrol edebilirsiniz.
KAZANÇ = 1
Daha sonra, çizilecek verileri saklamak için kullanılacak dizi değişkenlerini ve sayım olarak hizmet edecek başka bir tane oluşturmamız gerekir.
Val = cnt = 0
Ardından, verileri canlı olarak çizmemizi sağlamak için arsa etkileşimli hale getirme niyetimizi biliyoruz.
plt.ion ()
Daha sonra ADC kanalını, bu durumda kanal 0'ı belirterek sürekli ADC dönüşümüne başlıyoruz ve kazancı da belirliyoruz.
ADS1115 üzerindeki dört ADC kanalının hepsinin aynı anda okunabildiği unutulmamalıdır, ancak bu gösteri için 1 kanal yeterlidir.
adc.start_adc (0, kazanç = GAIN)
Ardından, canlı grafiğimizi tutacak grafiğin özniteliklerini oluşturmak ve ayarlamak için def makeFig işlevini oluşturuyoruz. Her şeyden önce y-ekseninin sınırlarını ylim kullanarak belirleriz , ardından plot.plot () kullanarak çizilecek verileri ve çizim stilini ve rengini belirlemeden önce arsa başlığını ve etiket adını gireriz.. Kanalı da belirtebiliriz (kanal 0 belirtildiği gibi), böylece ADC'nin dört kanalı kullanılırken her sinyali tanımlayabiliriz. plt.legend , şekilde görüntülenen o sinyal (örneğin Kanal 0) hakkındaki bilgileri nerede istediğimizi belirtmek için kullanılır.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'sağ alt')
Daha sonra, ADC'den sürekli veri okuyarak kullanılacak olan while döngüsünü yazıp grafiği buna göre güncelliyoruz.
Yaptığımız ilk şey ADC dönüşüm değerini okumak
value = adc.get_last_result ()
Ardından, bize çizilen verileri doğrulamanın başka bir yolunu vermek için terminaldeki değeri yazdırıyoruz. Yazdırdıktan sonra birkaç saniye bekleriz ve ardından verileri o kanal için verileri depolamak için oluşturulan listeye (val) ekleriz.
print ('Kanal 0: {0}'. format (değer) ) zaman.sleep (0.5) val.append (int (değer))
Daha sonra çizimi güncellemek için drawow'u çağırıyoruz .
drawow (makeFig)
Grafikte bulunan en son verilerin olduğundan emin olmak için, her 50 veri sayımından sonra 0 dizinindeki verileri siliyoruz.
cnt = cnt + 1 eğer ( cnt > 50): val.pop (0)
Bu kadar!
Tam Python kodu bu yazının sonunda verilmiştir.
Raspberry Pi Osiloskop İş Başında:
Tam python kodunu kopyalayın ve daha önce oluşturduğumuz python dosyasına yapıştırın, arsa görüntülemek için bir monitöre ihtiyacımız olacağını unutmayın, böylece tüm bunların VNC veya bağlı bir monitör veya ekranla yapılması gerekir.
Kodu kaydedin ve şunu kullanarak çalıştırın;
sudo python kapsam.py
Scope.py dışında farklı bir ad kullandıysanız, bunu eşleşecek şekilde değiştirmeyi unutmayın.
Birkaç dakika sonra, terminalde yazdırılan ADC verilerini görmelisiniz. Bazen matplotlib'den (aşağıdaki resimde gösterildiği gibi) bastırılması gereken bir uyarı alabilirsiniz, ancak bu herhangi bir şekilde görüntülenen veriyi veya grafiği etkilemez. Ancak uyarıyı bastırmak için, kodumuzdaki içe aktarma satırlarından sonra aşağıdaki kod satırları eklenebilir.
İçe aktarma uyarıları içe aktarma matplotlib.cbook warnings.filterwarnings ("yoksay", kategori = matplotlib.cbook.mplDeprecation)
Bu öğretici adamlar için, osiloskopunuzu tam olarak test etmek için, bir potansiyometre gibi analog bir cihazı ADC'deki bir kanala bağlayabilirsiniz ve potansiyometrenin her dönüşünde veri değişimini görmelisiniz. Veya çıkışı test etmek için Sinüs dalgası veya kare dalga girebilirsiniz.
Okuduğunuz için teşekkürler, herhangi bir sorunuz varsa veya eklememi isteyeceğiniz bir şey varsa, bana bir yorum bırakın.
Bir dahaki sefere kadar, yapmaya devam edin!