pcbway

pic devre yaptırmak istiyorum

Başlatan ertpln, 29 Mayıs 2013, 20:53:31

ertpln

merhaba, motor devri ölçebilecek ve ölçülen devire karşılık 0,50 ile 1,00 arasında voltaj üretecek bir pic devresine ihtiyacım var. makul bir ücret karşılığı yapabilecek arkadaşlar var mı?
teşekkürler

Yusuf usta

önce yapmaya çalış, yapamazsan yaptırmaya çalışırsın. sana yapabilmen için yardım edelim, en başta neden 0.50-1.00 arası? nede kullanacaksın bu çıkan voltajı. motor devir sayacı led display ile en ince ayrıntısına kadar dosyalı var bende, foruma aktarayım bak yap, ama önce çıkan voltajı ne için kullanacaksın onu çözelim...
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

ertpln

merhaba Yusuf usta,
cevap için teşekkür ederim.
öncelikle kendim yapmaya çalışıyorum. fakat pic konusunda çok acemiyim.
projemi daha detaylı anlatayım:
birinci adım aracın motor devrini ölçmek.
bunun için motorun üzerinde dönen kasnaklardan birinden manyetik tetikleme ile devrin ölçülebileceğini düşünüyorum. ölçülen devre karşılık aşağıdaki skalada sinyal voltajı üreteceğiz. herhangi bir amper yükü söz konusu değil. bu voltaj sadece sinyal amaçlı ve bunu motor kontrol ünitesine vereceğiz.
0-700 devir arasında (motor stop) sabit 0,49 volt
750-850 devir (rölanti) 0,51 volt
sonrasında ise 2000 devir 0,62 volt
4000 devir 0,84 volt    skalasına uygun olacak şekilde sinyal voltajı üreteceğiz.
devir ölçüm adımları mümkün olduğunca küçük olmalı, 50 devir gibi.
yani 800 devirden 4500 devir arasını 50 devir adımlarına bölerek, her 50 devir adım karşılığında olması gereken sinyal voltajı üretilecek.
buna karşılık üretilecek voltajın yenileme sıklığı da yüksek olmalı.
neden pic ile olmalı dersen: 0,49 dan başlayan ve maks 1,20 volt olmasını planladığım skalamızı araç beynine en uygun olacak şekilde dizayn edebilmek için.
motor devrinin ölçülmesini, araç üzerindeki bazı donanımlardan da alabiliriz.
örneğin krank devir sensörü. 0,50 ile 14 volt arasında sinyal voltajı üretir. 0,50 motor stop 14 ise max devir anlamına gelir.
buradan alacağımız sinyal voltajı ile devir ölçülmüş gibi 0,50 karşılığında 0,50 ve 14 karşılığında 1,20 olacak şekilde bir algoritma ile de çalışabiliriz.
benim ilk tercihim devri kendi yaptığımız donanım ile ölçmek.
üzerinde led, LCD gibi donanımlar olmasına gerek yok.
her türlü yardım için şimdiden çok teşekkür ederim.
saygılarımla

mhoca

Çok zor olmayan bir konu bir yerden başla çözemediğin yerlerde yardım iste bence. İyi çalışmalar.

Yusuf usta

Hocam bekle ben akşam motor devir sayacı devresi kodları proteus çizimi vs hepsini ekleyeceğim. Yapılış fotoğrafları dahil var. 4 haneli lee display ile yapılmış. Ve takıldığın yeri sorarsın. Bu devreyi mutlaka yaparsın sen eminim. O diğer konuyu dediğin gibi hallet. Krank devir sayacı, olmadı başka basit bir motor ile üretim yapıp kalibre et.
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta



bu devrenin tüm ayrıntıları ekte var. çizim 7.91 ile yapıldı. ares sürümün daha düşükse açmaz. şema resim açıklama vs hepsi var.
kolay gelsin.
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

mhoca

LCD olabilir mi?  İyi çalışmalar.

mhoca

