Forum Sains Indonesia

Ilmu Terapan => Teknik Elektro => Ilmu Teknik => Mikrokontroler dan Robotika => Topik dimulai oleh: wijana pada April 30, 2009, 06:00:28 PM

Judul: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: wijana pada April 30, 2009, 06:00:28 PM
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..
Judul: Re: Source Code ATMEGA16
Ditulis oleh: insan sains pada Mei 08, 2009, 04:36:16 PM
@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.
Judul: Re: Source Code ATMEGA16
Ditulis oleh: wijana pada Mei 15, 2009, 06:52:51 PM
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
Judul: Re: Source Code ATMEGA16
Ditulis oleh: insan sains pada Mei 16, 2009, 03:40:35 PM
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.
Judul: Re: Source Code ATMEGA16
Ditulis oleh: wijana pada Mei 18, 2009, 08:33:05 AM
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?

Judul: Re: Source Code ATMEGA16
Ditulis oleh: insan sains pada Mei 18, 2009, 04:55:46 PM
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?
Judul: Re: Source Code ATMEGA16
Ditulis oleh: wijana pada Mei 20, 2009, 02:19:49 PM
bagaimana cara kita mengetahui bahwa IC yang digunakan telah BAD? so,,menurut mas solusinya gmn?haruskah saya gnt mikrokontroler yang lain?
Judul: Re: Source Code ATMEGA16
Ditulis oleh: insan sains pada Mei 20, 2009, 09:04:50 PM
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
Judul: Re: Source Code ATMEGA16
Ditulis oleh: wijana pada Mei 20, 2009, 11:08:46 PM
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
Judul: Membaca Suhu menggunakan BASCOM AVR
Ditulis oleh: wijana pada Mei 25, 2009, 02:40:38 PM
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

Judul: Re: Membaca Suhu menggunakan BASCOM AVR
Ditulis oleh: insan sains pada Mei 25, 2009, 04:48:29 PM
Topik ini rasanya double, jadi saya gabung saja ke topik sebelumnya....
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: insan sains pada Mei 25, 2009, 04:58:34 PM
@ 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.
Judul: Mohon Koreksinya ya...
Ditulis oleh: wijana pada Mei 28, 2009, 12:03:28 PM
=================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

Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: insan sains pada Mei 28, 2009, 01:00:30 PM
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
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: wijana pada Juni 08, 2009, 01:24:13 PM
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
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: insan sains pada Juni 09, 2009, 10:31:28 AM
Kutip dari: wijana pada Juni 08, 2009, 01:24:13 PM
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

1. Apakah menampilkan pesan error? Bagaimana teks error yang ditampilkan?
2. Vreff adalah salah satu konstanta untuk mengkonversi ke data analog
3. Vcc berhubungan dengan konstruksi uC sebagaimana yg tertera di datasheet. Ini adalah harga mati bagi programmer dan designer yang sudah ditetapkan sama produsennya. Dan umunnya di datasheet integrated circuit memang harus menggunakan voltage digital. Dan Vcc kebanyakan menggunakan tegangan 5 V.
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: wijana pada Juni 09, 2009, 11:39:12 AM
Kutip dari: insan sains pada Juni 09, 2009, 10:31:28 AM
1. Apakah menampilkan pesan error? Bagaimana teks error yang ditampilkan?

Tidak menampilkan pesan error apapun.."No errors found"

Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: insan sains pada Juni 15, 2009, 09:15:59 AM
gimana perkembangannya nie?

btw... yang sensor satu channel sudah berhasil kan?
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: wijana pada Juni 15, 2009, 01:41:04 PM
pernah berhasil...dan saya tampilkan ke hyperterminal...namun apa yang terjadi,, koq tampilannya menunjukkan suhu 15.89 - 16.00...padahal tegangan input ADC atau tegangan output lm35 = 0.28 v...itu tuh udah bener atau sebenernya salah?jadi bingung
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: insan sains pada Juni 18, 2009, 01:19:58 PM
Silahkan dibaca dulu tentang konversi ADC nya ya..

http://www.forumsains.com/mikrokontroler-dan-robotika/tanya-akuisi-data-buat-lm-35-saya-pake-avr-8535/msg37050/#msg37050

Mas Wijana bakalan bisa menghitung sendiri, seharusnya berapa... ^_^
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: hasan_pray02 pada Maret 08, 2010, 10:01:40 AM
maf ikut nimbrung
pak kalo pake 8535 yang dirubah apa y ..?
terima kasih
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: jatihisivalley pada Maret 08, 2010, 10:23:12 PM
Kutip dari: wijana pada Juni 08, 2009, 01:24:13 PM
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

