PIC mikrodenetleyici ile -2 V ila +2 V analog sinyali nasıl örnekleyebilirim?


10

300 hz'den daha düşük bir frekansa sahip bir analog sinyalden okuma almak için 10bit ADC'li bir PIC mikro kullanıyorum. Bununla birlikte, analog sinyal -2 V ve +2 V aralığındadır. Sinyali kullanılabilir bir aralığa almak için nasıl koşullandırabilirim (ADC'ye girişin pozitif olması gerektiğini varsayarak) Ayrıca bir pozitif ve negatif güç kaynağı.





@Kellenjb - bağlandığınız sorular, giriş voltajının rayların ötesine her iki yöne gittiği bu durum için hesaplamalara değinmez.
stevenvh

Aşağıdaki sorular bunun kopyası olarak kapatıldı ve faydalı cevapları var: electronics.stackexchange.com/questions/15985/… , electronics.stackexchange.com/questions/15940/…
Kevin Vermeer

Yanıtlar:


14

önemli not: -20V ila + 20V giriş
problemini çözmek için bu cevap gönderildi , çünkü sorulan buydu. Akıllı bir yöntemdir, ancak giriş voltajı sınırı raylar arasında kalırsa çalışmaz.

-2.5V ile + 2.5V arasında bir voltaj elde edebilmek ve 2.5V eklemek için voltajı bir direnç bölücü ile ölçeklendirmeniz gerekir. (PIC'niz için 5V güç kaynağı olduğunu düşünüyorum).

Aşağıdaki hesaplama uzun görünüyor, ancak bunun nedeni yalnızca her adımı ayrıntılı olarak açıkladığım için. Gerçekte o kadar kolay ki, kafanızda hemen yapabilirsiniz.

İlk önce:

R1, ve arasındaki , R2 ve arasındaki ve R3, ve arasındaki . V O U T + 5 V V O U T V O U T G N DVINVOUT
+5VVOUT
VOUTGND

Kaç tane bilinmezimiz var? Üç, R1, R2 ve R3. Tam olarak değil, bir değeri özgürce seçebiliriz ve diğer ikisi buna bağlıdır. R3 = 1k seçelim. Diğer değerleri bulmanın matematiksel yolu, iki ( , ) çiftinden iki eşzamanlı denklem kümesi oluşturmak ve bilinmeyen direnç değerlerini çözmek. Herhangi bir ( , ) çifti olacak, ancak bu çiftleri, yani aşırı değerleri dikkatlice seçerek işleri çok basitleştirebileceğimizi göreceğiz: ( , ) ve ( , ). V O U T V I N V O U T + 20 V + 5 V - 20 V 0 VVINVOUTVINVOUT+20V+5V20V0V

İlk durum: , R2'nin her iki ucunun da bakın , bu nedenle voltaj düşmesi olmadığından ve akım geçmediğine dikkat edin. R2. Bu, in (KCL) ile aynı olması gerektiği anlamına gelir . . Akımı R1 ve bunun üzerindeki voltajı biliyoruz, böylece direncini hesaplayabiliriz: . İlk bilinmeyenimizi buldum! V O U T = + 5 V + 5 V I R 1 I R 3 I R 3 = + 5 V - 0 VVIN=+20VVOUT=+5V
+5VIR1IR3
R1=+20V-5VIR3=+5V0V1kΩ=5mA=IR1
R1=+20V5V5mA=3kΩ

İkinci durum: , R2 ile aynı şey şimdi R3 ile gerçekleşiyor: voltaj düşmesi yok, bu yüzden akım yok. Yine göre, şimdi = . . R2'den geçen akımı ve bunun üzerindeki voltajı biliyoruz, böylece direncini hesaplayabiliriz: . Bizim ikinci bilinmeyen bulundu! V O U T = 0 V I R 1 I R 2 I R 1 = - 20 V - 0 VVIN=20VVOUT=0V
IR1IR2
R,2=+5V-0VIR1=20V0V3kΩ=6.67mA=IR2
R2=+5V0V6.67mA=0.75kΩ

Yani bir çözüm: . R1=3kΩ,R2=0.75kΩ,R3=1kΩ

Dediğim gibi sadece bu değerler arasındaki oran önemlidir, bu yüzden da seçebilirim . Bu çözümü başka bir ( , ) çiftine göre kontrol edebiliriz, örn. ( , ). R1 ve R3, artık her ikisi de onların kombine değerini hesaplamak zaman bu yüzden bulmak üstlerine + 2.5V-0 volt olan (paraleldir , R2 tam değeri, ve gerekli değeri elde etmek için den ! Yani çözümümüz gerçekten doğru. [QC damgası buraya geliyor]R1=12kΩ,R2=3kΩ,R3=4kΩ
VINVOUT0V2.5V0.75kΩ+2.5V+5V

Yapılacak son şey i bağlamaktır . ADC'ler genellikle oldukça düşük giriş dirençlerine sahiptir, bu nedenle dikkatle hesaplanan dengeyi bozabilir. Endişelenecek bir şey yok, sadece R3'ü arttırmamız gerekiyor, böylece . Diyelim ki , sonra Bundan buluyoruz . R 3 / / R A D C = 1 k Ω R A D C = 5 k Ω 1VOUTR3//RADC=1kΩRADC=5kΩ R3=1,25kΩ11kΩ=1R3+1RADC=1R3+15kΩR3=1.25kΩ


Diğer anlamları: düzenlemek
OK, that it is clever and very simple, i it so soself. ;-) Fakat giriş voltajı raylar arasında kalırsa neden bu işe yaramasın ki? Yukarıdaki durumlarda, her zaman içinden akım akmayan bir direnç vardı, böylece sonra, bir direnç yoluyla düğümüne gelen akım diğerinden geçecekti. Bu, bir voltajın dan yüksek , diğerinin daha düşük olması gerektiği anlamına geliyordu . Her iki voltaj da daha düşükse, sadece o düğümden akım akabilir ve KCL bunu yasaklar. V O U TVOUTVOUT


-20V giriş, 0V çıkışının biraz altında sonuçlanır.
Olin Lathrop

(ve belki Olin Lathrop): 7k direncin değerini nasıl bulduğunuzu öğrenmeye çalışıyordum. Giriş voltajı 2.5V olduğunda, direnç değeri ne olursa olsun düğüme akım akmayacağını fark ettim, çünkü voltaj farkı yok. Ancak bu 2.5V giriş orta menzilli değil , 2.5V çıkış da. Bu, bölücünün iki farklı dirence sahip olması gerektiği anlamına gelmez mi? Eğer ne demek istediğimi anlıyorsan.
Federico Russo

Belki bu da @Olin Lathrop'un yorumunu açıklıyor.
Federico Russo

@Frederico: Evet, tamamen simetrik olmayacak. Bunu cevabımda tartışıyorum. Üç direnci -20 ila +20 volt ila 0 ila 5 volt arasında eşleştirmek için ayarlamak mümkündür, ancak hem Steven hem de ben, litle bir asimetri aldığınız daha basit durumları gösterdik.
Olin Lathrop

6

En kolay yol bir "direnç bölücü" kullanmaktır.

Bu PIC'nin hangi voltajda çalıştığını söylemediniz ve bu nedenle A / D giriş aralığı, bu yüzden örnek için 5V kullanalım. Giriş voltaj aralığınız 40V ve çıkış 5V'dir, bu nedenle en az 8 zayıflayan bir şeye ihtiyacınız vardır. Ayrıca sonucun 2,5V olan 1/2 Vdd üzerinde ortalanması gerekirken, giriş voltajınız 0V üzerinde ortalanır. .

Bu, 3 direnç ile gerçekleştirilebilir. Her üç direncin bir ucu birbirine ve PIC A / D giriş pimine bağlanır. R1'in diğer ucu giriş sinyaline, R2 Vdd'ye ve R3 toprağa gider. Direnç bölücü R1 ve R2 ve R3'ün paralel kombinasyonu tarafından oluşturulur. R2 ve R3'ü elde edilen aralığı 2.5V'de ortalayacak şekilde ayarlayabilirsiniz, ancak bunu açıklamak için basitçe basitçe biraz asimetri ile yaşayacağız ve her iki ucun Vss-Vdd aralığıyla sınırlı olduğundan emin olmak için biraz daha zayıflayacağız.

PIC'nin analog sinyalin 10 kΩ veya daha düşük bir empedansa sahip olmasını istediğini varsayalım. Yine basitlik için R2 ve R3 20 kΩ yapalım. PIC'yi besleyen empedans, 10 kΩ olanların paralel kombinasyonundan daha fazla olmayacaktır. 8'in zayıflamasını elde etmek için, R1'in 7 kez R2 // R3, yani 70 kΩ olması gerekir. Bununla birlikte, sonuç tam olarak simetrik olmayacağından, -20V'nin PIC'ye 0V'den daha az sonuç vermeyeceğinden emin olmak için biraz daha zayıflamamız gerekir. Bu aslında 9 zayıflamayı gerektirir, bu nedenle R1, R2 // R3'ün en az 8 katı, yani 80 kΩ olmalıdır. Standart 82 k standard değeri bir miktar eğime ve kenar boşluğuna izin verir, ancak orijinal sinyali ölçmek için hala A / D aralığının çoğunu alırsınız.

Katma:

İşte benzer bir soruna kesin çözümü bulma örneği. Bunun bir asimetrisi yoktur ve belirli bir çıkış empedansı vardır. Bu çözüm formu, A / D aralığı tamamen giriş voltajı aralığında olduğunda her zaman kullanılabilir.


+1 çünkü parça sayısı kadarıyla, gerekli olanı oluşturmanın en kolay yolu budur. Bazı notlar: UC kodundaki asimetriye dikkat etmek mümkündür ve GND'ye giden dirence paralel olarak bir kondansatör ekleyerek sinyal yumuşatılabilir (düşük geçiş filtresi). Köşe sıklığı. 1 / (2 x pi R R üç dirençler paralel bir değerdir ve C (ADC kapak gerekmektedir. zaten!) ilave edildi kapağın değeri C). Lütfen tüm toleransları dikkate alarak bu kurulumun doğruluğunu hesaplayın (R, ADC hatası +/- maks. LSB, Ref. Hatası, ...) - beklenenden daha kötü olabilir.
zebonaut

@zebonaut - Hesaplamayı tekrar yaptım ve güncellenmiş cevabımda her adımı ayrıntılı olarak açıkladım (göründüğünden çok daha az karmaşık!). Bu, (-20V .. + 20V) ila (0V .. + 5V) arasında kesin bir harita verir
stevenvh

@zebonaut: Kapasitör bir kenar yumuşatma filtresi olarak yararlı olabilir, ancak asimetri hakkında hiçbir şey yapmaz. Küçük asimetrinin çok önemli olduğunu düşünmedim. Söylediğiniz gibi bellenime dikkat etmek yeterince kolaydır.
Olin Lathrop

Yazılımdaki asimetriyi telafi etmek istiyorsanız, tam transfer fonksiyonunu hesaplamanız gerekecektir. Yine de bunu yapmak zorundaysanız, neden doğru direnç değerlerini ilk etapta kullanmıyorsunuz (ilk (hatalı)
cevabımdakileri değil

@stevenvh: "Doğru" direnç değerlerini kullanmanın yanlış bir yanı yok. Tam bir eşlemenin mümkün olduğunu fark ettim (cevabımda bahsettiğim gibi), ancak hesaplamaların karmaşıklığına girmemeye ve küçük bir asimetri ile sonuçlanan kavramsal olarak daha basit olan duruma cevap vermemeye karar verdim. Her durumda, eğimi hesaba katmak için biraz daha zayıflamanız gerekir ve muhtemelen yine de bellenimde kalibre etmelisiniz.
Olin Lathrop

2

Bunun için standart devre budur. Gerekli empedansınız için direnç değerlerini ölçeklendirmeniz gerekir.


Kullanıyorsanız kaynak empedansınızın nispeten düşük olduğundan emin olmanız mı gerekiyor?
Nick T

Leon, neden 1k direnç yerine kapasitör kullanmıyorsun?
stevenvh

DC bağlantılı bir çözümdür. Doğru çalışma için seri direnç gereklidir.
Leon Heller

3
@Leon Heller: Dirençler için doğru değerleri nasıl bulacağınızı açıklarsanız, bunun daha iyi bir cevap olacağını düşünüyorum.
Federico Russo

2

Sinyal DC değilse veya bir DC referansı önemli değilse, sinyal kapasitif olarak ADC girişine bağlanabilir.

Alternatif olarak, PIC için toprağınız yüzüyorsa, sinyal toprağınızı PIC'nin 1/2 VDD'sine bağlayabilirsiniz.


Kapasitif kuplaj kullanırsanız DC bileşeninden kurtulursunuz, ancak Leon'un devresindeki gibi dirençli bir bölücü tarafından giriş piminde bir sapma sağlamadığınız sürece sinyalin negatif kısmı yine de yerin altına inecektir.
stevenvh

Besleme gerilimi belirtilmedi - 5V ADC ile çalışacaktı. Daha küçük bir Vdd kullanıyorsanız, girişi ölçeklendirmeniz gerekir. Bu noktada bir kapasitör ile Leon'un devresine dönüşecekti.
W5VO

2

Aşağıdaki devre işi yapmalıdır:

3.3V
 +
 |
 \
 / 1k
 \
 |
 +-- ADC input
 |
 \
 /  1k
 \
 |
 +-- Signal input (-2V to +2V)

Potansiyel bir bölücü. -2V'de, çıkış 0.65V olacaktır; + 2V, 2.65V'de.

3.3V rayı üzerindeki tüm gürültü girişe aktarılacaktır, bu nedenle bu sorunu azaltmak için iyi bir voltaj referansı kullanın.

Bu, diğer sarf malzemeleriyle de çalışır, ancak ofset kayacaktır.


Evet, işe yarıyor, ancak tüm ADC serisini kullanmak güzel olurdu :-)
stevenvh

@stevenh Bunu 0.65V ve 2.65V referanslarını kullanarak yapabilirsiniz, ancak o zaman devrenizi de kullanabilirsiniz.
Thomas O

VREF+VREFGND

@stevenh PIC24, dsPIC ve PIC32 kesinlikle Vref- içerir. Bence bazı 18F de yapıyor.
Thomas O

Evet, tamam, (orada bütün bunları bilmiyoruz çok onlardan). OP hangi kısmı kullandığını söylemiyor ve yok gibi görünüyor, bu yüzden ona sormanın bir yararı yok.
stevenvh

1

VADCREF
VADCVDDVADCVADCREF+

VDD2V3.3VVADC

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.