İlla pic kullanmanız gerekli mi? Başka bir  devre önerebilirim. İyi çalışmalar.

asma

Arkadaşımızın isteğinde devir ölçmek yok, motor kontrol yok.
Kısaca özetlersek devir bilgisini algılayıp bunu belirlediği skalada voltaja çevirmek istiyor. Bunu ECU yada benzeri bir devreye referans girişi olarak kullanıcak. Bu çıkış bir op-amp çıkışı bile olabilir.
Belliki dizel motor ile kullanıcak.
Yani özel bir dönüşüm metoduyla frekans voltaj konvertörü gerekli.
Yaklaşık olarak her 50 devirde 10 mV (0,01V) artış ile
 800d/dk = 0,49+0
 850d/dk = 0,49+0,01=0,49V
 900d/dk = 0,49+0,02
1000d/dk = 0,49+0,03
2000d/dk = 0,49+0,23=0,72V
3000d/dk = 0,49+0,43
4000d/dk = 0,49+063
4500d/dk = 0,49+0,73=1,22V
Lineer artış elde edilir. 0,49V devreden çıkartılıp daha sonra op-amplı toplama işlemiyle eklenebilir.
800 devir bilgisi sıfıra çekilirse sorun kalmaz.
Verilen değerlerde tutarsızlık var. 2000 devirde 0,62V ve 4000 devirde 0,83V yazılmış ama 0,49V ile 1,2V arasında (800d/dk - 4500d/dk) min. ve max. değerler istenmiş.
@ertpln bu ayrıntıyı tekrar açıklarmısın.
Eğer çıkış voltajı doğrusal değilse tabloyla göstermelisin.  ;)

Kolay gelsin.

ertpln

Merhaba,
Öncelikle ilgi gösteren, cevap yazan, yardımcı olan herkese çok teşekkür ederim.
devir ölçen devre paylaşımı için çok teşekkürler, deneyeceğim ve sonuçları buradan paylaşacağım.
devire karşılık voltaj çıkışının tutarsız göründüğünün farkındayım.
aralarında lineer bağlantı olmadığı için pic ile yapmak istiyorum.
diesel motor tahmininiz doğru.
max 4700 devirde  tahminimce max 1,20 volt olacak. işin bu noktası biraz denem yanılma ile belli olacak.
aslında biraz daha detaylandırayım.
aslında her 2000 devir de illa 0,62 olmuyor. yaptığım ölçümlerde 0,58 de gördüm, 0,77 de.
farkın nedeni, motorda o an için gerçekleşen yüklenme. yani 2000 devir hafif gazda 0,58 iken, yüklü gazda 0,77 ve daha fazlası olabiliyor.
pic ile yaparsam, motor kontrol ünitesinin tolerans içinde kabul edebileceği en optimum değerleri denemenin kolay olacağını düşünüyorum.
şimdiden çok teşekkürler

ertpln

yusufusta, emeğine sağlık

bu devreyi manyetik kontak ile yapacağım.
Selanik pasjında manyetik kontak desem, bulunur mu?

hex ve bin dosyalarının içeriğinde bazı karekterler okunmuyor,
acaba burada düz metin olarak paylaşabilir misin?

bu devre tamam, geriye sadece sinyal voltajını üretmek kaldı,
bu devreye nasıl eklenebilir?

teşekkürler, selamlar


Yusuf usta

manyetik röle tüm elektronikçilerde bulunur. kimisi anlamazsa reed röle de diyebilirsin. ince bir cam diyot görüntüsünde genelde yeşil şeffaf renkli bir eleman. seyyar satıcılarda kapı pencere alarmı minik bir devre satılıyor ya, onun içinde de bundan var. üzerinde mıknatıs uzaklaşınca ötmeye başlıyor hani...




hex dosyası ve kod dosyası çalışıyor. bence sen direkt pic\'e yükle uğraşma. akşam zamanım olursa metin olarak bu mesaja eklerim.
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

ertpln

