ATtiny44 mikrodenetleyici ile yüksek lisans tezim için küçük bir sensör PCB tasarladım . Uygulamam için bu kartların yaklaşık 200'üne ihtiyacım var ve 16'sı her zaman yerel olarak denetleyici anakartına bağlı. Tüm ağ şöyle görünür:
Kontrolör ve sensör kartları arasında iletişim kurmak için kendi 1 pinli veri yolumu yazdım (zamanlama tabanlı). Tek sorun, verisini denetleyici anakartına gönderdiğimde, sensör kartının ağdaki yerini bilmek için bir adresi olması gerektiğidir.
ATtiny'de sadece 1 pim kaldığından, dört jumper ayarına dayalı bir analog voltaj üretmesi gereken bir jumper tabanlı DAC devresi buldum. Sensör devresi değerleri (47, 470, 1k, 3k, 4k7, 10k, 100k ve 220k) kullandığından ve üretim için optimize etmek istedim DAC için aşağıdaki değerleri kullandım (temel olarak 100k, 50k, 20k ve 10k ). Jumper ayarına göre bana 0 V ve 760 mV arasında güzel bir değer vermelidir. ATtiny'nin dahili 1.1 V referansı ile analog voltaj olarak okumam gereken şey. Başlangıçta ATtiny bu voltajı okur ve konumunu bilmelidir.
bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik
Teorik olarak bu iyi çalışıyor. Dirençlerin toleransı düşünüldüğünde (hepsi% 1 BTW) üst üste binen alan almadığımı doğrulamak için LTspice'de bir Monte Carlo analizi bile yaptım . Aşağıda bu analizin resimlerini bulabilirsiniz.
Şimdi bu panoların birkaçını (neyse ki 200 değil) ürettim ve bazıları adreslerinde doğru okumalar yapamadı (özellikle tüm toleransların aynı anda oynandığı yüksek adres bölgelerinde). Tüm olası çözümleri ölçtüm ve sonunda sorunumu çözdüm. Orijinal analizim , her bir kontrolör kartında bir MC7805 ile 12 V'den yerel olarak üretilen 5 V besleme voltajının toleransını içermiyordu . Veri sayfası başına MC7805, 4.8 ila 5.2 V arasında bir çıkış voltajına sahiptir.
Bunu anladıktan sonra Monte Carlo analizini değiştirdim. Şimdi şöyle görünüyor:
Gördüğünüz gibi, bu voltajın sadece bu adres anlamına gelebileceğini söyleyemediğim güzel örtüşen alanlar var. Temelde hayır ile başlayan tüm adresler. 8 yanlış okuma alabilir (yüksek adresler için yanlış okuma olasılıkları daha yüksektir).
Ben ediyorum değil zaten (I üretim için optimize istediğiniz tez gibi) gemide kullanılan olandan farklı direnç değerleri eklemek için gibi.
Ben ediyorum değil DAC direnç ağını besleyecek bir voltaj referansı (örneğin Zener diyodu) eklemek ister.
Ben olamaz daha fazla kontrol panelinin değiştirme (ve orada daha hassas bir voltaj regülatörü kullanmaktır).
Ben yapabilirsiniz hala PCB tasarımı / sensör kurulu şematik değiştirmek!
Adresle ilgili her zaman doğru değerleri aldığınızdan nasıl emin olabilirim (programla veya devreyi değiştirerek)?