Jumat, 09 Maret 2012

charger aki otomatis


Charger Aki 12 V Otomatis

This charger will charge any 12V lead acid battery including flooded, gel and AGM. It is fully automatic and will charge at a rate up to about 4A until the battery voltage reaches a preset point at which it will switch to a very low current float charge.

If the battery voltage drops again the charger will begin charging until the voltage once again reaches the cut off point. In this way it can be left connected to a battery indefinitely to maintain full charge without causing damage. An LED indicates when the battery is fully charged.

R2 will have to be adjusted to set the proper finish charge voltage. Flooded and gel batteries are generally charged to 13.8V. If you are cycling the battery (AGM or gel) then 14.5V to 14.9V is generally recommended by battery manufacturers.

To set up the charger, set the pot to midway, turn on the charger and then connect a battery to it's output. Monitor the charge with a voltmeter until the battery reaches the proper end voltage and then adjust the pot until the LED glows steadily. The charger has now been set. To charge multiple battery types you can mount the pot on the front of the case and have each position marked for the appropriate voltage.

Q1 will need a heatsink. If the circuit is mounted in a case then a small fan might be necessary and can generally be powered right off the output of D1.

T1 is a transformer with a primary voltage appropriate to your location (120V, 220V, etc.) and a secondary around 12V. Using a higher voltage secondary (16V-18V) will allow you to charge 16V batteries sometimes used in racing applications.

If the circuit is powered off, the battery should be disconnected from it's output otherwise the circuit will drain the battery slowly.


Description: E:\My Project\charger aki otomatis\zartikel internet\2007_11_01_archive_files\charger2-1.png


Charger aki ini bisa digunakan untuk aki jenis apa saja. Rangkaian ini otomatis, mampu mengisi aki dengan arus 4 A hingga voltase aki mencapai titik tertentu. Pada titik ini arus pengisian menjadi sangat kecil.

Jika voltase aki berkurang lagi, rangkaian akan kembali mengisi aki hingga mencapai titik voltase tadi. Jadi, rangkaian bisa tetap disambungkan ke aki agar aki selalu dalam kondisi penuh tanpa harus takut merusak aki. Sebuah LED akan menyala untuk menandakan bahwa aki sudah penuh.


Komponennya
Komponen
Jumlah.
Ukuran
Pengganti
R1, R3
2
330 Ohm 1/4W Resistor

R2
1
100 Ohm 1/4W Pot

R4, R5, R7, R8
4
82 Ohm 2W Resistor

R6
1
100 Ohm 1/4W Resistor

R9
1
1K 1/4W Resistor

C1
1
220uF 25V Electrolytic Capacitor

D1
1
P600 Diode
Diode penyearah 50 V 5 A atau yang lebih besar lagi
D2
1
1N4004 Diode
1N4002, 1N4007
D3
1
5.6V Zener Diode

D4
1
LED (Merah, Hijau, atau Kuning)

Q1
1
BT136 TRIAC

Q2
1
BRX49 SCR

T1
1
12V 4A Transformer
Lihat Catatan
F1
1
3A Sekering

S1
1
SPST Switch, 120VAC 5A

Lain-lain
1
Kabel, PCB, Heatsink untuk U1, Casing, Jepit buaya untuk aki mobil, sekering dan rumah sekering



Catatan:
  1. R2 harus diatur untuk menentukan batas voltase yang diinginkan. Aki basah biasanya di-charge dengan voltase 13,8 V, sedangkan aki kering dan semi kering 14,5 - 14,9 V. Cara mengesetnya, putar potensio R2 hingga berada di posisi tengah, hidupkan charger, pasang aki yang akan di-charge. Amati proses pengisian dengan voltmeter hingga voltase aki mencapai voltase yang diinginkan. Kemudian putar potensio R2 hingga LED menyala. Charger sudah siap digunakan sekarang. Untuk men-charge berbagai macam tipe aki, lakukan hal yang sama untuk tiap aki dan tandai posisi potensiometer R2 untuk tiap tipe aki.
  2. Q1 harus diberi heatsink. Jika rangkaian dikemas dalam casing, maka diperlukan fan kecil yang bisa dicatu dari keluaran D1.
  3. T1 adalah transformator dengan voltase primer sesuai dengan voltase lingkungan kerja Anda, dan sekundernya sekitar 12V. Dengan voltase yang lebih tinggi (16 - 18V), Anda bisa men-charge aki dengan voltase 16V.
  4. Jika rangkaian dimatikan, aki harus dilepas dari rangkaian, jika tidak maka rangkaian akan menguras aki pelan-pelan.

http://www.aaroncake.net

Penhitung Kecepatan MOTOR DC Menggunakan Ouptocopler Dengan CodeVision AVR

Pada dasarnya aplikasi ini hampir sama dengan aplikasi penghitung frekuensi (Frequency Counter), dimana letak perbedaanya hanya pada perumusannya saja, dimana perumusan tersebut tergantung dari pengubahan detik ke menit dan banyaknya pulsa encoder dalam 1 putaran motor DC.
Jika menggunakan optocoupler sebagai sensor anda harus menggunakan rotary encoder yang di-couple dengan as motor dc untuk mendeteksi kecepatan putaran motor DC. Biasanya pada rotary encoder dibuat lubang-lubang sebagai representasi banyaknya pulsa. Dan anda harus menentukan terlebih dahulu banyaknya pendeteksian pulsa atau lubang dalam pada rotary encoder untuk satu putaran yang dilakukan motor DC. Karena banyaknya pulsa atau lubang akan mempengaruhi perumusan perhitungan kecepatan motor dc, dan semakin banyak pulsa atau lubang maka akan meningkatkan resolusi pembacaan kecepatan motor DC, dengan kata lain pembacaan kecepatan akan semakin presisi.
Dan jika motor DC anda sudah mempunyai internal encoder, anda hanya tinggal menghubungkan saja output internal encoder motor DC anda ke pin INT0 atau PD2.
Saya sendiri menggunakan rotary encoder sebanyak 20 lubang sehingga perumusan kecepatan motor DC menjadi:
pulsa=frekuensi*60/20; atau pulsa=frekuensi*30;
Dimana angka 60 digunakan untuk mengubah kedalam satuan RPM (round per minute), karena timer yang saya gunakan hanya membaca selama 1 detik, jika dikalikan sebanyak 60 maka akan menjadi 1 menit. Dan angka 20 adalah banyaknya lubang atau pulsa rotary encoder.

