- Gerekli Bileşenler:
- Açıklama:
- Devre Şeması ve Çalışma Açıklaması:
- EasyEDA kullanarak Devre ve PCB Tasarımı:
- PCB Örneklerini Çevrimiçi Hesaplama ve Sipariş Etme:
- Programlama Açıklaması:
Bu projede PCB üzerinde PIC tabanlı Araç Aküsü İzleme sistemi yapacağız. Burada, EASYEDA çevrimiçi PCB simülatörü ve tasarımcısını kullanarak bir PCB tasarladık. Bu Araç Aküsü İzleme Devresi, Araç Aküsünün gücünü sadece bir arabanın ön panelindeki elektrik prizine takarak izlemek için kullanılır. PCB olarak da kullanmak için seçeneği vardır Gerilim Ölçüm aracı veya Voltmetre USB araç şarj cihazı kullanarak olmadan. Diğer güç kaynaklarının voltajını ölçmek için buraya, sadece güç kaynağından iki kablo bağlayarak bir terminal bloğu ekledik.
Gerekli Bileşenler:
- PIC Mikrodenetleyici PIC18F2520 -1
- Fabrikasyon PCB Kartı -1
- USB konektörü -1
- 2 pinli Terminal Konnektörü (isteğe bağlı) -1
- Ortak anot yedi segmentli ekran (4'ü 1 arada) -1
- BC557 Transistör -4
- 1k direnç -6
- 2k direnç -1
- 100R direnç -8
- 1000uF kapasitör -1
- 10 uF kapasitör -1
- 28 pin IC tabanı -1
- bayan burgsticks -1
- 7805 Voltaj regülatörü -1
- Araç USB şarj cihazı -1
- LED -1
- Zener diyot5.1v -2
- USB kablosu (B tipi veya Arduino UNO uyumlu) -1
- 20MHz Kristal -1
- 33pF kapasitör -2
Açıklama:
Genel olarak, her seferinde aracın akü gücünü ölçmek önemli değildir, ancak şarj olup olmadığını kontrol etmek için şarj sırasında akü voltajını genellikle bilmemiz gerekir. Böylelikle hatalı şarj sisteminden kaynaklanan pil arızasını önleyebiliriz. Şarj sırasında 12v araç aküsünün voltajı yaklaşık 13,7v'dir. Böylece pilimizin iyi şarj olup olmadığını belirleyebilir ve pil arızasının nedenlerini araştırabiliriz. Bu projede, bir PIC mikrodenetleyici kullanarak Araç Aküsü için Gerilim Ölçer uygulayacağız. Voltaj Bölücü Devresi yardımıyla mikrodenetleyicinin ADC pinine akü voltajını almak için Araç Çakmağı veya Araç USB şarj cihazı kullanılır. Sonra 4 basamaklı yedi bölümlü bir ekranakünün voltaj değerini göstermek için kullanılır. Bu devre voltajı 15v'a kadar ölçebilir.
Bir araba aküsü şarj olurken, akü terminallerindeki voltaj aslında alternatörden / redresörden gelir, bu nedenle sistem 13,7 volt okur. Ancak pil şarj olmadığında veya aracın motoru AÇIK olmadığında, akü terminalindeki voltaj 12v civarında gerçek pil voltajıdır.
Aynı devreyi diğer güç kaynaklarının voltajını 15v'a kadar ölçmek için de kullanabiliriz. Bu amaçla, güç kaynağından iki kabloyu bağlayabileceğiniz ve voltajı izleyebileceğiniz PCB'de Terminal Bloğunu (yeşil renkli plastik blok) lehimledik. Bir Değişken güç Kaynağının, bir USB güç bankasının ve bir 12v AC-DC adaptörünün voltajını ölçerek göstermiş olduğumuz sondaki Videoyu kontrol edin. Ayrıca Basit Akü İzleme Devresini ve 12v Akü Şarj Devresini de kontrol edin.
Devre Şeması ve Çalışma Açıklaması:
Bu Akü Voltaj İzleme Devresinde, PIC mikrodenetleyicinin dahili analog pinini kullanarak araç aküsü voltajını okuduk ve burada voltaj bölücü devre üzerinden mikrodenetleyicinin AN0 (28) pinini seçtik. Koruma için 5.1v'lik bir zener diyot da kullanılır.
4'ü 1 arada yedi segmentli ekran, mikrodenetleyicinin PORTB ve PORTC'sine bağlı olan araç aküsü voltajının anlık değerini görüntülemek için kullanılır. Yedi Segment Ekran dahil tüm devreye güç sağlamak için LM7805 adlı 5v voltaj regülatörü kullanılır. Mikrodenetleyiciyi çalıştırmak için 20 MHz kristal osilatör kullanılır. Devre, bir LM7805 kullanılarak USB araç şarj cihazının kendisinden güç alır. PCB'ye bir USB portu ekledik, böylece doğrudan araç USB şarj cihazını devreye bağlayabiliyoruz.
Araç USB şarj cihazı veya Çakmak, arabanın 12v güç çıkışından 5v düzenlenmiş besleme sağlar, ancak Araç aküsünün gerçek voltajını ölçmemiz gerekir, böylece Araç şarj cihazını ayarladık. Araç USB şarj cihazını açmanız ve ardından 5v (çıkış) ve 12v (giriş) terminallerini bulmanız ve ardından 5v bağlantısını zımpara kağıdı veya sert bir şeyle ovalayarak ve USB çıkış terminalini doğrudan 12v'ye kısa devre yaparak kaldırmanız gerekir. Önce araç USB şarj cihazındaki USB bağlantı noktasından 5v bağlantısını açın ve ardından 12v'yi 5v'nin bağlı olduğu USB bağlantı noktasına bağlayın. Aşağıdaki şekilde gösterildiği gibi, kırmızı daire içine alınmış bağlantıyı kestik, araç şarj cihazınızda farklılık gösterebilir.
Burada ADC'yi yapılandırmak için, ADC dönüşümü için 5v dahili referans voltajı ve f / 32 saati olan AN0 analog pinini seçtik.
Araç aküsü voltajını ADC değerinden hesaplamak için aşağıdaki formülü kullandık:
Gerilim = (ADC değeri / direnç faktörü) * referans Gerilim Nerede: ADC değeri = Gerilim bölücü çıkışı (mikrodenetleyici ile dijitale dönüştürülür) Direnç faktörü = 1023.0 / (R2 / R1 + R2) // 1023 maksimum ADC değeridir (10- bit) Referans Voltajı = 5 volt // dahili 5v referans seçildi
Direnç Faktörü Hesaplaması:
Bu projede (genellikle) 12v-14v civarında olan araba akü voltajını okuyoruz. Bu yüzden bu projeyi, maksimum 15v'nin bu sistemin maksimum 15v'ye kadar okunabileceği anlamına geldiğini varsayarak yaptık.
Yani devrede gerilim bölücü kısımda R1 ve R2 direncini kullandık ve değerler:
R1 = 2K
R2 = 1K
Direnç faktörü = 1023.0 * (1000/2000 + 1000)
Direnç faktörü = 1023.0 * (1/3)
Direnç faktörü = 341.0, 15 volta kadar
Dolayısıyla, bu Makalenin sonunda verilen Kodu kullandığımız voltaj hesaplaması için Nihai Formül aşağıdaki gibi olacaktır:
Gerilim = (ADC değeri / 341.0) * 5.0
EasyEDA kullanarak Devre ve PCB Tasarımı:
Araç Akü Voltaj Monitörü için bir Devre tasarlamak için, sorunsuz bir şekilde devre ve PCB oluşturmak için ücretsiz bir çevrimiçi EDA aracı olan EasyEDA'yı kullandık. Daha önce EasyEDA'dan birkaç PCB sipariş etmiştik ve devrelerin çizilmesinden PCB siparişlerine kadar tüm süreci diğer PCB üreticilerine kıyasla daha rahat ve verimli bulduğumuz için hizmetlerini kullanmaya devam ettik. EasyEDA, devre çizimi, simülasyon, PCB tasarımını ücretsiz olarak sunar ve ayrıca yüksek kaliteli ancak düşük fiyatlı Özelleştirilmiş PCB hizmeti sunar. Şemalar, PCB düzenleri, Devreleri Simüle Etmek vb.İçin Easy EDA'nın nasıl kullanılacağına dair eksiksiz öğreticiyi buradan kontrol edin.
EasyEDA her geçen gün gelişiyor; birçok yeni özellik eklediler ve genel kullanıcı deneyimini geliştirdiler, bu da EasyEDA'yı devre tasarlamak için daha kolay ve kullanılabilir hale getiriyor. Yakında, çevrimdışı kullanım için bilgisayarınıza indirilip yüklenebilen Masaüstü sürümünü başlatacaklar.
EasyEDA'da, devre ve PCB tasarımlarınızı herkese açık hale getirebilirsiniz, böylece diğer kullanıcılar bunları kopyalayabilir veya düzenleyebilir ve buradan faydalanabilir, ayrıca tüm Devre ve PCB düzenlerimizi bu Araç Akü Voltaj Monitörü için halka açık hale getirdik, aşağıdaki bağlantıyı kontrol edin:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcb“db49a6c776
Aşağıda, EasyEDA'dan PCB düzeninin Üst katmanının Anlık Görüntüsü verilmiştir, 'Katmanlar' Penceresinden katmanı seçerek PCB'nin herhangi bir Katmanını (Üst, Alt, Üst ipek, alt ipek vb.) Görüntüleyebilirsiniz.
PCB Örneklerini Çevrimiçi Hesaplama ve Sipariş Etme:
PCB tasarımını tamamladıktan sonra, sizi PCB sipariş sayfasına götürecek olan Fabrikasyon çıktısının simgesine tıklayabilirsiniz. Burada PCB'nizi Gerber Viewer'da görüntüleyebilir veya PCB'nizin Gerber dosyalarını indirebilir ve bunları herhangi bir üreticiye gönderebilirsiniz, ayrıca doğrudan EasyEDA'da sipariş etmek çok daha kolay (ve daha ucuz). Burada sipariş etmek istediğiniz PCB sayısını, kaç tane bakır katmana ihtiyacınız olduğunu, PCB kalınlığını, bakır ağırlığını ve hatta PCB rengini seçebilirsiniz. Tüm seçenekleri seçtikten sonra, "Sepete Kaydet" e tıklayın ve siparişinizi tamamlayın, ardından PCB'lerinizi birkaç gün sonra alacaksınız.
Bu PCB'yi doğrudan sipariş edebilir veya bu bağlantıyı kullanarak Gerber dosyasını indirebilirsiniz.
PCB siparişi verdikten birkaç gün sonra PCB numunelerini aldım
PCB'leri aldıktan sonra gerekli tüm bileşenleri PCB üzerine monte ettim ve son olarak Araç Akü İzleme Sistemimizi hazır hale getirdik, sonunda verilen Video'da bu devreyi çalışırken kontrol edin.
Programlama Açıklaması:
Bu projenin programı yeni başlayanlar için biraz zor. Bu kodu yazmak için bazı başlık dosyalarına ihtiyacımız var. Burada kodlama için MPLAB X IDE'yi ve kodu oluşturmak ve derlemek için XC derleyicisini kullanıyoruz. Kod C dilinde yazılmıştır.
Bu kodda, bir analog pin kullanarak pil voltajını okuduk ve verileri kontrol etmek veya 4 basamaklı yedi segment ekrana göndermek için PIC mikrodenetleyicide Timer Interrupt Sunucu Rutinini kullandık. Gerilim ölçümü için tüm hesaplama, ana program rutininde yapılır.
İlk olarak, koda bir başlık ekledik ve ardından yapılandırma Bitlerini kullanarak PIC mikro denetleyiciyi yapılandırdık.
#Dahil etmek
Ve sonra tanımlanmış değişkenler ve yedi segment için tanımlanmış pinler görüntülenir
işaretsiz int counter2; işaretsiz karakter konumu = 0; işaretsiz karakter k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int rakam1 = 0, rakam2 = 0, rakam3 = 0, rakam4 = 0; # define TRIS_seg1 TRISCbits.TRISC0 # define TRIS_seg2 TRISCbits.TRISC1 # define TRIS_seg3 TRISCbits.TRISC2 # define TRIS_seg4 TRISCbits.TRISC3 # define TRIS_led1 TRISAbits.TRISA2 # define TRIS_led2 TRISAbits.TRISA5 # define TRIS_led3 TRISAbits.TRISA0 # define TRIS_led4 TRISAbits.TRISA1 # define TRIS_led5 TRISAbits.TRISA………………
Şimdi, yedi segment gösterimini sürmek için bir zamanlayıcı kesinti rutini oluşturduk:
void interrupt low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; eğer (sayaç2> = 1) {if (pozisyon == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
Şimdi void main () fonksiyonunda, timer ve interrupt'ı başlattık.
GIE = 1; // GLOBLE INTRRUPT ETKİNLEŞTİR PEIE = 1; // çevresel intrupt bayrağı T0CON = 0b000000000; // ön ölçekleyici değeri TMR0IE = 1 koydu; // interrupt etkinleştirme TMR0IP = 0; // kesinti önceliği TMR0 = 55536; // bu değerden sonra sayacı başlat TMR0ON = 1;
Ve sonra while döngüsünde, analog pininde analog girişi okuruz ve hesaplamalar için bazı fonksiyonlar çağırırız.
while (1) {adc_init (); for (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = Değer; } adcValue = (float) adcValue / 40.0; convert (adcValue); gecikme (100); }
Verilen adc_init () işlevi ADC'yi başlatmak için kullanılır
void adc_init () {ADCON0 = 0b00000011; // adc kanalını seçin ADCON1 = 0b00001110; // analog ve dijital i / p seçin ADCON2 = 0b10001010; // eşitleme süresi tutma sınır süresi ADON = 1; }
Verilen adc_value işlevi, analog pinden girişi okumak ve voltajı hesaplamak için kullanılır.
float adc_value (void) {float adc_data = 0; while (GİT / BİTTİ == 1); // daha yüksek bit veri başlangıç dönüşümü adc değeri adc_data = (ADRESL) + (ADRESH << 8); // 10 bitlik çıktı depolayın adc_data = ((adc_data / 342.0) * 5.0); adc_data döndür; }
Verilen dönüştürme işlevi, voltaj değerini segment destekli değerlere dönüştürmek için kullanılır.
void convert (float f) {int d = (f * 100); basamak1 = d% 10; d = d / 10; digit2 = d% 10; d = d / 10; digit3 = d% 10; digit4 = d / 10; }
Aşağıdaki bir tanıtım Videosu ile bu proje için Komple kodu kontrol edin.