pcbway
avatar_Yusuf usta

RF Kontrollü Çok Özellikli Araç Yapıyoruz

Başlatan Yusuf usta, 13 Temmuz 2015, 17:02:00

Yusuf usta

Rf Kontrolü anladık da, çok özellik de neyin nesi dediğinizi duyar gibiyim...

Elbette zevkle cevaplayayım;
Bu araç:
- Işığı takip ediyor,
- sese yöneliyor,
- Çizgi izliyor,
-yetmemiş gibi bir de engel görünce dönerek ilerliyor...

Ama bir kötü tarafı var... Nedir derseniz, bunların hepsini aynı anda yapamıyor...
Peki ama hareket halindeki aracın fonksiyonunu nasıl değiştirip de, örneğin ışığa yönelme kardeşim yeter artık sesime gel diye değiştireceğiz?

İşte burada devreye RF kontrolü giriyor...
Hemen kumandamıza basıyoruz ve komutu yolluyoruz...

Aslında hazıra konmak gibi olmasın ama, her devre bağımsız çalışıyor. Bir RF kontrolü ekleyerek sanki bu devreler tümleşik çalışıyor gibi gösterip hile  mi yaptık acaba?

Neyse çaktırmayın, biz hemen işe girişelim. :)

Önce fonksiyonun birinden başlayalım, sonra devamı gelir...
Fakat bu devreyi de diğer konteyner çalışmamız gibi sindire sindire götüreceğiz. Bir haftalık zaman dilimine yayıp parça parça yapacağız.

E hadi başlayalım o zaman...

1- IŞIK VE SESE YÖNELME FONKSİYONU:


LIST P=16F84A
INCLUDE "P16F84A.INC"
__CONFIG _CP_ON & _WDT_OFF & _PWRTE_ON & _XT_OSC

SAYAC1 EQU h'0C' ;sayacları ata
SAYAC2 EQU h'0D' ;sayacları ata
CEVIR EQU h'0E' ;sayacları ata

CLRF PORTB ;port B yi temizle

BSF STATUS, 5 ;bank 1 e geç
CLRF TRISB ;port B yi çıkış ata

MOVLW h'03' ;port A nın ilk iki biti input olsun
MOVWF TRISA
BCF STATUS, 5 ;bank 0 a geç

BUTONA_BAK
MOVF PORTA,W ;port A yı W registere yükle
MOVWF CEVIR ;w register içeriğini CEVIR'e gönder
COMF CEVIR,0 ;çevirin tersini al 1 ler sıfır 0 lar 1 olsun sonucu W registere yaz
MOVWF PORTB ;sonra tersi alınmış içeriği port B ye gönder

BTFSC PORTA,1 ;port A nın 1 nolu butonuna basıldımı?
GOTO BUTONA_BAK ;basılmadı ise bu komutu çalıştır
GOTO LEDE_BAK ;butona basıldı ise bir üst komutu atla bu komutu çalıştır

LEDE_BAK
BTFSC PORTA,2 ;port A nın 2 nolu butonuna basıldımı?
GOTO ONON ;basılmadı ise bu komutu çalıştır
BSF PORTA,2 ;butona basıldı ise bir üst komutu atla bu komutu çalıştır
CALL GECIKME ;gecikme yap
GOTO PARMAK_BUTONDAMI ;parmak hala butona basılımı kontrol et

ONON
BCF PORTA,2 ;port A 2 yi temizle
CALL GECIKME ;gecikme yap
GOTO PARMAK_BUTONDAMI ;parmak hala butona basılımı kontrol et

PARMAK_BUTONDAMI ;parmak butondamı etiketi
MOVF PORTA,W
MOVWF CEVIR ;port A yı W registere gönder
COMF CEVIR,0 ;çevirin tersini al 1 ler sıfır 0 lar 1 olsun sonucu W registere yaz
MOVWF PORTB ;W registeri port B ye gönder

BTFSC PORTA,1 ;port A 1 e basılsımı
GOTO BUTONA_BAK ;basılmadı ise bu komutu çalıştır
GOTO PARMAK_BUTONDAMI ;basıldı ise bir önceki komutu atla bunu çalıştır