Pada schematic diatas penggunaan saklar pada optocoupler hanya sebagai pemicu saja (trigger), jika pada implementasi riilnya. Pemicu ini berasal dari lubang-lubang atau pulsa dari encoder.
Jika teman-teman masih bingung mengenai fitur Timer dan Counter serta eksternal interupsi dapat membacanya pada menu TUTORIAL Timer dan Counter.
Berikut adalah listing program lengkapnya:
unsigned char looping=0;
int frekuensi=0;
float pulsa;
char temp[8];
#include <mega16.h> //sertakan librari mega16.h
#include <lcd.h>//sertakan librari lcd.h
#include <delay.h>//sertakan librari delay.h
#include <stdio.h>//sertakan librari stdio.h
#include <stdlib.h>//sertakan librari stdlib.h

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
frekuensi++; //interupt lagi baca frekuensi yg masuk trus di increament
}
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x8a;//mengisi kembali nilai timer dengan 8a agar dapat men-timer selama 10ms
looping++;//jika looping=100 baca nilai frekuensi dan set kembali frekuensi=0
if (looping>=100)//dimana 10msx100=1 detik
{
looping=0;
pulsa=frekuensi*60/20;
frekuensi=0;
lcd_clear();
}
}
void main(void)
{
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0×05;
TCNT0=0×76;
OCR0=0×00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
GICR|=0×40;
MCUCR=0×02;
MCUCSR=0×00;
GIFR=0×40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0×01;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm(“sei”)
while (1)
{
lcd_gotoxy(0,0);
lcd_putsf(“ElektrO-cOntrOl”);
ftoa(pulsa,1,temp);
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(0,5);
lcd_putsf(“RPM”);
};
}

APLIKASI PEMBACAAN SUHU LM35 DENGAN PENAMPIL LCD MENGGUNAKAN CODEVISION AVR


Aplikasi pembacaan suhu (monitoring suhu) ini, menggunakan sensor LM35 yang merupakan sebuah sensor suhu dengan harga yang relatif murah dan output nya sudah berupa tegangan yang sudah linear.
Menurut datasheet LM35, untuk kenaikan 1 derajat Celcius akan mengakibatkan perubahan 10mV terhadap output tegangannya. Dimana saat suhu 0° Celcius sensor ini mempunyai tegangan offset sebesar 0 V. Untuk mendapatkan datasheet LM35, silakan download disini.
Disini saya akan melakukan pembacaan suhu dalam satuan derajat Celcius dengan range pengukuran 0°-100° Celcius. Sehingga tegangan output dari LM35 adalah 0-1V.
Tegangan output tersebut sudah dapat dibaca oleh mikrokontroler melalui ADC tanpa diperlukan sebuah penguat tegangan. Aplikasi ini telah saya buat dalam bentuk real (sesungguhnya) dan juga saya simulasikan menggunakan Proteus. Schematic LM35 yang kemudian ditampilkan pada LCD dapat dilihat diatas.
Sedangkan untuk programnya menggunakan CodeVision AVR, berikut adalah listing program lengkapnya.
int SUHU;
char temp[8];
float suhu_celcius;
#include <mega16.h>
#include <stdlib.h>
#include <lcd.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0×15 ;PORTC
#endasm
#define ADC_VREF_TYPE 0×40
// 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|=0×40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0×10)==0);
ADCSRA|=0×10;
return ADCW;
}
void main(void)
{
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0×84;
// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(“ElectrO-cOntrOl”);
lcd_gotoxy(0,1);
lcd_putsf(“SENSOR SUHU LM35″);
delay_ms(1000);
while (1)
    {
    lcd_clear( );
    SUHU = read_adc(0);
    suhu_celcius = (float)SUHU*500/1023;//rumus untuk mengubah kedalam derajat celcius   
SET = read_adc(1);
data_set = (float)SET*10;
    lcd_gotoxy(0,0);
    lcd_putsf(“ElectrO-cOntrOl”);
    ftoa(suhu_celcius,1,temp);//float to array, mengubah tipedata float k tipe data array yg kan ditampilkan di LCD
    lcd_gotoxy(0,1);  
    lcd_puts(temp);
    lcd_gotoxy(5,1);
    lcd_putchar(0xdf);//menampilkan karakter derajat
    lcd_putsf(“C”);
    delay_ms(500);
    };

}





Untuk yang di jual sama seperti punya orang Malaysia :
2 kipas
2 LM35
2 potensio untuk pengatur suhu
Scenario :
Ada 2 potensiometer yang digunakan untuk mengeset suhu untuk switch kipas. Missal nilai awal 29, maka kipas akan jalan pada posisi 29. Ketika potensio di set pada posisi lain misalkan 30, maka kipas tidak akan hidup pada posisi 29, beralih hidup pada posisi 30

Pot 1 > set to mikro > mikro make source to compare with LM35 > if same > kipas 1 ON > else
Pot 2