Tentang iklan-iklan ini

Mengukur Jarak Dengan Sensor Ultrasonic HC-SR04 Melalui Link Ethernet W1500


Ethernet Shield W1500

Ethernet W1500 shield dapat digunakan untuk menghubungkan modul arduino ke dalam jaringan internet melalui koneksi kabel RJ45 (tidak termasuk dalam paket). Penggunaan modul W1500 sangat mudah dan cepat dilakukan, karena pada program IDE arduino sudah terdapat contoh programnya. Sehingga dalam hitungan menit Anda akan dapat melakukannya. Untuk melakukan testing terpisah bagaimana menggunakan Ethernet Shield W1500 silakan merujuk pada posting Testing W1500 Ethernet Shield.

Sensor Ultrasonic HC-SR04

Sensor Ultrasonic HC-SR04

Sensor ultrasonic HC-SR04 adalah salah satu modul yang dapat digunakan pada modul Arduino. Untuk menggunakan sangat mudah dan dalam waktu beberapa menit bisa dilakukan. Bagi yang ingin melakukan testing secara mandiri silakan merujuk posting Simple Arduino and HC-SR04 Example. Datasheet dapat diunduh HC-SR04.

Koneksi pin HC-SR04 adalah:

  • 5V Supply
  • Trigger Pulse
  • Echo Pulse O
  • 0V Ground

seperti terlihat dibawah ini:

Selanjutnya, untuk melakukan testing komponen yang dibutuhkan adalah:

  • 1 unit sensor ultrasonic HC-SR05
  • 4 pin kabel jumper female-male
  • 1 unit modul arduino
  • 1 unit modul ethernet W1500
  • 1 kabel RG45
  • 1 kabel USB
HC-SR04 dan kabel jumper female-male

HC-SR04 dan kabel jumper female-male

 

Pemasangan kabel jumper pada HC-SR05

Pemasangan kabel jumper pada HC-SR05

Pemasangan kabel jumper pada modul ethernet W1500

Pemasangan kabel jumper pada modul ethernet W1500

Pemasangan kabel RG45 pada W1500

Pemasangan kabel RG45 pada W1500

Pemasangan kabel RG45 pada Komputer

Pemasangan kabel RG45 pada Komputer

Source code yang dipakai dapat dilihat dibawah ini:


/*
Web Server

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

*/

#include <SPI.h>
#include <Ethernet.h>

#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define LEDPin 13 // Onboard LED

int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,168,177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}


// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}


void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);

digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;

if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate "out of range" */
Serial.println("-1");
digitalWrite(LEDPin, HIGH);
}
else {
/* Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}

// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");  // the connection will be closed after completion of the response
client.println("Refresh: 1");  // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
/*
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
*/
client.print("Distance:  ");
client.print(distance);
client.print(" cm");
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}

Lebih lengkap langkah-langkahnya silakan simak pada video berikut:

Demikian, semoga bermanfaat.

 

 

Tentang iklan-iklan ini

Testing W1500 Ethernet Shield


ethernet shield

Pada posting kali ini, Anda akan dapat melakukan testing dan pengetahuan dasar bagaimana menggunakan ethernet W1500 shield.

Ethernet W1500 shield dapat digunakan untuk menghubungkan modul arduino ke dalam jaringan internet melalui koneksi kabel RJ45 (tidak termasuk dalam paket). Penggunaan modul W1500 sangat mudah dan cepat dilakukan, karena pada program IDE arduino sudah terdapat contoh programnya. Sehingga dalam hitungan menit Anda akan dapat melakukannya.

Untuk dapat melakukan testing modul ini, komponen yang dibutuhkan adalah:

 

ethernet shield 1

Program yang digunakan untuk melakukan testing dapat diambil dari bawaan software IDE Arduino:


/*
Web Server

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

*/

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}

void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");  // the connection will be closed after completion of the response
client.println("Refresh: 5");  // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}

 

Langkah untuk testing dapat diikuti melalui video berikut:

Untuk mengetahui lebih lanjut tentang shield ini dapat merujuk ke artikel lengkap disini Arduino Ethernet Shield.

