Devre breadboard üzerinde çalışıyor ancak PCB üzerinde çalışmıyor


9

Breadboard'da mükemmel çalışan oldukça basit bir devrem var, ancak bir PCB'ye aktarırken çok fazla sorun yaşıyorum. Şu anki deneyimimin dışında yatan çok garip davranışlar görüyorum, bu yüzden tavsiye almayı umuyorum.

Devre, bir wifi hareket sensörü uygulamaktadır, ancak yaşadığım sorun RF kısmına, hatta diyagramın uC kısmına ulaşmadan önce waaay olur: resim açıklamasını buraya girin

Sorun yaşayan kısmı daire içine aldım.

R3, aşağı doğru hareket ettirilmesi gereken bir çekme direncidir, b / c AMN42121, hareket algılandığında çıkışı YÜKSEK hareket ettirir, ancak hareketsiz olarak asılı bırakır, bu nedenle aşağı çekme gereklidir.

Hareket ile hareketsiz arasındaki geçişi düzeltmek için C1'i kullandım. C1, çıkış seviyesini yavaş ve sorunsuz bir şekilde DÜŞÜK duruma getirir, böylece birkaç saniye hareketsiz kaldıktan sonra "hareket yok" durumuna ulaşılır.

Inverter orada b / c attiny'nin harici kesmeler DÜŞÜK seviye tarafından tetiklenir, bu yüzden mantığı tersine çevirmek gerekiyor. Bir invertör için böyle büyük bir DIP paketi kullanmak zorunda kaldım talihsiz bir durum, ama başka bir şey bulamadım.

Bu devre için şu şekilde görünen çift taraflı bir PCB yaptım: resim açıklamasını buraya girin

Yine, şimdiye kadar sadece daire içine alınmış alanı bir araya getirdim.

S1, R3 ve C1 lehimlendikten sonra sensör çıkışından aşağıdaki sinyali alıyorum: resim açıklamasını buraya girin

Bu tam olarak görmek istediğim şey, bu yüzden bu noktaya kadar her şey yolunda.

Sonra IC2 için bir sokete lehimledim ve invertörü taktım. Burası gizemlerin başladığı yerdir. İlk başta her şey yolundaydı, ancak bir süre tahta ile uğraştıktan sonra devre aniden çalışmayı bıraktı. Sensör çıkışına bir prob yerleştirdiğimde, yukarıda gördüğümüz hoş sinyal yerine, aşağıdaki iki örnekte varyasyonlar görüyorum:

Örnek 1: resim açıklamasını buraya girin

Örnek 2: resim açıklamasını buraya girin

İlk örnekten farklı olarak, ikinci örnekteki sinyalin hareket tarafından üretilmediğini unutmayın - bu diş şeklinin sadece benden herhangi bir eylem olmadan kendi başına ortaya çıktığını gördü.

Çok fazla testten sonra, aşağıdakileri oluşturabildim:

  1. İnverterin soketten çıkarılması sensörün tekrar düzgün çalışmasını sağlar.
  2. Fişi takılıyken sürücüye gelen gücü kesmek, sensörün çalışmasını sağlar.
  3. Farklı bir invertör kullanmanın bir etkisi yoktur.
  4. Tahtayı akı giderici veya asetonla ıslatmak ve bir fırça ile ovmak bazen sensörün tekrar çalışmasını sağlar, ancak çok kısa bir süre. Bir noktada, bir diş fırçası ile agresif bir şekilde ovalayarak sinyali şöyle göstermeyi başardım: resim açıklamasını buraya girin

Bu son resimde bile sinyalin DÜŞÜK seviyeye geri dönmediğine dikkat edin. Etki fırçalamayı bıraktığım anda ortadan kayboldu.

Şimdiye kadar bu, bazı lehimleme kusuruna işaret ediyor, ancak sorunu gerçekten göremiyorum. Tahtayı güçlü bir büyütme ile dikkatlice inceledim ve süreklilik için düşünebileceğim tüm noktaları test ettim - her şey kontrol ediyor. IC soketindeki ve sensördeki lehim işinin bir örneği: resim açıklamasını buraya girin

Şimdi fikirlerim bitti, bu yüzden herhangi bir tavsiye çok takdir edilecektir. Teşekkür ederim.

DÜZENLE:

