Gunakan MimeTex/LaTex untuk menulis simbol dan persamaan matematika.

Welcome to Forum Sains Indonesia. Please login or sign up.

April 20, 2024, 06:17:56 AM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 188
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 194
Total: 194

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

Sensor Suhu ATMEGA16 menggunakan BASCOM AVR

Dimulai oleh wijana, April 30, 2009, 06:00:28 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

wijana

ada yang punya source code untuk membaca ADC trus ngirim melalui UART (RS232) menuju ke komputer menggunakan BASCOM AVR untuk ATMEGA16?klo ada,boleh share..soalnya sy kemaren udh cb.. error mulu pas download ke micro-nya.mau sy compare dengan yang lain..thax a lot..

insan sains

@Wijana :
Kalo boleh, sharing aja dulu source code yang udah dicobanya. Nanti akan ada yang mengoreksi kalo benar ada kekeliruan di programnya. Learning from mistakes... thanks.
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

wijana

ini saya coba share listing program pake BASCOM AVR...mohon koreksinya ya..thx

====Program pembacaan suhu menggunakan bascom avr=====
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

Dim Dataadc As Word
Dim Datasuhu As Single
Const Vreff = 2.56

Do
Dataadc = Getadc(0)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
datasuhu=datasuhu*100
Print "suhu sekarang:" ; Fusing(datasuhu , "#.##")
Wait 1
Loop


listring program diatas baru pake satu sensor,,klo yang pake 3 sensor masih bingung,,,
kemaren2 udh sy coba download ke mikro pk AVRProg...pas di coba tes pake hyperterminal di windows...koq g muncul2 ya..mgkinkah ini pertanda bhw ad kegagalan download?

thx

insan sains

Nampak programnya sudah tepat.

Kalo masih belum menampilkan karakter apapun, ada dua kemungkinan :
1. Setting-an hyperterminalnya belum sinkron dgn uC
2. Masalah di downloading uC-nya

Langkah pertama yang harus dilakukan adalah memastikan setting-an hyperterminal. Pastikan baudrate-nya ada pada 9600, 8-N-1, flowcontrol-none

Langkah kedua, uji coba koneksi serialnya.

-------------------------
$baud = 9600
$crystal = 11059200     
Print "Forum Sains"
End
-------------------------

Seharusnya di layar komputer tercetak, "Forum Sains". Nah, kalo tidak tampil berarti masalahnya ada pada saat downloading ke uC nya.

Coba itu dulu ya. Kalo berhasil coba bakarkan program yang tadi pada uC dan coba lagi lihat di hyperterminal. Nanti kita lanjut bagaimana membuat-nya dapat membaca 3 sensor.
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

wijana

#4
saya sudah mencoba program yang diberikan,, tetapi tetap saja tidak muncul di hyperterminal,, saya menduga ini ada masalah pada downloadingnya,,setelah saya click tombol "Program" pada AVRProg maka muncul kata - kata seperti ini :

"Address:0x0000, Expected:0x0c, Received:0xff"

waah,,saya tambah bingung dengan munculnya tulisan itu,,kemudian bacaan "Program EEPROM...Verifying...Failed"

it means,,downloading program ke mikrokontroler gagal kan?

saya lantas berpikir,,apakah compile .hex yang telah dibuat di BASCOM AVR tidak cocok menggunakan AVRProg (yang sebenarnya digunakan untuk Bahasa C atau assembler) sebagai tool downloader-nya?


insan sains

Owalah.. kalo begitu emang ada masalah saat downloadingnya...

btw.. saat mencompile programnya, gak ada masalah kan?

Kalo sudah jadi hex file, seharusnya tidak masalah.

Apa mungkin IC-nya sudah bad?
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

wijana

bagaimana cara kita mengetahui bahwa IC yang digunakan telah BAD? so,,menurut mas solusinya gmn?haruskah saya gnt mikrokontroler yang lain?

insan sains

Kutip dari: wijana pada Mei 20, 2009, 02:19:49 PM
bagaimana cara kita mengetahui bahwa IC yang digunakan telah BAD?

Kalo saya sih selama ini, kalo seandainya IC uC nya itu gak bisa diprogram, suka langsung maen hajar ajah ganti dengan yang baru. Mungkin member yang lain ada yang tahu cara menganalisa IC uC yang BAD, yang gak bisa lagi diprogram?

Kutip dari: wijana pada Mei 20, 2009, 02:19:49 PM
so,,menurut mas solusinya gmn?haruskah saya gnt mikrokontroler yang lain?

Langkah singkatnya begitu, ganti dengan yang baru..
Maaf kalo saran saya kurang memuaskan
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

wijana

sistem minimum saya kan untuk atmega 16,,seandainya saya ganti mikrokontrolernya menjadi atmega 8535,, apakah sistem minimum ini cocok untuk atmega 8535?khawatirnya ketika saya gnti dengan atmega 8535,,nanti malah tidak cocok,,sehingga IC max 232 rusak dan komponen lain rusak?

maaf sy rewel..soalnya masih newbie di dunia mikrokontroler,,hehe..thanx bgt buat mas insan,, atas saran - sarannya...it was very helpful for me...

mgkn member lain pernah mengalami pengalaman diatas?atw punya info - info yang bs d share d sini?silahkan jangan sungkan2..hehe
;D

wijana

ini saya coba share listing program pake BASCOM AVR...mohon koreksinya ya..thx

====Program pembacaan suhu menggunakan bascom avr=====
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

Dim Dataadc As Word
Dim Datasuhu As Single
Const Vreff = 2.56

