Minggu, 21 Januari 2018

CARA MEMPROGRAM MIKROKONTROL AVR ATMEGA 16

Cara Menggunakan BASCOM-AVR

robotics-university.com | Cara Menggunakan BASCOM-AVR. Tutorial ini akan menjelaskan mengenai penggunaan software BASCOM-AVR untuk membuat program dalam bahasa BASIC dari mulai menjalankan software, membuat program, hingga cara kompilasi program sehingga mendapatkan file yang kita butuhkan untuk di isikan kedalam IC mikrokontroler, yaitu file *.hex (hexadecimal).

A. SOFTWARE BASCOM-AVR
Software BASCOM-AVR adalah salah satu software yang dapat gunakan untuk belajar memprogram mikrokontroler AVR. BASCOM-AVR adalah merupakan software IDE (integrated development environment), karena dalam software tersebut telah dilengkapi dengan text (source code) editor dan compiler. Versi demo software ini dapat di-download di internet pada alamat link berikut ini:

BASCOM-AVR versi demo: Download disini!

dan dapat dipakai secara gratis dengan ukuran file program maksimal 4 kilobyte.Untuk dapat mengikuti tutorial ini, pastikan software BASCOM-AVR telah ter-install di komputer anda.

B. PENGGUNAAN SOFTWARE BASCOM-AVR

Langkah 1: Buka software BASCOM-AVR
Start>>All Program>>MCS electronics>> BASCOM-AVR.Atau dapat juga dengan double click icon software BASCOM-AVR yang tersedia di desktop.

Gambar 1. Icon shortcut software BASCOM-AVR

Gambar 2. Tampilan awal software BASCOM-AVR

Langkah 2: Membuka jendela text-editor baru
Untuk membuka jendela text editor baru, pilih opsi toolbar File>>New.

Gambar 3. Membuka halaman text editor baru

Setelah itu maka akan terbuka sebuah halaman baru yang dapat digunakan untuk membuat (mengetik) program.

Gambar 4. Jendela text-editor baru

Langkah 3: Membuat program BASIC
Buatlah program dalam bahasa BASIC pada jendela text-editor yang telah kita buka sebelumnya. Misalnya ketik program berikut ini:



Langkah 4: Menyimpan program BASIC
Cara menyimpan file program adalah sebagai berikut. Pilih opsi toolbar File>>Save (Ctrl+S).

Gambar 5. Langkah menyimpan file program

Jika sudah, maka tentukan nama file program BASIC yang kita buat dengan diberi ekstensi *.bas. Kemudian tentukan folder atau direktori tempat kita akan menyimpan file program tersebut.

Gambar 6. Memilih letak direktori penyimpanan file program

Langkah 5: Melakukan proses kompilasi program
Jika program sudah selesai dibuat maka langkah selanjutnya adalah mengkompilasi (compile) program tersebut sehingga didapatkan file-file baru yang kita butuhkan. Langkahnya adalah pada toolbar pilih Program>>compile atau cukup tekan tombol shortcut F7.

Gambar 7. Jendela cara melakukan kompilasi program *.bas ke *.hex

Jika di dalam program masih ada kesalahan, maka akan muncul pesan error.

Gambar 8. Jendela ‘errors”

Jika hal itu terjadi, perbaiki terlebih dahulu kesalahan yang diinformsikan pada jendela Error. Jika perbaikan telah selesai dilakukan, maka selanjutnya lakukan kompilasi program kembali. Apabila langkah ini berhasil maka akan diperoleh beberapa file baru, salah satunya adalah file berekstensi *hex (heksa) yang akan kita download kedalam IC mikrokontroler AVR. Berikut ini hasil kompilasi program dalam file *.hex.

Gambar 9. File hexadecimal (*.hex) hasil kompilasi program

Dengan demikian, file program yang kita buat dengan bahasa BASIC telah siap diaplikasikan kedalam IC mikrokontroler yang kita gunakan. Ingat!, software ini hanya dapat digunakan untuk memprogram IC mikrokontroler ATMEL AVR. Seperti nama software ini, Basic Compiler AVR (BASCOM-AVR).
Tag : BASCOM-AVR
SUMBER:http://www.robotics-university.com/2013/04/cara-menggunakan-bascom-avr.html