Sadece ilginç bir şey keşfettim. Örnek 2'nin (testere dişi şekli sinyali) daha yakından incelendiğinde, aşağı eğimin beklenen C1 deşarj eğrisinin bir parçası olduğu ortaya konmaktadır. Voltaj seviyesi sürücünün eşiğine yaklaştığında ve orada çok fazla zaman harcadığında, sürücünün kafası karışıyor gibi görünüyor! Bu küçük gürültü patlaması yaratıyor ve daha sonra girişi tekrar YÜKSEK'e geri döndürecek bir şey yapıyor ya da sensör çıkışı tekrar b / c hareket YÜKSEK oluncaya kadar süresiz olarak bu "belirsiz" gürültülü durumda takılıyor (Örnek # 1).

Bu teoriyi test etmek için C1'i 10 kat daha küçük bir kapakla değiştirdim, böylece deşarj eğrisini daha dik ve "voila!" - inverter artık karışmıyor ve devre çalışıyor!

Tabii ki, bu C1'in amacını yener, çünkü şimdi istediğim kadar gecikme sağlamıyor. Neden breadboard üzerinde inverter ile bu sorunu yoktu emin değilim, ama bu sorunu gidermek çok kolay bir düzeltme olabilir öneririz. Breadboard'ların büyük bir "başıboş" kapasiteye sahip olduğunu okudum, bu yüzden belki de stratejik olarak bir yere daha fazla kapasitör eklemem gerekiyor? Herhangi bir fikir?

DÜZENLEME 2: Bazı yorumcular sorduğundan beri en iyi görünümü sağlama: resim açıklamasını buraya girin


Kutsal muz, bu lehim eklemleri korkunç görünüyor . Orada umutsuzca biraz akıya ihtiyacın var.
Connor Wolf

@Connor Wolf: Hiçbir şeye bağlı olmayan IC pinlerinden mi bahsediyorsunuz? Bunlar neredeyse hiç lehimlenmemiş, b / c Onları lehimlemek için bir neden görmedim. Yoksa diğer lehim bağlantılarından mı bahsediyorsunuz?
Val Blant

Neden bir invertör kullanıyorsunuz? Sensörün çıkışını 220-470 ohm'luk bir seri dirençle PB2'ye bağlayın, ve hazırsınız. Bir aşağı çekme direnci ekleyebilirsiniz, ancak 10Meg çok yüksektir. 10k ile değiştirin. Ayrıca C1'i bağlamanız gerekmez. Filtrelemeyi yazılımda basit bir gecikme rutini ile yapabilirsiniz. Buna ek olarak, C1 invertöre IC bağlandığında, sensörün çalışamayacağı kadar çok yük olacak şekilde C1 sensöre yük ekliyor olabilir mi?
abdullah kahraman

Şimdi kontrol ettim ve sensör maksimum 100uA çıkış verebilir! Inverter yaklaşık 1mA giriş akımı talep ediyor! Bu nedenle, önerdiğim, 10k olan yukarıdaki aşağı çekme direnci çok fazla. 330k veya 470k ile değiştirin
abdullah kahraman

@abdullah kahraman: Üzgünüm - fikrinizi anlamıyorum. Attiny üzerinde INT0, DÜŞÜK geçişte tetiklenir, bu nedenle "hareket yok" YÜKSEK giriş ile temsil edilmelidir. Doğru değil mi? Fikrinizi daha ayrıntılı açıklar mısınız?
Val Blant

Yanıtlar:


7

EDIT - devreyi yanlış yorumladığım için, sensörün çıkışına odaklanmak için cevabı düzenliyorum - invertöre beslemek için analog çıkışı kullanıyor musunuz - belki de 74HC14 gibi bir Schmitt tetikleyicisini denemelisiniz


1
@ValBlant ATtiny dude konusunda uzman değilim - eğer kurduysanız, bu kadar polarite olmalı - invertöre giriş sinyal seviyeleri nelerdir - yapabilir misiniz, ancak uygun mantık seviyeleri uygulamıyor olabilirsiniz - ayrıca ihtiyacınız olabilir 74HC14 gibi bir schmidtt tetikleyici invertörü?
Andy aka

1
Belki kapağı çıkarır ve neye benzediğini görürseniz, gerekirse ATtiny kodunda devreyi geçici olarak canlı tutan bir şey yapabilirsiniz? Daha önce birisi tarafından önerildiği gibi invertöre 10n'lik bir dekuplör koydunuz mu?
Andy aka

1
Bence bir Schmitt tetikleyici ahbapa ihtiyacınız olacak - özensiz analog yavaş yükselme süreleri ve düşme süreleri ile başa çıkabilirler - yapmaları amaçlanan budur. Belki de her zaman iyi bir neden olmasına rağmen orijinal devreniz bir fluke yüzünden çalıştı !!
Andy aka

1
@ValBlant Tavsiye edilen en yavaş giriş sinyallerini belirten (Vcc = 4.5V'de 500ns yükselme / düşme süreleri) TC74HC04 veri sayfasındaki "giriş yükselme ve düşme süresi" spesifikasyonuna dikkat edin. Bu özellikle kaçırılması kolay bir özelliktir, özellikle Toshiba veri sayfası bunu açıkça bir maksimum olarak belirtmediğinden.
Chris Johnson

1
Schmitt tetikleyicili bir invertör kullanmak sorunumu çözdü.
Val Blant

11

Devrenizi ayrıntılı olarak incelemeden, açık olan şey, ayırma kapasitörleriniz yok.

Her çipin güç pimlerini lehimleyin.

Ayrıca, 'ovma işlemi işe yarar' yorumunuz bir yerde kuru bir eklem veya aralıklı bağlantınız olduğunu gösterir. Tüm lehimlemenizi dikkatlice inceleyin.

Bir DIL yongasının aşırı doldurulmasına ilişkin olarak, sadece bir transistör kullanabilir ve gecikme süresini yazılıma koyabilirsiniz.


tamam, sadece ayırma kapasitörlerinin ne olduğu hakkında biraz okuma yaptım. Bir invertöre güç vermek için böyle bir şeye ihtiyacım olduğuna şaşırdım, bu da yüksek hızlı bir cihaz değil, ama kesinlikle bir deneyeceğim. Çoğu kaynak, IC'nin güç pimleri boyunca seramik 0.1 uF'lik bir kapak önerir. Bu aralıkta herhangi bir seramik kapağım yok, ancak bazı elektrolitiklerim var. Bu işe yarayacak mı yoksa bunun için kesinlikle bir seramiğe ihtiyacım var mı?
Val Blant

İnvertör ile ilgili olarak, ilk başta bir transistör ile başladım, ancak daha sonra bir transistör invertörünün açıkken çok fazla güç çektiğini fark ettim. Devrem bir transistör ile elde edemediğim 60uA civarında (iletimde değilken) çalışmalıdır, ancak inverter IC işi yapıyor gibi görünüyordu.
Val Blant

Sadece 0.1uF ve 1uF elektrolitiklerini, hiçbir değişiklik yapmadan dekuplaj kapakları olarak denedim. Ancak, bir ipucu olabileceğini düşündüğüm ilginç bir şey keşfettim. Ana yayını yeni bilgilerle güncelleyeceğim.
Val Blant

3

Ana endişeniz güç tüketimini azaltmak gibi görünüyor.

AMN42121 sürekli olarak yaklaşık 50uA tüketir. 74HC04 sürekli olarak 20uA tüketir. ATTINY85, uyandığı zaman yaklaşık 300 uA aralıklı olarak tüketir. Radyo yayın yaparken miliamper kullanır.

Sensör ne sıklıkla tetiklenecek? Pil ömrünü tahmin etmek için herhangi bir güç hesaplaması yaptınız mı?

İnvertörü atmanızı ve kondansatörü 'yavaşlatmanızı' öneririm, sensörü sensör veri sayfasına göre 10K aşağı açılır şekilde doğrudan MCU'ya bağlayın ve zaman gecikmesi mantığını MCU'ya yazın.

[EDIT] İşlerin biraz yanlış olmasına rağmen, devrenizi her seferinde bir aşamada test ettiğinizi görmekten memnunum. Tamamlanmış bir projeyi bulmaya çalışmaktan çok daha kolay.


1
Bir invertör ihtiyacını da görmüyorum. AVR, INT0 / 1'e ek olarak PCI - Pin Değiştirme Kesintilerine sahiptir. PCI, YÜKSEK veya DÜŞÜK olup olmadığını pin durumunda bir değişiklik algılar. Bunu tetikleyebilir ve sonra geri dönme kodu ekleyebilirsiniz.
lyndon

Bence 74HC04 bundan çok daha fazla tüketiyor.
abdullah kahraman

Ayrıntılı bir pil ömrü hesaplaması ve uC'mdeki kodun bazı algoritma analizleri yapmak, haklı olduğunuzu gösterir - Pin Değiştirme kesintisi yerine inverteri kullanarak hiç kazanmıyorum. Tekrar yapmak mıydım, önerdiğin gibi yaparım. Ancak, akım devresiyle pil ömrüm en kötü durumda 270 gün olacak, bu yüzden tasarımı olduğu gibi bırakacağım, invertörümde bir Schmitt tetikleyici kullanacağım ve bir sonraki projeye geçeceğim. Hepinize teşekkür ederim!
Val Blant
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.