16F877 ve MAX 232 ile RS 232 Seri Haberleşme

This entry was posted by cagdas on Monday, 7 July, 2008 at

Fronius kaynak makinasının nasıl çalıştığını anlamak için mikrodenetleyicili ara kart tasarlaması gerekmektedir. RS422 seri iletişim standardının direkt kütüphanesini bulamadığımdan dolayı önce RS232′de sinyaller üretilip RS422 dönüştürücüyle aktarılabilinir. Eğer aktarım zamanında sorun çıkarsa direk kütüphane yazabilirim ancak biraz zamanımı alır.

RS232 standardı geliştirildiğinde TTL uC’ler piyasaya girmediğinden TTL entegrelerine uyumlu değillerdir. bilgisayarlar 12/24 V kullanırken TTL’ler yaklaşık 5 voltta çalışır. Bu gerilim farkını MAX232 entegresi ile aşarız. Aşağıda örnek devresini çizdim.

proteus pic 16f877 rs 232 devre şeması

RS232′de veriler karakter karakter gönderim olur. Karakterlerin ASCII kodlarına göre 7 bitlik veri
olarak yollanır. Bu şekilde Fronius’un manuelindekine benzer veriler yollanabilinir. RS232′de
iletişim asenkron tiptedir yani alıcı ile vericinin saatleri aynı olmak zorunda değildir. Ancak verinin
iletilebilmesi için senkronizasyon gerekmektedir. Bu yüzden start biti ile iki taraf da saatlerini
senkronize eder. Start biti lojik sıfırdır. 4Mhz de kullanılan 16f877 uC sinde 118 us uzunluğundadır.
7 veya 8 bitlik veri yollanıp ardından stopla durdurulur. Veri bitleri de yine aynı uygulamada
104-107 mikrosaniyedir. Stop biti de lojik sıfırdır. Yazdığım koda ve bağlı olduğu kütüphaneye göre
her seferde 10 bit yollanır. RS232 de asıl yollanan 7-8 bitin önce 2 tabanında tersi alınıp ardından
sıralanışı tersine çevrilerek iletilir.

Örnek 1.1
Yollanan karakter: !
ASCII karşılığı: 33 = 0100001
Yollanan veri: 0101111011000…
Çevrilmiş hali: 1000010

Yollanan karakter: a
ASCII karşılığı: 97 = 1100001
Yollanan veri: 0101111001000…
Çevrilmiş hali:
Yollanan karakter: $
ASCII karşılığı: 36 = 0100100
Yollanan veri: 0111011011000…
Çevrilmiş hali: 0100100
Direk sayısal veri olarak gönderim:
char value;
value = 1;
putc(value);
value değeriyle oyanayarak istediğimiz veriyi girebiliyoruz.
1 için gönderile veri: 0101111111000…
Çevrilmiş hali: 00000001
Bu kullanım işimize daha fazla yarayacaktır.
RS232′den RS242′ye Çevirme
Perpa’da bu tür dönüştürücüler 40-50 TL’ye bulunmaktaymış. İki standardın genel özelliklerini
karşılaştırabiliriz:

Özellik RS232 RS422
Maksimum kablo uzunlukları 40 FT. 4000 FT.
Maksimum Veri Oranları 20kb/s 10Mb/s
Gerilim Aralıkları + 3-25 arası 0 – 3-25 arası 1 + 2-4 ve – 2-4 aralıkları

ds 275 entegre şeması

Şeklinde bir dönüştürme entegresi kullanılabilir. Basit bir örneği http://www.kmitl.ac.th/~kswichit
%20/Rs422/Rs422.html adresinde var ancak endüstriyel uygulamalarda ne kadar başarılı olur
bilmiyorum.

NOT: Bir yıldır gnu linux dağıtımı Ubuntumu kullanıyordum ve proteustan iyice kopmuştum. RS 232′nin hazır devresini Onur Kalecik’in sitesinden alıp üzerine analog gösterge koydum. Şimdi hatırladım çoğu şeyin nasıl yapıldığını ancak ilk giriş kısmını hızla geçmemi sağladığı için okuldan arkadaşım Onur Kalecik’e teşekkür ederim.

Yazının PDF hali

VN:F [1.8.1_1037]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.1_1037]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Facebook
  • Google Bookmarks
  • MySpace
  • RSS
  • FriendFeed
  • Twitter

6 Yorum Yapılmış 16F877 ve MAX 232 ile RS 232 Seri Haberleşme

  1. sercan dedikine :P

    July 16th, 2008 at 16:16

    “4Mhz de kullanılan 16f877 uC sinde 118 us uzunluğundadır.
    7 veya 8 bitlik veri yollanıp ardından stopla durdurulur. Veri bitleri de yine aynı uygulamada
    104-107 mikrosaniyedir.”

    Hocam bu süreler standart süreler değil, seçilen bauda göre değişir. Verdiğin süreler 9600 baud için. Her bit için zaman aralıkları sadece baud rate e göre belirlenir.

    “RS232 de asıl yollanan 7-8 bitin önce 2 tabanında tersi alınıp ardından
    sıralanışı tersine çevrilerek iletilir.”

    Bunu da ilk defa sizden duyuyorum, isis de seri iletişim yapan iki üniteyi lojik analizörle dinlerseniz böyle olmadığını görebilirsiniz.

    Yazılarınızın devamını bekleriz, bu yorumu okuduktan sonra siliniz. İyi çalışmalar.

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.1_1037]
    Rating: 0 (from 0 votes)
  2. admin dedikine :P

    July 16th, 2008 at 16:42

    Evet baud rate’e göre değişmektedir haklısınız. Mesai bitimine yakın yazdığım yanlışlarla dolu yazıyı aslında güncelleyip siteye koyduğumu sanıyordum ama yanlış dosyayı koymuşum. Yorumunuz için çok teşekkür ederim hatamı görmemi sağladınız.
    İyi akşamlar.

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.1_1037]
    Rating: 0 (from 0 votes)
  3. onur dedikine :P

    July 18th, 2008 at 13:19

    çağdaş iyi bir çalışma bilgi paylaşta büyüyor gelişiyor. Kendine iyi bak iyi tatiller..

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.1_1037]
    Rating: 0 (from 0 votes)
  4. SAFFET dedikine :P

    October 26th, 2008 at 04:25

    USB DEN RS232 YE ÇEVİRİCİ LSC232F PIC İLE DİZÜSTÜ BİLGİSAYARI DİREK USB’DEN BAĞLIYABİLİYORSUN

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.1_1037]
    Rating: 0 (from 0 votes)
  5. SAFFET dedikine :P

    October 26th, 2008 at 04:28

    ALTAKİ ADRESLEDE DATALARI VAR
    http://www.senachip.com/lcs232f.php
    http://www.senachip.com/images/lsc232f1.jpg

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.1_1037]
    Rating: 0 (from 0 votes)
  6. ......... dedikine :P

    December 1st, 2008 at 15:29

    ffdfmjr

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.1_1037]
    Rating: 0 (from 0 votes)

Yorumla veya Soru Sor