D

Pic 16f628a ve hareket sensörü ile pc haberleşmesi

Başlatan denenebilirlik, 15 Aralık 2013, 05:00:36

denenebilirlik

İyi geceler öncelikle.
Bitirme projem, pc webcam ve hareket sensörü kullanılarak hareket algılanması durumunda kullanıcıyı bilgilendirmek.
baya bir araştırmadan sonra hareket sensörü ile pc arasında rs232 kullanarak bir devre düzenledim.
doğruyu söylemek gerekirse elektronik bilgim fazla değil, ve pic den de fazla anladığım söylenemez, işin kötü tarafı onca kaynağa rağmen bilgisayardan ledi yakamadım daha :(. pic programlama ile yakabiliyorum ama önemli olan pc-pic haberleşmesi. yapmış olduğum devre eklerdeki resimler gibidir.
pic 16f628a- max232-rs232 ve {rs232 to usb} tüm parcaları aynı şekilde kartta dizdim. max 232 ve pic in gnd ve vcc lerini usb den kestiğim + ve - ler ile besledim. kondansatörlerde aynı şekilde. crystal'in frekansı 4mhz.
pic' e programı atarken leaper-48 universal writer kullanıyorum.

pic programı


#include <16F628A.h>

#fuses HS
#use delay (clock=4000000)

#use rs232(baud=2400,parity=N,xmit=pin_b2,rcv=pin_b1,stop=1)

int data;
void main()
{
output_high(pin_b7);
delay_ms(1000);
output_low(pin_b7);
while(1)
{
data=getch();
if(data==0xAA){
output_high(pin_b7);
}
else if (data==0xBB)
{
output_low(pin_b7);
}
}
}


output_high(pin_b7);
delay_ms(1000);
output_low(pin_b7);
programın  şu kısmı çalışıyor. veya while icinde de output_low dan sonra delay kullansam sürekli yanıp sönen bir şey oluyor. ama pc den veri alma olayında sıkıntı var.

c# daki ledi yakmaya calısan kod ise şöyle

private void button3_Click(object sender, EventArgs e)
        {
            byte[] data = { 0xAA };
            SeriPortum.Write(data, 0, 1);
        }

Seriport ile ilgili diğer ayarlarda tamam.
rs232 to usb nin baud ayarı 2400 stop 1 parity none
ccs c pic kodlarında da aynı
c# tarafındaki ayarlarda aynı
tüm bunlara rağmen program çalışmıyor. serialport terminal den de kontrol ettim. pic den pc ye veri göndermeye calısırken mantıklı veriler gelmedi. printf("1"); yazıyorum mesela serialport terminal den baktığımda değişik veriler geliyor.
hani led yansa bir sonraki adıma(hareket sensörü) gececem 2 haftadır uğraşıyorum belkide çok kücük bir hata var bilmiyorum.
ve son 2 haftanın içindeyim . Yaptığım tüm adımları da yazdım yanlış yapılan bir yer vardır belki. Sizce ne yapmalıyım yeniden bir devre mi kurmalıyım pic secimi mi yanlış, yardımlarınızı esirgemeyin lütfen. Teşekkürler.

fth58

kristale baglanacak kapasitorleri goremedim ayrıca  sigorta ayarlarında 4mhz  için xt kullanılıyor.

denenebilirlik

kristale 2 tane 22pf kapasitorü paralel bağlayıp, pic c programında da fuse xt demem gerekiyor yani.

fth58


ete

Sigorta ayarlarından XT seçilecek (6 Mhz kristal frekansına kadar XT üzerinde HS seçilir)
Kristalin her bir bacağına 22pF kondansatör bağlanacak ve kondansatörlerin diğer bacakları GND ye bağlanacaktır.

Ete

denenebilirlik

yardımlarınız için çok teşekkür ederim. devrede galiba birbiribe temas eden lehimler vardı birde tinerle şöyle güzelce bir temizledim şuan gayet iyi çalışıyor :) . bilgisayardan veri alış verişi gerçekleşiyor. peki projenin bundan sonraki kısmı için(hareket sensörü) fikirleriniz nelerdir. ben bi kaç yerde gördüm ve bunu kendi projeme nasıl dahil edebilirim.
http://embedded-lab.com/blog/?p=1334
http://www.elektrotekno.com/about29025.html

mesut25

merhaba arkadaşım budan sonra yanı pc baglı wepcam görüntü almak ve degerlendirmek için  hangi pc program dilini kulanıyorsun   vısual basıc 06  ile daha basıt olabılır burdan sonra pıkselleri kontrol etmelisin

Dim one, two, D
Dim Color As Long
Private Sub B1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
B1.PSet (X, Y)
End If
End Sub
Private Sub B2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Text = Y
Text2.Text = X
If Button = 1 Then
B2.PSet (X, Y)
End If
End Sub
Sub PaP(p1 As PictureBox, p2 As PictureBox, W As Long, H As Long, C As Long, DDD)
Dim X, Y, a, AP, DD1, DD2
D = 10
For X = 0 To W - 15 Step C
For Y = 0 To H - 15 Step C
If p2.Point(X, Y) = p1.Point(X, Y) Then AP = AP + 1
a = a + 1
Next
Next
DD1 = (AP * 100)
DD2 = Right$((AP * (100 * D)) \ a, Len(D) - 1)
DDD = DD1 & "." & DD2 & "%"

End Sub
Private Sub Command1_Click()
PaP B1, B2, B1.Width, B2.Height, 15, one
MsgBox one
End Sub

Private Sub Command3_Click()
B1.Cls
End Sub

Private Sub Command2_Click()
B2.Cls
End Sub

Private Sub Command4_Click()
Color = B2.Point(45, 1935)
MsgBox Color
End Sub

Private Sub Form_Load()
B1.DrawWidth = 4
B2.DrawWidth = 4
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Text = Y
End Sub

iki resim arasındaki fark  bulan bır kod yanı pıcselleri kontrol ediyor
belki yardımı olur  pc hangi dili kullanıyorsun

Powered by EzPortal