Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
116
Cevap
6227
Tıklama
4
Öne Çıkarma
Cevap: Arduino çalışmalarım,,, (6. sayfa)
M
7 yıl
Yarbay
Konu Sahibi

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 >


Bu mesajda bahsedilenler: @elektro_gadget
M
6 yıl
Yarbay
Konu Sahibi

Ö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.
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >





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

S
6 yıl
Binbaşı

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ı >
Bu mesaja 1 cevap geldi.
M
6 yıl
Yarbay
Konu Sahibi

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...



S
6 yıl
Binbaşı

İnşaALLAH,,,takipteyiz



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

M
6 yıl
Yarbay
Konu Sahibi

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...
< Resime gitmek için tıklayın >





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

M
3 yıl
Yarbay
Konu Sahibi

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=ADCH;           
   }
 } else { // (razv>0)
   for(int i=0; i<700; i++) {   
     while ((ADCSRA & 0x10)==0);
     ADCSRA|=0x10;             
     mass=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();
}



M
3 yıl
Yarbay
Konu Sahibi

M
3 yıl
Yarbay
Konu Sahibi

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.
< Resime gitmek için tıklayın >



M
3 yıl
Yarbay
Konu Sahibi

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.
< Resime gitmek için tıklayın >



M
3 yıl
Yarbay
Konu Sahibi

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.
< Resime gitmek için tıklayın >



M
3 yıl
Yarbay
Konu Sahibi

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.
< Resime gitmek için tıklayın >


< Resime gitmek için tıklayın >


< Resime gitmek için tıklayın >



M
3 yıl
Yarbay
Konu Sahibi

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 >

M
2 yıl
Yarbay
Konu Sahibi

Ç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
< Resime gitmek için tıklayın >
lzemeler gelince sonuçlandıracağım inş.



M
2 yıl
Yarbay
Konu Sahibi

: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=
https://www.youtube.com/watch?v=RFSYGS03vzE


< Resime gitmek için tıklayın >


< Resime gitmek için tıklayın >


< Resime gitmek için tıklayın >



R
2 yıl
Binbaşı

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.


Bu mesaja 1 cevap geldi.
M
2 yıl
Yarbay
Konu Sahibi

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.




Bu mesajda bahsedilenler: @rafet32
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.