;============================================================

GECIKME

MOVLW h'AA' ;hexadecimal AA sayısını
MOVWF SAYAC1 ;SAYAC1 e yükle
DONGU1
MOVLW h'FF' ;hexadecimal FF sayısını
MOVWF SAYAC2 ;SAYAC2 ye yükle
DONGU2
DECFSZ SAYAC2,F ;SAYAC2 yi azalt sonucu kendi içine yaz
GOTO DONGU2 ;DONGU2 ye git

DECFSZ SAYAC1,F ;SAYAC1 i azalt sonucu kendi içine yaz
GOTO DONGU1 ;DONGU1 e git
RETURN ;gecikme altprogramından çık

;=============================================================

END



:020000040000FA
:100000002828A301A200FF30A207031CA307031C9A
:1000100023280330A100DF300F200328A101E83E90
:10002000A000A109FC30031C1828A00703181528FC
:10003000A0076400A10F152820181E28A01C222844
:1000400000002228080083130313831264000800B1
:1000500083168501013086008312850186016400C4
:10006000861C4428640006194428051485100511CF
:100070008515C8300120051485100515851101303E
:10008000A3002C30022044286400861859286400FC
:10009000061D59280510851405158511C830012045
:1000A00005148510051585110130A3002C300220A0
:1000B00059286400861D61280510851005118511D9
:0800C00061282F28630062286B
:02400E00653F0C
:00000001FF


KODLARIMIZI entegreye yükleyip devremizi çalıştıralım bakalım...

Bazılarınız diyecek ki, yahu bu kodlar çizgi izleyen araç kodlarına ne kadar da benziyor... Evet, biz modifiye edip devrenin giriş uçlarına cny 70 sensörünün sağladığı lojik bilgileri bir ses ışık algılayıp bu sinyalleri lojik bilgiye çeviren opamp devresi ile bu işi başardık. Çok zahmet etmişsiniz demeyin, sonuçta adı budu iki motor kontrol edeceğiz, elimizdeki verilerle bu iş oluyorsa neden yapmayalım di'mi :)


Hadi şimdi devre şemamıza göz atalım ve bunu ares çizimle nasıl taçlandırmışız onu görelim, emeğe saygı lütfen :)







Ses ve ışığa yönelen robotun devresi:



Ses ve ışığa yönelen bir özellik için  ortak devre şeması aşağıdaki gibidir. Devrede motor için giriş voltajı birebir uygulanırken,  mikro denetleyicinin olduğu kısma 5Volttan yukarıda arıza yapacağı için gerilimi LM7805 üzerinden verdik. Bu entegre voltajı 5voltta sabitleyen bir gerilim regülatör entegresidir.
 

robotun hareket yeteneğini sağlayan DC motorlardır. L293, motor sürmek için kullanılan entegrelerin en tanınmış olanlarındandır. Bu bitirme çalışmasında L293 entegresi kullanılmıştır.
 
Devrede kapasitif mikrofondan alınan ses LM386 entegresi ile işlenmektedir. Bu entegrelerin verdiği çıkışlar bir karşılaştırıcı olarak görev yapan ve içinde iki adet opamp bulunan LM393 entegresine gönderilmektedir.

LM393 içindeki opampların +in uçların trimpotla ayarladığımız bir gerilim uygularız. Ses entegrelerinden gelen sinyal çıkışını ise her iki opamp'ın –in girişlerine bağlarız. Ve  bu verdiğimiz voltaj, +girişe verdiğimiz ayarlı voltajın eşiğini geçerse LM393 entegresi çıkış verir.

Bu çıkışların hangisinin faal olduğunu görmek için birer led lamba bağladık. Ayrıca pull-up direnci olarak da 10k direnç koyduk.

Karşılaştırıcı olarak kullandığımız LM393 entegresinin çıkış verdiği ayakları  mikro denetleyiciye bağlamak gerekiyor. İki uç çıkardık.





