{"id":2647,"date":"2023-08-26T17:51:35","date_gmt":"2023-08-26T14:51:35","guid":{"rendered":"https:\/\/www.mikrobotik.com\/wp2\/?p=2647"},"modified":"2023-08-26T17:51:35","modified_gmt":"2023-08-26T14:51:35","slug":"sayisal-devre-tasarimi_7_arduino","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2023\/08\/26\/sayisal-devre-tasarimi_7_arduino\/","title":{"rendered":"SAYISAL DEVRE TASARIMI_7_ARDUINO"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Bu yaz\u0131m Say\u0131sal tasar\u0131m yaz\u0131 dizisinin son yaz\u0131s\u0131d\u0131r. \u015eimdiye kadar anlatt\u0131klar\u0131mdan yola \u00e7\u0131karak, size bir arduino UNO kullanarak, 4 ayr\u0131 ba\u011f\u0131ms\u0131z mod\u00fcl kart\u0131n\u0131 nas\u0131l kontrol edebilece\u011finizi g\u00f6sterece\u011fim. <span style=\"color: #ff6600;\">Devreyi de\u011fi\u015ftirmeden 7 karta kadar kontrol edebilirsiniz.<\/span><\/p>\n<p>Bu g\u00fcne kadar dedim ki; Arduino ya da di\u011fer mikrokontrolc\u00fclerin zaman\u0131n\u0131 \u00e7almayan kendi ba\u015f\u0131na \u00e7al\u0131\u015fan mod\u00fcl kartlar\u0131yla \u00e7al\u0131\u015f\u0131l\u0131rsa, hem pim say\u0131s\u0131ndan tasarruf edilir, hem de ger\u00e7ek zamanl\u0131 \u00e7al\u0131\u015fmas\u0131 gereken i\u015flere daha fazla zaman ayr\u0131l\u0131r. Mikrokontrolc\u00fc bu mod\u00fcl kartlar\u0131ndan ald\u0131\u011f\u0131 bilgilere g\u00f6re bir orkestra \u015fefi gibi t\u00fcm sistemi y\u00f6netir. Bunu yaparken de devaml\u0131 bir \u015feyleri kontrol etmek zorunda kalmaz.<\/p>\n<p><span style=\"color: #ff6600;\">Ne demek istedi\u011fimi ise \u015f\u00f6yle anlatay\u0131m<\/span>. Bir arduino program\u0131 \u00e7al\u0131\u015f\u0131rken, ba\u011flad\u0131\u011f\u0131n\u0131z butonlar\u0131 ve sens\u00f6rleri devaml\u0131 kontrol eder. Bir yandan da r\u00f6le ve motorlar gibi \u00e7\u0131k\u0131\u015f devrelerini de kumanda etmek zorundad\u0131r. Bunu yaparken \u00e7ok h\u0131zl\u0131 oldu\u011fu i\u00e7in her birine bir zaman ay\u0131r\u0131r. 2 tane buton varsa sorun yok 30 buton varsa her birine 1ms zaman ay\u0131rsa 30ms zaman kayb\u0131 demektir. Bunun gibi di\u011fer \u00e7\u0131k\u0131\u015f devrelerini de kumanda ederken zaman kaybedecek ve o s\u0131rada butonlar\u0131 kontrol edemeyecek. \u00c7\u00fcnk\u00fc arduino program\u0131, s\u0131ral\u0131 i\u015flem yapar. Bundan dolay\u0131 h\u0131zl\u0131 dahi olsa zaman kay\u0131plar\u0131 ya\u015fan\u0131r.<br \/>\nSay\u0131sal devrelerle haz\u0131rlanm\u0131\u015f mod\u00fcller, verilen i\u015fi yerine getiresiye kadar mikrokontrolc\u00fc onu kontrol etmez. Bu zaman i\u00e7erisinde di\u011fer i\u015flerine bakar. Komut verilen mod\u00fcl kart, i\u015fi yerine getirdikten sonra ise geri bildirim vererek istenilen i\u015fi yapt\u0131m bana ba\u015fka i\u015f ver der.<br \/>\nO zaman mikrokontrolc\u00fc mod\u00fcl karttan bilgiyi al\u0131r ve yeni bilgi g\u00f6nderir. Bu \u015fekilde \u00e7al\u0131\u015fmayla di\u011fer mod\u00fclleri de kontrol ederken fazla kay\u0131p zaman\u0131 olmaz. LOOP d\u00f6ng\u00fcs\u00fcnde beklemeye devam eder.<\/p>\n<p><span style=\"color: #ff6600;\">Bu devreyi alg\u0131laman\u0131z i\u00e7in, mikrobotik sitemdeki di\u011fer say\u0131sal tasar\u0131m yaz\u0131lar\u0131m\u0131 da okursan\u0131z i\u015finiz kolayla\u015f\u0131r.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/ardu_connect.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/ardu_connect.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<p><span style=\"color: #ff6600;\">\u00d6ncelikle Arduinodan ba\u015flayal\u0131m.<\/span> Yukar\u0131daki resimde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi bir ba\u011flant\u0131 mevcut.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>\u00d6ncelikle INT0 ve 1 ba\u011flant\u0131s\u0131na bakal\u0131m<\/strong><\/span>. A\u015fa\u011f\u0131da detaylar\u0131n\u0131 verece\u011fim \u015fekilde interrupt kullan\u0131m\u0131n\u0131 sa\u011flayabilirsiniz. Bu u\u00e7lar 2 adet interrupt (kesme) pimleridir. 1 tanesi MULTI INPUT kartlar\u0131 i\u00e7in,<br \/>\n1 tanesi de MOTOR KONTROL kartlar\u0131 i\u00e7in kullan\u0131l\u0131r.<br \/>\nMotor kart\u0131 istenen g\u00f6revi bitirince buraya bir kesme yollar ve arduino, o kesmeye g\u00f6re yapaca\u011f\u0131 g\u00f6revi ba\u015flat\u0131r.<br \/>\n<span style=\"color: #ff0000;\"><strong><span style=\"color: #ff6600;\">Diyelim ki 2 kesme var ve bunun 2 si birden ayn\u0131 anda geldi<\/span>.<\/strong><\/span> Arduino ne yapacak. Tabii ki \u00f6ncelik s\u0131ras\u0131yla bunu i\u015fleyecek. \u00d6ncelik s\u0131ras\u0131 UNO kart\u0131nda INT0 ve INT1 olarak ger\u00e7ekle\u015fiyor. A\u015fa\u011f\u0131da \u00d6ncelik tablosu bulunmaktad\u0131r.<br \/>\nBu s\u0131ralama atmega328 kullanan arduino kartlar\u0131 i\u00e7in standartt\u0131r.<br \/>\n\u0130nterrupt \u00e7al\u0131\u015fmas\u0131 i\u00e7in \u00f6ncelikle kesme pimi tan\u0131mlan\u0131r. Sonras\u0131nda ise SETUP b\u00f6l\u00fcm\u00fcnde ATTACH komutu tan\u0131mlan\u0131r. Sonras\u0131nda ise kesmeler aktif hale gelmi\u015ftir.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_3.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_3.PNG?raw=true\" alt=\"\" width=\"632\" height=\"72\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 632px; --smush-placeholder-aspect-ratio: 632\/72;\" \/><\/a><\/p>\n<p>Resimde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u015fekilde komutu kullanabilirsiniz. Attachinterrupt komutunun sonunda LOW g\u00f6rd\u00fc\u011f\u00fcn\u00fcz yeri A\u015fa\u011f\u0131daki resimdeki gibi de\u011fi\u015ftirebilirsiniz.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_4.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_4.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><br \/>\nBurada <strong>LOW CHANGE RISING FALLING<\/strong> UNO i\u00e7in ge\u00e7erlidir. Bir de <strong>HIGH<\/strong> \u00f6zelli\u011fi var o ise ba\u015fka modellerde kullan\u0131lmaktad\u0131r.<br \/>\nLOW, INT giri\u015fi LOW ise kesme gelmi\u015ftir. CHANGE ise 1 den 0 a ya da 0 dan 1 e de\u011fi\u015fim oldu\u011funda alg\u0131lan\u0131r. RISING ise Gelen sinyalin 0 dan 1 e ge\u00e7en y\u00fckselme zaman\u0131nda alg\u0131lan\u0131r. FALLING ise 1 den 0 a d\u00fc\u015ferken kesme alg\u0131lan\u0131r demektir. Siz kendi program\u0131n\u0131zda buray\u0131 de\u011fi\u015ftirebilirsiniz. Ayr\u0131ca resimde bir de KESME alg\u0131land\u0131\u011f\u0131nda nereye gidece\u011fi bulunmaktad\u0131r. Ben kesme ve kesme 2 olarak tan\u0131mlad\u0131m. A\u015fa\u011f\u0131da 2 adet kesmeye ait alt program g\u00f6r\u00fcn\u00fcyor.<\/p>\n<p>Burada \u00f6nemli olan KESME altprogram\u0131nda DELAY gibi komutlar kullanmamak ve \u00e7ok fazla sat\u0131rl\u0131 i\u015flemler yapmamak. ASIL OLAN, kesmeye gidip h\u0131zl\u0131 bir \u015fekilde kesme alt program\u0131ndan \u00e7\u0131kmak. \u00c7\u00fcnk\u00fc kesme zaman\u0131nda di\u011fer kesmeler gelirse onlar\u0131 alg\u0131layamayacakt\u0131r.<br \/>\nBundan dolay\u0131 ben birer de\u011fi\u015fkene de\u011fer vererek kesme i\u015fleminden ayr\u0131ld\u0131m. A\u015fa\u011f\u0131da program i\u00e7eri\u011fini g\u00f6rebilirsiniz.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_2.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_2.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><br \/>\nBir de LOOP d\u00f6ng\u00fcs\u00fcnde farkl\u0131 bir kesme komutu var. Bu komut Kesmeleri \u00e7al\u0131\u015fmayacak \u015fekilde ayarlar. Normalde uzun bir seri bilgi al\u0131yorsan\u0131z mesela IR kumanda sinyali gibi, O zaman<br \/>\ndetachInterrupt(0); komutu kullan\u0131l\u0131r.<br \/>\nSeri bilgi al\u0131nd\u0131ktan sonra attachInterrupt(digitalPinToInterrupt(interruptPin1),kesme2, LOW); ile kesmeler aktif duruma getirilir.<br \/>\nBen burada ne i\u00e7in kulland\u0131m derseniz. LOW olarak kesme geldi\u011finde \u00e7al\u0131\u015f dedi\u011fimde bir buton bas\u0131l\u0131 kald\u0131ysa kesme onu kontrol etmiyordu. \u00c7\u00fcnk\u00fc de\u011fi\u015fimi alg\u0131lam\u0131yordu. Bundan dolay\u0131 ben de kesme 1 kez uyguland\u0131ktan sonra kesmaleri kapat\u0131p a\u00e7\u0131yorum ki buton bas\u0131l\u0131ysa tekrar okumaya gidiyor.<br \/>\nTabii ki bu normalde istenmeyen bir d\u00f6ng\u00fc yaratacakt\u0131r devaml\u0131 buton okuyarak di\u011fer i\u015flemlere gidemeyecektir. Bunu bir say\u0131 ile s\u0131n\u0131rland\u0131rarak bu say\u0131ya kadar kesme okumas\u0131 yap\u0131l\u0131r sonras\u0131nda butonlarda ar\u0131za var diye hata b\u00f6l\u00fcm\u00fcne gidilir. Sistem durdurulur. Bu \u015fekilde kullanabilirsiniz.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_1.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_1.PNG?raw=true\" alt=\"\" width=\"570\" height=\"204\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 570px; --smush-placeholder-aspect-ratio: 570\/204;\" \/><\/a><br \/>\nKesmelerin hangi modeller de hangi pimlerde oldu\u011funu ise bu tablodan g\u00f6rebilirsiniz.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_5.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/int_5.PNG?raw=true\" alt=\"\" width=\"561\" height=\"294\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 561px; --smush-placeholder-aspect-ratio: 561\/294;\" \/><\/a><br \/>\n<span style=\"color: #ff0000;\"><strong>Yine arduino resmine d\u00f6nersek<\/strong><\/span> orada C0-3 pimleri var. Bu pimler KART SE\u00c7ME kodu ve kart\u0131n se\u00e7ilirken OKU YAZ komutlar\u0131n\u0131 da i\u00e7erir.<br \/>\nBu devrede \u00e7al\u0131\u015fma \u015fekli \u015f\u00f6yledir. Her karttan bilgi okunacak ise o kart\u0131n kodu verilir ve daha sonra bilgiler g\u00f6nderilir ya da okunur. Kart kodu 3 bitliktir. C0-2 aras\u0131. C3 ise karta yaz ya da oku kodudur.<\/p>\n<p>Bu \u00e7\u0131k\u0131\u015flar\u0131n ayn\u0131 anda de\u011fi\u015fmesi gerekti\u011fi i\u00e7in C0-3 <strong>PORT MANIPULATION<\/strong> denilen metot ile \u00e7\u0131k\u0131\u015fa yans\u0131t\u0131l\u0131r. Bu <strong>Digital Write komutundan farkl\u0131d\u0131r.<\/strong> Digital Write komutu s\u0131ra ile pimleri kontrol eder. Say\u0131sal devrelerde ald\u0131\u011f\u0131 bilgiyi hemen i\u015fler. Sonunda Hatal\u0131 komut i\u015flenir.<br \/>\n\u00d6rnek ile anlatsam daha iyi olacak san\u0131r\u0131m. Mesela kart kodu 1001 ve son durum 0000 durumundayd\u0131. Digital Write C0 HIGH deseniz durum 0001 olacakt\u0131r. Bu 1 numaral\u0131 kart\u0131n oku bilgisidir. Mod\u00fcl hemen okuma moduna ge\u00e7ecektir. Fakat bizim istedi\u011fimiz 1001 komutu yani yaz komutudur. Bundan dolay\u0131 \u00e7\u0131k\u0131\u015flar\u0131 s\u0131rayla de\u011fil ayn\u0131 anda de\u011fi\u015ftirmemiz gerekir.<br \/>\nPORT MANIPULATION modunda \u00e7al\u0131\u015fmaktad\u0131r.<br \/>\nBU modda komutu <span style=\"color: #ff6600;\">PORTD = B11111111 &amp; B11000000<\/span>; \u015feklinde g\u00f6ndeririz. Bunu g\u00f6nderirken <strong>DDRD komutunu SETUP b\u00f6l\u00fcm\u00fcnde tan\u0131mlamam\u0131z gerekir.<\/strong> Hangi pimler giri\u015f hangileri \u00e7\u0131k\u0131\u015f olacak \u015fekilde tan\u0131mlar\u0131z.<br \/>\n<span style=\"color: #ff6600;\">DDRD = B11110010; \/\/ set PORTD (digital 1,4-7) to outputs<\/span><\/p>\n<p><span style=\"color: #ff6600;\">Port manipulation kullan\u0131m\u0131n\u0131 <strong>\u015eu yaz\u0131mdan bakabilirsiniz<\/strong> :<\/span><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/2022\/05\/05\/74hc595-ile-karakter-lcd-kontrol\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.mikrobotik.com\/wp2\/2022\/05\/05\/74hc595-ile-karakter-lcd-kontrol\/<\/a><\/p>\n<p><span style=\"color: #ff6600;\">Ayr\u0131ca Arduino sitesinden de kullan\u0131m\u0131na bakabilirsiniz.<\/span><br \/>\n<a href=\"https:\/\/docs.arduino.cc\/hacking\/software\/PortManipulation\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.arduino.cc\/hacking\/software\/PortManipulation<\/a><\/p>\n<p><strong>Bunlar\u0131n d\u0131\u015f\u0131nda<\/strong> PORT B pimlerini de kullan\u0131yorum. PORTB pimlerini yine resme bakarsan\u0131z<br \/>\n1 adet <strong>CLK<\/strong>, 1 Adet <strong>MISO<\/strong>, 1 adet <strong>MOSI<\/strong> ve 1 adet de <strong>SH LOAD<\/strong> olarak kullan\u0131yorum.<br \/>\nAsl\u0131nda SPI haberle\u015fme gibi kullan\u0131l\u0131yor fakat say\u0131sal devrelerde kullan\u0131lan entegreler, SPI uyumlu olmayabiliyor. Bunun i\u00e7in mant\u0131k ayn\u0131 olsa bile, haberle\u015fmeyi biraz de\u011fi\u015ftirmek zorunda kalabiliyoruz.<br \/>\nMesela S_LOAD \u00e7\u0131k\u0131\u015f\u0131 74HC595 i\u00e7in bir STROBE ucunu kontrol eder. Seri bilgiyi g\u00f6nderdikten sonra bu pimi aktif ederek 74HC595 in ald\u0131\u011f\u0131 seri bilgiyi paralel hatta vermesini sa\u011flar\u0131z.<br \/>\nAsl\u0131nda SPI gibi dedim. <span style=\"color: #ff6600;\">Ama CS pimi yok diyeceksiniz.<\/span> Elbette var. CS entegre se\u00e7me pimidir. Yani birden fazla olan haberle\u015fme devrelerinde, hangisiyle haberle\u015filece\u011finin se\u00e7ilmesini sa\u011fl\u0131yor.<br \/>\nBen de bu kartta <span style=\"color: #ff6600;\">CS<\/span> g\u00f6revini Kart se\u00e7me komutu olan <span style=\"color: #ff6600;\">C0-3<\/span> ile yap\u0131yorum. Hangi kart\u0131 se\u00e7ersem bu pimler o mod\u00fcl kart ile haberle\u015fiyor.<\/p>\n<p>Arduino ba\u011flant\u0131lar\u0131 bu kadar. G\u00f6revleri de basit. Peki ya mod\u00fcl kartlar buna nas\u0131l tepki verecek. <span style=\"color: #ff6600;\">\u015eimdi de bunlara bakal\u0131m.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/motor_kart1.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/motor_kart1.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><br \/>\nBu resimdeki kart motor kart\u0131d\u0131r. Di\u011fer motor kart\u0131 da ayn\u0131d\u0131r. Sadece kart se\u00e7me k\u0131sm\u0131 farkl\u0131d\u0131r. Arduino bu karta 15 ad\u0131m git derse, 15 ad\u0131m gider ve bitince, bitirdim diye kesme pimi ile arduinoya bilgi verir. Bu \u015fekilde d\u00f6ng\u00fc gerekti\u011fince devam edilir.<br \/>\nKart\u0131n numaras\u0131 \u00a00011 dir. Bu kart ba\u015flarken mutlaka resetlenmesi gerekir. Bunun i\u00e7in 1011 komutu verilerek hem resetlenir hem de yeni ad\u0131m say\u0131s\u0131 verilir.<br \/>\nDevrede sol taraf 74HC595 ile seri bilgiyi alan k\u0131s\u0131md\u0131r. Bilgi g\u00f6nderildikten sonra kart kodu 0011 olarak verilir ve \u00e7al\u0131\u015fma ba\u015flar. Bu bilgi al\u0131nd\u0131ktan sonra en sa\u011fdaki kar\u015f\u0131la\u015ft\u0131rma devresinde e\u015fitlik bozulur ve step motor d\u00f6nmeye ba\u015flar.<br \/>\nBu kar\u015f\u0131la\u015ft\u0131rma devresinin giri\u015finde bir say\u0131c\u0131 vard\u0131r. Bu step motor d\u00f6nd\u00fck\u00e7e sayar ve istenen ad\u0131m say\u0131s\u0131 sa\u011fland\u0131\u011f\u0131nda motoru durdurur. Ayn\u0131 zamanda arduinoya i\u015fi bitirdi\u011fini s\u00f6yler.<br \/>\n\u00c7al\u0131\u015fmas\u0131 basittir.<br \/>\nStep motor s\u00fcr\u00fcc\u00fc olarak GAL entegresi programlan\u0131p devreye eklendi.<br \/>\n<span style=\"color: #ff6600;\">Bu GAL entegresini nas\u0131l programlar\u0131m derseniz.<\/span> <strong><span style=\"color: #ff6600;\">Bu yaz\u0131ma bakabilirsiniz.<\/span><\/strong><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/2023\/07\/22\/sayisal-devre-tasarimi_5-plds_fpga\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.mikrobotik.com\/wp2\/2023\/07\/22\/sayisal-devre-tasarimi_5-plds_fpga\/<\/a><\/p>\n<p>74HC595 \u00e7\u0131k\u0131\u015f\u0131nda <span style=\"color: #ff6600;\">6. Bit Y\u00d6N<\/span> tayin etmek i\u00e7indir. Bu da GAL program\u0131nda belirtilmi\u015ftir. Bu bit de\u011ferine g\u00f6re sa\u011fa ya da sola d\u00f6ner.<\/p>\n<p><span style=\"color: #ff6600;\">Giri\u015fin seri olarak verilmesi sizin esnek \u00e7al\u0131\u015fman\u0131z\u0131 sa\u011flar.<\/span> Ben burada 4 bitlik bir \u00e7al\u0131\u015fma yapt\u0131m yani 15 e kadar maksimum ad\u0131m say\u0131s\u0131 var. 8 bitlik bir \u00e7al\u0131\u015fma yapt\u0131m 4 biti motor komutudur.<br \/>\nSizler seri haberle\u015fme oldu\u011fundan 16 bitlik seri bilgiyi de mod\u00fcl karta iletebilirsiniz.<br \/>\nB<span style=\"color: #ff6600;\">unu yapmak i\u00e7in 74hc595 nas\u0131l 16 bit bilgi al\u0131r<\/span> <strong><span style=\"color: #ff6600;\">bu yaz\u0131ma bakabilirsiniz.<\/span><\/strong><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/2023\/05\/21\/sayisal_devre_tasarimi_3\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.mikrobotik.com\/wp2\/2023\/05\/21\/sayisal_devre_tasarimi_3\/<\/a><\/p>\n<p>Resimde fikir verecektir.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/16bit_74hc595_connect.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/16bit_74hc595_connect.PNG?raw=true\" alt=\"\" width=\"245\" height=\"248\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 245px; --smush-placeholder-aspect-ratio: 245\/248;\" \/><\/a><br \/>\nAyn\u0131 zamanda 4 bit kar\u015f\u0131la\u015ft\u0131rma yapt\u0131m. Sizler 8 bit ya da 16 bit de kar\u015f\u0131la\u015ft\u0131rma yapabilirsiniz.<br \/>\n<span style=\"color: #ff6600;\">Bu yaz\u0131mda ise 8 bitlik kar\u015f\u0131la\u015ft\u0131rma nas\u0131l yap\u0131l\u0131r<strong> bunu bulacaks\u0131n\u0131z.<\/strong><\/span><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/2023\/05\/12\/sayisal-devre-tasarimi_2_adc\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.mikrobotik.com\/wp2\/2023\/05\/12\/sayisal-devre-tasarimi_2_adc\/<\/a><\/p>\n<p>Resimde fikir verecektir.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/8%20bit%20compare.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/8%20bit%20compare.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><\/p>\n<p>Ayr\u0131ca bu <span style=\"color: #ff0000;\">motor devresinde INT kesme \u00e7\u0131k\u0131\u015f\u0131 bir TRISTATE buffer entegresiyle brle\u015ftirilmi\u015f<\/span> durumdad\u0131r.<strong> Bu durum \u00e7ok \u00f6nemlidir.<\/strong> Kullan\u0131lan her kart, INT \u00e7\u0131k\u0131\u015f\u0131n\u0131 verir. Fakat Arduino hangisinin INT \u00e7\u0131k\u0131\u015f\u0131 oldu\u011funu bulmak i\u00e7in t\u00fcm \u00e7\u0131k\u0131\u015flara tek tek bakmas\u0131 gerekir.<br \/>\nBu paralel olarak birbiriyle \u00e7al\u0131\u015fan sistemlerde, sadece 1 devrenin \u00e7\u0131k\u0131\u015f\u0131 ya da giri\u015finin BUS denilen veri yolunda olmas\u0131n\u0131 gerektirir. TRISTATE \u00e7al\u0131\u015fman\u0131n anlam\u0131 \u015fudur. Giri\u015f ve\u00a0 \u00e7\u0131k\u0131\u015f aras\u0131nda bir kontrol k\u0131sm\u0131 vard\u0131r. Bu kontrol k\u0131sm\u0131 aktif olmaz ise \u00e7\u0131k\u0131\u015f Z empedans\u0131 y\u00fcksek g\u00f6sterir ve Giri\u015fi \u00e7\u0131k\u0131\u015fa ba\u011flamaz.<br \/>\nArduino, INT kesmesi geldi\u011finde, kartlar\u0131 tek tek kart kodu vererek dola\u015f\u0131r. Ayn\u0131 zamanda kart kodunu verdi\u011finde <span style=\"color: #ff6600;\">S_CLK<\/span> ucunu <span style=\"color: #ff6600;\">HIGH<\/span> yaparak o kart\u0131n <span style=\"color: #ff6600;\">INT \u00e7\u0131k\u0131\u015f\u0131n\u0131 okur<\/span>.<br \/>\nBu da hangi kart\u0131n INT kesmesi yollad\u0131\u011f\u0131n\u0131 anlamas\u0131n\u0131 sa\u011flar.<\/p>\n<p><span style=\"color: #ff6600;\"><strong>Bir di\u011fer kart ise MULTI INPUT kart\u0131d\u0131r.<\/strong><\/span> Burda sadece dijital \u00e7al\u0131\u015fma vard\u0131r. Yani buton bas\u0131ld\u0131 m\u0131, bas\u0131lmad\u0131 m\u0131 bunu kontrol eder. 8 buton kontrol\u00fc 1 kartt\u0131r.<br \/>\n2 kart kulland\u0131m 16 buton kontrol edebiliyorum. Butonlar bas\u0131l\u0131p b\u0131rak\u0131laca\u011f\u0131 i\u00e7in, o s\u0131rada arduino bunu hemen kontrol edemeyece\u011fi i\u00e7in ka\u00e7\u0131rabilir.<br \/>\nBundan dolay\u0131 S-R Flip flop kulland\u0131m. Butona bas\u0131p b\u0131raksan\u0131z bile SET edilmi\u015f olaca\u011f\u0131ndan Arduino bunu ka\u00e7\u0131rmayacakt\u0131r. Bu karttan bilgi okundu\u011funda, kart kodunun 3. Biti 1 yap\u0131larak S-R FF un <span style=\"color: #ff6600;\">RESETLENMES\u0130<\/span> sa\u011flan\u0131r.\u00a0 Burada da 74LS244 Tristate \u00e7\u0131k\u0131\u015fl\u0131 entegre kullan\u0131l\u0131r. Bunun amac\u0131 sadece OKUMA kodu geldi\u011finde veri yoluna koy demektir.\u00a0 Bu kart\u0131n en sa\u011f\u0131nda ise yine Paralel Seri \u00e7evirici entegre kullan\u0131ld\u0131. Arduino bu seri \u00e7\u0131k\u0131\u015f\u0131 okuyarak hangi butonun bas\u0131ld\u0131\u011f\u0131n\u0131 alg\u0131lar.<\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/multi_input_1.PNG?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\/pictures\/multi_input_1.PNG?raw=true\" alt=\"\" width=\"500\" height=\"333\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/333;\" \/><\/a><br \/>\n<span style=\"color: #ff0000;\"><strong>B\u00fct\u00fcn bunlar\u0131n yan\u0131s\u0131ra<\/strong><\/span> devreyi de\u011fi\u015ftirmeden daha 3 kart kontrol etme imkan\u0131 var. Bu da ADC olarak kontrol edebilece\u011finiz bir kart\u0131 ayn\u0131 mant\u0131kla olu\u015fturabilece\u011finizi g\u00f6sterir.\u00a0 ADC kart\u0131n\u0131 da buraya eklerseniz LM35 gibi bir s\u0131cakl\u0131k sens\u00f6r\u00fcn\u00fcn okumas\u0131n\u0131 yap\u0131p Dijital analog \u00e7evirici ile bilgiyi dijitale \u00e7evirerek seri veri yoluyla Arduinoya yollayabilirsiniz. Analog kart\u0131n\u0131za bir numara verirsiniz. Bu numara ile Arduino ile haberle\u015fir.<br \/>\n1 den fazla sens\u00f6r okuyabilirsiniz. Bunu kart tasar\u0131m\u0131n\u0131zda yapabilirsiniz. Nas\u0131l olsa seri bilgi olarak g\u00f6nderece\u011finiz i\u00e7in t\u00fcm sens\u00f6rlerin de\u011ferlerini arka arkaya g\u00f6nderebilirsiniz. Tabii ki, Okuma zaman\u0131 geldi\u011finde.<br \/>\nBundan ba\u015fka ne yapabilirsiniz.<br \/>\nArduino bu sens\u00f6rlerin limitlerini kart\u0131n\u0131za yollar. SET eder. Bundan sonra t\u00fcm y\u00fck mod\u00fcl karttad\u0131r. Limitler a\u015f\u0131las\u0131ya kadar kart\u0131n\u0131z normal \u00e7al\u0131\u015fmas\u0131na devam eder ve <span style=\"color: #ff6600;\">Arduinoya i\u015f d\u00fc\u015fmez<\/span>.<br \/>\nAncak L\u0130M\u0130T de\u011ferler a\u015f\u0131ld\u0131ysa Arduinoya KESME g\u00f6nderilerek durum bildirilir. Arduino da gere\u011fini program\u0131na g\u00f6re yapar.<br \/>\n<span style=\"color: #0000ff;\">Nas\u0131l ADC okuyup DA kullanarak \u00e7evirece\u011fim derseniz.<\/span><br \/>\n<span style=\"color: #ff6600;\">Say\u0131sal tasar\u0131m yaz\u0131 dizisindeki<\/span> <strong><span style=\"color: #ff6600;\">bu yaz\u0131ma bakabilirsiniz.\u00a0<\/span><\/strong><br \/>\n<a href=\"https:\/\/www.mikrobotik.com\/wp2\/2023\/05\/12\/sayisal-devre-tasarimi_2_adc\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.mikrobotik.com\/wp2\/2023\/05\/12\/sayisal-devre-tasarimi_2_adc\/<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>T\u00dcM dosyalara <a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/tree\/main\/SAYISAL_DEVRE_TASARIM\/SAYISAL_TASARIM_7_ARDUINO\" target=\"_blank\" rel=\"noopener\">buradan ula\u015fabilirsiniz.<\/a><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><iframe title=\"Say\u0131sal Devre Tasar\u0131m 7_ son\" data-src=\"https:\/\/www.youtube.com\/embed\/KoxQ51QGX6w\" width=\"988\" height=\"531\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Bu yaz\u0131m Say\u0131sal tasar\u0131m yaz\u0131 dizisinin son yaz\u0131s\u0131d\u0131r. \u015eimdiye kadar anlatt\u0131klar\u0131mdan yola \u00e7\u0131karak, size bir arduino UNO kullanarak, 4 ayr\u0131 ba\u011f\u0131ms\u0131z mod\u00fcl kart\u0131n\u0131 nas\u0131l kontrol edebilece\u011finizi g\u00f6sterece\u011fim. Devreyi de\u011fi\u015ftirmeden&#8230; <\/p>\n","protected":false},"author":1,"featured_media":2579,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33,20,21,110],"tags":[],"class_list":["post-2647","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino_pic_digerleri","category-elo","category-proteus","category-sayisal_elo"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2647","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=2647"}],"version-history":[{"count":3,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2647\/revisions"}],"predecessor-version":[{"id":2653,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2647\/revisions\/2653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/2579"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=2647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=2647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=2647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}