Minggu, 14 Januari 2018

CARA MEMPROGRAM ARDUINO



Compass Sensor BNO055

Halo Sobat Arduino Indonesia, berbagi hal yang baru lagi nih, berhubung sensor kompas gy 271 dan 273 yang semakin hari semakin kirang bagus datanya dan kadang-kadang beli juga dapetnya yang palsu a.k.a FAKE. maka memutuskan untuk move on dari kompas yang lama, nah kali ini pilihan jatuh pada produk adafruit BNO055, memang sih harganya 10x lipatnya yang versi hmc5883 atau hmc5983 tapi kita test dulu yanh performanya beberapa hari ini.

Sebenarnya sensor ini gak hanya kompas saja sih, tapi IMU 9DOF, ada acceleronya, gyro, magneto. nah untuk kompas kita pakai yang magnetometer. oke langsung saja sobat Arduino, saya akan berbagi source code bagaimana sensor BNO055 menghasilkan sudutnya.

Nah pertama kita sambung dulu ke arduino, pakai komunikasi i2c ya

 Sensor  ----------- Arduino
Vin                        5V
gnd                        gnd
SDA                      A4
SCL                      A5

Setelah di sambung menggunakan kabel jampur langsung coba program berikut ini


//arduino.web.id


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>

/* This driver reads raw data from the BNO055

   Connections
   ===========
   Connect SCL to analog 5
   Connect SDA to analog 4
   Connect VDD to 3.3V DC
   Connect GROUND to common ground

   History
   =======
   2015/MAR/03  - First release (KTOWN)
*/

/* Set the delay between fresh samples */
#define BNO055_SAMPLERATE_DELAY_MS (100)

Adafruit_BNO055 bno = Adafruit_BNO055();
float heading;

/**************************************************************************/
/*
    Arduino setup function (automatically called at startup)
*/
/**************************************************************************/
void setup(void)
{
  Serial.begin(9600);
  Serial.println("Test Heading"); Serial.println("");

  /* Initialise the sensor */
  if(!bno.begin())
  {
    /* There was a problem detecting the BNO055 ... check your connections */
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }

  delay(1000);

  bno.setExtCrystalUse(true);

}

void loop(void)
{
  // Possible vector values can be:
  // - VECTOR_ACCELEROMETER - m/s^2
  // - VECTOR_MAGNETOMETER  - uT
  // - VECTOR_GYROSCOPE     - rad/s
  // - VECTOR_EULER         - degrees
  // - VECTOR_LINEARACCEL   - m/s^2
  // - VECTOR_GRAVITY       - m/s^2
  imu::Vector<3> vector = bno.getVector(Adafruit_BNO055::VECTOR_MAGNETOMETER);

  /* Display the floating point data */
  Serial.print("X: ");
  Serial.print(vector.x());
  Serial.print(" Y: ");
  Serial.print(vector.y());
  Serial.print(" Z: ");
  Serial.print(vector.z());

  heading = atan2(vector.y(), vector.x());

  if(heading < 0)
    heading += 2*PI;
// Convert radians to degrees
   heading = heading * 180/M_PI;

  Serial.print(" head: ");
  Serial.print(heading);
  Serial.println("");

  delay(BNO055_SAMPLERATE_DELAY_MS);
}

nah silahkan di coba di serial monitor Mudah bukan, Salam Arduino Indonesia



Sensor Kompas Asli dan yang Palsu

Hallo sobat Arduino Indonesia, akhir-akhir ini dapat project robot yang salah satunya menggunakan sensor kompas, karena projectnya Low Cost mau nggak mau beli sensornya juga yang Low Cost, Nah jatuh pilihan pada gy271 ata gy273 Magnetometer. Dulu sih sering menggunakan sensor ini dan tidak ada masalah dalam pembacaan sensornya, palingan juga masalahnya pas data kurang akurat kalau di sekitar banyak benda yang mengandung besi :D.

Nah baru-baru ini beli beberapa sensor di tempat A, kok sensor tersebut gak bisa di pakai, sudah di scan address pake i2cscanner, dapat alamat nya 0X0D,  ketika di masukkan program arduino kompas lah kok x,y,z nya dapat nilai 0 semua.

Setelah melihat sensor kompas yang lama dapat alamat 0x1E, apakah gara-gara ini sensor kompas tidak bisa di gunakan, akhirnya setelah baca-baca artikel banyak juga yang bilang kalau sensor kompas yang saya gunakan adalah fake alias palsu. Sempat gak percaya masa iya sih.

Akhirnya nyoba beli lagi beberapa di Toko B, alamatnya juga sama 0X0D, was was pasti gak bisa juga, eh ternyata di coba bisa. dan beberapa kali test gak bisa lagi. di simpen sebentar, di coba bisa, terus gak bisa lagi.

nah usut punya usut setelah saya amati IC magnetometernya sama semua ya itu ada tulisannya DA

sedangkan yang tipe lain yang punya alamat 0x1E tulisannya ic nya L883

ada yang bilang sih di forum
different on the modules is the marking on the chip, L883 on the good one, 5883 on the bad one.
so sudah dapat di simpulkan ternyata  Kompas yang saya beli dengan tipe IC DA5883 dan beralamatkan 0x0D ternyata di simpulkan fake kompas. udah terlanjur beli banyak banget di beberapa toko yang berbeda dan semuanya gak bisa. #edisicurhatsensorkompas





Menambahkan board atmega16 di Arduino IDE

Halo sobat arduino Indonesia, di postingan sebelumnya tentang memprogram ATMEGA16 dengan arduino, kami menambah board atmega16 dengan cara menambah di boardmanager menggunakan gelatino,  tetapi setelah kami mencoba komunikasi i2c dengn ATMEGA 16 dengan library wire.h, terjadi error



Nah setelah nyari solusi sana sini, kami menjumpai artikel yang layak di share, sobat bisa lihat versi aslinya di sini http://openhardware.ro/using-atmega16-with-arduino-ide/ , dan kami akan share dengan versi bahasa Indonesia.

Pada intinya tutorial tersebut menjelaskan bahwa akan menambahkan board baru atmega16 di arduino tanpa lewat boardmanager, adapun langkahnya sebagai berikut :

  • Buka file 'boards.txt' , lokasi file boards.txt ini adalah di  arduino folder …[arduino folder]\hardware\arduino\avr\boards.txt.
  • Tambahkan pada baris paling akhir tulisan seperti di bawah ini

##############################################################
ATmega16-8.name=ATmega16-External 8Mhz
ATmega16-8.upload.tool=avrdude
ATmega16-8.build.mcu=atmega16
ATmega16-8.build.f_cpu=8000000L
ATmega16-8.build.core=arduino:arduino
ATmega16-8.build.variant=ATmega16
ATmega16-8.upload.maximum_size=16000
##############################################################
ATmega16-16.name=ATmega16-External 16Mhz
ATmega16-16.upload.tool=avrdude
ATmega16-16.build.mcu=atmega16
ATmega16-16.build.f_cpu=16000000L
ATmega16-16.build.core=arduino:arduino
ATmega16-16.build.variant=ATmega16
ATmega16-16.upload.maximum_size=16000
##############################################################

  • Setelah  itu, buat folder Atmega16 di dalam folder [arduino folder]\hardware\arduino\avr\variants
  • download file pins_arduino.h
  • copy file pins_arduino.h  yang sudah di download ke dalam folder tersebut.
  • Sekarang cek hasilnya di tools - board 
 
  • Setelah semuanya terdeteksi, terakhir rubah di file HardwareSerial.cpp atau bisa di lihat di folder [arduino folder]\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp
  • cari coding seperti di bawah ini