merhaba,
devre ile uğraşıyorum. paylaştığınız devir sayıcıyı yapmaya çalışıyorum fakat pic yazılımında sorun var.
dosya ekindeki yazılım çalışmadı. bunun düz metin halini paylaşabilir misiniz?
pic yazılımında çok işim var. çünkü bu pic yazılımı deviri nasıl bir data ile ölçtüğünü ve bundan faydalanarak tabloda karşılık gelen voltajın nasıl üretileceğini bir türlü yapamıyorum.
teşekkürler

Adnancoskun

reed anahtarın açılıp kapanma hızı sizin devreye yetmeyebilir (mekanik olduğu için) ben olsam hall effect sensor kullanırdım... :D
Tanrı Türk'ü Korusun ve Yüceltsin.

Yusuf usta

devrede nasıl bir sorun var hiç mi çalışmıyor?

çalışmaması durumunda hatayı kısa devre arayarak temas etmeyen bir bağlantı arayarak da değerlendirin. olmaz demeyin ben yıllardır  günde on tane devre yapıyorum, \'beşinde\' sıkıntı çıkıyor. ayrıca pic konfigürasyonunda dikkat edin wdt off durumunda mı xt seçili mi? yoksa ekteki kodlar kesin çalışıyor, çünkü resimdeki devre daha yakın zamanda yapıldı ve aynı kodlarla yapıldı.

