Şimdi Ara

Arduino çalışmalarım,,, (6. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
117
Cevap
3
Favori
5.904
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
4 oy
Öne Çıkar
Sayfa: önceki 23456
Sayfaya Git
Git
Giriş
Mesaj
  • quote:

    Orijinalden alıntı: Guest-BF8E9B238

    TCCR2B = 0x09; deneyin
    Çok teşekkür ederim...Nano ile uygulamalı Sonuç süper hocam.2x50Hz.-2x2,66Mhz. aralıklarında istediğim frekansda ayar yapıyorum.Hatda diyot ile 2 çıkışı birleştirip 5,32 Mhz. frekansa çıkabilirim artık.Tekrar teşekkür ederim.



    < Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 4 Ocak 2019; 15:5:53 >
  • Özellikle ECG-EEG gibi cihazlarda ana entegre olarak da kullanılan hassas-düşük voltaj kaşılaştırıcıların yerine arduino kullanarak daha net sonuç alabiliriz.Yeter ki yazılımı ve nasıl çalıştıracağımızı bilelim.
    Örneğin,eklediğim resimlerde görülüyor.Arduino 3 noyu ana çıkış aldığımızda 12,2 milivolt da ON,,,,12,3 milivolt da OFF.Tabi diğer çıkış olan 2 no ise tam tersi...
    İşin aslı bu sonuca wind turbine charge control unit(R.Enerjisi şarj kontrol) tasarımından geldim.Bu yazılımı aslında R.E.Ş.kontrolu için tasarlamıştım.Bir taşla bir kaç kuş vurmuş olduk.
    Arduino çalışmalarım,,,Arduino çalışmalarım,,,



    < Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 10 Mayıs 2019; 10:31:50 >




  • Yalnız gerçekte arduinonun o milivoltlarla çalışması pek mümkün değil.
    Parazitlerden oldukça etkileniyor.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: symbolcu

    Yalnız gerçekte arduinonun o milivoltlarla çalışması pek mümkün değil.
    Parazitlerden oldukça etkileniyor.
    Parazitlerin sebebini araştırmak ve gidermek tercihim olur,tercihimiz olmalı.PC similasyonunda ideal çalışıyor sa...Hadi bunun 10 katı daha az hassas yapalım 10 milivolt eder.10 milivolt fark ile bu günkü mevcut metal arama cihazlarının 2-3 katı daha hafif ve daha hassas cihaz yapılabilir.
    Her zaman ki gibi uygulamalı da görmek doğru olan tabi.Yazılım ve hassas trimpot değişikliğiyle denemeler yapıp sonuca bakacağım inşallah.
    Açıkçası;bu yazılımla çok çeşitli ve hassas çalışma sonuçları alınabilir.Şu anda;ECG-EMG,,metal dedektörü,hassas amper ölçümü ayarı,zırhlı araçlarda füze roket saldırılarında daha hızlı korumaya geçme-tedbir alma,hassas volt ayarı ve ölçümü,basınç,nem,sıcaklık ölçümünde daha ayrıntılı ölçüm vb.aklıma gelenler...




  • İnşaALLAH,,,takipteyiz

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Audio level indicator'ün benzeri ama çıkışı 18-19 adet atayarak daha fazla sayıda led sürülebilir bir yazılım oldu.Bu yazılım ile ledli volt metre,,ampermetre,,sensör seviyesini ledli gösterme,,her butona farklı direnç atayarak 19 ayrı komut verip ayrı çıkış elde etme gibi devreler yapılabilir.Tabi sadece 1 giriş kullanarak ör;A0...
    Daha önce farklı girişlerle farklı çıkışlar elde ediyordum.Şimdi tek girişle 19 farklı kontrollu çıkış elde ediyorum hamd olsun...
    Arduino çalışmalarım,,,



    < Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 24 Mayıs 2019; 16:27:43 >




  • PC osiloskop var ama PC masaüstü olduğu için çalışma masasında direk kullanacağım adam gibi bir os. yok. 200 Khz.lik şu kırmızı renkli olanlardan aldım 140-150 khz sonrası sapıtıyor.Yani işimi görmedi. Derken şimdiki ekleyeceğim arduino-Nokia5110 lcd.li max. 8 mhz. osiloskop yazılımına rastladım adam video da gayet güzel çalıştırıyor. sinyal generatörü dahi var. Video linkini buraya sonra eklerim. İşte bu yazılımı yüklüyorum her şey normal yükleniyor ama arkadaş bir türlü çalışmadı çalıştıramadım. Çalıştırsaydım işimi görecekti ama şu anda bana 1,5-2 Mhz siyal durumunu göstersin yeterli. Zatem 40 Mhz. gibi yüksek frekanslarda PC osi.yi kullanıyorum. Buradan da sonuç alamazsam aliexpressten bir tane 120MHz çift kanal gözüme kestirdim onu alacağım. Ama yardımcı olurda bu programı arduino da çalıştırmama vesile olursanız beni bir tane daha osiloskop almaktan kurtarmış olursunuz bende dua ederim. Yazılım bu arjadaşlar;



    #include <Adafruit_GFX.h>

    #include <Adafruit_PCD8544.h>

    #include <FreqCount.h>

    #include <PWM.h>

    #include <EEPROM.h>

    #include "Waveforms.h"

    #define Ekran    8

    #define led      9  

    #define dds      10 

    #define key_down 13 

    #define key_ok   12 

    #define key_up   11 

    #define akb      A2  

    #define P        A5  

    #define overclock 16 

    #define cof 0

    Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2);      

    byte SinU=30; 

    int PWM = 50;        

    int32_t freq = 500;

    float VCC=5.0; 

    byte d=0;

    byte hag=0;

    int stepFreq=0;

    bool flag=0;

    byte mass[701];

    byte x=0;

    byte ddsMenu=0;

    byte oscMenu=0;

    bool opornoe=1;

    bool pause=0;

    byte mainMenu=0; 

    byte razv=6; 

    unsigned long count=0;

    byte sinX=30;

    byte meaX=83;

    int Vmax=0;

    byte sinhMASS=0;

    long countX=0;

    long speedTTL=9600;

    byte STTL=4;

    int prokr=0;

    bool flag_key;

    byte contrast;

    byte Set=0;

    bool BL;

    byte hs_freq=0;

    byte hs=0;

    byte x_line=47;

    //************************************************************************************************************

    void Generator() {

     display.clearDisplay(); 

     if (flag==0) {

       if(flag_key-!digitalRead(key_down)){

         if(freq<100000) { freq-=stepFreq; if(freq<1) freq=1; bool success = SetPinFrequencySafe(led, freq); pwmWrite(led, PWM*2.55);} else

         {

           hs_freq--;

           if (hs_freq == 0 ) { freq-=stepFreq;}

           if (hs_freq == 1 ) { freq=100000; hs = 79;}

           if (hs_freq == 2 ) { freq=250000; hs = 31;}

           if (hs_freq == 3 ) { freq=500000; hs = 15;}

           if (hs_freq == 4 ) { freq=1000000;hs = 7;}

           if (hs_freq == 5 ) { freq=2000000;hs = 3;}

           if (hs_freq == 6 ) { freq=4000000;hs = 1;}

           if (hs_freq == 7 ) { freq=8000000;hs = 0;}

           cli();

           TCCR1A = bit (COM1A0);              

           TCCR1B = bit (WGM12) | bit (CS10); 

           OCR1A = hs;

           sei();

         }

         delay(50);

       }

       if(flag_key-!digitalRead(key_up)){

         if(freq<100000) { freq+=stepFreq; bool success = SetPinFrequencySafe(led, freq); pwmWrite(led, PWM*2.55);} else

         {

           hs_freq++;

           if (hs_freq == 1 ) { freq=100000; hs = 79;}

           if (hs_freq == 2 ) { freq=250000; hs = 31;}

           if (hs_freq == 3 ) { freq=500000; hs = 15;}

           if (hs_freq == 4 ) { freq=1000000;hs = 7;}

           if (hs_freq == 5 ) { freq=2000000;hs = 3;}

           if (hs_freq == 6 ) { freq=4000000;hs = 1;}

           if (hs_freq == 7 ) { freq=8000000;hs = 0;}

           if (hs_freq == 8 ) hs_freq=7;

           cli();

           TCCR1A = bit (COM1A0);       

           TCCR1B = bit (WGM12) | bit (CS10); 

           OCR1A = hs;

           sei();

         }

         delay(50);

       } 

     }

     if (flag==1) {

       InitTimersSafe();

       bool success = SetPinFrequencySafe(led, freq);

       pwmWrite(led, PWM*2.55);

       if(flag_key-!digitalRead(key_down)){

         PWM=PWM-1;

         if(PWM<0) PWM=0;

         delay(50);

       }

       if(flag_key-!digitalRead(key_up)){

         PWM=PWM+1;

         if(PWM>100) PWM=100;

         delay(50);

       } 

     }     

     if(flag_key-!digitalRead(key_ok)) {  

       delay(100);

       hag++;

       if(hag>=6) hag=0;

     }

     display.setTextSize(1);

     display.setCursor(21,5);

     display.print("PWM=");

     display.print(PWM);

     display.print("%");

     display.drawLine(41-(41*PWM/100.0), 0, 42+(41*PWM/100.0), 0, BLACK);

     display.drawLine(42-(41*PWM/100.0), 1, 41+(41*PWM/100.0), 1, BLACK);

     display.drawLine(43-(41*PWM/100.0), 2, 40+(41*PWM/100.0), 2, BLACK);

     display.drawLine(41-(41*PWM/100.0), 16, 42+(41*PWM/100.0), 16, BLACK);

     display.drawLine(42-(41*PWM/100.0), 15, 41+(41*PWM/100.0), 15, BLACK);

     display.drawLine(43-(41*PWM/100.0), 14, 40+(41*PWM/100.0), 14, BLACK);  

     display.setTextSize(2);

     long freqX=freq*(overclock/16.0);

     if(freqX<1000){

       display.setCursor(25, 20); display.print(freqX);

       display.setTextSize(1);   display.print("Hz");

     } else if(freqX<10000){

       display.setCursor(18, 20); display.print(freqX);

       display.setTextSize(1);   display.print("Hz");

     }else if(freqX<100000){

       display.setCursor(11, 20); display.print(freqX);

       display.setTextSize(1);   display.print("Hz");

     } else {

     if(freqX<1000000)  {display.setCursor(5, 20);display.print(freqX/1000.0, 1); display.setTextSize(1);   display.print("KHz");} else

     if(freqX<10000000) {display.setCursor(24, 20);display.print(freqX/1000000.0, 1); display.setTextSize(1); display.print("MHz");}

     }

     display.setCursor(0,40);

     display.setTextSize(1);

     display.print(">>");

     display.setTextColor(WHITE, BLACK);

     display.print(" ");

     if(freq<100000){

       if(hag<5) display.print("x");   

       if(hag==0) {      

         display.print(1*(overclock/16.0),0);

         stepFreq=1;

         flag=0;

       }

       if(hag==1){

         display.print(10*(overclock/16.0),0);

         stepFreq=10;

       }

       if(hag==2){

         display.print(100*(overclock/16.0),0);

         stepFreq=100;

       }

       if(hag==3){

         display.print(1000*(overclock/16.0),0);

         stepFreq=1000;

       }

       if(hag==4){

         display.print(10000*(overclock/16.0),0);

         stepFreq=10000;

       }

     } else display.print("HS FREQ");

     if(hag==5){

       display.setCursor(0,40);

       display.setTextSize(1);

       display.print(">>");

       display.setTextColor(WHITE, BLACK);

       display.print(" ");

       display.print("PWM ");

       display.print(PWM);

       display.print("%");

       flag=1;

     }

     display.print(" ");

     display.setTextColor(BLACK);

     display.print("<<");

     delay(70);

     display.display();

    }

    void DDSGeneratorMenu() {

     display.clearDisplay();

     if (ddsMenu==0) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

     display.setCursor(0, 0); display.println("    Sine    ");

     if (ddsMenu==1) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

     display.setCursor(0,10); display.println(" Triangular ");

     if (ddsMenu==2) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

     display.setCursor(0,20); display.println("  Sawtooth  ");

     if (ddsMenu==3) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

     display.setCursor(0,30); display.println("   Square   ");

     if (ddsMenu==4) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

     display.setCursor(0,40); display.println("    ECG     ");

     display.setTextColor(BLACK);

     display.display();

    }

    void DDSGenerator(){

     if(ddsMenu==0) {

       DDSGeneratorMenu();   

       while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {

         //PWM=pgm_read_byte(&(sine[d]));

         PWM=pgm_read_byte(&(waveformsTable[0][d]));

         pwmWrite(dds,PWM);

         d++;

         if(d==255) d=0;

       }

       ddsMenu++;

       delay(200);

     }

     if(ddsMenu==1) {

       DDSGeneratorMenu();   

       while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {

         //PWM=trianglM[d];

         PWM=pgm_read_byte(&(waveformsTable[1][d]));

         pwmWrite(dds,PWM);

         d++;

         if(d==255) d=0;

       }

       ddsMenu++;

       delay(200);

     }

     if(ddsMenu==2){

       DDSGeneratorMenu();   

       while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {

         //PWM=pilaM[d];

         PWM=pgm_read_byte(&(waveformsTable[2][d]));

         pwmWrite(dds,PWM);

         d++;

         if(d==255) d=0;

       }

       ddsMenu++;

       delay(200);

     }

     if(ddsMenu==3){

       DDSGeneratorMenu();   

       while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {

         //PWM = RpilaM[d];

         PWM=pgm_read_byte(&(waveformsTable[3][d]));

         pwmWrite(dds,PWM);

         d++;

         if(d==255) d=0;

       }

       ddsMenu++;

       delay(200);

     }

     if(ddsMenu==4){

       DDSGeneratorMenu();   

       while(flag_key-digitalRead(key_up) && flag_key-digitalRead(key_down) && flag_key-digitalRead(key_ok)) {

         //PWM = RpilaM[d];

         PWM=pgm_read_byte(&(waveformsTable[4][d]));

         pwmWrite(dds,PWM);

         d++;

         if(d==255) d=0;

       }

       ddsMenu=0;

       delay(200);

     }

    }

    void TTL() {

     display.clearDisplay();

     display.setTextColor(WHITE, BLACK);

     display.setCursor(0,0); display.println("  Terminal  ");

     display.setTextColor(BLACK); 

     display.setCursor(15,10); display.println("Hiz:");

     display.setTextColor(WHITE, BLACK);

     display.setCursor(10,20); display.print("-");

     display.setTextColor(BLACK);

     display.println(" ");     

     display.print(speedTTL);

     display.println(" ");

     display.setTextColor(WHITE, BLACK);

     display.setCursor(69, 20); display.println("+");

     display.setTextColor(BLACK);   

     display.setCursor(38,40); display.println("Ok");

     if(flag_key-!digitalRead(key_up))   STTL++;

     if(flag_key-!digitalRead(key_down)) STTL--;

     if(STTL>11) STTL=0;

     switch (STTL) {

       case 0: speedTTL = 300;   break;

       case 1: speedTTL = 1200;  break;

       case 2: speedTTL = 2400;  break;

       case 3: speedTTL = 4800;  break;

       case 4: speedTTL = 9600;  break;

       case 5: speedTTL = 19200; break;

       case 6: speedTTL = 38400; break;

       case 7: speedTTL = 57600; break;

       case 8: speedTTL = 74880; break;

       case 9: speedTTL = 115200; break;

       case 10: speedTTL = 230400; break;

       case 11: speedTTL = 250000; break;

     }

     if(flag_key-!digitalRead(key_ok)) {

       Serial.begin(speedTTL*(16/overclock));

       display.clearDisplay();

       delay(100); 

       display.display();

       int x=0;

       int y=0;

       while(1){

         char incomingBytes; 

         if (Serial.available() > 0) {

           incomingBytes=Serial.read();

           display.setCursor(x,y);

           display.print(incomingBytes);

           display.display(); x=x+6;

           if(x==84){x=0;y=y+8;}

           if(y==48) {

             x=0;y=0;

             display.clearDisplay();

             delay(100); 

             display.display();

           }

         }        

       }

     } 

     display.display(); 

     delay(200);

    void ReadADC() {

     if (razv>=6) ADCSRA = 0b11100010;

     if (razv==5) ADCSRA = 0b11100011;

     if (razv==4) ADCSRA = 0b11100100;

     if (razv==3) ADCSRA = 0b11100101;

     if (razv==2) ADCSRA = 0b11100110;

     if (razv<2) ADCSRA = 0b11100111;

     if (razv==0) {

       for(int i=0; i<700; i++) {

         while ((ADCSRA & 0x10)==0);

         ADCSRA|=0x10;             

         delayMicroseconds(500);  

         mass[i]=ADCH;           

       }

     } else { // (razv>0)

       for(int i=0; i<700; i++) {   

         while ((ADCSRA & 0x10)==0);

         ADCSRA|=0x10;             

         mass[i]=ADCH;             

       }

     }

    }

    void Ayar() {

     Set=0;delay(400);

     while (flag_key-digitalRead(key_ok)){

       display.clearDisplay();

       if (Set == 0) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(0 , 0); display.println("Contrast:"); display.setTextColor(BLACK);

       display.setCursor(60 , 0); display.println(contrast);

       display.setCursor(0 , 10); display.println("B-Light :"); display.setTextColor(BLACK);

       if (BL == 1) { display.setCursor(60 , 10); display.println("ON ");} else

                    { display.setCursor(60 , 10); display.println("OFF");} display.display();

       if (flag_key-!digitalRead(key_up))  contrast++;

       if (flag_key-!digitalRead(key_down)) contrast--;

       if (contrast<30) contrast=30;

       if (contrast>70) contrast=70;

       display.setContrast(contrast);

       delay(150);

     }

     Set=1; delay(400);

     while (flag_key-digitalRead(key_ok)){

       display.clearDisplay();

       display.setCursor(0 , 0); display.println("Contrast:");

       display.setCursor(60 , 0); display.println(contrast);

       if (Set == 1) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(0 , 10); display.println("B-Light :"); display.setTextColor(BLACK);

       if (BL == 1) { display.setCursor(60 , 10); display.println("ON "); digitalWrite(Ekran, BL); } else

                    { display.setCursor(60 , 10); display.println("OFF"); digitalWrite(Ekran, BL); }

       if (flag_key-!digitalRead(key_up))  BL=1;

       if (flag_key-!digitalRead(key_down)) BL=0;

       display.display();

       delay(150);

     }

     display.display();

     display.clearDisplay();

     EEPROM.write(1, contrast);

     EEPROM.write(2, BL);

     mainMenu=0;

     setup();

    }

    void setup() {

     delay(300); 

     if ( EEPROM.read(cof) != cof ) {

         EEPROM.write(cof, cof);

         EEPROM.write(1, 60);

         EEPROM.write(2, 1);

     } else {

         contrast = EEPROM.read(1);

         BL      = EEPROM.read(2);

     }

     pinMode(Ekran, OUTPUT);

     digitalWrite(Ekran, BL);

     byte key_test=0;

     digitalWrite(key_up, HIGH); digitalWrite(key_down, HIGH); digitalWrite(key_ok, HIGH);

     if (digitalRead(key_up))  key_test++;

     if (digitalRead(key_down)) key_test++;

     if (digitalRead(key_ok))  key_test++;

     if (key_test>1) {

       flag_key=0;  

     }

     else {

       digitalWrite(key_up, LOW); digitalWrite(key_down, LOW); digitalWrite(key_ok, LOW);

       flag_key=1;

     }  

     display.begin();

     display.setContrast(contrast); 

     while(flag_key-digitalRead(key_ok)) {

       display.clearDisplay();

       if (mainMenu == 0)  display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(3 , 0); display.println("oscilloscope");

       if (mainMenu == 1)  display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(3 ,10); display.println("PWM-Generator");

       if (mainMenu == 2) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(3 ,20); display.println("DDS-Generator");

       if (mainMenu == 3)  display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(3 ,30); display.println("Terminal");

       if (mainMenu == 4) display.setTextColor(WHITE, BLACK); else display.setTextColor(BLACK);

       display.setCursor(60 ,30); display.println("Set");

       display.setTextColor(BLACK);

       display.setCursor(12,40); display.print("Vbat=");

       display.print((analogRead(akb)*VCC)/1024);

       display.print("V");

       if (flag_key-!digitalRead(key_up) ) { mainMenu--; delay(100); }

       if (flag_key-!digitalRead(key_down)) { mainMenu++; delay(100); }

       if (mainMenu == 0xFF) mainMenu = 4;

       if (mainMenu>4) mainMenu=0;

       delay(50); 

       display.display();

     }

     if (mainMenu==0) FreqCount.begin(1000);

     if (mainMenu==1) { InitTimersSafe(); bool success = SetPinFrequencySafe(led, freq); pwmWrite(led, PWM*2.55); }

     if (mainMenu==2) { InitTimersSafe(); bool success = SetPinFrequencySafe(dds,200000);}

     if (mainMenu==4) Ayar();

     delay(200);

    }

    void loop() {

     if(mainMenu==0) {

       if(opornoe) ADMUX = 0b01100011;

              else ADMUX = 0b11100011;

       delay(5);

       if(pause==0) ReadADC();

       bool flagSINHRO=0;

       bool flagSINHRnull=0;

       for(int y=1; y<255 ;y++){

         if(flagSINHRO==0){if(mass[y]<SinU){flagSINHRnull=1;}}

         if(flagSINHRO==0){if(flagSINHRnull==1){if(mass[y]>SinU){flagSINHRO=1;sinhMASS=y;}}}}

       Vmax=0;

       for(int y=1; y<255; y++) if(Vmax<mass[y]) Vmax=mass[y];

       display.clearDisplay();

       if(pause) {

         display.drawLine(prokr/8,8,prokr/8+6,8, BLACK);

         display.drawLine(prokr/8,9,prokr/8+6,9, BLACK);

         x=3;

         for(int y=prokr; y<prokr+80; y++) {

           if(razv<7) x++;

           if(razv==7) x+=2;

           if(razv==8) x+=3;

           display.drawLine(x, x_line-mass[y]/7, x+1, x_line-mass[y+1]/7, BLACK);

           display.drawLine(x+1, x_line-mass[y]/7+1, x+2, x_line-mass[y+1]/7+1, BLACK);

         }

       } else {    

         x=3;

         for(int y=sinhMASS; y<sinhMASS+80; y++) {

           if(razv<7) x++;

           if(razv==7) x+=2;

           if(razv==8) x+=3;

           display.drawLine(x, x_line-mass[y]/7, x+1, x_line-mass[y+1]/7, BLACK);

           display.drawLine(x+1, x_line-mass[y]/7+1, x+2, x_line-mass[y+1]/7+1, BLACK);       

         }

         sinhMASS=0;

       }

       for(byte i=47;i>5;i=i-7) { display.drawPixel(0, i, BLACK); display.drawPixel(1, i, BLACK); display.drawPixel(2, i, BLACK); }

       for(byte i=47;i>5;i=i-3) { display.drawPixel(21,i, BLACK); display.drawPixel(42,i, BLACK); display.drawPixel(63,i, BLACK); }

       for(byte i=3;i<84;i=i+3) { display.drawPixel(i,33, BLACK); display.drawPixel(i,19, BLACK); }

       display.setCursor(0,0);

       if(oscMenu==0) {

         if(opornoe) display.print(Vmax*VCC/255,1); else display.print(Vmax*1.1/255,1);

         display.setTextColor(WHITE,BLACK);

         display.print("V");

         display.setTextColor(BLACK);

         display.setCursor(26,0);display.print(razv);

         if(flag_key-!digitalRead(key_down) || flag_key-!digitalRead(key_up)) { opornoe=!opornoe; }

       }

       if(oscMenu==1) {

         if(opornoe) display.print(Vmax*VCC/255,1); else display.print(Vmax*1.1/255,1);display.print("V");

         display.setTextColor(WHITE, BLACK);

         display.setCursor(26,0);display.print(razv);

         display.setTextColor(BLACK);

         if(flag_key-!digitalRead(key_down)) { razv=razv-1; if(razv==255) razv=0; }

         if(flag_key-!digitalRead(key_up) ) { razv=razv+1; if(razv==9)  razv=8; }

       }

       if(oscMenu==4) {

         if(opornoe) display.print(Vmax*VCC/255,1); else display.print(Vmax*1.1/255,1);display.print("V");

         display.setCursor(26,0);display.print(razv);

         pause=1;

         if(flag_key-!digitalRead(key_down)) { prokr=prokr-10; if(prokr<0)  prokr=0;  }

         if(flag_key-!digitalRead(key_up) ) { prokr=prokr+10; if(prokr>620) prokr=620; }

         if(flag_key-!digitalRead(P)) {oscMenu=0;pause=0;delay(150);}  

       }

       if(oscMenu==3) {

         prokr=0;

         pause=0;

         if(opornoe) display.print(Vmax*VCC/255,1); else display.print(Vmax*1.1/255,1);display.print("V");

         display.setCursor(26,0);display.print(razv);

         if(flag_key-!digitalRead(key_down)) { SinU=SinU-20; if(SinU<20) SinU=20; }

         if(flag_key-!digitalRead(key_up) ) { SinU=SinU+20; if(SinU>230) SinU=230; }  

         display.fillCircle(80,x_line-SinU/7, 2, BLACK);

       }

       if(oscMenu==2) {

         if(opornoe) display.print(Vmax*VCC/255,1); else display.print(Vmax*1.1/255,1);display.print("V");

         display.setCursor(26,0);display.print(razv);

         display.drawLine(82,x_line-4,82,x_line, BLACK);

         display.drawLine(83,x_line-4,83,x_line, BLACK);

         if(flag_key-!digitalRead(key_down)) {x_line++;if (x_line>47)x_line=47;}

         if(flag_key-!digitalRead(key_up) ) {x_line--;if (x_line<25)x_line=27;}

       }

       if (flag_key-!digitalRead(key_ok)) { oscMenu++; if(oscMenu>3) { oscMenu=0; }}

       if (flag_key-!digitalRead(P)) oscMenu=4;

       if (FreqCount.available()) count = FreqCount.read();

       byte Frec1=0;

       long Frec=0;

       bool flagFrec1=0;

       bool flagFrec2=0;

       bool flagFrec3=0;

       for(int y=1; y<255; y++) {

         if(flagFrec1==0 && mass[y]<SinU) flagFrec2=1;

         if(flagFrec1==0 && flagFrec2==1 && mass[y]>SinU) { flagFrec1=1; Frec1=y; }

         if(flagFrec1==1 && mass[y]<SinU) flagFrec3=1;

         if(flagFrec3==1 && mass[y]>SinU) {

           if (razv>=6) Frec=1000000/((y-Frec1-1)*3.27); //delitel 4

           if (razv==5) Frec=1000000/((y-Frec1)*3.27)/2; //delitel 8

           if (razv==4) Frec=1000000/((y-Frec1)*3.27)/4; //delitel 16

           if (razv==3) Frec=1000000/((y-Frec1)*3.27)/8; //delitel 32

           if (razv==2) Frec=1000000/((y-Frec1)*3.27)/16; //delitel 64

           if (razv==2) Frec=1000000/((y-Frec1)*3.27)/32; //delitel 128

           if (razv==1) Frec=1000000/((y-Frec1)*3.27)/32; //delitel 128

           if (razv==0) Frec=1000000/((y-Frec1)*500);    //delitel 128

           flagFrec1=0; flagFrec3=0;

         }

       }

       if(opornoe==1) {

         if((Vmax*VCC/255)>2.5) countX=count*(overclock/16.0);

         if((Vmax*VCC/255)<2.5) countX=Frec*(overclock/16.0);

       } else countX=Frec*(overclock/16.0);

       if(countX<1000) { display.setCursor(34,0); display.print(countX); display.print("Hz"); }

       if(countX>=1000) { float countXK=countX/1000.0; display.setCursor(34,0);display.print(countXK,1); display.print("KHz"); }

       display.setCursor(0,40);

       if(opornoe) display.print(VCC,1); else display.print("1.1");

       display.print("V");

       delay(150); 

       display.display();

     }

     if(mainMenu==1) Generator();

     if(mainMenu==2) DDSGenerator();

     if(mainMenu==3) TTL();

    }





  • Bu link proje paylaşılan link;

    Arduino çalışmalarım,,,
    Arduino çalışmalarım,,,arduproje.blogspot.com
    Arduino Osiloskop (ATmega328p Oscilloscope)
    https://arduproje.blogspot.com/2017/03/arduino-osiloskop-atmega328p.html
  • Aslında arkadaşlar max. 8mhz frekansmetre ve duty okuyucu bir programı yapıp sonuç aldım. osiloskobu yapamazsam ve yeni osi. alamazsam bu frekansmetre de işimi görür. Tabi dalga eğrilerini seyrederek tadını çıkarmak başka ama duty+frekans ölçümlü bir cihaz da sonuç olarak osiloskoba yakın olur. İnşallah şu osi. programında bir arkadaş yardımcı olur da çalıştırırız. İsteyen arkadaş da yapıp osiloskop sahibi olur.

    Arduino çalışmalarım,,,




  • Frekans Mhz. ler olduğunda 16x2 LCD ekrana rakamların rahat sığması için tekrar düzeltme yaptım. Böyle daha net okunur oldu.

    Arduino çalışmalarım,,,
  • Hemen üstteki programın uygulaması. Yarın kutuya motajını yapacağım. AC yada DC 1200 volta kadar destekleyebilecek.

    Bu arada şu osiloskop programına çözüm önerisi bekliyorum.

    Arduino çalışmalarım,,,
  • Osiloskop cevabını hâlâ bekliyorum. Tabi frekans metre yi yapıp denedim, kutuya topladım. Sadece siyah sıcak silikonla lcd etrafını düzelteceğim zaten resimlerde göreceksiniz.

    Aynen söylediğim gibi deneme de TL494 step down tekniğini kullandım.Giriş voltajı sabit 30,7V çıkış pot ile değiştirirerek değişik voltajlarda duty oranını gözlemledim. Hem FR.metre cihazım hemde step down tekniğim gerçekten mükemmel çalışyıor. 2x21W 24V lamba yükü ile msofet soğtucu istemeden çalışıyor. Frekans metrenin doğru ölçüm yaptığını multimetre ile kıyas ettim.

    Arduino çalışmalarım,,,


    Arduino çalışmalarım,,,


    Arduino çalışmalarım,,,




  • Frekans 50 Khz 52,5 Khz arası değişiyor.Multimetre 5V out altında frekans ölçemiyor (stabil değil) ama bizim FR.metre ölçmeye devam ediyor.Gayet güzel.

    Volt in 30,7VDC

    Vout= 28V % 90 duty

    Vout=24V % 60 duty

    Vout=19V % 38 duty

    Vout=12V % 25 duty

    Vout=9V % 20 duty

    Vout=5V % 10 duty




    < Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 2 Ocak 2023; 14:7:6 >
  • Çalıştırdım ama geç kaldım. Yeni bir osiloskop siparişi vermiştim, şu an kargo dağıtıma çıkardı. Tabi orjinal osiloskopbun hakkı yenmez çünkü Auto özelliği çok önemli bunu arduino da yapamayız. Aldığım osi.nin pwn çıkışı max. 500 Khz. Bende osi. yerine signal generator yapacağım artık. Yani 500 Khz. bana yetmez en az 2MHz olmalı. Arduino yazılımı hazır galiba 8Mhz yada 12,5Mhz max. olacak. Ma

    Arduino çalışmalarım,,,

    lzemeler gelince sonuçlandıracağım inş.





  • :u osiloskobu iyi ki almışıyım. Çok kararlı ve gayet güzel çalışıyor.Hem bu yeni osi. yi hem bu osi. ile yaptığım frekans-duty metreyi hemde TL494 step down converter devresini daha kesin olarak test etmiş oldum. Yanlış ölçme vb. şüphelerimi gidermiş oldum.Osi.nin max signal generatörü 1MHz çıktı oysa tanıtımında 500Khz yazıyordu.

    Çalışma videosu çektim linki=

    Arduino çalışmalarım,,,mehmet ali Sertdemiryoutube
    Gayet güzel kararlı çalışıyor,Ölçümler stabil ve kararlı. İşimi fazlasıyla görüyor.
    https://www.youtube.com/watch?v=RFSYGS03vzE


    Arduino çalışmalarım,,,


    Arduino çalışmalarım,,,


    Arduino çalışmalarım,,,




  • Elinize sağlık gayet güzel çalışmalar yapıyorsunuz ve tecrübelerinizi paylaşıyorsunuz.

    Frekensmetreniz çok güzel görünüyor ama kutu noktasında şöyle bir öneride bulunabilirim.

    Devreyi yaptıktan sonra ona uygun bir kutu bulmak ayarlamak genelde problem oluyor. Eğer 3 boyutlu çizim programlarına aşinaysanız (solidworks, inventor, freecad, tinkercad.... ücretli ücretsiz çok alternatif var) kendi kutunuzu tasarlayıp, orta halli bir 3d yazıcı ile hobinizi/işinizi bir seviye daha öteye taşıyabilirsiniz.


    Devreyi tasarlarken, 3 boyutlu kısmınında ölçülerini hatasız şekilde ayarlıyorum. İkinci aşamada devrenin 3 boyutlu halini solidworks veya inventor (ben bu ikisini kullanıyorum) tasarım programına aktarıp kutu tasarımı yapıyorum. Devrenin ölçülü 3 boyutlu modeli elinizde olunca; LCD, buton, soket bağlantıları, montaj delikleri... vb tüm detayları bilgisayarda ayarlamak çok kolay oluyor, geriye tasarım bittikden sonra 3d yazıcı ile basmak kalıyor. Genelde flement olarak PLA kullanıyorum. Basılan kutuları siyah sprey boya ile boyuyorum, ortaya çok güzel sonuçlar çıkıyor.





  • rafet32 kullanıcısına yanıt

    Teşekkür ederim sağolun.

    Kutu konusunda tamamen haklısınız ama birde bu işe girmek bana ağır gelecek.Hem maddi hem manevi. Çünkü bir 3D yazıcım yok, programlarını da hiç kullanmadım. Aslında o kutunun sıfırları elimde 10-15 tane var ama daha önce ultrasonic repeller yaptığım bir proje kutusunu kullanmıştım. Bu sebeple kutu deforme görünüyor. Ayrıca bu projeyi de bozacağım çünkü şu yeni osiloskobu alınca frekansmetre ye ihtiyaç kalmadı. Yerine aynı kutuyu signal generator olarak tasarlayacağım.Bozmayıp sağlam bir kenara koyduğumda çok yer kaplıyorlar unutup gidiyorum.

    Aslında sayın @rafet32 yaş ilerledi gözüm kararıyor açıkçası. Eski heyecanlı çalışmalarım kalmadı. Yine de şükür bu günümüze.

  • 
Sayfa: önceki 23456
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.