PrimussTh
PrimussTh
Админ сломал ногу! realy.

Последние сообщения

1
Life / Космос
« Последний ответ от slav0n 16 Сентябрь 2021, 04:53:51 »
первые космические туристы

2
Код
Код
#define OVERBIT 5
#define ROUNDS (1024 * 1)

u32 adc0sum, adc1sum;
u16 cnt;

ISR(ADC_vect)
{
if (cnt < ROUNDS * 2){ //2 channels
if(cnt & 1){
adc1sum += ADCW;
ADMUX &=~1;//channel 0
}else{
adc0sum += ADCW;
ADMUX |= 1;//channel 1
}
cnt++;
}
}


int __attribute__((naked)) main(void)
{
// ******* ADC initialization ***************** /
ADMUX = (0<<REFS1)|(1<<REFS0); //ref AVcc,
#define VREF 4560UL //mV

#define calcvoltage(x) ((x >> OVERBIT) * VREF / 1024 / (ROUNDS >> OVERBIT))

// непрерывное измерение, частота 8MHz/32
//101 - 32 250kHz
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADFR)|(1<<ADIE) |(1<<ADPS2)|(0<<ADPS1)|(1<<ADPS0);

u16 res0, res1; //results
sei();

while(1){
if(cnt >= ROUNDS * 2){ //2 channels
ADCSRA &=~(1<<ADIE);//Interrupt off
//экспоненциальный фильтр
res0 += (calcvoltage(adc0sum) - res0) >> 1;
res1 += (calcvoltage(adc1sum) - res1) >> 2;

adc0sum = adc1sum = cnt = 0;
ADCSRA |= (1<<ADIE);//Interrupt on
}
}
}
3
отладка в железе показала хорошие результаты.
Можно легко измерять два канала в диапазоне 0-5 вольт с разрешением 1мВ
4
Автоэлектроника / Re: Зарядка аккумулятора импульсным током
« Последний ответ от slav0n 23 Август 2021, 14:41:03 »
примерно 650 Гц

5
Автоэлектроника / Re: Зарядка аккумулятора импульсным током
« Последний ответ от Loghir 23 Август 2021, 14:01:46 »
Какая частота импульсов на транзистор?
6
формула расчета повышенного разрешения
n - количество дополнительных бит разрешения
k - коэффициент усреднения средним арифметическим
7
В природе существует апноут AVR121 и его перевод.
Я попробовал запустить этот метод на симуляторе и вот что получилось:
на картинке показания "железного" 12-бит АЦП MCP3201, "софтового" разогнанного АЦП ATmega8, осциллограмма добавленного шума



8
прошивка 290809

Сделал период обновления графика ошибки равным периоду опроса датчика температуры - 0.4 сек.
Шаг меток - 10 сек.

Добавил сохранение измененных параметров коррекции индикации температуры (GAIN, OFFSET).
В предыдущих прошивках после перезагрузки контроллера эти параметры сбрасывались в стандартные значения для Т12:
GAIN = 1.75
OFFSET = -65
Изменяя эти параметры надо быть осторожным и понимать суть происходящего.

Сохранение всех настроек происходит на 30-й секунде после последнего нажатия любой кнопки.

atmega8 fuse
   L - 0xE4
   H - 0xD1
   
atmega328p fuse
   L - 0xE2
   H - 0xD7
   E - 0xFF default
9
издеваться над слепыми грешно, взагалі