Membuat Gelombang Sinus Dengan 12-Bit DAC MCP4921


pin

MCP4921 adalah DAC keluaran Microchip Technology Inc, yang memiliki fitur:

  • resolusi 12-bit
  • Single/dual channel DAC
  • Rail-to-Rail Output
  • Interface SPI dengan clock support sampai 20 MHz
  • Dapat beroperasi secara simultan
  • Setling time 4,5 uS
  • Power Supply Single 2,7Volt – 5,5Volt

Untuk dapat menggunakan DAC ini dapat merujuk pada datasheet yang menunjukkan timing SPI sebagai berikut:

spi timing

Untuk rangkaian dapat mengukuti seperti digambarkan berikut:

rangkaian

Dengan menggunakan software Code Vision dapat dibuat sebuah program untuk menuliskan data ke DAC seperti berikut:


void TulisDAC(unsigned  int data,int config)
{
// Take the top 4 bits of config and the top 4 valid bits (data is actually a 12 bit number) and or them together
int top_msg = (config & 0xF0) | (0x0F & (data >> 8));

// Take the bottom octet of data
int lower_msg = (data & 0x00FF);

PORTB.5=1;
//--CS low
PORTB.4=0;
// Send first 8 bits
spi(top_msg);
// Send second 8 bits
spi(lower_msg);
//--CS high
PORTB.4=1;
PORTB.5=0;
}

 

File Utama:

/*******************************************************
This program was created by the
CodeWizardAVR V3.10 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : 
Version : 
Date    : 21/05/2014
Author  : 
Company : 
Comments: 


Chip type               : ATmega128
Program type            : Application
AVR Core Clock frequency: 10,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 1024
*******************************************************/

#include <mega128.h>

// Alphanumeric LCD functions
#include <alcd.h>

// sin function
#include <math.h>

// Look-up table dimension
#define SIN_TABLE_DIM 100

// Look-up table with values needed to obtain a sinusoidal waveform
unsigned int sin_table[SIN_TABLE_DIM];
// Look-up table index
#if SIN_TABLE_DIM>255
unsigned int index;
#else
unsigned char index;
#endif
// SPI functions
#include <spi.h>
#include "perpus.c"
void TulisDAC(unsigned  int data,int config) 
{
  // Take the top 4 bits of config and the top 4 valid bits (data is actually a 12 bit number) and or them together
  int top_msg = (config & 0xF0) | (0x0F & (data >> 8));
  
  // Take the bottom octet of data
  int lower_msg = (data & 0x00FF);
  
  PORTB.5=1;
  //--CS low
  PORTB.4=0;
  // Send first 8 bits
  spi(top_msg);
  // Send second 8 bits
  spi(lower_msg);
  //--CS high
  PORTB.4=1;
  PORTB.5=0;
}



// Declare your global variables here

// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer1 value
TCNT1H=0xFFEC >> 8;
TCNT1L=0xFFEC & 0xff;
// Place your code here
if (index>=SIN_TABLE_DIM) index=0;
TulisDAC(sin_table[index++],0x30);
}


void main(void)
{
// Initialize the lookup table for sinusoidal waveform
for (index=0; index<SIN_TABLE_DIM; index++)
    sin_table[index]=(unsigned int) (2047.0*sin(index*((2*PI)/SIN_TABLE_DIM))+2047.0);

// Waveform generation will start with 0 phase
index=0;
awal();
lcd_init(16);

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here

      }
}


</pre>

File pendukung.