Do
Dataadc = Getadc(0)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
datasuhu=datasuhu*100
Print "suhu sekarang:" ; Fusing(datasuhu , "#.##")
Wait 1
Loop
=================================================================

program diatas menggunakan 1 sensor suhu..namun saya ingin modify apabila menggunakan 3 sensor,,bagaimana listing programnya?ada yang bisa bantu?

terima kasih


insan sains

Topik ini rasanya double, jadi saya gabung saja ke topik sebelumnya....
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

insan sains

@ mas Wijana :

Berarti sudah berhasil dengan program 1 sensor suhu itu yach?

Kalo cuman nambahin sensornya paling gampang. Kita tinggal bikin function buat baca ajah..

-------------------------------------------------------------------

'FUNGSI UNTUK MENGAMBIL DATA DARI SENSOR
Sub ambil_suhu(ch0 as integer)
   Start adc
   Dataadc = Getadc(ch0)
   Datasuhu = Dataadc / 1024
   Datasuhu = Datasuhu * Vreff
   Datasuhu = Datasuhu*100
   Nilai_suhu = fusing(datasuhu, "#,##")
   Wait 1
End Sub

-------------------------------------------------------------------

Tinggal di panggil deh functionnya. ch0 diisi dengan channel pin ADC yang hendak dibaca.
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

wijana

=================Program suhu menggunakan 3 sensor==========================
$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Internal
Declare Sub Ambil_suhu0(ch0 As Integer)
Declare Sub Ambil_suhu1(ch3 As Integer)
Declare Sub Ambil_suhu2(ch4 As Integer)
Dim Dataadc As Word
Dim Datasuhu As Single
Dim Nilai_suhu As Integer
Const Vreff = 2.56

Do
Call Ambil_suhu0
Print Nilai_suhu

Call Ambil_suhu1
Print Nilai_suhu

Call Ambil_suhu2
Print Nilai_suhu

Loop
End

Sub Ambil_suhu0(ch0 As Integer)
Start Adc
Dataadc = Getadc(ch0)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
Datasuhu = Datasuhu * 100
Nilai_suhu = Fusing(datasuhu , "#.##")
Waitms 100
End Sub


Sub Ambil_suhu1(ch3 As Integer)
Start Adc
Dataadc = Getadc(ch3)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
Datasuhu = Datasuhu * 100
Nilai_suhu = Fusing(datasuhu , "#.##")
Waitms 100
End Sub

Sub Ambil_suhu2(ch4 As Integer)
Start Adc
Dataadc = Getadc(ch4)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
Datasuhu = Datasuhu * 100
Nilai_suhu = Fusing(datasuhu , "#.##")
Waitms 100
End Sub
======================================================================

program diatas masih ada kesalahan,,,tapi saya g tau yang mana yang salah...hehe
kata bascom-nya sih gini :
"Incorect number parameters. The number of parameters must be [1]"
kesalahan tersebut mengarah pada fungsi "Call"...udah saya utak atik...tetep aja masih kayak gitu..ada yng punya solusi??

thank you


insan sains

Kutip dari: wijana pada Mei 28, 2009, 12:03:28 PM
program diatas masih ada kesalahan,,,tapi saya g tau yang mana yang salah...hehe
kata bascom-nya sih gini :
"Incorect number parameters. The number of parameters must be [1]"
kesalahan tersebut mengarah pada fungsi "Call"...udah saya utak atik...tetep aja masih kayak gitu..ada yng punya solusi??

Program yang mas Wijana bikin men-syaratkan ada 1 parameter bernama ch0 yang berupa integer.

Sub Ambil_suhu0(ch0 As Integer)

Jadi seharusnya cara memanggilnya adalah dengan menyertakan nomor ADC yang akan diambil nilai suhunya.

bukan

Call Ambil_suhu0

melainkan :

Call Ambil_suhu0(1)

* tergantung dari port ADC mana yang akan diperiksa
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

wijana

berikut ini program yang saya buat menggunakan 3 sensor temperatur,,

$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Internal
Declare Sub Ambil_suhu0(byval Ch0 As Integer)
Declare Sub Ambil_suhu1(byval Ch3 As Integer)
Declare Sub Ambil_suhu2(byval Ch4 As Integer)
Dim Dataadc As Word
Dim Datasuhu As Single
Const Vreff = 2.56

Do
Call Ambil_suhu0(0)
Call Ambil_suhu1(3)
Call Ambil_suhu2(4)
Loop
End

Sub Ambil_suhu0(ch0 As Integer)
Start Adc
Dataadc = Getadc(ch0)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
Datasuhu = Datasuhu * 100
Print "ADC 1 : " ; Fusing(datasuhu , "#.##")
Waitms 500
End Sub


Sub Ambil_suhu1(ch3 As Integer)
Start Adc
Dataadc = Getadc(ch3)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
Datasuhu = Datasuhu * 100
Print "ADC 2 : " ; Fusing(datasuhu , "#.##")
Waitms 500
End Sub

Sub Ambil_suhu2(ch4 As Integer)
Start Adc
Dataadc = Getadc(ch4)
Datasuhu = Dataadc / 1024
Datasuhu = Datasuhu * Vreff
Datasuhu = Datasuhu * 100
Print "ADC 3 : " ; Fusing(datasuhu , "#.##")
Waitms 500
End Sub


pertanyaan :
1. Kenapa pada bascom avr tidak dapat d compile?padahal sudah tidak ada error yang telah ditemukan...
2. Apakah maksud Vreff d sana?
3. Apakah Vcc (tegangan dari baterai) berpengaruh pada output ADC?saya menggunakan Vcc 7.4 volt