AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
23.12.2013, 12:25
|
|
Частый гость
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Таймер разряда аккумулятора
Собрал таймер на atmega8 который подключается к испытуемому аккумулятору,помимо этого к аккумулятору подключена нагрузка ,таймер срабатывает при 11 вольтах и останавливает отсчет времени на последнем значении когда акк сел,тем самым можно расчитать емкость аккумулятора ,но возникла проблема поставил также защитный диод по минусу от переполюсовки,когда я приезжаю с улице с этим устройством где прохладно ,включаю устройство в помещении и оно уже срабатывает при 12 вольтах,нормализуется токо когда постаит некоторое время при комнатной температуре.
Подскажите пожалуста как можно сделать чтобы не было такого разброса,да за падением напряжением на аккумуляторе следит транзистор bc547,как токо напряжение упадет до 11 вольт он закрывается и скидывает минус с микроконтроллера тем самым таймер останавливает отсчет времени
фото схемы ниже.
Последний раз редактировалось harry7777; 23.12.2013 в 12:31.
|
|
|
|
23.12.2013, 12:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,999
Сказал спасибо: 3,017
Сказали Спасибо 3,191 раз(а) в 2,164 сообщении(ях)
|
Re: Таймер разряда аккумулятора
Завести напряжение с аккумулятора через делитель на встроенный компаратор МК.
|
|
|
|
23.12.2013, 13:02
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Таймер разряда аккумулятора
Лучше на АЦП. Автор, преждем, чем собирать подобную нелепость, лучше было бы посоветоваться здесь на форуме. Я бы лично вашу схему до ума довел.
|
|
|
|
23.12.2013, 15:19
|
|
Частый гость
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер разряда аккумулятора
А как быть с защитой от переполюсовки ? ,если я воткну диод хоть на минус хоть на плюс аккума то меняется сопротивление пусть даже я на ацп сделаю,пробовал в протеусе не получается,а диод как известно меняет свое сопротивление с изменением температуры
|
|
|
|
23.12.2013, 15:25
|
|
Прохожий
Регистрация: 30.11.2013
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Таймер разряда аккумулятора
У него не сопротивление а падение напряжения на p-n переходе 0.6 или 0.7В от температуры и не зависит помоему.
Вообще тоже думаю нечто подобное замутить для проверки автомобильных АКБ, тока пока соберусь зима уже закончится, а летом это не актуально.
|
|
|
|
23.12.2013, 15:40
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Таймер разряда аккумулятора
Вот фрагмент схемы устройства автоматического включения фар на авто. Лет пять назад было сделано их не мало. Ни одного отказа до сих пор. Потом, конечно, схему я сильно переделал, добавил кучу возможностей, перешел на STM8S... Но идея будет вам понятна. Сам я их не устанавливал. Ставили их сами водители без помощи автоэлектриков. Можете представить, что они могли там насоединять. Но факт - все работает.
|
|
|
|
23.12.2013, 15:41
|
|
Частый гость
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер разряда аккумулятора
Сообщение от Алексей Викторович
|
У него не сопротивление а падение напряжения на p-n переходе 0.6 или 0.7В от температуры и не зависит помоему.
Вообще тоже думаю нечто подобное замутить для проверки автомобильных АКБ, тока пока соберусь зима уже закончится, а летом это не актуально.
|
А падение напряжения оттуда и берется что меняется внутреннее сопротивление
|
|
|
|
23.12.2013, 17:06
|
|
Прохожий
Регистрация: 30.11.2013
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Таймер разряда аккумулятора
Сомневаюсь что падение напряжения p-n и сопротивление это одно и тоже. Цешкой замерьте падение напряжения диода на улице и в помещении. Думаю цифры не сильно будут отличаться.
|
|
|
|
23.12.2013, 21:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Таймер разряда аккумулятора
Сообщение от harry7777
|
за падением напряжением на аккумуляторе следит транзистор bc547
|
Как уже подсказали, встроенный АЦП будет в 100 раз точнее.
Сообщение от harry7777
|
как можно сделать
|
Поляризованное реле параллельно аккуму, одной группой подключающее прибор, а другой отключающее свою обмотку. Перезапуск вручную кнопкой.
|
|
|
|
24.12.2013, 13:48
|
|
Частый гость
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Таймер разряда аккумулятора
Написал код для АЦП
Вот фото в протеусе и собственно сам код
Вопрос заключается в том как получить сразу емкость а не время вконце
к примеру я подключил нагрузку она поедает с аккумулятора 7 ампер
аккум сел к примеру за 7 часов,это токо пример)))
тобишь емкость получилась 7*7 49 ач как вывести эту цифру
токо не критикуйте ,и не советуйте про прерывания)
что в этом коде надо добавить
я вконце получаю минуты ,перевожу их в часы умножаю на 7 ,а вот как потом это число на семисегментный индикатор вывести???
вот сам код не на прерываниях!!!
Код:
|
#include ‹mega8.h›
#include ‹delay.h›
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR
{
static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (++input_index › (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
}
#include ‹io.h›
#include ‹delay.h›
static flash unsigned char digit[] =
{
(0b11000000), //0
(0b11111001), //1
(0b10100100), //2
(0b10110000), //3
(0b10011001), //4
(0b10010010), //5
(0b10000010), //6
(0b11111000), //7
(0b10000000), //8
(0b10010000) //9
};
static flash unsigned char sec[] =
{
(0b11000000), //0
(0b11111001), //1
(0b10100100), //2
(0b10110000), //3
(0b10011001), //4
(0b10010010), //5
(0b10000010), //6
};
static flash unsigned char razryad[] =
{
(1), //0
(2), //1
(4), //2
(8), //3
};
void main(void)
{
int i,j,k,s,m;
PORTD=0x00;
DDRD=0xFF;
PORTB=0x00;
DDRB=0x1F;
PORTC=0x00;
DDRC=0x3C;
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCC;
#asm("sei")
while (1)
{
for(s=0;s‹10;s++)
{
for(s=0;s‹10;m++)
{
for(i=0;i‹10;i++)
{
for(k=0;k‹7;k++)
{
for(j=0;j‹4;j++)
{
PORTD=sec[k];
PORTB=razryad[3];
delay_ms(5);
PORTC.4=1;
for(j=0;j‹40;j++)
{
PORTD=digit[s];
PORTB=razryad[0];
delay_ms(5);
PORTD=digit[m];
PORTB=razryad[1];
delay_ms(5);
PORTD=digit[i];
PORTB=razryad[2];
delay_ms(5);
PORTD.7=0;
delay_ms(5);
if(adc_data[0]‹10)
{
goto label1;
}
}
if(adc_data[0]‹139)
{
goto label1;
}}}}}}}
label1:
while(1)
{
PORTD=digit[s];
PORTB=razryad[0];
delay_ms(5);
PORTD=digit[m];
PORTB=razryad[1];
delay_ms(5);
PORTD=digit[i];
PORTB=razryad[2];
delay_ms(5);
PORTD.7=0;
delay_ms(5);
PORTD=sec[k];
PORTB=razryad[3];
delay_ms(5);
PORTC.4=0;
PORTC.3=1;
PORTC.5=1;
PORTC.2=1;
}
};
|
Последний раз редактировалось harry7777; 24.12.2013 в 14:10.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:57.
|
|