Bu iki ucu, entegrenin portlarını ses ve ışık algılayan devre çıkışları ile tetiklemek amacı ile çıkardık. Fakat bu uçlara gelen sinyal bize yetersiz geldiği için her portu bir BC237 NPN transistörle güçlendirerek daha iyi verim aldığımızı gördük. Görüldüğü gibi BC transistör kollektör uçlarına +5V verdik, ve emitör uçlarını portlara girdik. Beyz uçlarında ise ses ve ışık algılaması için hazırladığımız opamplardan oluşan devrenin çıkışları bağlı.


Işığa yönelmesi için devrede motor sürücü ve mikrodenetleyici katına LDR ile yapılan devremiz röleler yardımı ile bağlanır. Bu kısmı ayrı bir dosya halinde işleyeceğiz.

Kaldığımız yerden devam edeceğiz... ÇAlışmanın devamında görüşmek üzere...
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta

ses algılayan karın minik mikrofonları bağlı şekilde ve kontrol kartı ile baraber resimleri:





Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta

Engel algılama  devresinde bir optokuplör kullanıyoruz. CNY70 optokuplöründe bir kızılötesi verici ve alıcı bulunmaktadır. Kızıl ötesi alıcı led'in ayaklarından sol motoru çalıştıran röleyi süren bc548 transistörü beyzine pozitif tetikleme gitmektedir. Böylece röle motora enerji verdiği için motor dönmektedir.

Engelle karşılaşma durumunda alıcı led ayaklarında düşen direnç nedeni ile bu pozitif voltaj şaselenmekte ve bc transistör yalıtkan hale geldiği için motor durmaktadır. Diğer motor halen dönmeye devam ettiği için araç sağa doğru dönmekte engel kaybolunca BC transistör beyzi tekrar pozitif tetiklenme aldığı için her iki motor dönmekte ve araç düz ilerlemektedir.

Aracımızın motoru redüktörlü motorlardan oluşuyor. projemizde motor hızını birkaç kez düşürerek milin dönüş hızını düşürdük ve güçlü şekilde ve yavaş bir hızda dönmesini sağladık.




Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta

bu arada, yukarıdaki sese yönelme devresinin motor sürücü kısmına ses devresi yerine aşağıdaki ldr devrelerinden iki tane bağlıyor ve ışığa yönelme sağlıyoruz:

Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta

:020000040000FA
:1000000007309F00860183160313FF3085008601A9
:100010008312031386018030A1008030A200851C6A
:100020001628051C1928051D21280F280614061559
:100030000F28061406152108292006112208292058
:100040000F28061506142108292006102208292049
:0A0050000F28A000A00B2A280800CA
:02400E00213F50
:00000001FF

bunlar çizgi izleyen kodları.

devre baskısı ve resmi aşağıda:


Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta

Uzaktan Kumanda ile kontrol (RF)







Projemiz RF kablosuz haberleşme ile yapılan uzaktan 4 kanal kontrol mekanizmasından  oluşuyor.


Rf vericiden ileri butonuna basıldığında röle çıkışları  cihazı gereken özellikle ilişiklendirmektedir.  Tekrar  aynı  butona basıldığında ise o özellik kalkmaktadır.

Örneğin, araç çizgi takip edecekse cihazımızın çizgi takip eden bölümüne röle enerji vermektedir. Motor uçları çizgi izleyen bölümle ilişiklendirilmektedir.

Eğer sese yönelecekse ilgili devrenin pic girişlerine ses opamplarının çıkışları, ışığa yönelecekse ldr ile sürülen opamplar bağlanmaktadır.

Engel gördükçe sağa dönecekse aracımız, araç motorları direkt olarak enerjilendirilmekte ve bu enerjilendirilmeler röle üzerinden yapıldığı için engelde sol motor  durmakta ve dolayısı ile araç sağa  doğru dönüş yapmaktadır.

Rf haberleşme butonları ilk basışta çalışma ve ikinci basışta durma üzerine kodlanmıştır.


Verici devresinde butona basıldığı zaman PIC16F84 ayağından alınan data, verici modülün data ayağına gönderilir. Modülden yaydığı bu veri alıcı tarafından yine bir alıcı modül sayesinde alınarak işlenir.

Alıcı modül'ün data ayağından alınan sinyal, alıcının üzerindeki PIC16F84 'e gönderilir. İşlemci bu sinyale göre çıkış verir. PIC ayağından alınan sinyal bir BC548 yardımı ile güçlendirilerek röle sürülür.

Devrede  röleler baskı devre dışında konumlandırıldığı için sadece röle enerjisi için çıkış uçları bırakılmıştır.

verici kodları:
:100000007328040892002208840080309F0508307D
:100010009300031003189F0A1B20920C930B0A28CD
:100020000000971A1F0C1B20712003141B201B08B3
:100030008F001A0848288413971F2A2800082004D4
:10004000171F20068000841700082004031C2006C8
:100050008000352800082004031C2006171B2006FA
:100060008000841720098005352817081F39FF3EB6
:100070008D001608F53E03188D0A000055289000E3
:10008000150803196E2810086920950340288F0170
:100090008E00FF308E07031C8F07031C6E28033071
:1000A0008D00DF30552049288D01E83E8C008D09F8
:1000B000FC30031C5E288C0703185B288C07640047
:1000C0008D0F5B280C1864288C1C68280000682899
:1000D000080084001D088A001C0882008313031393
:1000E00083126400080083161E308500FF308600EE
:1000F00081138312FF30A400F6206400FF30060253
:1001000003188B280608A4008E206400FF30060226
:1001100003188B2885280A3047207A280530A2004A
:100120000130A0002D309600033097009A019B010A
:100130000530950001309C009D01AA303F2005301C
:10014000950001309C009D0100303F200530950056
:1001500001309C009D01FF303F200530A20001309E
:10016000A0002D309600033097009A019B01453086
:10017000022054300220453002202408022005309D
:10018000A2000130A0002D309600033097009A01A4
:100190009B014530022054300220453002202408C3
:1001A00002200530A2000130A0002D30960003305F
:1001B00097009A019B0145300220543002204530BF
:1001C0000220240802200530A2000130A0002D30BA
:1001D0009600033097009A019B014530022054306D
:1001E0000220453002202408022008001E300505A8
:1001F000A40064001E3024020318FF288E2064002F
:100200001E30050203180529FF280800630006298F
:02400E00FD3F74
:00000001FF


alıcı kodları:

:100000006128640017200318012822209401083079
:100010008F00232017200318940A971E94018E0C3A
:100020008F0B0928971A8E1323200E080800220828
:10003000840020088417800484130005171B200601
:10004000FF3E08001F1717081F39FF3E8D001608D6
:10005000F53E03188D0A1F1F40281F138C00023025
:10006000572040288F018E00FF308E07031C8F071A
:10007000031C5C2803308D00DF30402034288D01C4
:10008000E83E8C008D09FC30031C49288C070318BE
:1000900046288C0764008D0F46280C184F288C1CAE
:1000A000532800005328080003108D0C8C0CFF3ED1
:1000B000031854280C085C2883130313831264006C
:1000C00008008501831601308500860183128601B0
:1000D0008501A4010530A2000130A0002D3096005A
:1000E000033097000120453C031D72280120543C39
:1000F000031D72280120453C031D72280120A40025
:1001000064002408FF3C031D872869280C2964002B
:100110002408FE3C031D9228013086068316061033
:1001200083120C2964002408FD3C031D9D28023025
:1001300086068316861083120C2964002408FB3C73
:10014000031DA828043086068316061183120C2985
:1001500064002408F73C031DB32808308606831684
:10016000861183120C2964002408EF3C031DBE286D
:10017000103086068316061283120C2964002408A8
:10018000DF3C031DC92820308606831686128312A1
:100190000C2964002408BF3C031DD4284030860687
:1001A0008316061383120C29640024087F3C031D68
:1001B000DF28803086068316861383120C2964009C
:1001C00024081C3C031DEA2802308506831685108E
:1001D00083120C29640024081A3C031DF5280430FE
:1001E00085068316051183120C2964002408163C29
:1001F000031D0029083085068316851183120C29FA
:10020000640024080E3C031D0C298310051E831472
:1002100083180516831C0512C83032206928630034
:020220000F29A4
:02400E00FD3F74
:00000001FF






Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

Yusuf usta

Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.