18 Şubat 2022 Cuma

YENİ BAŞLAYANLARA...ÖRNEK KODLAR

DÖRT SERVO DÖRT POT
//////// UGUR OCAKSIZ ///// 18/01/2016

int analogInPin0 = A0;  //// POTLAR   A0 A1 A2 A3
int analogInPin1 = A1;
int analogInPin2 = A2;
int analogInPin3 = A3;
int analogOutPin0 = 3; /// SERVOLAR D3 D5 D6 D9
int analogOutPin1 = 5;
int analogOutPin2 = 6;
int analogOutPin3 = 9;
int  sensorValue0 ;    ///// DEĞİŞKENLER
int  sensorValue1 ;
int  sensorValue2 ;
int  sensorValue3 ;
int  outputValue0 ;
int  outputValue1 ;
int  outputValue2 ;
int  outputValue3 ;

void setup() {
  Serial.begin(9600);                         ////      BAŞLA
  pinMode(analogInPin0, INPUT); //  PİNLER  GİRİŞ Mİ CIKIŞ MI
  pinMode(analogInPin1, INPUT);
  pinMode(analogInPin2, INPUT);
  pinMode(analogInPin3, INPUT);
  pinMode(analogOutPin0, OUTPUT);
  pinMode(analogOutPin1, OUTPUT);
  pinMode(analogOutPin2, OUTPUT);
  pinMode(analogOutPin3, OUTPUT);
}

void loop() {                  
             ///  DÖNGÜ BAŞLIYOR
  sensorValue0 = analogRead(analogInPin0);
  sensorValue1 = analogRead(analogInPin1);
  sensorValue2 = analogRead(analogInPin2);
  sensorValue3 = analogRead(analogInPin3);
/// GİRİŞ 1023  ÇIKIŞ 255
 ////   DÖNÜŞTÜRÜYORUZ
  outputValue0 = map(sensorValue0, 0, 1023, 0, 255);
   outputValue1 = map(sensorValue1, 0, 1023, 0, 255);
  outputValue2 = map(sensorValue2, 0, 1023, 0, 255);
  outputValue3 = map(sensorValue3, 0, 1023, 0, 255);
  ///  ÇIKIŞI YAZIYORUZ
  analogWrite(analogOutPin0, outputValue0);
  analogWrite(analogOutPin1, outputValue1);
  analogWrite(analogOutPin2, outputValue2);
  analogWrite(analogOutPin3, outputValue3);
}

EKOPANEL EV ISITMA OTOMASYONU

UĞRAŞMADAN EMEK VERMEDEN  OLMAZ...
ARDUINO İLE YAPTIĞIM  DIS HAVAYA GÖRE  KAZAN ÜÇYOLLU VANA BOYLER (SICAKKSU)  PETEK  VE POMPA  KONTROLU
1200 SATIR    7 SENELİK DENEME SONUCU ORTAYA ÇIKTI...
SU ANDA 14 YERDE( İLK OKUL ORTA OKUL SİTEDE BANKADA ) ÇALIŞMAKTADIR.

CNC İLE PCB ÇİZİMİ



 ARESTE PROJENİNİ ÇİZ..

İŞLEME  ALANINI SEÇ
ÇIKIŞ BMP AYARLA...
ALT LEHİM KANALINI VE 600 DPI  AYNA SEÇ....
BMP KAYDET
ARTCAM DA YENİ PROJE AÇ....
KAYDETTİĞİN ÇÖZÜNÜRLÜĞÜ AYARLA  GERÇEK BOYUT GELECEK..
TAKIM YOLU OLUŞTUR CNC UZANTILI KAYDET..

CNCDE İŞLE  
DELİK İÇİN DE ALT KANAL SEÇECEĞİNE DRILL DELİK ŞEÇ..
BU KADAR........




26 Temmuz 2016 Salı

pic ile voltmetre-ampermetre devresi

Merhaba arkadaşlar

Sitemizde bulunan 30 volt 5 amper ayarlı güç kaynağı ile kullanabileceğiniz, hem gerilimi hem de akımı aynı anda ölçebileceğiniz bir devre tasarladım. Devrede mikrodenetleyici olarak pic 18f26k22 kullandım. Bunu tercih etmemin sebebi 28 pinli olması üzerinde 19 adet adc kanalı bulundurmasıdır.

Devrenin şeması:

Devrede 3 digitlik 2 adet 7 segment kullanıldı.Sol taraf gerilim değerini sağ taraf ise akım değerini göstermektedir. 7 segmentlerin bağlantılarının karmaşık olmasının sebebi tamamen baskı devrenin çizimini kolaylaştırmak amacıyladır. Başka özel bir sebebi yoktur.

