Teknoloji Ekibi

Metal Dedektörleri => Metal Dedektörü Devre Şemaları => Konuyu başlatan: eserdar - 12 Temmuz 2015, 16:58:11

Başlık: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 12 Temmuz 2015, 16:58:11
Arduino ve 16x02 LCD kullanılarak tasarlanmış bir dedektör. Ruslar tarafından yapılmış Türkçeleştirmesini yaptım birde zaman bulabilirsem yazılımsal ayrımını geliştirmeyi planlıyorum.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 02 Eylül 2015, 10:07:14
Güzel Proje Hocam Sonuç Ne Oldu Acaba?
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: kawizen - 02 Eylül 2015, 13:18:49
Mesafe nedir
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: tivos - 02 Eylül 2015, 16:37:17
Bende merak ettim ne oldu durum.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 04 Eylül 2015, 19:27:16
Ustam Kodları Biraz İnceledim Kodlarda Menü tuşu Ve Yön Tuşlarından Bahsediliyor. Ama Açık Şemada Yada Arduino Bağlantısından Bahsedilmemiş.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 04 Eylül 2015, 23:29:13
Şimdi eklediğim dosyada arduino bağlantıları kutucukta yazıyor..
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 04 Eylül 2015, 23:47:38
Bunu Demek İstemiştim Hocam.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 07 Eylül 2015, 16:23:28
Onunla ilgili bir kodla şemayı eşleştirmeye çalışıyorum devreyi yaptım, arduino ile çalıştırdım ses geliyor görüntü yok.
Tuşların bağlantılarını arduinonun analog girişlerinden yapacağım düzenleyince foruma ekleyeceğim.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: tivos - 07 Eylül 2015, 17:26:24
Ben takipdeyim. Kartı dışardan aldım Henüz elime geçmedi. Geçince bende kurcalamaya başlayacağım. Kolay gelsin...
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 16 Eylül 2015, 18:56:57
Son Durum Nedir Ustalarım?
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 16 Eylül 2015, 19:05:30
butonların bağlantısını ayarladım resimli olarak paylaşacağım.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 16 Eylül 2015, 22:32:11
Beklemedeyiz hocam  :D
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 30 Eylül 2015, 10:43:33
Arkadaşlar şu aralar başka bir işle uğraştığım için bu devre ile uğraşamıyorum en yakın zamanda düzenlenmiş halinin lay dosyasıyla paylaşacağım.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: xman - 12 Ekim 2015, 09:34:51
displayi İ2c ile çalıştırın.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: xman - 22 Ekim 2015, 20:25:11
İmdat.

//#include <TimerOne.h>
#include "Wire.h"
#include <LiquidCrystal_I2C.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x20,16,2);


int menu = A0;
int upButton = A3;
int downButton = A5;
int menu1 = A2;
int buttonCount = 0;

#define FASTADC 1

// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

//
//#define R3_PIN       A0
#define SPEAKER_PIN  11
#define T0_WGM   0b010
#define T0_COMA  0b01
#define T0_CS    0b111

// AYAR PARAMETRELERİ

