Arşiv

Archive for Temmuz 2013

Kondansatör neden DC akım geçirmez

08 Temmuz 2013 2 yorum

AC ve DC terimleri frekans düzlemi kavramları olduğundan, bir kondansatörün DC akım geçirmediğini ispatlayabilmek için aşağıdaki devrenin transfer fonksiyonunu frekans düzleminde yazmak gerekir.
RCcircuit

Çözüme dolambaçlı yoldan gitmek için yukarıdaki devrenin transfer fonksiyonunu ilk önce t, sonra s, sonra da f düzleminde yazacağız.

Verilen devrenin transfer fonksiyonu t düzleminde

RCcircuit_eq_1

dir. Bunu s düzleminde düzenlersek. Denklem

RCcircuit_eq_2

şeklini alacaktır. RC yerine

RCcircuit_eq_3

yazıp denklemi yeniden düzenlersek, devrenin transfer fonksiyonu

RCcircuit_eq_4

şeklini alır. Buradan frekans düzlemine geçmek içinse s yerine

RCcircuit_eq_5

yazılmalıdır. Bu durumda verilen devrenin frekans düzlemindeki denklemi

RCcircuit_eq_6

şeklindedir. Elde edilen bu denklemde DC için ω yerine 0, AC içinse ω yerine >0 değerlerini yazarsak devrenin cevabı aşağıda gösterildiği gibi olacaktır.

RCcircuit_eq_7Görüldüğü üzere DC için ω yerine 0 yazıldığında devrenin cevabı 0 olmaktadır. Buda kondansatörün DC akımı geçirmediğini gösterir.

MSP430 ile rastgele sayı üretmek (Random Number Generator)

03 Temmuz 2013 Yorum bırakın

Rastgele sayı üreteci olmayan mikrokontrolcülerde çeşitli oyunlarla rastgele sayılar üretilebilmektedir. MSP430 da bu iş VLO ve DCO ortak çalışması (bkz. application report SLAA338) ile yapılabildiği gibi ADC ile de yapılabilir.

MSP430 un 10 numaralı analog kanalına bağlı dahili bir sıcaklık sensörü vardır. ADC girişi bu kanala yönlendirilip sıcaklık bilgisi dijital olarak okunmaya başlandığında, her okumada oluşacak analog dan dijitale dönüşteki bit hataları ve sıcaklık sensöründen gelen değişimlerle ADC sonucunun en anlamsız (LSB) bitinde rastgele farklılıklar meydana gelir. Basit bir döngü ile ADC n kere okunup n kere kaydırıldığında ortaya n bitlik rastgele bir sayı çıkar.

Aşağıdaki verilen wCreateRandomNumber fonksiyonu 16 bitlik rastgele sayı üretmektedir.


unsigned short wCreateRandomNumber(void)
{
unsigned char i;
unsigned short wRandomNumber;

 ADC10CTL1=INCH_10;
 ADC10CTL0=SREF_1 + ADC10SHT_0 + REF2_5V + REFON + ADC10ON;

 for(i=0;i<16;i++)
 {
   ADC10CTL0|=ENC + ADC10SC;
   while (ADC10CTL1 & ADC10BUSY);

   if(ADC10MEM&0x01) wRandomNumber|=1;
   wRandomNumber<<=1;
 }

 ADC10CTL0 &= ~ENC;
 ADC10CTL0 = 0x0000;
 ADC10CTL1 = 0x0000;

 return wRandomNumber;
}

Kategoriler:Donanım/Yazılım