1. Bascom anda versi berapa? b***kan bukan ?, biasanya hex file yang dihasilkan oleh compiler yang cacat.. menghasilkan file hexout yang cacat, g bisa di panggil sama program downloader... so pastikan compiler anda up to date,dan ga "cacat"... saya pernah ngalami-nya.. alur program udah benar.. tapi pas mrogram ga bisa terus... ternyata file hex yang dihasilkan cacat, yang tentunya ini bikin "pusing" program uploader...

2. Sebelum terjun programing, alangkah baiknya anda buka2 dulu datasheet Chip AVR yang dipake... pelajari.. Vref dalam ADC itu adalah tegangan referensi yang mana nantinya tegangan ini menjadi acuan dalam proses digitalisasi tegangan analog yang masuk... keluaran dari ADC dinyatakan sebagai DxVref, dimana D (binary value) adalah keluaran digital dari modul ADC tersebut. Di AVR, kita bisa mengunakan internal 2.56 vref atau external vref yang di hubungkan ke pin AREF dari avr. Jadi tegangan analog yang terbaca sangat tergantung dari Vref ini dan resolusi dari ADC yang di pake (8/10 bit).

3. Vcc 7.4 volt !!! apa mega16 anda ga berasap :D, gede banget VCC-nya, tegangan untuk mikro / TTL itu maksimum 5 volt... yang mungkin ini juga faktor yang menyebabkan IC anda susah di program , jangan2 udah jebol.. di datasheet ada bagian Absolute Maximum Ratings, jadi anda jangan coba2 melebihi nilai disana.. btw just info chip ATmega32 saya udah 1000x lebih di program dan sekarang masi OK.. banyak hal yang menjadikan kita gagal upload, tegangan VCC ga stabil, kabel programmer yang terlalu panjang.. dan AVR yang udah jebol :D
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: hasan_pray02 pada Maret 10, 2010, 10:25:00 AM
maksih ilmunya guru :P
btw  kalo lm 35 diganti sensor salinitas apa sama listingnya ??kalau g sama gimana yang benar??
terima kasih bantuannya
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: hasan_pray02 pada Maret 10, 2010, 05:57:24 PM
saya menggunakan atmega 8535
dengan sensor lm35
$regfile = "m8535.dat"
$crystal = 10000000
$baud = 19200
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40
Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Portc.6 , Rs = Portc.7


Config Lcd = 16 * 2

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

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

Do
   Start Adc
   Dataadc = Getadc(ch0)
   Datasuhu = Dataadc * 1024 / 5000
   Datasuhu = Datasuhu * Vreff
   Datasuhu = Datasuhu * 100
   Nilai_suhu = Fusing(datasuhu , "# , ##")
   Wait 1
Loop
unknow config parameter,invalid data type,variable not dimensioned,loop expected

sepertinya smua salah :P tapi saya g ngerti cos baru memeperlajarinya tolng bagi bgai ilmunya y ??maksih
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: hasan_pray02 pada April 02, 2010, 01:54:18 AM
gan ada yang bisa bantu list program saya diatas ??
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: laikhan pada Januari 15, 2011, 08:14:18 AM
bagaimana list program bascomavr jika membatasi suhu tersebut? misal di 38 derajat menggerakkan relay dan 35 derajat mengoffkan relay

terimakasih
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: laikhan pada Januari 15, 2011, 08:35:47 AM
Kutip dari: hasan_pray02 pada April 02, 2010, 01:54:18 AM
gan ada yang bisa bantu list program saya diatas ??

ni gan

'saya menggunakan atmega 8535 dengan sensor lm35
'-----------------------------------------------
$regfile = "m8535.dat"
$crystal = 10000000
$baud = 19200
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40
Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Portc.6 , Rs = Portc.7
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

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

Do
   Start Adc
   Dataadc = Getadc(0)
   Datasuhu = Dataadc / 1024
   Datasuhu = Datasuhu * Vreff
   Datasuhu = Datasuhu * 100
   Print "Nilai_suhu" ; Fusing(datasuhu , "# . ##")
   Wait 1



   Loop
'--------------------------- ni gan
Judul: Re: Sensor Suhu ATMEGA16 menggunakan BASCOM AVR
Ditulis oleh: wews pada Februari 15, 2011, 01:16:13 AM
maaf nih gan..

ada yg punya tutorial BASCOM ??