int pMID=0;
int pMAX=0;
int pMIN=0;
int Sensv = 0; //(0 - MAKSİMUM HASSASİYET DEĞERİ 100 OLMALIDIR.)
int LastData[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int SetupData[200];
void delayms(int ms) {
  for (int i=0;i<ms;i++) delayMicroseconds(1000);
}
void setup() {
  //set port/pin  mode
  //DDRD = 0xFF;//all outputs
  //DDRC = 0x0F;//all inputs
  //DDRD = 0xFF;//all outputs
  //DDRC = B11111110;
  //TIMER INTERRUPT SETUP
 
  DDRD = DDRD | B00001110;
  PORTD = B00001110;

  //PORTD = 0;
 
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("START  ");
 
#if FASTADC
// set prescale to 16
sbi(ADCSRA,ADPS2) ;
cbi(ADCSRA,ADPS1) ;
cbi(ADCSRA,ADPS0) ;
#endif

 


  //YORUMLAYICI
cli();

TCCR0A = 0;
TCCR0B = 0;
OCR0A = 0;

  TCCR0A = (T0_COMA << 6) | (T0_WGM & 0b011);
  TCCR0B = ((T0_WGM & 0b100) << 1) | T0_CS;
  OCR0A = 18;
  // pinMode(R3_PIN, INPUT);
// pinMode(SPEAKER_PIN, INPUT); 
// pinMode(SPEAKER_PIN, OUTPUT);
  //noInterrupts();
  sei();
 
  //Timer1.initialize(1000000);
  //Timer1.attachInterrupt( timerIsr );
 
  beep(100);
  delayms(100);
  beep(100);
  delayms(100);
  beep(100);
  delayms(1000);
  //BOŞTA DARBE GÖNDERMEK İÇİN
  //
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("YÜKLENİYOR...  ");
  //while (1)
 
   
  for (int i=0;i<200;i++) { 
  int t = SendPulse(); 
  delayMicroseconds(6500);
  }
  //AYARLAMAK İÇİN 200 PULSE GÖNDERİYOR
  for (int i=0;i<200;i++) {
  int t = SendPulse();
  SetupData=t;
  delayMicroseconds(6500);   
  }
  int tmin=1024;
  int tmax=0;
  unsigned long tnak=0;
  for (int i=0;i<200;i++) {
    tnak=tnak+SetupData;
    if (SetupData>tmax) tmax = SetupData;
    if (SetupData<tmin) tmin = SetupData;
  } 
pMID = tnak/200;
pMIN = tmin;
pMAX = tmax;
lcd.clear();
lcd.setCursor(0,1);
lcd.print(pMIN);
lcd.setCursor(5,1);
lcd.print(pMID);
lcd.setCursor(10,1);
lcd.print(pMAX);
/* //for test
for (int i=0;i<200;i++)
lcd.setCursor(0,0);
lcd.print(SetupData);
delayms(1000);
lcd.setCursor(0,0);
lcd.print("           ");
*/
beep(500);

}
//SONUÇLARI 1602 DE GÖRÜNTÜLER



 
void beepOn() {
  pinMode(SPEAKER_PIN, OUTPUT);
}
void beepOff() {
  pinMode(SPEAKER_PIN, INPUT);
}

void beep(int msec) {
beepOn();
delayms(msec);
beepOff();
}

int lmax = 10;
int mmax = 80;
int mmaxDefault = 80;
int lmaxDefault = 10;
int LL=lmax; //SİNYAL UZUNLUĞU
int MM=mmax; //SESSİZLİK DÖNGÜLERİ

     int vo = 0;
     int vi = 0;
     int vod = 0;
     int vid = 0;
     unsigned long v1 = 0;
int SendPulse() {
    //--------------------------
    //BAŞLAT
    //AÇMA / KAPAMA
    PORTD = B00000010;
    //-------------------------
    //100MCS BEKLEME
    delayMicroseconds(100);
    //KAPAT
    PORTD = B00001010;
    //AÇIK
    delayMicroseconds(12); //KORUMA ARALIĞI
    PORTD = B00001110;
    delayMicroseconds(7);
    PORTD = B00001100;
    delayMicroseconds(100);
    PORTD = B00001110;
    int r = analogRead(1);
    return r;
}
int tControl = 0; //0-15 ARASI DEĞER GİRİLEBİLİR
int maxControl = 10; //ÖLÇÜM SAYISI
                    //KARARLILIK İÇİN 12-15 ARASI DEĞER GİRİN.
                   

int getMidControl() {
  int gm = 0;
  for (int i=0;i<maxControl;i++) {
    gm = gm+LastData;
  }
  int res = gm/maxControl;
  return res;
}

char Str2[11] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,'\0'};
int V;
void(* resetFunc) (void) = 0; //RESET
int setupcount = 150;