asm kodlar:
;------------------------------------------------------------------------------
; 4 Œ..."Ä—pƒJƒEƒ"ƒ^[ counter.asm 2003/07/05 by Koichi Tanaka
; PIC16F84A @4MHz
; ƒ[ƒƒTƒvƒŒƒX•\\Ž¦(1Œ...–Ú,Ì,ݏ펞"_"")
; ƒJƒ\\[ƒhƒRƒ,ƒ" LED ,ğŽg—p @Šî"ŽÀ'•,Ì,Æ,«,É"zü,µ,â,·,¢ƒ|[ƒgo—Í,ɐİ'è
; TOSHIBA T312 ,ɍ‡,í,¹,½ get7seg ƒe[ƒuƒ‹,È,Ì,Å'¼,Ì,à,Ì,ğŽg,¤ê‡,Í—v•ÏX
; 4counter03.asm ,©,ç,̕ύX"_¨'SŒ..."_"",©,çƒ[ƒƒTƒvƒŒƒX•\\Ž¦,ɕύX
; —p"r: ƒAƒNƒ`ƒ...ƒG[ƒ^ƒRƒCƒ‹,ğŠª,«—pƒJƒEƒ"ƒ^[
;------------------------------------------------------------------------------

        LIST            P=PIC16F84A
        INCLUDE         \"P16F84A.INC\"
  __CONFIG _HS_OSC & _PWRTE_ON & _CP_OFF & _WDT_OFF

#define countsw PORTB, 0 ; ƒJƒEƒ"ƒg"ü—̓|[ƒg
#define resetsw PORTA, 4 ; ƒJƒEƒ"ƒgƒŠƒZƒbƒgƒ|[ƒg

count1 equ 0ch ; 1 Œ...–ÚƒJƒEƒ"ƒ^[
count2 equ 0dh ; 2 Œ...–ÚƒJƒEƒ"ƒ^[
count3 equ 0eh ; 3 Œ...–ÚƒJƒEƒ"ƒ^[
count4 equ 0fh ; 4 Œ...–ÚƒJƒEƒ"ƒ^[
tcount equ 10h ; ƒEƒFƒCƒgƒJƒEƒ"ƒ^[
wcount equ 11h ; ƒEƒFƒCƒgƒJƒEƒ"ƒ^[
segdata equ 12h ; ƒZƒOƒƒ"ƒgƒf[ƒ^[
disp_f equ 13h ; •\\Ž¦Œ..."ƒJƒEƒ"ƒ^[(ƒ[ƒƒTƒvƒŒƒX)

org 0
goto start
org 4
goto start

start bsf STATUS, RP0 ; ƒy[ƒW 1
movlw b\'00010000\' ; RA4 ,ğ"ü—Í,ɐİ'è
movwf PORTA ;
movlw b\'00001\' ; RB0 ,ğ"ü—Í,ɐİ'è
movwf PORTB ;
bcf STATUS, RP0 ; ƒy[ƒW 0

clrf disp_f
bsf disp_f, 0
clrf count1 ; 1 Œ...–ÚƒJƒEƒ"ƒ^[ƒNƒŠƒA
clrf count2 ; 2 Œ...–ÚƒJƒEƒ"ƒ^[ƒNƒŠƒA
clrf count3 ; 3 Œ...–ÚƒJƒEƒ"ƒ^[ƒNƒŠƒA
clrf count4 ; 4 Œ...–ÚƒJƒEƒ"ƒ^[ƒNƒŠƒA

lp1 call disp
btfss resetsw ; ƒŠƒZƒbƒgƒXƒCƒbƒ`,ª‰Ÿ,³,ê,Ä,¢,È,¯,ê,΃XƒLƒbƒv
goto reset
btfsc countsw ; "ü—Í,ª 0(active) ,È,çƒXƒLƒbƒv
goto lp1
call disp
call disp
call disp
call disp
call disp
btfsc countsw ; "ü—Í,ª 0(active) ,È,çƒXƒLƒbƒv
goto lp1

;------------------------------------
; ƒJƒEƒ"ƒg
;------------------------------------
incf count1, f ; 1 Œ...–Ú,ğƒCƒ"ƒNƒŠƒƒ"ƒg
bsf disp_f, 0
movlw d\'10\'
subwf count1, w
btfss STATUS, Z ; Œ...ã,°,ª"­¶,µ,½,çƒXƒLƒbƒv
goto lp2
clrf count1 ; 1 Œ...–Ú,ğƒNƒŠƒA
incf count2, f ; 2 Œ...–Ú,ğƒCƒ"ƒNƒŠƒƒ"ƒg
bsf disp_f, 1
movlw d\'10\'
subwf count2, w
btfss STATUS, Z ; Œ...ã,°,ª"­¶,µ,½,çƒXƒLƒbƒv
goto lp2
clrf count2 ; 2 Œ...–Ú,ğƒNƒŠƒA
incf count3, f ; 3 Œ...–Ú,ğƒCƒ"ƒNƒŠƒƒ"ƒg
bsf disp_f, 2
movlw d\'10\'
subwf count3, w
btfss STATUS, Z ; Œ...ã,°,ª"­¶,µ,½,çƒXƒLƒbƒv
goto lp2
clrf count3 ; 3 Œ...–Ú,ğƒNƒŠƒA
incf count4, f ; 4 Œ...–Ú,ğƒCƒ"ƒNƒŠƒƒ"ƒg
bsf disp_f, 3

lp2 call disp
btfss countsw ; "ü—Í,ª 1(inactive) ,È,çƒXƒLƒbƒv
goto lp2
call disp
call disp
call disp
call disp
call disp
btfss countsw ; "ü—Í,ª 1(inactive) ,È,çƒXƒLƒbƒv
goto lp2
goto lp1

;------------------------------------
; •\\Ž¦ (ƒ[ƒƒTƒvƒŒƒX)
;------------------------------------
disp
disp1 movlw b\'00000000\' ; ˆêŽž•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'00001\'
movwf PORTA
movf count1, w
movwf segdata
call get7seg
movwf PORTB ; 1 Œ...–Ú,͏í,É•\\Ž¦
call wait
btfsc disp_f, 1 ; 2 Œ...–Ú,̃tƒ‰ƒO,ª 0 ,È,çƒXƒLƒbƒv
goto disp2 ; 2 Œ...–Ú,Ì•\\Ž¦,Ö
movlw b\'00000000\' ; 2 Œ...–Ú,Ì•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'00010\'
movwf PORTA
call wait
goto dlp2 ; 3 Œ...–Ú,àÁ‹Ž,Ö

disp2
movlw b\'00000000\' ; ˆêŽž•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'00010\'
movwf PORTA
movf count2, w
movwf segdata
call get7seg
movwf PORTB ; 2 Œ...–Ú•\\Ž¦
call wait
btfsc disp_f, 2 ; 3 Œ...–Ú,̃tƒ‰ƒO,ª 0 ,È,çƒXƒLƒbƒv
goto disp3 ; 3 Œ...–Ú,Ì•\\Ž¦,Ö
dlp2 movlw b\'00000000\' ; 3 Œ...–Ú,Ì•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'00100\'
movwf PORTA
call wait
goto dlp3 ; 4 Œ...–Ú,àÁ‹Ž,Ö

disp3
movlw b\'00000000\' ; ˆêŽž•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'00100\'
movwf PORTA
movf count3, w
movwf segdata
call get7seg
movwf PORTB ; 3 Œ...–Ú•\\Ž¦
call wait
btfsc disp_f, 3 ; 4 Œ...–Ú,̃tƒ‰ƒO,ª 0 ,È,çƒXƒLƒbƒv
goto disp4 ; 4 Œ...–Ú,Ì•\\Ž¦,Ö
dlp3 movlw b\'00000000\' ; 4 Œ...–Ú,Ì•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'01000\'
movwf PORTA
call wait
goto dlp4

disp4
movlw b\'00000000\' ; ˆêŽž•\\Ž¦,ğÁ‹Ž
movwf PORTB
movlw b\'01000\'
movwf PORTA
movf count4, w
movwf segdata
call get7seg
movwf PORTB ; 4 Œ...–Ú,ğ•\\Ž¦
call wait
dlp4 return


;------------------------------------
; ƒŠƒZƒbƒg
;------------------------------------
reset clrf disp_f
bsf disp_f, 0
clrf count1 ; 1 Œ...–ÚƒJƒEƒ"ƒ^ƒNƒŠƒA
clrf count2 ; 2 Œ...–ÚƒJƒEƒ"ƒ^ƒNƒŠƒA
clrf count3 ; 3 Œ...–ÚƒJƒEƒ"ƒ^ƒNƒŠƒA
clrf count4 ; 4 Œ...–ÚƒJƒEƒ"ƒ^ƒNƒŠƒA
movlw d\'100\' ; –ñ0.5•bƒEƒFƒCƒg
movwf tcount
lp0 call disp
call disp
call disp
call disp
decfsz tcount, f
goto lp0
goto lp1

;------------------------------------
; 305usec wait
;------------------------------------
wait movlw d\'100\'
movwf wcount
wlp decfsz wcount, f
goto wlp
return

;------------------------------------
; TOSHIBA T312 cathode common LED
; "z—ñ \'cgbafedX\'@(X ,Í"ü—̓rƒbƒg)
;------------------------------------
get7seg movf segdata, w
addwf PCL, f ; ƒvƒƒOƒ‰ƒ€ƒJƒEƒ"ƒ^,ɉÁŽZ
retlw B\'10111110\' ; 0
retlw B\'10100000\' ; 1
retlw B\'01110110\' ; 2
retlw B\'11110010\' ; 3
retlw B\'11101000\' ; 4
retlw B\'11011010\' ; 5
retlw B\'11011110\' ; 6
retlw B\'10110000\' ; 7
retlw B\'11111110\' ; 8
retlw B\'11111000\' ; 9

end

hex kodları:

:020000040000FA
:020000000528D1
:08000800052883161030850065
:10001000013086008312930113148C018D018E012F
:100020008F013F20051E7C28061811283F203F2005
:100030003F203F203F20061811288C0A13140A3055
:100040000C02031D34288C018D0A93140A300D0212
:10005000031D34288D018E0A13150A300E02031D6C
:1000600034288E018F0A93153F20061C34283F2028
:100070003F203F203F203F20061C3428112800301D
:100080008600013085000C089200902086008B20AD
:100090009318502800308600023085008B205B28A2
:1000A00000308600023085000D0892009020860006
:1000B0008B201319612800308600043085008B20C6
:1000C0006C2800308600043085000E0892009020D5
:1000D00086008B2093197228003086000830850036
:1000E0008B207B2800308600083085000F089200A6
:1000F000902086008B200800930113148C018D0141
:100100008E018F01643090003F203F203F203F2030
:10011000900B8428112864309100910B8D280800E1
:1001200012088207BE34A0347634F234E834DA346C
:08013000DE34B034FE34F83473
:02400E00F23F7F
:00000001FF
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

ertpln

sayın adnançoşkun,
araştırınca half effect sensör sanki direkt çözüm olacak gibi.
üzerinden geçen manyetik alana göre zaten voltaj veriyor.
tek sorun bu tür sensörler de oldukça çok çeşitli.
acaba hangi tip benim işimi görür?
diskin üzerine bir mıknatıs yerleştirsem acaba hangi tip sensör alama lazım?
anladığım kadarıyla sinyal vereceği kutupa göre çeşitlilik gösteriyor.
sistemde hali hazırda 13 volt gerilim kaynağı var. 78xx serisi kullanarak
istenen gerilim de elde edilebilir...
siz ne dersiniz?
teşekkürler

Adnancoskun

20 Haziran 2013, 15:58:30 #16 Son düzenlenme: 20 Haziran 2013, 16:00:13 Adnancoskun
en basidini söyleyeyim, birçok fanın içerisinde var, 3 bacaklı bc transistöre benzer. piyasada bulacağınız herhangi biri olur... ben size isim söylesem yönlendirmiş olurum belki bulamazsınız, bence malzeme satanların listesine bir bakın...

örneğin UGN 3503 piyasada var, fiyatı da 2.9 Türk lirası.

ayrıca ır verici ve alıcıdan oluşan mess de kullanabilirsiniz, hani şu farelerin içinde olan varya , işte ondan.. :D
Tanrı Türk'ü Korusun ve Yüceltsin.

ertpln

20 Haziran 2013, 16:04:44 #17 Son düzenlenme: 20 Haziran 2013, 16:05:21 ertpln
ben de tam aynı düşünce ile bir fanın içinden üzerinden sadece 711 okunabilinen bir sensör söktüm.
netde bulduğum kadarıyla 711L diye datasheet çıkıyor.
5 volt 1 numaralı bacaktan voltaj verip, 2 gnd ve 3 den bakalım nasıl bir voltaj verecek
peki size şöyle bir şey sorsam:
eğer diskin deviri motorun devirinden farklı ise, alacağım sinyal voltajı farklı alakasız olacaktır.
bu durumda sensörden gelen voltajı pic ile bir tabloda kıyaslayıp, ona göre voltaj almak istesem,
ve bunu 16f877 ile yapmak istesem, nasıl bir kod yazılır?
yardımlarınız için teşekkürler

Adnancoskun

disk motora mil ile bağlı değil mi?
Tanrı Türk'ü Korusun ve Yüceltsin.

ertpln

araba motorunun devrini ölçeceğim. motorun esas devrinin ölçüdüğü krank kasanağına kayış ile bağlı dönen bir sürü kasnak var. bir tanesi üzerine mıknatıs yerleştirmeye uygun. kasnak çapları farklı olduğundan benim ölçüm yapmaya çalışacağım diskin devri motor devrini ne kadar doğru gösterir emin değilim. mutlaka arlarında bir orantı çıkacaktır. bunu da ancak hall effect sensörü kasnağın karşına yerleştirip motoru çalıştırınca göreceğim.

mhoca

Dizel motorlarda devir ölçümünde piezo sensör kullanıldığını bir test cihazında görmüştüm. Hiçte hata yapmıyordu. Ancak devreyi incelemedim. Sensör yakıt iletim burusuna takılıyordu. Böyle bir deneme yapmanızda yarar var diye düşünüyorum. Ulaşılabiliniyorsa volanttan bilgi almak mantıklı. İyi çalışmalar.