kullanılan malzemeler:

1 adet pic18f26k22
1 adet 28 pin soket
2 adet 3 digit 7 segment anot display
2 adet 10k trimmpot
8 adet 330 ohm direnç
4 adet 10k direnç
2 adet 56k direnç
1 adet  0.47 ohm 5W taş direnç
1 adet 180 ohm 5W taş direnç
1 adet 100 uF 50 V kondansatör
1 adet 1 uF 16 V kondansatör
1 adet lm7805 voltaj regülatörü
3 adet 2'li klemens(isteğe bağlı)

Devrenin çalışma prensibi:

Öncelikle, devremiz 0-40 V arasında ölçüm yapmaktadır. 56k ve 10k lık dirençler bu durum öz önüne alınarak seçilmiştir. ''Elimde 56k yok 68k koyayım, 47k koyayım çok bişey farketmez'' gibisinden düşüncelere kapılmayın çünkü ölçümde çok büyük farklar meydana gelir :) sonra vay efendim kapasitör niye patladı :)

Direnç değerleri 40 volt gerilimde adc üzerine 5 volt düşecek şekilde seçilmiştir. Diğer tüm değerler bu değer referans alınarak hesaplanır. Devredeki trimmpotların amacı, direnç değerlerinde meydana gelen hataların devreye yapacağı etkileri ortadan kaldırmaktır. Gerilim ölçümü bu şekilde yapılmaktadır.

Akım ölçümündeki temel prensip, çıkışa seri bağlanan 0.47 ohmluk direncin üzerine düşen gerilimin ölçülüp bu direnç değerine bölünmesidir. Bunun için direncin diğer ucundaki gerilim de yukarıda anlatılan yöntem ile ölçülüp bu iki gerilim değeri birbirinden çıkartılır ve çıkan sonuç 0.47 ye bölünür. direncin bu kadar küçük seçilmesinin sebebi, çıkışa bağlanan devreye olacak etkilerini en aza indirebilmektir. Ancak bunun bir de dezavantajları var. örneğin çıkışa bağladığımız devre 2 amper akım çeksin. Bu durumda direncin üzerine düşen gerilim=0.47 x 2=0.94 V olacaktır. yani 1 Volt bile değil. Bu yüzden ölçümünüzün çok hassas olması gerekmektedir. Eğer kendiniz bu devreyi tekrar tasarlamak istiyorsanız bu konuda dikkatli olmanızı tavsiye ederim.



Devreyi 5x10 luk plakete sığdırmaya çalıştırdığımdan, ne yazık ki devrede 2 adet atlama mevcut. atlamaları kırmızı çizgilerle gösterdim. Ancak yakın zamanda devrenin 10x10 luk bir versiyonunu da yapacağım, onda hem yollar biraz daha aralıklı olacak hem de atlama olmayacak. Bunu kendi güç kaynağıma sığdırabilmek için böyle yaptım siz tercihinize göre istediğinizi kullabilirsiniz. muhtemelen kod ve şemaları aynı olacak.

Kullanım talimatları :

Devrenin montajı bittikten sonra sol üst köşede güç kaynağı çıkışı yazan yerlere kendi kaynağınızın çıkışlarını bağlayınız, toprağa gidecek pinler, altında - işaretiyle çizimde belirtilmiştir. En sağda besleme yazan yere, güç kaynağınızda diyot köprüsünün çıkışında bulunan kapasitörün üzerinden aldığınız çıkışı bağlayınız. çıkış yazan yere de güç problarını bağlayabilirsiniz. artık yeni çıkışınız burasıdır.

Devreye güç verdikten sonra öncelikle güç kaynağı çıkışı yazan yerdeki gerilimi bir multimetre yardımıyla ölçünüz. gerilimi 5 volta getiriniz. multimetrede okunan değer ile devrenin voltmetre göstergesi üzerindeki gerilim birbirine eşitlenene kadar en soldaki trimmpot ile ayar yapınız. Bunu yaparken devreye hiçbir yük bağlanmamış olmalıdır. Bunu yaptıktan sonra devredeki butona bir kez basınız. şu anda devrenizin normalde akımı göstermesi gereken kısmı, çıkışa seri bağlı olan direncin çıkış ucundaki gerilimi göstermektedir. Açık devre prensibinden ötürü bu direncin iki ucunda da aynı gerilim olması gerekmektedir. Bu durumda soldaki göstergedeki değer ile sağdaki göstergedeki değer birbirine eşitlenene kadar sağ tarafta bulunan trimmpot ile ayar yapınız. Bunu yaptıktan sonra tekrar butona basınız. Sağdaki gösterge tekrar akım değerini göstermeye başlayacak. bunu da yaptıktan sonra devreniz kullanıma hazır. hayırlı olsun :)

DEVREYE AİT DOSYALAR
baskı devre çizimi voltmetrePCB.pdf dosyasındadır.

devrenin çalışma videosu

17 Haziran 2016 Cuma

PIC 16F628 ile Piyano Devresi




Piyano devresi, elektronik org

Bu devremizde, piyano 7 notadan oluşmaktadır. Öncelikle elektronik olarak notaların nasıl oluştuğuna değinelim.

Her notanın farklı bir frekansı vardır. Diğer müzik aletlerinden de bildiğimiz gibi ses titreşimlerden meydana gelir. örneğin ''do'' notasının frekansı 262 dir. Yani ''do'' notasını oluşturabilmek için cismi saniyede 262 kez titreştirmemiz gerekir. Bu da ilginç bir tabir oldu tabi. Gelelim bu titreşimleri PIC mikrodenetleyicisiyle nasıl oluşturacağımıza:

10 Mart 2016 Perşembe

H-Bridge Mosfet DC-Motor Driver Shematic( h köprüsü mosfet dc motor sürücü şeması)

1.TEMEL MOSFET SÜRME TEKNİKLERİ

1.1 GİRİŞ

Hepimiz elektriksel anahtarlardan haberdarız. Evimizde, arabamızda, televizyonumuzda her yerde karşılaşıyoruz  mekanık elektronik anahtarlarla. Bu çevremizde dokunarak kullandığımız anahtarların icadı eskiye dayanır. Bu anahtarları kullanmak için bizzat kendimiz dokunarak açma ve kapama işlemini yaparız. İlkel anahtarların hepsi açma kapama için bir insana ihtiyaç duyarlardı. Taaki röleler bulunana kadar. Röleler açma kapama için insana ihtiyaç duymayan, elektrik enerjisiyle çalışan gelişmiş anahtarlardı ve halen sıklıkla kullanılmakta. Rölelerden sonra gelişmiş anahtar arayışının devam etmesinin sebebi ise; rölelerin açma kapama sürelerinin yüksek olması ve yüksek akım ve gerilim çekmeleri idi. Bu arayış yakın tarihimizde meyvesini verecek ve teknolojinin hızla ilerlemesini sağlayacaktı. Ve transistörler bulundu. Transistörler çok küçük sinyallerle tetikleniyor ve anahtarlama yapıyorlardı ve rölelerden ve insanlardan daha hızlı bir şekilde anahtarlama yapabiliyorlardı. Ancak transistörler yüksek güç uygulamalarına   uygun değildi. Yüksek güc yüksek akım yüksek gerilim ve yüksek ısı demekti. Bu koşullara uygun mosfetler keşfedildi. Mosfetler kapalıyken iç dirençleri çok yüksektir. Kapalı bir mosfeti çok büyük bir direnç gibi düşünerek matemetik devre işlemleri yapabilirsiniz. Açık oldukların da ise iç dirençleri çok küçüktür, Mosfetler açık olduklarında,  düz tel bağlanmış gibi düşünülebilir. Mosfet kullanırken, gate voltajını iç direncinin ne olacağını ve mosfetten geçecek akımın ne olacağını hesaplayarak istediğimiz anahtarlama olaylarını sağlayabiliriz. Yazının devamında H-Köprüsü ile motor sürmeyi ayrıntılı inceleyerek, motora dokunmadan motorun yönünü ve hızını insansız anahtarlama elemanı mosfetlerle sağlayacağız. 

1.2 P-KANAL MOSFET SÜRME

P-Kanal mosfetler negatif gerilimle tetiklenirler. Negatif gerilim yerine 0 volt da kullanılabilir. P -Kanal mosfet sürmek için örnek şekil 1.1 de gösterilmiştir. Şemadaki devre 10k direnç BC630 transistör, İRF9540N P-Kanal mosfet , 12V gerilim, yük olarak iç direnci 9.2 ohm bir dc motor kullanılmıştır. 
şekil 1.1

21 Şubat 2016 Pazar

16f628 ile Temel RF haberleşme

Merhaba arkadaşlar bu uygulamamızda RF haberleşmenin mantığını kavramak için basit bir buton-led uygulaması yapacağız.

Devrenin amacı:
Butona her basıldığında alıcı kısmında tanımlanan "m" değişkeni bir artırılsın ve m'in değeri binary olarak B portuna bağlı ledlerle kullanıcıya aktarılsın.

Malzemeler:
2x PIC16f628a
2x 4 MHz kristal
4x 22pF kapasitör
3x buton (2 bacaklı)
9x 330 ohm direnç
3x 10k direnç
2x 1k direnç
2x 7805 regülatör
2x 0 no klemens
9 adet led
2x 18 pin soket
RF alıcı- verici modül

