By | 12/03/2018

Hello sahabat Anak Kendali.

pada kesempatan kali ini saya akan menuliskan tentang cara mengakses sensor salinity atau salinitas menggunakan Atmega diprogram dengan CVAVR

sensor salinitas merupakan alat untuk mengukur kadar garam dalam air, dengan satuan ppt, untuk rentang nilai air tawar nilainya kadar garamnya 0 – 0.5 ppt dan air laut biasanya sampai 35 ppt

baca juga : Cara Mengakses Sensor pH dengan CVAVR Atmega

pada percobaan menggunakan sensor salinitas ini saya mengkalibrasi sendiri mengguanakan atemega, dengan acuan nilai sensor yang linear, sehingga didapatkan rumus untuk nilai salinitas sebagai berikut :

      val = read_adc (0);
      teg = val * 0.00488758; 
      val_salinitas = 1.953125 * teg ;

baiklah langsung saja kita lakukan wiring untuk percobaan dengan air tawar dan air asin, berikut adalah gambar sensor salinitas yang saya gunakan untuk percobaan.

Cara Mengakses Sensor Salinitas Atmega CVAVR

kemudian hubungkan sensor dengan Sistem Minimum Atmega16 atau Atmega32 yang kamu miliki sebagai berikut :

5V Sistem Minimum —– 5V Sensor Salinity
PORTA.0 Sistem Minimum —– Output Sensor Salinity
GND Sistem Minimum —– GND Sensor Salinity

dan ini adalah program lengkap cara mengakses sensor salinitas dan ditampilkan ke LCD 16×2

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 3/12/2018
Author  : Chaerul Anam
Company : Sixty Light
Comments: 


Chip type               : ATmega32
Program type            : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 512
*****************************************************/

#include <mega32.h>
#include <stdlib.h>
#include <delay.h>

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

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

// Declare your global variables here
unsigned int val;
float teg, val_salinitas;
char buff [10];

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

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS – PORTC Bit 0
// RD – PORTC Bit 1
// EN – PORTC Bit 2
// D4 – PORTC Bit 4
// D5 – PORTC Bit 5
// D6 – PORTC Bit 6
// D7 – PORTC Bit 7
// Characters/line: 16
lcd_init(16);

while (1)
      {
      // Place your code here
      lcd_clear();
      val = read_adc (0);
      teg = val * 0.00488758; 
      val_salinitas = 1.953125 * teg ;
      
      lcd_gotoxy(0,0);
      lcd_putsf(“Nilai Slnts Air”);
      lcd_gotoxy(7,1);
      ftoa(val_salinitas,3,buff);
      lcd_puts(buff);
      delay_ms(100);
      }
}

mungkin cukup sekian apa yang bisa saya tuliskan kali ini, semoga bermanfaat !

keyword :
sensor salinity
sensor salinitas
salinity sensor cvavr
salinity sensor atmega16
salinity sensor atmega32
mengakses sensor salinity
mengakses sensor salinitas
how to access salinity sensor atmega cvavr
how to access salinity sensor cvavr

anakkendali
anak kendali

9 Replies to “Cara Mengakses Sensor Salinitas Atmega CVAVR”

  1. FATKHOR ROZI

    kak, mau tanya nih
    kalau range data ADC melebihi dari range ADC pada datsheet, apakah sensor dinyatakan sudah tidak berfungsi lagi (rusak). mohon arahannya kak

    Reply
  2. Avara ghama

    Mas…mau tanya lagi terkait untuk dapat angka yg dari rumus
    val = read_adc (0);
    teg = val * ((0.00488758; ))
    val_salinitas = ((1.953125 ))* teg ;

    Bagaimana ya…trimakasih..sangat bermanfaat

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *