osilaskop2

Arduino ile osiloskop yapımı

Bildiğiniz gibi elektronikte profesyonelleştikçe karşımıza yeni ihtiyaçlar çıkıyor bunlardan biriside hiç şüphesiz giriş ve çıkış frekanslarını ve değerlerini ölçebileceğimiz ve frekans şekillerini görebileceğimiz osilaskop.Yapmak istediğimiz osilaskopta bir ekrana mikroişlemciye ve bir kaç potansiyometreye ihtiyacımız olacak.

 

Unutmadan demeliyim bu projemizde sadece frekans şekillerini eldebilirsiniz ama programlamada biraz değişikliklerle değerleri de ölçmeniz mümkündür.

osilaskop1

Kullandığım fritzing programı ile İki adet şema çıkardım bunlar için tek arduino kullanılmakta.Arduino ile birlikte nokia 5110-3310 LCD kullanılmaktadır. Bu LCD 84×48 pixeldir dolayısı ile bu LCD bizim işimizi görecektir. Resimde parallax firmasını shieldi mevcut ama bunun yerine yandaki modülde işinizi görecektir sadece unutulmaması gereken kütüphaneleri yükleyerek gerekli bağlantıların yapılmasıdır.

Program şeması

a. Kontrol ünitesi

5110LCDOSilaskop

b. LCD ünitesi

5110LCD

Programı

/*
 ###########################################################
www.arduinom.org sitesinde yayınlanmıştır. Projemizin amacı arduino ile osilaskop projesi gerçekleştirip bunu LCD de göstermektir. Kullanımı çok amaçlı olabilir. 
 ###########################################################
 */
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
 
// pin 2 - Serial clock out (SCLK)
// pin 3 - Serial data out (DIN)
// pin 4 - Data/Command select (D/C)
// pin 5 - LCD chip select (CS)
// pin 6 - LCD reset (RST)
Adafruit_PCD8544 nokia = Adafruit_PCD8544(2, 3, 4, 5, 6);
 
//Burada bir grafik vardır alttaki kodlar bu grafik içindir.

static unsigned char __attribute__ ((progmem)) logo16_glcd_bmp[]={
  0x06, 0x0D, 0x29, 0x22, 0x66, 0x24, 0x00, 0x01, 0x87, 0x00, 0x27, 0x6C, 0x20, 0x23, 0x06, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16
 
int channelAI = A1;     
int scaleYAI = A2;      
int scaleXAI = A3;      
int offsetXAI = A4;     
 
int delayVariable = 0;  
int xVariable = 0;      
int yCtr = 0;           
int posy = 0;           
int myArray[85];        
int offsetX = 0;
int fiveV = 1023;
 
 
void setup(void)
{
 
  nokia.begin();
  nokia.setContrast(50);
 
  // show splashscreen
  nokia.display();
  delay(500);
  nokia.clearDisplay();
}
 
void loop()
{ 
  delayVariable = analogRead(scaleYAI);
  delayVariable = (delayVariable);
  delayVariable = map (delayVariable, 0, 1023, 0, 10);
  xVariable = analogRead(scaleXAI);
  xVariable = map (xVariable, 0, 1023, 0, 100);
  offsetX = analogRead(offsetXAI);
  offsetX = map(offsetX, 0, 1023, -100, 100);
 
  for(yCtr = 0; yCtr < 43; yCtr += 1)   
  {                                
    posy = analogRead(channelAI);       
    posy = map (posy, 0, 1023, 1023, 0);
    myArray[yCtr] = (posy/xVariable);   
    delay (delayVariable);           
  }
 
  yCtr == 0;                         
  nokia.clearDisplay();              
 
  for(yCtr = 0; yCtr < 43; yCtr += 1)  
  {
    nokia.drawLine((yCtr*2)-2, myArray[yCtr-1]-offsetX, yCtr*2, myArray[yCtr]-offsetX, BLACK); 
 
  }
  yCtr == 0;
   
  for(yCtr = 0; yCtr < 85; yCtr += 3){
    nokia.drawPixel(yCtr, (fiveV/xVariable)-offsetX, BLACK); // 5V çizgisi çekildi
    nokia.drawPixel(yCtr, (fiveV/xVariable/2)-offsetX, BLACK); // 2,5V çizgisi
    nokia.drawPixel(yCtr, 0-offsetX, BLACK); //0 volt çizgisi
  }
   
  nokia.display();                    
  yCtr == 0;                          
 
}

Alıntıdır.

  1. Samet 4 Kasım 2016 20:48

    Merhabalar hocam öncelikle paylasiminiz için teşekkür ederim . Ama kontrol paneli kısmını anlamadım biraz daha detaylı bilgi vermeniz mümkün mü ? Bide kullanılan elemanlar neler ve değerleri hakkında da bilgi verir misiniz ?

    Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.