void loop() {
  /*
     if (!(digitalRead(menu))) {///////////////////////////////////////////////
  buttonCount++;
  if ( buttonCount > 5) buttonCount = 0;
    }
            if (!(digitalRead(menu1))) {
  buttonCount--;
    if (buttonCount ==-1) buttonCount = 5;
  } 
  */
ISR(TIMER0_COMPA_vect){
 
   //void timerIsr()


  PORTD = B00001110;
  delayms(2000);
  int ssl=0;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("      ");
    lcd.setCursor(12,1);
    lcd.print("    ");
    lcd.setCursor(12,1);
    lcd.print(Sensv);
    int a = 0;
    int val;
    LL=9;
   
 
      //k = getKey();
     
          if (!digitalRead(upButton)) {
    tControl++;
    if (tControl > 15) tControl = 0;////////////control++--
  }
if (!digitalRead(downButton)){
    tControl--;
   if (tControl ==-1) tControl = 15;   
  }
  //lcd.clear();
   lcd.setCursor(9,0);
      lcd.print(tControl,DEC);
     
     
     if(tControl>=maxControl) tControl=0;
    int t = SendPulse();
    LastData[tControl] = t;
    int s = getMidControl();
    tControl++;
    //TEST
    //pMID = 781;
    //s = 520;
    //==================
    //==================================
    // AMAÇ
    //==================================
    if (LL<lmax && LL>0) LL--;
    if (LL==0 && MM>0) MM--;
    if (MM==0) {
      LL = lmax;
      MM = mmax;
    }
    if (setupcount>0) {
      if (s<=pMID) pMID = pMID-1;
      setupcount--;
    }
    int signal=(pMID-Sensv)-s; //ORTALAMA DEĞERLER
    //int signal=(pMIN-Sensv)-s; //EN AZ
    if (signal>0 && LL==lmax) {
      beepOn();
      //if (signal<50) slevel = 2-
      int slevel = 200-signal; //400 E KADAR DEĞERLİ GERİSİ GICIRDAMA ŞEKLİNDE
      if (slevel<5) slevel = 5;
      mmax = slevel/5;
      MM = mmax;
      LL--;
    }
    if (signal<0 && LL==lmax) {
      mmax = mmaxDefault;
      MM = mmax;
    }
    int ssk = signal;
    signal = signal/5;
    if (signal<0) signal = 0;
    for (int i=0;i<10;i++) {
    if (i<signal) Str2 = 0xff;
    else Str2 = ' ';
    }
    if (LL==0) beepOff();
    //==================================
    //==================================
    //if (a==0) val = s;
    lcd.setCursor(0,1);
    lcd.print(Str2);
    a++;
   
    if (!digitalRead(menu)) {
    Sensv++;
    if (Sensv > 100) Sensv = 0;
  }
if (!digitalRead(menu1)){
    Sensv--;
   if (Sensv ==-1) Sensv = 100;   
  }                                     // sensv için ++ --
      //lcd.setCursor(12,1);
     // lcd.print("   ");
      lcd.setCursor(12,1);
      lcd.print(Sensv,DEC);
      beep(100);
      delayms(100);
     
     
      pMID = t; 
      setupcount = 150;
 
    delayMicroseconds(1000);

    lcd.setCursor(0,0);
    lcd.print(vi);
    lcd.print('.');
    lcd.print(vid);
    lcd.print("V  ");
    lcd.print(ssl);
    lcd.print(' ');
        if (a>200) {
      a = 0;
     //200 DEFA AKÜ VOLTAJINI GÖSTERİR
     V = analogRead(4);
     //V = V-73; //VOLTMETRE KALİBRASYONU
     unsigned long vt = V*125l;
     vt = vt/64l-140;
     vi = vt/100;
     vid = vt/10%10;
     ssl = ssk/10;
     //vi = v1*4;
    }
    //lcd.print(vid);   

    //lcd.print(vi);       
  }
}
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 05 Kasım 2015, 13:24:21
Müsaitseniz devrenin son halini paylaşabilirmisiniz hocam...
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 05 Kasım 2015, 15:35:26
arduino pro mini ile bir pcb çiziyorum onu paylaşacağım yakında hem uno versiyonu hem pro mini versiyonu olarak lcd de i2c kullandım butonları analoğ girişten header olarak ekledim butonların yerinede rotary encode eklemeye çalışıyorum. Az kaldı fakat işler güçler o nedenle fazlada zaman ayıramıyorum.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 05 Kasım 2015, 15:57:21
Çok merak ettik ustam bitince nasıl olcak size iyi çalşmalar..
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: türkelli - 05 Kasım 2015, 23:59:51
eserdar ustam kolay gelsin başarılar dilerim
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 06 Kasım 2015, 00:03:33
Teşekkür ederim arkadaşlar.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: UNIQUE - TA5DF - 06 Kasım 2015, 12:14:29
lcd normal paralel 2x16 kullansak daha pratik olur. ayrıca bu tür devreler için en uygunu arduino nano bence ;)
sadece fikirleriimi söylüyorum , sadece tavsiye,
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 06 Kasım 2015, 15:58:25
Sağolasın ustam fikrin için, fikirleriniz bizim için çok değerli ilginiz için teşekkürler. Nano benimde aklıma gelmedi değil, pro mini daha ucuz bir modül diye onu düşündüm fakat nano içinde bir çizim yaptım ona bide glcd ks108 ile yaptım fakat yazılımda oynamak lazım zaman olmadığı için onu biraz askıya almıştım.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 28 Kasım 2015, 19:45:48
Devrede Son Durum Nedir Hocam?
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 30 Kasım 2015, 22:00:46
Bir pcb üzerinde yazılım çalışması yapıyorum o yüzden zaman alıyor.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 30 Kasım 2015, 22:22:12
Valla pcb çok güzel görünüyor ustam elinize sağlık.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 30 Kasım 2015, 22:25:16
pcb yi bir yerden örnek aldım, inşallah yazılımı kendim yapacağım çalışacağım.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: hntr_126 - 16 Aralık 2015, 22:39:18
eserdar usta kurulum biti mi acaba deneme şansınız oldumu bende ona göre pcb yi basıp denemek istiyorum
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 20 Aralık 2015, 00:58:35
Şu aralar bu devre ile ilgilenemiyorum nano ile uğraşıyorum.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: UNIQUE - TA5DF - 07 Ocak 2016, 08:29:48
devrenin geldiği noktayı paylaşırsanız arkadaşlar daha ileriye götürebilir. Açık kaynak yazılım felsefi ;)
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 19 Ocak 2016, 12:59:35
Ustam Sonuçları Bizlerle Paylaşabilirmisiniz...
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 19 Ocak 2016, 20:00:48
Ustalarım bu devre normalde felezjo isimli bir dedektöre ait, ben bu devreyi benim yazılıma uydurmayı planlamıştım fakat zaman sıkıntısı nedeni ile pek uğraşamadım.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: UNIQUE - TA5DF - 21 Ocak 2016, 21:24:00
ben bulamadım eğer elinizde varsa paylaşırsanız hazır yarı yıl  tatili girmişken biraz geliştirebilirim.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 21 Ocak 2016, 23:06:14
Ustam devre-hex-açıklamalar ektedir.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: pilter - 31 Mart 2016, 17:08:20
Hocam Konuyu Hortlattık Ama Çalışmalarınızdan Bir Sonuç Alabildinizmi?
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: kara1453 - 31 Mart 2016, 17:52:32
serdar  usta felezjo   kulanımı sınırlımı-200  kullanımlık diye  duymuştum 
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: eserdar - 31 Mart 2016, 23:37:02
sınırlı fakat ben altyapıyı kullanarak yazılım yapmaya çalışıyorum fakat zaman kısıtlaması var, siteye bile 1 haftadır nerdeyse giremiyorum.
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: mehdi06 - 09 Haziran 2016, 21:13:03
Alıntı yapılan: eserdar - 31 Mart 2016, 23:37:02
sınırlı fakat ben altyapıyı kullanarak yazılım yapmaya çalışıyorum fakat zaman kısıtlaması var, siteye bile 1 haftadır nerdeyse giremiyorum.
ustam aynı devreyi bende yaptım başlık noktasında takıldım sizin revizyonu sabırsızlıkla bekliyorum yardımlarımız dokunursa elimizden geleni yapmaya hazırız
Saygılar
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: zgr2259 - 26 Temmuz 2016, 22:34:50
Ustam Çalışmanızda Son Durum Nedir?
Başlık: Ynt: Arduino Pulse Metal Dedektörü
Gönderen: Semih.369 - 18 Mayıs 2017, 16:20:50
Eserdar hocam devre bittimi bende denemek istiyorum son durum nedir qcaba ?