#if defined(__AVR_ATmega8__)
  config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif
  • Rubah dengan koding di bawah ini dan simpan

#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega32__) || defined(__AVR_ATmega16__)
  config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif

Install Boatloader Arduino di ATMEGA 16

Hai sobat arduino Indonesia, kemarin kami mencoba untuk menjadikan atmega 16 biar bisa di program menggunakan Arduino IDE, kenapa kami memprogram dengan arduino, ya karena sudah familier dengan arduino, jadinya akan lebih muda kalau atmega 16 yang kami punya di jadikan arduino.

Oke langkah pertama adalah menambahkan board gelatino di arduino IDE, caranya bagaimana. tenang sobat, berikut cara-caranya

  • sobat masuk ke preferences (File - Preferences), akan muncul seperti gambar berikut ini :
  
  • Klik Install

  • jika sudah selesai, coba cek di tools - board, maka akan muncul seperti dibawah ini
 
Langkah ke dua
Siapkan atmega 16 bisa yang DIP atau SMD, untuk kali ini kami pake yang DIP. dengan susunan sebagai berikut
  • Arduino Pin 13 ke ATMega16 Pin 8 (or SCK of another microcontroller) 
  • Arduino Pin 12 ke ATMega16 Pin 7 (or MISO of another microcontroller) 
  • Arduino Pin 11 ke ATMega16 Pin 6 (or MOSI of another microcontroller) 
  • Arduino Pin 10 ke ATMega16 Pin 9 (or RESET of another microcontroller) 
  • Arduino 5+ to ATMega16 Pin 10 (or Vcc of another microcontroller) 
  • Arduino Gnd to ATMega 16 Pin 11 (or Gnd of another microcontroller)
Kalau yang sudah punya rangkaian minimum system bisa langsung di sambungkan antara  minimum system ATMEGA dengan arduino, kalau belum bisa di buat dulu minimum system menggunakan projectboard. Kebetulan kami ada minimum system jadi langsung di sambungkan.

Langkah ke tiga
  • Upload skecth arduino ISP, bisa di buka di example arduino.
  • setelah berhasil upload di arduino, sekarang setting di tools - pilih programmer (programmer as ISP)
  • pilih board arduino gelatino w/ atmega 16
  • terakhir burn boatloader. tunggu sampai tulisan done boatloader
Langkah ke 4
  •  cek apakah bisa kita masukkan program arduino, buka blink, klik sketch - upload using programmer



Program Arduino untuk motor brushless

Hallo sobat Arduino Indonesia, banyak yang request tentang bagaimana caranya bikin program buat motor brushless. tempo hari sih ada juga yang minta tolong buat bikin skateboard elektrik, cuman sayang gak sempat dokumentasikan penuh, hanya foto part partnya aja, nanti saya upload di paling akhir ya.

oke konsep aslinya skateboard elektrik sama dengan tutorial berikut ini,
yang perlu di siapkan


  1. Potensiometer 
  2. arduino UNO (clone)
  3. ESC
  4. Brushless Motor
  5. Batere dan konektor
  6. kabel jumper
Susunan kabel bisa di lihat pada fritzin berikut ini,

 Tiga kaki pada potensiometer masuk ke ground, vcc dan A0 (kaki tengah poternsiometer), 3 kabel data esc yang di gunakan hanya 2 kabel, yang hitam ke GND dam yang kuning/orange/putih ke pin 9

untuk pemroraman bisa dilihat berikut :

#include <Servo.h>

Servo esc;
int throttlePin = 0;

void setup()
{
  esc.attach(9);
  Serial.begin(9600);
}

void loop()
{
  int throttle = analogRead(throttlePin);
  Serial.println(throttle);
  throttle = map(throttle, 0, 1023, 0, 179);
  esc.write(throttle);
}

upload ke arduino dan lihat perubahan pada motor brushless nya, semakin tinggi data yang di hasilkan potensiometer, semakin kenceng muter motor brushlessnya.

Selamat belajar arduino sobat arduino

nah ini sobat yang kemarin kita pakai buat skateboard elektrik