{"id":341,"date":"2018-07-11T20:19:23","date_gmt":"2018-07-11T20:19:23","guid":{"rendered":"http:\/\/mikrobotik.com\/wp2\/?p=341"},"modified":"2023-04-03T09:18:23","modified_gmt":"2023-04-03T06:18:23","slug":"arduino-basit-frekansmetre-yapimi","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2018\/07\/11\/arduino-basit-frekansmetre-yapimi\/","title":{"rendered":"Arduino Basit Frekansmetre yap\u0131m\u0131."},"content":{"rendered":"<p>Bu yaz\u0131mda sizlere Arduino kullanarak basit olarak nas\u0131l frekans \u00f6l\u00e7ebilece\u011finizi anlataca\u011f\u0131m. Biraz daha geli\u015fmeye ihtiyac\u0131 var. Fakat temel k\u0131sm\u0131 buras\u0131 olduktan sonra sizlerin katk\u0131 yaparak geli\u015ftirebilece\u011finizi umuyorum.<br \/>\nBurada sadece arduino \u00a0komut yada fonksiyonlar\u0131n\u0131 de\u011fil, y\u00fcksek frekanslar\u0131 da \u00f6l\u00e7ebilece\u011finiz metotlar \u00fczerinde durulacak.<\/p>\n<p>Frekansmetre sadece frekans\u0131 g\u00f6stermez periyodunu ve pals&#8217;in nas\u0131l bir pals oldu\u011funu da bize g\u00f6sterebilecektir.<br \/>\n<span style=\"color: #ff9900;\"><strong>Dikkat edece\u011fimiz nokta Arduino 5V tan b\u00fcy\u00fck sinyal genli\u011finde problem ya\u015fayabilecektir. Bundan dolay\u0131 gerekti\u011finde sinyalin gerilim seviyesini d\u00fc\u015f\u00fcrmeyi de eklemeniz gerekir. Genlik bizim i\u00e7in sorun te\u015fkil etmesin diyorsak 5V luk zener diyot ile fazlal\u0131k gerilimleri k\u0131rpabiliriz. K\u0131rpma i\u015fleminde frekans etkilenmez.\u00a0<\/strong><\/span><\/p>\n<h2><span style=\"color: #ff0000;\"><strong>Frekansmetre 2 \u015fekilde yap\u0131labilir.<\/strong><\/span><\/h2>\n<p><strong>1-)<\/strong> Pals&#8217;in periyodunu \u00f6l\u00e7\u00fcp f=1T kural\u0131ndan hesaplama yapabilirsiniz. Burada periyot \u00f6l\u00e7t\u00fc\u011f\u00fcn\u00fcz i\u00e7in dalga \u015fekli hakk\u0131nda da fikir sahibi olabilirsiniz. ( PULSIN kullan\u0131m\u0131)<br \/>\n<strong>2-)<\/strong> Belirli bir s\u00fcre i\u00e7erisinde gelen palsleri sayabilirsiniz. (Millis Kullan\u0131m\u0131)<\/p>\n<h4><strong><a href=\"https:\/\/www.electronics-lab.com\/project\/100mhz-frequency-counter-with-pic16f628a-2\/\" target=\"_blank\" rel=\"noopener\">PIC i\u015flemci kullananlar haz\u0131r yap\u0131lm\u0131\u015f bir \u00f6rne\u011fi bu sayfadan bulabilirler.<br \/>\n<span style=\"color: #ff0000;\">Mant\u0131k benzerdir.\u00a0<\/span><\/a><\/strong><\/h4>\n<p><span style=\"color: #ff0000;\"><strong>1- Pals periyodu \u00f6l\u00e7erek ( PULSIN )<\/strong><\/span><\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-342 alignleft lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2018\/07\/kare-dalga.png\" alt=\"kare dalga\" width=\"313\" height=\"161\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 313px; --smush-placeholder-aspect-ratio: 313\/161;\" \/>\u00a0Bu kare dalgan\u0131n g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi high ve low k\u0131s\u0131mlar\u0131 birbirine e\u015fit. Zaman zaman bu k\u0131s\u0131mlar birbirine e\u015fit olmayabilir. Frekans<br \/>\n(T) periyot de\u011feri kadar g\u00f6sterilecektir. Arduino hem High seviyesini hem de Low seviyesini ayr\u0131 ayr\u0131 \u00f6l\u00e7t\u00fc\u011f\u00fcnden sinyalin nas\u0131l bir sinyal oldu\u011funu da fark edebilirsiniz.<br \/>\n<span style=\"color: #ff6600;\">Hatta geli\u015ftirip grafik ekranda resmi \u00e7izdirebilirsiniz.<\/span><br \/>\nArduino \u00f6l\u00e7me yaparken dijital bir giri\u015f bekler. bundan dolay\u0131 sin\u00fcs dalga geldi\u011finde bunu kare dalgaya \u00e7evirmemiz gerekir. Bunu yapabilmek i\u00e7in h\u0131zl\u0131 \u00e7al\u0131\u015fan (Schmitt-Trigger) 7414 entegresi ile kare dalgaya \u00e7evrilir. A\u015fa\u011f\u0131daki \u015fekil ideal oland\u0131r fakat ger\u00e7ekte kullanaca\u011f\u0131n\u0131z entegrenin s\u0131n\u0131rlar\u0131na g\u00f6re High ve Low k\u0131s\u0131mlar\u0131nda k\u00fc\u00e7\u00fck de\u011fi\u015fiklikler olabilmektedir.<br \/>\n<img decoding=\"async\" class=\"size-full wp-image-344 alignleft lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2018\/07\/sinuskare.png\" alt=\"sinuskare\" width=\"345\" height=\"146\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 345px; --smush-placeholder-aspect-ratio: 345\/146;\" \/>Bu \u015fekilde sin\u00fcs dalga kare dalgaya \u00e7evrilecektir.<br \/>\nEntegrenin <strong><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/sn54ls14-sp.pdf\" target=\"_blank\" rel=\"noopener\">Datasheet&#8217;ine buradan<\/a><\/strong> ula\u015fabilirsiniz.<br \/>\n<span style=\"color: #ff0000;\"><strong>Ayr\u0131ca<\/strong><\/span> entegrenin i\u00e7 yap\u0131s\u0131na bakarsan\u0131z bir par\u00e7as\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zda \u00e7\u0131k\u0131\u015f sinyali giri\u015f sinyalinin tersi oldu\u011funu g\u00f6r\u00fcrs\u00fcn\u00fcz. Bunu entegrenin 2 par\u00e7as\u0131n\u0131 kullanarak tersinin, tersi= kendisidir kural\u0131 olarak d\u00fczenledim. D\u00fczenlemeye ihtiya\u00e7 varm\u0131yd\u0131? Normalde tek par\u00e7as\u0131 da i\u015f g\u00f6r\u00fcr fakat siz sinyalin High seviyesi uzun derken asl\u0131nda High seviyesi k\u0131sa bir sinyalle u\u011fra\u015f\u0131yor olabilirsiniz. Bundan dolay\u0131 <strong>orijinal sinyali yakalamak i\u00e7in 2 par\u00e7as\u0131n\u0131 seri olarak kulland\u0131m.\u00a0<\/strong><\/p>\n<p><strong>Videoda DUTYcycle anlat\u0131lmaya \u00e7al\u0131\u015f\u0131ld\u0131. Dutycycle nedir.<\/strong> Genelde PWM sistemlerde kullan\u0131lan bu terim. Sinyalin periyodunu anlatmak i\u00e7in kullan\u0131l\u0131r. Bir periyot i\u00e7erisinde High ve Low k\u0131s\u0131mlar\u0131n\u0131n birbiriyle fark\u0131n\u0131 g\u00f6sterir. 1 periyot = %100 olarak ifade edilir. %50 dutycycle denildi\u011finde High=%50 Low=%50 k\u0131sm\u0131d\u0131r. Bu frekans \u00f6l\u00e7\u00fcm\u00fc i\u00e7in idealdir. \u0130sterseniz %10 duty cycle sinyalide kullanabilirsiniz fakat burada Low seviyesi uzun oldu\u011funda arduinonun sayma limiti d\u0131\u015f\u0131na \u00e7\u0131kabilece\u011finden tam periyodu hesaplamak zor olacakt\u0131r. Bundan dolay\u0131 m\u00fcmk\u00fcn oldu\u011fu kadar %50 civar\u0131 dutycycle bulunmas\u0131 avantajd\u0131r. biz bunu nerede kulland\u0131k, <span style=\"color: #ff6600;\">B\u00f6l\u00fcc\u00fc entegrelerde<\/span> her bacaktan Frekans\/10 sinyali alabilirsiniz fakat ideal olan\u0131 %50 %50 olan\u0131d\u0131r bundan dolay\u0131 \u015femadaki ba\u011flant\u0131 \u015fekli kullan\u0131lm\u0131\u015ft\u0131r.<br \/>\n<strong>A\u015fa\u011f\u0131daki tablodan Bu i\u015flemi daha net g\u00f6rebilirsiniz.\u00a0<\/strong><br \/>\n<img decoding=\"async\" class=\"aligncenter size-full wp-image-366 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2018\/07\/dutycycle.png\" alt=\"dutycycle\" width=\"436\" height=\"456\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 436px; --smush-placeholder-aspect-ratio: 436\/456;\" \/><\/p>\n<p><strong>Devremize gelince, Devre<\/strong> proteus \u00fczerinde \u00e7izildi ve UNO ile \u00e7al\u0131\u015fmas\u0131 sa\u011flanacak \u015fekilde dizayn edildi.<strong> NANO ile de \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/strong><\/p>\n<p><a href=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2018\/07\/sema.jpg\" rel=\"lightbox\"><img decoding=\"async\" class=\"alignleft wp-image-346 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2018\/07\/sema.jpg\" alt=\"\u015fema\" width=\"295\" height=\"181\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 295px; --smush-placeholder-aspect-ratio: 295\/181;\" \/><\/a>\u015eemada g\u00f6rece\u011finiz gibi dip switchler mevcut. Bu 4 l\u00fc switch sinyallerin arduino taraf\u0131na ge\u00e7i\u015fte ay\u0131r\u0131c\u0131 olarak kullan\u0131lmas\u0131n\u0131 sa\u011fl\u0131yor. Neden buna ihtiya\u00e7 var derseniz Arduinonun \u00f6l\u00e7ebilece\u011fi frekanslar\u0131n daha y\u00fckse\u011fini \u00f6l\u00e7ebilmesini sa\u011flamak ama\u00e7l\u0131d\u0131r. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz 4017 entegreler Frekans b\u00f6l\u00fcc\u00fc olarak \u00e7al\u0131\u015f\u0131r. <span style=\"color: #ff6600;\">1000000 Hz frekans\u0131 \u00f6l\u00e7mek sorun oluyorsa<\/span> frekans\u0131 b\u00f6lerek <strong>1000000Hz \/ 10 = 100000Hz<\/strong> olarak \u00f6l\u00e7eriz ayr\u0131ca bu da sorun oluyorsa bunu da 10&#8217;a b\u00f6lerek <strong>100000Hz\/10=10000Hz<\/strong> olarak \u00f6l\u00e7ebiliriz. hatta daha da b\u00f6lebiliriz. 4017 entegreleri ardarda ba\u011flayabiliriz.<br \/>\n4017 entegresi yerine 7490 binary say\u0131c\u0131 entegresini de kullanabiliriz. Ya da 10 lu say\u0131c\u0131 b\u00f6l\u00fcc\u00fc entegreleri kullanabiliriz. <strong><span style=\"color: #ff9900;\">Hatta sadece 10lu olmas\u0131 gerekmez \u00e7e\u015fitli frekanslar\u0131 b\u00f6len \u00f6zel b\u00f6l\u00fcc\u00fcler bulunmaktad\u0131r bunlar\u0131 da frekans b\u00f6l\u00fcc\u00fc olarak kullanabiliriz.<\/span><\/strong><br \/>\n<a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/HCF4017B.pdf\" target=\"_blank\" rel=\"noopener\"><strong>4017 entegre datasheet<\/strong><\/a><br \/>\n<a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/SN74LS90.pdf\" target=\"_blank\" rel=\"noopener\"><strong>7490 entegre datasheet<\/strong><\/a><br \/>\n<strong>4521 \u00f6zel b\u00f6l\u00fcc\u00fc entegre<\/strong> \u00a0<strong><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/HEF4521B.pdf\" target=\"_blank\" rel=\"noopener\">datasheet<\/a>. <\/strong>bu entegre belirlenen de\u011ferlerde b\u00f6lme i\u015flemi yapar.<strong><br \/>\nB\u00f6lme tablosu a\u015fa\u011f\u0131daki gibidir.<\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-349 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2018\/07\/devider.jpg\" alt=\"devider\" width=\"692\" height=\"195\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 692px; --smush-placeholder-aspect-ratio: 692\/195;\" \/>Bu tablodan da g\u00f6rece\u011finiz gibi 10, 100 gibi bir standart yok. bu tip frekans b\u00f6l\u00fcc\u00fcler devrede bulunanlar gibi de\u011fil i\u00e7inden sayarlar ve ba\u011flant\u0131l\u0131 olan \u00e7\u0131k\u0131\u015ftan b\u00f6l\u00fcnerek bir pals \u00e7\u0131k\u0131\u015f\u0131 verir. Bu de\u011fere g\u00f6re arduino yu ayarlayabilirsiniz. Bu\u00a0<strong>Entegre \u00e7al\u0131\u015fma voltaj\u0131na g\u00f6re \u00a06-35Mhz aras\u0131 \u00e7al\u0131\u015fabilmektedir.<\/strong><br \/>\n<strong>4017 entegresi 5Mhz<\/strong> civar\u0131na kadar \u00e7al\u0131\u015fabilmektedir. <strong>7490 entegresi ise 42Mhz<\/strong> frekans\u0131na kadar \u00e7al\u0131\u015fabilmektedir. Bu de\u011fer <strong>ne kadar b\u00fcy\u00fckse<\/strong> o entegreyi kullan\u0131p frekans\u0131 b\u00f6lmek bizim i\u00e7in daha iyi olacakt\u0131r. <strong><span style=\"color: #ff6600;\">\u00c7\u00fcnk\u00fc y\u00fcksek frekanslar\u0131 \u00f6l\u00e7ebilmek i\u00e7in b\u00f6ld\u00fc\u011f\u00fcm\u00fcz entegrenin de o frekansta stabil bir \u015fekilde \u00e7al\u0131\u015fmas\u0131 gerekir<\/span>.<\/strong><\/p>\n<p><strong>Programa bir bakal\u0131m b\u00fct\u00fcn bunlar\u0131 nas\u0131l yap\u0131yoruz. <a href=\"https:\/\/www.arduino.cc\/reference\/en\/language\/functions\/advanced-io\/pulsein\/\" target=\"_blank\" rel=\"noopener\">PULSIN ayr\u0131nt\u0131l\u0131 bilgi<\/a><\/strong><br \/>\nBurada <strong>pulsein<\/strong> komutunu kullan\u0131yoruz. gelen sinyalin <strong>High<\/strong> seviyesinin ka\u00e7 <strong>mikrosaniye<\/strong> oldu\u011funu 37. sat\u0131rda pulsin komutuyla buluyoruz.<br \/>\nKomut kullan\u0131m\u0131: <strong>Htime=pulseIn(8,HIGH);<\/strong> bu sat\u0131rda <strong>8<\/strong> arduino&#8217;nun input pimi. sinyali alg\u0131lar. <strong>HIGH<\/strong> ifadesi ise High seviyesinde pals varsa say demektir. burada High seviyesinin ka\u00e7 mikro saniye oldu\u011funu bulup <strong>LOW<\/strong> seviyesine d\u00fc\u015ft\u00fc\u011f\u00fcnde de 33 sat\u0131rdaki gibi kullan\u0131yoruz.<br \/>\nBu iki say\u0131y\u0131 toplad\u0131\u011f\u0131m\u0131zda ise bize periyotu verir. Periyot ne i\u015fimize yarar. A\u015fa\u011f\u0131daki form\u00fcl ile frekans\u0131 bulabiliriz.<br \/>\n<strong>Frekans= 1 \/ T\u00a0<\/strong>(periyot zaman\u0131 saniye olarak yaz\u0131lacakt\u0131r. )<br \/>\nVideoda LCD nin g\u00f6sterdi\u011fi H ve L sinyal zamanlar\u0131n\u0131 toplay\u0131p bu form\u00fclden frekans\u0131 bulabilirsiniz.<br \/>\n40. sat\u0131r ve 43. sat\u0131rda bir a\u00e7\u0131klama vard\u0131r. Pulsin komutunun bir parametresi (Timeout) vas\u0131tas\u0131yla sinyal gelmedi\u011finde h\u0131zl\u0131 bir \u015fekilde \u00f6\u011frenmemizi sa\u011flayacakt\u0131r. \u00a0\u015eayet bu parametre kullan\u0131lmazsa maksimum timeout s\u00fcresi olaca\u011f\u0131ndan bu s\u00fcreye kadar program beklemek zorunda kalacakt\u0131r. Videoda bu parametre kullan\u0131lmam\u0131\u015ft\u0131r. Bu parametreyi kullan\u0131rsan\u0131z sonu\u00e7 daima s\u0131f\u0131r \u00e7\u0131kar. Timeout dedi\u011fimiz mant\u0131k bu s\u00fcre i\u00e7erisinde de\u011fi\u015fim olmazsa mant\u0131\u011f\u0131d\u0131r. Mesela b\u00fcy\u00fck frekanslarda timeout a\u015f\u0131lmazken k\u00fc\u00e7\u00fck frekanslarda timeout s\u00fcresine denk gelir. bunu ayarlayamazs\u0131n\u0131z. <strong><span style=\"color: #ff6600;\">Ne yapabiliriz? Burada yapabilece\u011fimiz bir sinyal geldi\u011finde sadece High seviyesini kontrol etmek i\u00e7in timeout kullanan pulsin komutunu hesaplamadan \u00f6nce ekleriz. ve if komutuyla geldiyse hesapla gelmediyse sinyal yok yaz diyebiliriz.<\/span><\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-title=\"Frekansmetre Arduino Uno\" data-enlighter-group=\"1\" data-enlighter-theme=\"beyond\">\/\/#include \r\n\/\/LiquidCrystal lcd(2, 3, 4, 5, 6, 7);\r\nint freq;\r\nint val;\r\nint val1;\r\nint bol;\r\nfloat Htime;              \/\/integer for storing high time\r\nfloat Ltime;                \/\/integer for storing low time\r\n\r\nfloat Ttime;            \/\/ integer for storing total time of a cycle\r\nfloat frequency;        \/\/storing frequency\r\nString stringOne =  String(freq);\r\nString stringtwo =  String(bol);\r\nString strHtime =  String(Htime);\r\n\/\/String strLtime =  String(Ltime);\r\nvoid setup()\r\n{\r\n    Serial.begin(9600);\r\n    pinMode(8,INPUT);\r\n    pinMode(2,INPUT);\r\n    pinMode(3,INPUT);\r\n    Serial.print(\"LCDDD\");\r\n    delay(100);\r\n    Serial.print(\"LCDWR 1,1-FREKANSMETRE Hz.\");\r\n    \r\n   \r\n    \/\/  lcd.begin(16, 2);\r\n    bol=1;\r\n}\r\n\r\n\r\nvoid loop()\r\n{\r\n  \/\/  lcd.clear();\r\n  \/\/  lcd.setCursor(0,0);\r\n  \/\/  lcd.print(\"Frequency of signal\");\r\n    Htime=pulseIn(8,HIGH);      \/\/High s\u00fcresini  mikroSaniye olarak \u00f6l\u00e7\u00fcyor.\r\n    Ltime=pulseIn(8,LOW);        \/\/Low s\u00fcresini mikroSaniye olarak \u00f6l\u00e7\u00fcyor.\r\n\r\n\/\/ timeout s\u00fcresini pals geldimi diye \u00fcst sat\u0131rda kontrol edip pals gelmediyse ger\u00e7ek pulsin komutuna girmemesini sa\u011flayabilirsiniz\r\n \/\/  bu \u015fekilde ger\u00e7ek te kullan\u0131ld\u0131\u011f\u0131nda timeout kadar bekler ve 1 seviyesi de\u011fi\u015fmediyse d\u00f6ng\u00fcden olumsuz cevapla \u00e7\u0131kt\u0131\u011f\u0131ndan frekans devaml\u0131 0 olacakt\u0131r. \r\n \/\/ timeout ayar\u0131 neden \u00f6nemli timeout yaz\u0131lmazsa pals gelmedi\u011finde maksimum timeouta kadar bekler ki bu en uzun s\u00fcredir. ve sonu\u00e7 almak uzun s\u00fcrer. \r\n \/\/  bundan dolay\u0131 timeout parametresiyle bir \u00fcst sat\u0131rda palsin gelip gelmedi\u011fini kontrol etmek i\u015finizi g\u00fczelle\u015ftirecektir. \r\n    \r\n    \r\n    val = digitalRead(2);       \/\/ x10  butonu devrede mi\r\n    val1 = digitalRead(3);      \/\/ x100 butonu devrede mi\r\n    if (val==0){\r\n      bol=10;\r\n    }\r\n    else if(val1==0){\r\n      bol=100;\r\n    }\r\n    else {\r\n      bol=1;\r\n      \r\n      \r\n    }\r\n    \r\n   \/\/ Ttime = Htime; \/\/  standart pals \u00f6l\u00e7\u00fcm\u00fc\r\n    Ttime = Htime+Ltime; \/\/  periyod s\u00fcresi\r\n  \r\n    frequency=(1000000\/Ttime);    \/\/frekans hesaplamas\u0131\r\n    freq=round(frequency);        \/\/ yakla\u015f\u0131k de\u011fere yuvarlama\r\n  \/\/  lcd.setCursor(0,1);\r\n \/\/   lcd.print(frequency);\r\n \/\/   lcd.print(\" Hz\");\r\n  stringOne=freq;stringtwo=bol;strHtime=Htime;\r\n \r\n Serial.print(\"LCDWR 2,1-   \"+stringOne+\" Hz  X\"+stringtwo)+\"        \";  \/\/ EASYLCD de yazd\u0131rmak i\u00e7in. bol= X10 veya X100 gibi skala \r\n delay(50);\r\n  Serial.print(\"LCDWR 3,1-   \"+strHtime);\r\n  delay(50);\r\n Serial.print(\"LCDWR 4,1-   \");Serial.print(Ltime);\r\n  \/\/Serial.println(Htime);\r\n  \/\/Serial.println(Ltime);\r\n \r\n    delay(200);\r\n    \r\n}<\/pre>\n<p><strong>Program \u00e7\u0131kt\u0131s\u0131:<\/strong> \u00a0Proteus compim komponenti ile birlikte \u00a0Seri haberle\u015fmeli <span style=\"color: #ff0000;\"><strong>EASYLCD<\/strong><\/span> mod\u00fcl\u00fcn\u00fc kullanan <strong>LCD g\u00f6stergedir.<\/strong> Program da K\u00fct\u00fcphane kullanan LCD sat\u0131rlar\u0131 kapat\u0131lm\u0131\u015ft\u0131r. <strong>Silinebilirdi. <span style=\"color: #ff9900;\">Fakat aradaki fark\u0131 g\u00f6rebilmeniz i\u00e7in kapat\u0131ld\u0131. Bu haliyle LCD k\u00fct\u00fcphanesinin de kullan\u0131lmas\u0131na gerek yoktu haf\u0131zadan tasarruf edildi.<\/span><\/strong><br \/>\n<span style=\"color: #ff0000;\"><strong>K\u00fct\u00fcphaneye gerek b\u0131rakmayan \u00f6rnek komutlar, a\u015fa\u011f\u0131daki anlamlar\u0131 ta\u015f\u0131yor.<\/strong><\/span><br \/>\n<span class=\"crayon-st\">Serial<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;LCDDD&#8221;<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">; \u00a0<strong>LCD yi temizle Komutu<\/strong> \u00a0<strong>(Display Delete &#8211; DD)<\/strong><br \/>\n<span class=\"crayon-st\">Serial<\/span>.<span class=\"crayon-e\">print<\/span>(<span class=\"crayon-s\">&#8220;LCDWR 1,1-FREKANSMETRE Hz.&#8221;<\/span>); \u00a0<strong>LCD nin 1. sat\u0131r birinci s\u00fctunundan ba\u015fla ve yaz\u0131y\u0131 yaz. Komut: LCDWR 1,1- (WR=WRITE 1. sat\u0131r , 1. s\u00fctun.)<\/strong><br \/>\n<\/span><\/p>\n<div id=\"crayon-5b46301668038455596473-63\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0<\/span><span class=\"crayon-v\">stringOne<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-v\">freq<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-v\">stringtwo<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-v\">bol<\/span><span class=\"crayon-sy\">;<\/span><span class=\"crayon-v\">strHtime<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-v\">Htime<\/span><span class=\"crayon-sy\">; \u00a0<strong>\u0130NT yada FLOAT gibi ifadeleri kolayl\u0131kla yazmak i\u00e7in STRING \u015fekline d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fc.\u00a0<\/strong><\/span><\/div>\n<div id=\"crayon-5b46301668038455596473-64\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-5b46301668038455596473-65\" class=\"crayon-line\"><span class=\"crayon-st\">Serial<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">print<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-s\">&#8220;LCDWR 2,1-\u00a0\u00a0 &#8220;<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">stringOne<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-s\">&#8221; Hz\u00a0\u00a0X&#8221;<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">stringtwo<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-s\">&#8221;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;<\/span><span class=\"crayon-sy\">; <strong>Burada yazd\u0131rd\u0131k.<\/strong><br \/>\n<strong><span style=\"color: #ff6600;\">Ba\u015fka \u015fekilde de yazd\u0131rabilirdik.<\/span><\/strong><br \/>\n<span class=\"crayon-st\">Serial<\/span>.<span class=\"crayon-e\">print<\/span>(<span class=\"crayon-s\">&#8220;LCDWR 4,1-\u00a0\u00a0 &#8220;<\/span>);<span class=\"crayon-st\">Serial<\/span>.<span class=\"crayon-e\">print<\/span>(<span class=\"crayon-v\">Ltime<\/span>); <strong>birinci serial komutuyla LCD komutunu, \u00a0ikinci serial komutuyla float say\u0131y\u0131 direkt olarak yazd\u0131rd\u0131k. Bu \u015fekilde hex say\u0131lar\u0131 da yazd\u0131rabilirsiniz.\u00a0<\/strong><\/span><\/div>\n<div class=\"crayon-line\"><span class=\"crayon-sy\"><span class=\"crayon-sy\"><span class=\"crayon-sy\"><br \/>\n<strong><a href=\"https:\/\/www.mikrobotik.com\/wp2\/2018\/06\/27\/easylcd-hd44780-uyumlu-karakter-lcd-seri-modul\/\" target=\"_blank\" rel=\"noopener\">EASYLCD Hakk\u0131nda daha fazla bilgiye buradan ula\u015fabilirsiniz.<\/a><\/strong><\/span><\/span><\/span>2-) Pals sayarak Frekans bulma. (MILLIS)<span class=\"crayon-sy\"><span class=\"crayon-sy\"><span class=\"crayon-sy\">Bu \u015fekilde de frekans hesaplayabilirsiniz. \u00d6rnek programa bakarsan\u0131z sade ve anla\u015f\u0131l\u0131r durumdad\u0131r. 1. programda bulunan X1,X10,X100 b\u00f6l\u00fcmleri programa girilmedi. 1. programdan buraya kopyalayabilirsiniz. Frekansmetrenin basit olarak nas\u0131l yap\u0131labilece\u011fini anlad\u0131\u011f\u0131n\u0131za g\u00f6re geli\u015ftirebilirsiniz.<br \/>\nYukar\u0131da de\u011findi\u011fimiz bir konu vard\u0131 Y\u00fcksek frekanslar\u0131 b\u00f6lerken b\u00f6l\u00fcc\u00fc entegrenin \u00e7al\u0131\u015ft\u0131\u011f\u0131 frekans \u00f6nemlidir dedik. A\u015fa\u011f\u0131daki linkte g\u00f6r\u00fclece\u011fi \u00fczere bu entegre 16 ya b\u00f6len bir entegre ve 5ns h\u0131z\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan y\u00fcksek frekans 200Mhz e kadar sinyalleri b\u00f6l\u00fcp \u00e7al\u0131\u015ft\u0131rabilirsiniz. <a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/sn74lv161a.pdf\" target=\"_blank\" rel=\"noopener\">SN54LV161A, SN74LV161A\u00a0Datasheet<\/a><br \/>\nBu \u015fekilde y\u00fcksek frekanslar\u0131 b\u00f6lerek Arduinoya verirseniz b\u00f6lme hesab\u0131n\u0131za g\u00f6re X? olacak \u015fekilde kullan\u0131c\u0131ya bilgi verebilirsiniz.<\/span><\/span><\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-title=\"Frekansmetre MILLIS komutlu pals sayan program\" data-enlighter-group=\"2\" data-enlighter-theme=\"beyond\">\/\/ PULSIN program\u0131ndan \u00e7evrildi\u011fi i\u00e7in bu kadar de\u011fi\u015fken var.\r\n\/\/ de\u011fi\u015fkenlerin hepsi kullan\u0131lm\u0131yor.\r\n\r\n\r\nint freq;\r\nint val;\r\nint val1;\r\nint bol;\r\nunsigned long tut;\r\nfloat sayH ;\r\nfloat sayL ;\r\nfloat Htime;              \/\/integer for storing high time\r\nfloat Ltime;                \/\/integer for storing low time\r\n\r\nfloat Ttime;            \/\/ integer for storing total time of a cycle\r\nfloat frequency;        \/\/storing frequency\r\nString stringOne =  String(frequency);\r\nvoid setup()\r\n{\r\n    Serial.begin(9600);\r\n    pinMode(8,INPUT);\r\n    pinMode(2,INPUT);  \/\/ bol\u00fcnt\u00fc i\u00e7in switch giri\u015fi\r\n    pinMode(3,INPUT); \/\/ bol\u00fcnt\u00fc i\u00e7in switch giri\u015fi\r\n    Serial.println(\"LCDWR 1,1-FREKANSMETRE Hz.\");\r\n    bol=1;\r\n}\r\n\r\nvoid loop(){\r\n sayH=0;\r\ntut=millis();\r\nwhile ( millis() - tut &lt;=1000 ) \/\/ 1000 rakam\u0131 1sn lik pals yakala anlam\u0131ndad\u0131r isterseniz y\u00fcksek frekanslarda 10ms ve 100ms \u00f6l\u00e7\u00fcm yap\u0131p hesaplama yapabilirsiniz.\r\n{\r\n  if (digitalRead(8)==1 &amp;&amp; val==0){\r\n    val=1;sayH ++ ;\r\n  }\r\n  if (digitalRead(8)==0 &amp;&amp; val==1){\r\n    val=0; \r\n  } \r\n}\r\n\r\n stringOne=sayH;\r\nSerial.println(\"LCDWR 2,1-   \"+stringOne+\" Hz  X\"+bol);  \/\/ EASYLCD de yazd\u0131rmak i\u00e7in. bol= X10 veya X100 gibi skala bunu pulsin program\u0131ndan alabilirsiniz.\r\n   delay(100);\r\n}<\/pre>\n<p><strong>Yine LCD de g\u00f6stermek i\u00e7in <span style=\"color: #ff0000;\">EASYLCD<\/span> Mod\u00fcl kullan\u0131ld\u0131\u011f\u0131 i\u00e7in K\u00fct\u00fcphaneye gerek duymayan\u00a0<span style=\"color: #ff0000;\">EASYLCD<\/span> komutu kullan\u0131ld\u0131 (serial.print k\u0131sm\u0131nda. )<\/strong><\/p>\n<\/div>\n<div class=\"crayon-line\">\n<p><strong><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/frekansmetre_PULSIN.rar\" target=\"_blank\" rel=\"noopener\">Frekansmetre_ PULSIN \u00a0dosyalar linktedir.<\/a><\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/Arduino_Basit_Frekansmetre\/frekansmetre_millis_prog.rar\" target=\"_blank\" rel=\"noopener\"><strong>Frekansmetre_MILLIS dosyalar linktedir.<\/strong><\/a><\/p>\n<p>Ayr\u0131ca frekans metre mant\u0131\u011f\u0131na yak\u0131ndan bakmak isteyenler <a href=\"https:\/\/www.eeeguide.com\/digital-frequency-meter\/\" target=\"_blank\" rel=\"noopener\"><strong>bu siteye bakabilir<\/strong><\/a><\/p>\n<\/div>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/dgfaW11GrYc\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p><iframe data-src=\"https:\/\/www.youtube.com\/embed\/BMtGN7QK4uE\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda sizlere Arduino kullanarak basit olarak nas\u0131l frekans \u00f6l\u00e7ebilece\u011finizi anlataca\u011f\u0131m. Biraz daha geli\u015fmeye ihtiyac\u0131 var. Fakat temel k\u0131sm\u0131 buras\u0131 olduktan sonra sizlerin katk\u0131 yaparak geli\u015ftirebilece\u011finizi umuyorum. Burada sadece arduino&#8230; <\/p>\n","protected":false},"author":1,"featured_media":382,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,14],"tags":[],"class_list":["post-341","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-easylcd"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/comments?post=341"}],"version-history":[{"count":3,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/341\/revisions"}],"predecessor-version":[{"id":2535,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/341\/revisions\/2535"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/382"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}