Öncelikle yeni başlayan arkadaşlar için"binary" ne demek onu açıklayalım. Binary, herhangi bir sayının 2 tabanında yazılmasıdır. örneğin 10 tabanında 25 sayısını 8 bit kullanacak şekilde binary olarak yazarsak:
25=00011001 olur. buradaki mantık şu şekildedir:
2x(10^1)+5x(10^0)=0x(2^7)+0x(2^6)+0x(2^5)+1x(2^4)+1x(2^3)+0x(2^2)+0x(2^1)+1x(2^0)
8 bit kullanmamızın sebebi, B portunun 8 bit olmasından kaynaklanmaktadır.
bu durumda: 11111111=255 olacağından bizim tanımladığımız m değişkeni maksimum 255 değerini alabilmektedir.

RF haberleşme:
Arkadaşla RF haberleşmede, bir PICten diğerine göndereceğimiz komutları biz kendimiz seçeriz. örneğin bu bir harf olabilir veya sayı olabilir.
mesela bir uzaktan kumandalı araba yaptık diyelim. buradaki komutları, bilgisayar oyunlarından da aşina olduğumuz W,A,S,D harflerini seçebiliriz. aşama aşama bu arabayı hareket ettirmek için gerekli olan CCS kodlarını yazalım.

verici devresi için:

#include <16F628A.h>


#use delay(crystal=4000000)
#use rs232(baud=600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8,stream=PORT1)

 yukarıdaki kod dizisi PICe RF haberleşmede hangi pinleri kullanacağımızı tanıttı.burada baud değeri en önemli noktadır. alıcı ve vericinin baud değerleri kesinlikle aynı olmalıdır. farklı olursa devre çalışmaz. bu değer ise kullandığınız Rf modülüne göre değişebilmektedir.ancak piyasada bulunan çoğu RF modul 600 de bluetooth modulleri ise genellikle 9600 değerinde çalışmaktadır.

modülleri tanıttıktan sonra sıra geldi komutları göndermeye.

putc(0b01010101);
putc('y');
putc('W);
delay_ms(5);

ilk satırda bulunan uyku halinde olan alıcıyı uyandırmak için gereklidir.
ikinci satır ise sizin devreniz etrafta bulunan parazit sinyallerden etkilenme ihtimalini azaltır. eğer onu koymaz da direk W harfini gönderirseniz havada rastgele dolaşan radyo sinyalleri de sizin devrenizi tetikleyebilir. bu harf illaki y olmak zorunda değil siz istediğiniz herhangi bir harfi seçebilirsiniz.
bunu yazdıktan sonra da 5 milisaniyelik bir bekleme süresi koymak gerekiyor. şimdi alıcının kodlarını yazalım.

#include <16F628A.h>


#use delay(crystal=4000000)
#use rs232(baud=600,parity=N,xmit=PIN_A2,rcv=PIN_A1,bits=8,stream=PORT1)

haberleşme modülünü ve hangi pine bağlı olduğunu tanıttık şimdi ise arabayı ileriye götürecek motorun B0 pinine bağlı bir transistör tarafından tetiklendiğini varsayaraktan kodlarımızı yazalım.

char e;
e = getch();
if (e=='y') {
e=getch();
if (e=='W') {
output_high(pin_b0);
}
}
kodu analiz edecek olursak: öncelikle gelen sinyalleri bir e değişkenine atıyoruz. eğer gelen sinyal y harfi ise bir sinyal alımına daha izin veriliyor. yani y harfinden önce havadan rastgele bir W sinyali gelse bile sizin arabanızı tetikleyemez.
daha sonra gelen W sinyaliyle birlikte b0 pini high yapılıyor ve motor çalıştırılıyor.

Bu arada bazı modüllerde sinyal alışverişinde problem çıkabiliyor. Eğer bir sorunla karşılaşıssanız öncelikle alıcı ve verici devresinin topraklarını birleştirerek, vericinin out pinini alıcının in pinine kabloyla bağlayın, çalışıp çalışmadığını kontrol edin eğer çalışıyorsa alıcının ve vericinin frekansları birbirini tutmuyor olabilir. bu durumda bağladığınız kabloları söküp alıcı üzerindeki bobini tornavida yardımıyla yavaşça çevirip sinyal göndermeye devam edin. Son olarak bunları denemeden önce alıcı ve vericiye 17.1 cm lik kablo bağlamayı unutmayın.
Eğer kablo bağladığınızda da çalışmıyorsa devrenizdeki bağlantılarda ya da yazdığınız kodda sıkıntı var demektir.


verici şeması: