PIC16C74A / F77 işlemcileri kullanarak yumuşak yol vericiler tasarladım. Gürültülü ortamlarda da çalışmak zorundaysanız sıfır geçiş zor olabilir.
İşlemcinin hattan izole edilmesine ihtiyacınız yoksa, CPU pinini besleyen birkaç yüksek değerli dirençte yanlış bir şey yoktur. İç koruma diyotlarını sağlamlık meselesi olarak arttırmak için birkaç shottky diyot kullanardım, ancak iyi çalışacaktır. İzolasyona ihtiyacınız varsa, bir transistör çıkış optoizolatörü kullanın. Opto'nun anahtarlama hızına dikkat edin ve anahtarlama hızını en üst düzeye çıkarmak için transistör toplayıcı akımını en aza indirin.
Bunu söyledikten sonra gürültüye geçelim. Dirençli ısıtma dışında bir aşamayı kontrol ediyorsanız, mücadele etmek için gürültüye sahip olacaksınız, bu da başa çıkmanız için sıfır geçiş gürültüsüne sahip olacağınız anlamına gelir. Sıfır geçiş girişini bir kesme pimine beslemek için çaylak hatasını yapmayın; bu işlemciniz bir milyar dolarlık kesintilerle uğraşmaya çalıştığında yazılımınızı bir sigara içme kitlesine dönüştürecektir. (Deneyimden söz ediyorum.) Bir RC veya daha gelişmiş düşük geçiş filtresini hatta atmak sadece faz kaymasını tanıtacaktır. Bununla çalışabilirsen, harika. Değilse (50/60 ve 400Hz sistemleri ile uğraşmak zorunda kaldım) o zaman başka yollar denemek zorundasınız.
Kendi tasarımımda, hattı yoklayarak ve geçici olarak görmezden gelen bir oylama rutini yaparak yazılımda hallettim. Faz kayması idare edebileceğimin içindeydi, hızlıydı ve ağır gürültüde bile saçma olmazdı. (Filtre kapaklarını bir indüksiyon ocağından çıkardıkları bir tesiste test ettim, daha önce hiç bu kadar gürültülü bir çizgi görmedim!) Yeniden tasarlayacak olsaydım, tek adımda " sıfır çarpı ve ardından mikrodenetleyici bir sonraki kesme ayarlanmadan önce onaylayacaktır.
Hepsi, herhangi bir pratik durumda gerçek sıfır geçişini güvenilir bir şekilde bulmanın yumuşak başlangıç tasarımının daha zor parçalarından biri olduğunu düşünüyorum. Kontrol döngüsünü kapatmak ikincilti, ama çoğunlukla sadece ayardı. Yapılması çok basit bir şey gibi görünüyor ama o zamanlar teori ve pratik arasındaki fark hakkında biraz öğrendim. :-)
"voting" rutinini tanımlamak için düzenle:
Doğru hatırlarsam, hat sıfırın üstünde olduğunda yüksek, hat sıfırın altında olduğunda düşük bir G / Ç hattım vardı. Oylama rutini bu çizgiyi basitçe sorguladı ve son 3 örnekten 2'si aynıysa, çizginin sıfırdan geçtiğini kabul ettim. İşaret ve boşluğu algılamak bir UART'ın oylama devresine çok benzer. Bunun gibi bir devrenin yararı, faz kaydırmanızın sabit olmasıdır (2 * örnekleme hızı) ve deneyimlediğiniz gürültü türüne göre ayarlayabilirsiniz. Oylamanın ne kadar hızlı olduğunu açıkça hatırlamıyorum ama bir tahminde bulunacak olsaydım 8kHz diyebilirim, çünkü bu sayı aklımda beliriyor.