void awal(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=In Bit6=In Bit5=Out Bit4=Out Bit3=In Bit2=Out Bit1=Out Bit0=Out 
DDRB=(0<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=T Bit6=T Bit5=0 Bit4=0 Bit3=T Bit2=0 Bit1=0 Bit0=0 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Port E initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRE=(0<<DDE7) | (0<<DDE6) | (0<<DDE5) | (0<<DDE4) | (0<<DDE3) | (0<<DDE2) | (0<<DDE1) | (0<<DDE0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTE=(0<<PORTE7) | (0<<PORTE6) | (0<<PORTE5) | (0<<PORTE4) | (0<<PORTE3) | (0<<PORTE2) | (0<<PORTE1) | (0<<PORTE0);

// Port F initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRF=(0<<DDF7) | (0<<DDF6) | (0<<DDF5) | (0<<DDF4) | (0<<DDF3) | (0<<DDF2) | (0<<DDF1) | (0<<DDF0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTF=(0<<PORTF7) | (0<<PORTF6) | (0<<PORTF5) | (0<<PORTF4) | (0<<PORTF3) | (0<<PORTF2) | (0<<PORTF1) | (0<<PORTF0);

// Port G initialization
// Function: Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRG=(0<<DDG4) | (0<<DDG3) | (0<<DDG2) | (0<<DDG1) | (0<<DDG0);
// State: Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTG=(0<<PORTG4) | (0<<PORTG3) | (0<<PORTG2) | (0<<PORTG1) | (0<<PORTG0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
ASSR=0<<AS0;
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 10000,000 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// OC1C output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 2 us
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
TCNT1H=0xFF;
TCNT1L=0xEC;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

// Timer/Counter 3 initialization
// Clock source: System Clock
// Clock value: Timer3 Stopped
// Mode: Normal top=0xFFFF
// OC3A output: Disconnected
// OC3B output: Disconnected
// OC3C output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer3 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR3A=(0<<COM3A1) | (0<<COM3A0) | (0<<COM3B1) | (0<<COM3B0) | (0<<COM3C1) | (0<<COM3C0) | (0<<WGM31) | (0<<WGM30);
TCCR3B=(0<<ICNC3) | (0<<ICES3) | (0<<WGM33) | (0<<WGM32) | (0<<CS32) | (0<<CS31) | (0<<CS30);
TCNT3H=0x00;
TCNT3L=0x00;
ICR3H=0x00;
ICR3L=0x00;
OCR3AH=0x00;
OCR3AL=0x00;
OCR3BH=0x00;
OCR3BL=0x00;
OCR3CH=0x00;
OCR3CL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
ETIMSK=(0<<TICIE3) | (0<<OCIE3A) | (0<<OCIE3B) | (0<<TOIE3) | (0<<OCIE3C) | (0<<OCIE1C);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: Off
EICRA=(0<<ISC31) | (0<<ISC30) | (0<<ISC21) | (0<<ISC20) | (0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
EICRB=(0<<ISC71) | (0<<ISC70) | (0<<ISC61) | (0<<ISC60) | (0<<ISC51) | (0<<ISC50) | (0<<ISC41) | (0<<ISC40);
EIMSK=(0<<INT7) | (0<<INT6) | (0<<INT5) | (0<<INT4) | (0<<INT3) | (0<<INT2) | (0<<INT1) | (0<<INT0);

// USART0 initialization
// USART0 disabled
UCSR0B=(0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (0<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80);

// USART1 initialization
// USART1 disabled
UCSR1B=(0<<RXCIE1) | (0<<TXCIE1) | (0<<UDRIE1) | (0<<RXEN1) | (0<<TXEN1) | (0<<UCSZ12) | (0<<RXB81) | (0<<TXB81);

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2500,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=(0<<SPIE) | (1<<SPE) | (0<<DORD) | (1<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
SPSR=(0<<SPI2X);

// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 2
// EN - PORTC Bit 1
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
}</pre>
<pre>

Referensi:

Artemis Synthesizer 2: Interfacing with the MCP4921 SPI DAC

Membaca RTC DS1307 Dengan AVR


Pada tulisan ini akan diberikan contoh bagaimana membaca modul I2C RTC DS1307 dengan menggunakan modul AVR dan menampilkannya pada sebuah LCD 16×2. Semua produk dapat dibeli pada online shop Produk-Inovatif. Peralatan yang dibutuhkan adalah:

  1. Modul LCD 16×2

di-lcd16x2

  1. Modul AVR

OLYMPUS DIGITAL CAMERA

  1. Downloader

  1. Modul I2C RTC DS1307

rtc module

Selanjutnya, mari kita rangkai masing-masing modul seperti berikut:

Pertama, hubungkan modul LCD 16×2 dengan PORTA pada modul AVR, seperti gambar berikut:

LCD con 2LCD con

Kedua, hubungkan header AVR ISP USBasp pada konekto ISP PORT pada modul AVR, seperti gambar berikut:

ISP 3ISP

Ketiga, hubungkan konektor USB AVR ISP USBasp ke USB Laptop/PC, seperti gambar berikut:

USB ISP

Keempat, pasang modul RTC I2C DS1307 seperti gambar berikut:

Dengan catatan pin koneksi ada:

AVR  –> RTC

VCC  –> VCC

GND –> GND

PORTD.0 –> SDA

PORTD.1 –> SCL

rtc 3rtc 2

rtc 1rtc 4

 

Setelah semua siap, buatlah sebuah program dengan menggunakan Code Vision.

  1. Buat sebuah project

new

  1. Klik YES

YES

  1. Pilih ATmega, klik OK

ATmega

  1. Pilih Chip ATmega32A dan clock 11,059200 MHz, atau sesuai dengan yang ada pada modul AVR Anda.

Chip

  1. Pilih Alphanumeric LCD, dan atur sesuai setting berikut

LCD

  1. Samakan setting RTC seperti berikut:

RTC

  1. Simpan project dengan nama RTC

  2. Isikan code berikut:

a. Tambahkan delay

delay

b.Tambahkan deklarasi variabel berikut

declare

c. Tambahkan tulisan pembuka

pembuka

d. Tambahkan perintah membaca RTC

get time

e. Tambahkan perintah menampilkan waktu ke LCD

view

  1. Compile program yang telah dibuat, dengan CTRL+F9

  2. Selanjutnya, download ke mikrokontroller dan lihat hasilnya.

pembuka

jam

Demikian, semogar bermanfaat.

Simulasi Osilator Bagian 3


  1. Letakkan Net Label antara R1 dan Q1 seperti berikut:

  2. Klik kanan mouse untuk keluar dari sesi Net Label.

  3. Tambahkan Power Supply +12 Volt dengan memilih dari icon

  4. Tekan tombol Tab dan isikan properties Designator= 12VCC, uncheck pada Comment, dan Check pada Value.

  5. Tambahkan GND Power Port dan VCC Power Port dengan mengklik icon GND

Dan icon VCC

  1. Hubungkan Power Supply dan Power Port.

  2. Pilih menu Design >> Simulate >> Mixed Sim.

  3. Pilih signal yang akan dianalisis, pilih OSCOUT pada sisi Available Signals. Kemudian klik button >

Sebelum dilakukan pemilihan signal

Setelah dipilih, signal akan berada pada sisi Active Signals.

  1. Pilih Transient Analysis, uncheck pada Use Transient Default, isikan data berikut:

-          Transient Stop Time                        = 2.0m

-          Transient Step Time                        = 500u

-          Transient Max Step Time              = 500u

Kemudian klik OK.

  1. Hasil simulasi osilator seperti ditampilkan berikut:

 

Link download:

http://www.altium.com/en/products/downloads

Simulasi Osilator Bagian 2


  1. Klik button Place Inductor untuk meletakkan komponen inductor pada area schematic

  2. Tekan tombol Tab pada keyboard dan isikan L1 pada Designator dan isikan nilai 2.5mH pada Value. Kemudian klik button OK.

  3. Tekan tombol Space pada keyboard untuk memilih orientasi posisi komponen yang sesuai

  4. Klik kiri pada mouse untuk meletakkan komponen pada posisi yang diinginkan

  5. Klik kanan pada mouse jika selesai menambahkan komponen inductor.

  6. Ketikan Res1, dibawah library. Kemudian klik button Place Res1.

  7. Isikan properties pada resistor untuk R1= 4K7 dan R2= 470K

  8. Tekan tombol Space pada keyboard untuk memilih orientasi posisi komponen yang sesuai

  9. Klik kiri pada mouse untuk meletakkan komponen pada posisi yang diinginkan

  10. Klik kanan pada mouse jika selesai menambahkan komponen inductor.

  11. Ketikan Cap, dibawah library. Kemudian klik button Place Cap.

  12. Isikan properties pada capasitor untuk C1= 0.01uF, C2= 0.033uF dan C3= 0.1uF

  13. Tekan tombol Space pada keyboard untuk memilih orientasi posisi komponen yang sesuai

  14. Klik kiri pada mouse untuk meletakkan komponen pada posisi yang diinginkan

  15. Klik kanan pada mouse jika selesai menambahkan komponen inductor.

  16. Ketikan 2n3904, dibawah library. Kemudian klik button Place 2N3904.

  17. Isikan properties Q1 pada Designator.

  18. Tekan tombol Space pada keyboard untuk memilih orientasi posisi komponen yang sesuai

  19. Klik kiri pada mouse untuk meletakkan komponen pada posisi yang diinginkan

  20. Klik kanan pada mouse jika selesai menambahkan komponen inductor.
  21. Tambahkan GND Power Port dan VCC Power Port dengan mengklik icon GND

Dan icon VCC

  1. Tata posisi komponen seperti berikut:

  2. Kemudian hubungkan antar kaki komponen dengan menggunakan tool Place Wire

  3. Klik pada ujung kaki komponen L1, kemudian tarik mouse menuju kaki komponen C1

Gambar langkah 1 menambahkan wire.

Gambar langkah 2 menambahkan wire.

  1. Hubungkan setiap komponen sesuai dengan gambar berikut:

  2. Tambahkan Net Label dengan mengklik icon Place Net Label

  3. Tekan tombol Tab maka akan muncul kotak Net Label Properties dan beri nama label Net OscOut. Klik OK.

Untuk menyelesaikan, silakan ikuti tulisan terakhir.

Simulasi Osilator Bagian 1


wire allPada tulisan sebelumnya telah disampaikan sekilas tentang osilator dan macam-macam osilator.

Pada tulisan kali ini akan disampaikan bagaimana membuat sebuah simulasi rangkaian osilator menggunakan software.

 

Silakan ikuti ulasan berikut ini.

Altium Desainer

Altium Limited adalah perusahaan perangkat lunak publik milik Australia yang menyediakan perangkat lunak desain elektronik berbasis PC untuk para insinyur. Didirikan di Tasmania, Australia tahun 1985, Altium sekarang memiliki kantor regional di Australia, China, Amerika Serikat, Eropa, dan Jepang, dengan reseller di semua pasar utama lainnya. Perusahaan ini dikenal sebagai “Protel” sampai tahun 2001.

Sejarah

Nicholas Martin , seorang desainer elektronik yang bekerja di University of Tasmania pada tahun 1980 , menemukan keterbatasan tool untuk merancang papan sirkuit (PCB), baik melalui proses manual yang sulit , atau dengan software yang harganya mahal dan mensyaratkan dalam pemakaian memerlukan komputer mainframe mahal . Dengan perkembangan komputer pribadi , Martin melihat kesempatan untuk membuat desain produk elektronik yang terjangkau untuk platform PC . Pada tahun 1985 ia mendirikan Protel dan meluncurkan produk pertama pada akhir tahun yang sama.
Berikut adalah langkah-langkah untuk melakukan simulasi rangkaian osilator menggunakan software Altium Designer.

  1. Buka dan jalankan program OrCAD melalui –>Start –> Program –> Altium –> Altium Designer atau klik icon Altium Designer di layar desktop Anda.
  2. Buat project baru File –> New –> Schematic

New Schematic

Akan muncul area kerja berikut:

  1. Klik tab Libraries, disebelah kanan atas.

new schematicnew schematic

  1. Klik tab Libraries, disebelah kanan atas.

  2. Pilih Miscellaneous Devices.IntLib

Langkah-langkah berikutnya pada tulisan bagian 2.

Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 170 pengikut lainnya.

%d bloggers like this: