Alhamdulillah, akhirnya selesai juga contoh aplikasi RS-485 sederhana ini.
Aplikasi ini merupakan pengembangan dari aplikasi pembacaan suhu dengan SHT11 dengan penambahan kemampuan RS-485. Protocol yang digunakan adalah protocol yang sangat sederhana sekedar menunjukan bagaimana jaringan RS-485 bekerja. Dengan memahami prinsip dasar ini, penggunaan protocol seperti Modbus, DLMS, dan lain-lain, akan terasa lebih mudah, walaupun sebenarnya saya juga belum pernah mencoba protocol-protokol tersebut.
Antarmuka Mikro dan RS-485
Untuk menghubungkan mikrokontroler dengan jaringan RS-485 digunakan IC driver MAX487.
IC MAX487 merupakan IC driver RS-485 half-duplex. Pin kendali, terima (RE) dan kirim (DE) disatukan dan dihubungkan ke P3.2. Dengan konfigurasi ini, jika P3.2 HIGH, MAX487 dalam posisi mengirim data, sebaliknya jika P3.2, MAX487 dalam posisi menerima data. Untuk lebih jelasnya, silakan baca datasheet MAX487.
Posisi default adalah menerima. Ketika ada perintah dari master (PC), dan alamatnya sesuai, maka ketika harus merespon, mikro akan membuat P3.2 HIGH, lalu mengirim data. Dan mengembalikan P3.2 ke LOW setelah pengiriman selesai.
Antarmuka PC dan RS-485
Hubungan PC dengan RS-485 pada dasarnya sama dengan hubungan Mikro dan RS-485. Masalahnya, kalau di PC mungkin yang digunakan adalah dari RS-232 ke RS-485. Oleh karena itu sebelum masuk ke IC driver, level RS-232 terlebih dahulu dikonvert ke TTL. Untuk kendali driver digunakan pin RTS.
Contoh rangkaian antarmuka dan RS-485:
Dalam percobaan saya, jaringan RS-485 disimulasikan dengan Proteus. Hubungan antara Proteus dengan program aplikasi menggunakan Virtual serial port, seperti halnya contoh-contoh simulasi komunikasi serial yang ada di blog ini. Oleh karena itu agak sedikit berbeda dengan RS-485 sebenarnya.
Dalam simulasi ini, COMPIM di Proteus akan terhubung dengan salah satu port serial virtual, missal COM2, begitu juga dengan aplikasi PC, missal COM2. Nah kedua COM tersebut dihubungkan oleh Virtual Serial Port dengan koneksi sebagai berikut:
Koneksinya:
Oleh karena RTS terhubung dengan CTS, maka pengendali IC driver RS-485 akan terhubung dengan pin CTS.
Protokol Komunikasi
Seperti telah dijelaskan bahwa dalam contoh ini digunakan protocol komunikasi yang sederhana. Pada dasarnya ada 3 perintah yang digunakan
- Perintah pembacaan suhu dan kelembaban, menggunakan karakter ‘A’;
- Perintah menyalakan LED, ‘B’
- Perintah mematikan LED, ‘C’
Format perintahnya adalah:
ALAMAT |
PERINTAH |
0x0D |
Alamat menggunakan 2 karakter ‘00’ – ‘FF’. Jika alamat ‘00’, ini berarti perintah broadcast, artinya semua sensor akan menjalankan perintah tersebut,namun printah broadcast hanya untuk menyalakan dan mematikan LED.
Ketika menerima perintah, hal pertama yang dilakukan oleh mikrokontroler adalah mengecek alamat tersebut, jika sesuai maka mikro akan merespon sesuai dengan perintah yang diterima:
- Jika perintah pembacaan, mikro akan mengirimkan data suhu dan kelembaban dengan format seperti pada contoh blog sebelumnya, misalnya “26.3C;87.3%”
- Jika perintah menyalakan LED, mikro akan mengirim “LED ON”
- Jika mematikan LED, mikro akan mengirimkan “LED OFF”
- Jika perintah broadcast, maka mikro tidak akan mengirimkan apapun
procedure TForm1.sendrs485(command: string);
begin
if Port_State then
with ApdComPort1 do
begin
RTS:=true;
Output:=command+#13;
while ApdComPort1.OutBuffUsed>0 do
Application.ProcessMessages;
RTS:=false;
end;
end;
Filed under: Delphi, Micro Mania |
gan, tolong kirim ke email sya dong.
buat rangkaian konverter rs232 to rs 485 (MASTER) klu diproteus itu gmna?
sya pake rangkaian MASTER diatas kok gak bisa ya?
mphpn bantuanny gan.
ini buat tugas akhir saya gan.
THx
Kalau di proteus kan contoh aplikasi yng saya buat disimulasi oleh proteus? Pakai Compim, dan compim itu outputnya sudah TTL jadi bisa langsung sambung ke IC MAX487.
Kalau yang RS-232 to RS-485 ya pakai gambar yang lengkap di atas.
konfigurasiny gmna gan?
untuk pin RE sma pin DE max 487 itu masuk pin compim yg mna?
yg CTS ya?
tpi kok gak bisa di simulasikan ya?
saya pake VB 6.0 untuk ngendaliin simulasi di proteus.
CTSny itu di program di VB juga ya gan?
klu iya tolong kasih contoh programny dong?
ane msih blajar VB soalnya.
klu bsa kirim ke email saya ya?hehe
Seperti sudah dijelaskan di atas, untuk berkomunikasi dengan Proteus, program saya menggunakan Virtual Serial Port, semoga anda juga menggunakannya…
Kalau di-simulasi, karena konfigurasi virtual serial portnya, iya DE dan RE dikendalikan oleh CTS. Kalau diaktual, yang umum menggunakan RTS.
Untuk di VB6, akses port serialnya pakai MSCOMM ya? Kalau ya tinggal ngatur properti CTS true atau false saja
mas punya modul pembelajaran untuk membuat aplikasi usb 2 spi gak mas???kalau punya tlng di share mas….
Kalau modul pembelajarannya sih belum dibikin, tapi saya pernah buat USB 2 SPI untuk downloader AT89S…
mas, mikronya yang ketiga-tiganya tu jadi slave semuanya y? file Hexa yang diisikan ke 3 mikro itu sama jg y? dari 1 aplikasi yang source nya sama… terima kasih.
ya, programnya sama…nanti yang membedakan adalah setingan alamatnya
gan kalau pngen monitoring suhu aja gak pakek kndali,,,dari beberapa slave ke satu PC (master) bagaimana yaw…mohon bimbingannya!!!
terima kasih
contoh yang saya buat juga gak pakai kendali, hanya monitoring suhu..mungkin bisa diperjelas maksudnya?
ya cuma untuk melihat nilai suhu pada sisi slave dan ditampilkan di tampilan software (akuisisi data) di PC bagaimana??
intinya untuk monitoring multi channel..bg2 kang!!
ada contoh yang pakai AVR tidak kang??
Untuk yang AVRnya belum ada nih…diambil prinsip-prinsipnya aja. RS-485 kan pada dasarnya komunikasi serial UART
oh ya kang misal saya ingin menampilkan nilai suhu dari beberapa slave ke master (mikrokontroler) dan di tampilkan pada lcd pada masternya,,,bagaimana contoh source code pengiriman dari masing2 slave dan bagaimana dengan penerimaan data pada sisi master yang pada nantinya di tampilkan di LCD….
thank’s
sangar kang, BSOD nya sudah tidak ada lagi pake jurus yang ini, hehehehe, hidup kang Usman….
mas..klo bikin keluaran RS 485 menjadi 2bh rs 485. yang satu buat display dan yang satu lagi buat mengirim data bisa g?balasin ke e-mail donk
buat perintah dari master k sleve listing programnya gimana ya?
soalnya saya pernah nyoba gagal terus.
mohon bantuannya