Analogdan dijitale dönüştürücüdeki değerleri okuma
Analogdan dijitale dönüştürücü (ADC), analog giriş voltajı değerini okuyabilen ve dijital değere dönüştüren bir cihazdır. ADE'ler, bazı koşullar temel alarak direnç değişikliğine neden olan diğer cihazlardan, oidoidlerin, oid ölçerlerin ve diğer cihazların değerlerini okumak için kullanılır.
Bu konu başlığında, giriş voltajını bir ölçerle değiştiren ADC'den değerleri okumak için .NET kullanacağız.
Önkoşullar
- Raspberry Pi işletim sistemi yüklü Raspberry Pi (2 veya daha büyük)
- MCP3008 analogdan dijitale dönüştürücü
- Üç pinli tirnak ölçer
- Breadboard
- Atlama telleri
- Raspberry Pi GPIO çıkış panosu (isteğe bağlı/önerilir)
- .NET SDK sürüm 5.0.100 RC2 veya üzeri
Raspberry PI 'yi hazırlama
raspi-configAşağıdaki iki hizmetin etkinleştirildiğinden emin olmak için komutunu kullanın:
- SSH
- ARABIRIMINI
Hakkında daha fazla bilgi için raspi-config Raspberry PI belgelerinebakın.
Donanımı hazırlama
Aşağıdaki diyagramda gösterildiği gibi bağlantı hattı oluşturmak için donanım bileşenlerini kullanın:
MCP3008 iletişim kurmak için Seri Çevresel Arabirim (SPI) kullanır. McP3008'den Raspberry Pi'ye ve tırtıl ölçere bağlantılar aşağıdaki gibidir:
- VDD'den 3,3V'ye (kırmızıyla gösterilir)
- VREF' den 3.3V'ye (kırmızı)
- AGND'den yere (siyah)
- CLK'den SCLK'ye (turuncu)
- DOUT to MISO (turuncu)
- DIN'den MOSI'ye (turuncu)
- CS/SHDN'den CE0'a (yeşil)
- DGND'den yere (siyah)
- Ch0 to variable (middle) pini on ometer (yellow)
3,3V'yi ve tırtıl ölçerdeki dış pinlere yer sağlar. Sipariş önemli değildir.
Aşağıdaki pinout diyagramlarını gereken şekilde kullanın:
| MCP3008 | Raspberry Pi GPIO |
|---|---|
|
|
Görüntü: Raspberry Pi Foundation. |
İpucu
GıO üstbilgisiyle bağlantıları kolaylaştırmak için, bir enine tahta ile birlikte bir GıO ayırıcısının kullanılması önerilir.
Uygulama oluşturma
Tercih ettiğiniz geliştirme ortamında aşağıdaki adımları tamamlayın:
.NET CLI veya .NET kullanarak yeni bir .NET Konsol Uygulaması Visual Studio. AdcTutorial olarak ad girin.
dotnet new console -o AdcTutorial-
IoT. Device. Bindings paketini projeye ekleyin. Proje dizininden ya da Visual Studio'DAN .net CLI kullanın.
dotnet add package Iot.Device.Bindings --version 1.1.0-* Program.cs dosyasının içeriğini aşağıdaki kodla değiştirin:
using System; using System.Device.Spi; using System.Threading; using Iot.Device.Adc; var hardwareSpiSettings = new SpiConnectionSettings(0, 0); using SpiDevice spi = SpiDevice.Create(hardwareSpiSettings); using var mcp = new Mcp3008(spi); while (true) { double value = mcp.Read(0); value = value / 10.24; value = Math.Round(value); Console.WriteLine($"{value}%"); Thread.Sleep(500); }Yukarıdaki kodda:
hardwareSpiSettingsyeni bir örneğineSpiConnectionSettingsayarlanır. Oluşturucu,busIdparametresini 0 ve parametresinichipSelectLine0 olarak ayarlar.- Using bildirimi çağrısı ve geçirme ile bir örneği
SpiDeviceSpiDevice.CreatehardwareSpiSettingsoluşturur. Bu,SpiDeviceSPI veri bus'larını temsil eder. Bildirimi,usingnesnenin atılması ve donanım kaynaklarının düzgün bir şekilde serbest bırakılması sağlar. - Başka
usingbir bildirim bir örneği oluşturur veMcp3008SpiDeviceoluşturucuya iletir. - Döngü
whilesüresiz olarak çalışır. Her yineleme:- çağırarak ADC üzerinde CH0 değerini
mcp.Read(0)okur. - Değeri 10,24'e böler. MCP3008, 10 bitlik bir ADC'dir ve 0-1023 arasında 1024 olası değeri döndürmektedir. Değerin 10,24'e bölünmesi, değeri yüzde olarak temsil eder.
- Değeri en yakın tamsayıya yuvarlar.
- Değeri yüzde olarak biçimlendirilmiş konsola yazar.
- 500 ms uykuda.
- çağırarak ADC üzerinde CH0 değerini
-
Uygulamayı oluşturun. .NET CLı kullanıyorsanız, öğesini çalıştırın
dotnet build. Visual Studio 'da derlemek için CTRL + SHIFT + Btuşlarına basın. -
Uygulamayı, bağımsız bir uygulama olarak Raspberry PI 'e dağıtın. Yönergeler için bkz. .NET uygulamalarını Raspberry PI 'ye dağıtma. Kullanarak yürütülebilir yürütme iznini verdiğinizden emin olun
chmod +x. Dağıtım dizinine geçerek ve yürütülebilir dosyayı çalıştırarak uygulamayı Raspberry Pi'de çalıştırın.
./AdcTutorialEsner kadranını döndürün ve çıktıyı gözlemlersiniz. Bunun nedeni, ADC üzerinde CH0'a sağlanan voltajı değişen tir. ADC, CH0'deki giriş voltajını VREF'e verilen başvuru voltajı ile karşılaştırarak bir değer üretir.
Ctrl+Ctuşlarına basarak programı sonlandırabilirsiniz.
Tebrikler! Analogdan dijitale dönüştürücüden değerleri okumak için SPI kullandın.
Kaynak kodunu alma
Bu öğreticinin kaynağı, GitHub.