ADC çalışınca Opamp çıkışında parazit oluşuyor.

Başlatan tekosis, 07 Ocak 2019, 14:08:30

tekosis

Şu an delikli plaket üzerinde, bazı kısımlarının montajını uzun kablolar kullanarak yaptığım bir devrede mcu ile voltaj ölçmek istiyorum. Aşağıdaki şema ile AC sinyal ölçeceğim zaman giriş sinyaline bir dc offset gerilimi eklemek istiyorum. Bunun için stm32f103'ün PB11 pinini "1" yapınca sinyale ~1.65V offset ekleniyor. DC ölçeceğim zaman da bu pini "0" yapmam yeterli. Sorum aslında bu kısımla ilgili değil, istediğim zaman offset ekleyebiliyorum. Ancak ikinci resimdeki gibi bir DC(0-30v) sinüs sinyali ölçmek istediğimde sinyal çıkışına yaklaşık 100mV değerinde ripıl biniyor. Yaptığım denemelerde bu sinyal ADC çevrimi başladığında ortaya çıkıyor. ADC işlemi başlatmayıp programı sonsuz bir while döngüsüne sokunca parazit kayboluyor. Mcu devresinden alınan besleme opamp kısmına 20cm kablo ile gidiyor. Tabi sinyal kabloları da bu şekilde. Ben bu durumu devrenin şu an uzay montaj şeklinde olmasına bağlıyorum. Pcb tasarlama aşamasındayım. Acaba benim göremediğim başka bir problem olabilir mi? Devreyi PCB üzerine kurduktan sonra aynı problemle karşılaşırsam diye tereddüt ediyorum. Sizce de problem kablolamadan mı yoksa başka bir durum olabilir mi?

Not: adc dma modunda çalışıyor(1uS çevrim zamanı). Ripple periyodu da 1us.





İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Elektroemre

Ripple yukarı doğru mu? Bu şekilde olması ilginç. Aşağı doğru olsaydı, sample-hold devresi, sample aldığı zaman küçük düşüşler görmek normal. Geçiçi çözüm olarak, opamp çıkışına 1K 100nF RC filtre ekleyip deneyin. Sonuşları paylaşın bir görelim durumu.

Elektroemre

Kağıt çizimi değilde scop ekran görüntüsü eklerseniz daha net yorumlar yapılabilir.

tekosis

Emre hocam şu an çalışma mekanımda değilim, şimdilik kağıt ile çizdim. Dediğinizi gibi daha sonra görüntüyü ekleyeceğim. Bu arada PCB için önlem olarak dediğiniz filtreleri eklemiştim. Bir de mevcut devre üzerinde tekrar deneyim.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

foseydon

bozulma periyodik, bu kablolamadan olamaz. bozulma ile aynı frekansta çalışan birşeyin etkisi olmalı. DMA aynı frekansta çalıştığına göre, adc ile aynı frekansla örnek alıyorsunuz diye düşünüyorum.bunun etkisi olabilir. low pass filtre koysanız çıkışa, sorununuz çözülür aslında.

Pyrodigy

Diferansiyel AC Sinyal ?
Opamp Beslemesi ?

Dc 0v-30V Sinüs gerilimine bağlı olarak şema doğru ise sonuç;
Şekil-1 Opamp +-12V Beslemeli.


2-
oPAM dc BESLEMELİ

Persistance is the name of the game in this business....

OptimusPrime

#6
Ripple in yukari yonde olmalari ilginc. Devreyi smps ile mi besliyorsun? Bu ripple beslemedede varmi? PB11 de ripple varmi?

https://www.st.com/resource/en/datasheet/cd00161566.pdf
Figure 14 deki tavsiyelere uyuyor musun?
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

z

Opampin + girisini bu sekilde uzatip kablo vs baglayamazsin.

+ girise de - girise yaptigin gibi 100K ekle.

30v guc kaynagin sebeke topragindan tamamen izole mi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

tekosis

Cevap veren, yardım eden herkese teşekkür ederim. Ha çektim ha çekeceğim derken osilaskop görüntüsü almayı yine unuttum  :-[

@foseydon @Elektroemre çıkışa farklı değerlerde R-C filtrelerle uygulamalar yaptım. Sinyalde iyileşme oldu ancak %100 düzelme olmadı.

@prodigy devrede simetrik besleme kullanamıyorum. Devre batarya ile çalışıyor, 3.3V besleme mevcut. mcp6001 rail to rail opamp kullanıyorum. Opampa uygulanan sinyalin gnd ucu devrenin gnd'si ile birleşmiyor hali ile yaptığın simülasyon ile benim ulaştığım sonuç farklı çıkıyor.

@OptimusPrime , devrede şu an bluephill kartını kullandığımdan üzerindeki filtre yapısı ile yetiniyorum. Yapacağım pcb için dökümandaki kurallara uygun kart tasarlayacağım.

@z , dediğiniz gibi direnci ekledim sinyal bozulmasında pozitif bir etkisi olmadı. Voltaj düşümüne sebep oluyor.

Problem tam anlamı ile yazılımsal değişiklik ile düzeldi. Ben DMA işlemi(dma+adc, dma+uart) tamamlandıktan sonra DMA stop işlemi yapmıyordum. Aşağıdaki kodda DMA işlemleri tamamlanınca bu birimleri durdurdum sorun çözüldü. Ama ne olursa olsun bu sinyal neden görünüyor anlayabilmiş değilim.


void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){ 
    HAL_UART_DMAStop(&huart1);
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
    HAL_ADC_Stop_DMA(&hadc1);
}
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.