Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 17.07.2016, 11:50  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
Подмигивание Спидометр атмега 8

Добрый день. Сделал спидометр на ЖК. Работает, но показания плавают. Если едешь 80 то показывает 72-80... километраж считает четко.

PHP код:
long x=0,y=0,metres;
double t,z=0;
float speed;
int rpm;

ISR(TIMER1_OVF_vect)
{
    
x=0;
    
y=0;
    
z=0;
    
t=0;
    
speed=0;
    
rpm=0;
}

ISR(TIMER1_CAPT_vect)
{
    
count_imp++;
if (
count_imp==6) {metres++;count_imp=0;}
    if(
x==0//в первый заход считываем таймер в переменную х
    
{
        
x=ICR1;
    }
    else   
//во второй заход считываем в y, находим разницу
    
{
        
y=ICR1;
        
//ICR1=0;
        //TCNT1=0;
        
z=(y-x);
        
x=y;
        
        
t=125000/z;
        
speed=t*0.6;
        
rpm=speed;
    }
    
}

в майне таймер так настроен:
// Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 125,000 kHz
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Rising Edge
    // Timer Period: 0,52429 s
    // Timer1 Overflow Interrupt: On
    // Input Capture Interrupt: On
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    
TCCR1A=(0‹‹COM1A1) | (0‹‹COM1A0) | (0‹‹COM1B1) | (0‹‹COM1B0) | (0‹‹WGM11) | (0‹‹WGM10);
    
TCCR1B=(0‹‹ICNC1) | (1‹‹ICES1) | (0‹‹WGM13) | (0‹‹WGM12) | (0‹‹CS12) | (1‹‹CS11) | (1‹‹CS10);
    
TCNT1H=0x00;
    
TCNT1L=0x00;
    
ICR1H=0x00;
    
ICR1L=0x00;
    
OCR1AH=0x00;
    
OCR1AL=0x00;
    
OCR1BH=0x00;
    
OCR1BL=0x00;

ну и в вайле:
eeprom_update_word(&eeprom_metres,metres);
        
eeprom_update_word(&eeprom_kilometres,kilometres);
        
//TODO:: Please write your application code 
    
if (clear==0) {clear=1;lcd_clear();};
    
sprintf(lcd_buffer"%3i %5i %5i ",metres,x,y);  //t0
    
sprintf(lcd_buffer2,"s=%2.2f   %2.2f",speed,t);
    
lcd_gotoxy(0,0);
    
lcd_putstring(lcd_buffer);
    
lcd_gotoxy(0,1);
    
lcd_putstring(lcd_buffer2); 
Я чтото не так считаю. Подскажите плиз. Если на вход захвата завожу шим сигнал то всё идеально показывает.....
Реклама:
miwutka вне форума  
Непрочитано 17.07.2016, 16:01  
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Во первых исключить дребезг при захвате.
Во вторых погуглите что такое скользящие среднее.
__________________
Не ошибается лишь тот, кто ни чего не делает!

Последний раз редактировалось woroba; 17.07.2016 в 16:04.
woroba вне форума  
Непрочитано 17.07.2016, 18:02  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от woroba Посмотреть сообщение
скользящие среднее.
Я так понял что это не интегрирование...?
miwutka вне форума  
Непрочитано 17.07.2016, 18:24  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Простейший фильтр Калмана:
Значение = Измерение * (1 - N) + СтароеЗначение * N
Где N = 0...1 (вещественное).
Например, при 0.5 результат придёт к точному значению за 4-5 выборок.
При N = 0.25 - более чем за 8, зато скачки показаний будут очень незначительными.
-Alan- вне форума  
Непрочитано 17.07.2016, 18:40  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Не нужен ему Калман. Оно и так должно работать.
Easyrider83 вне форума  
Непрочитано 18.07.2016, 23:04  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Есть вопрос. Подскажите как вот такое решить как опишу ниже.
Вот имеем число со спидометра. Создаем массив speed[10] и переменную где будет значение для индикации speed_ind=0.
Получаем первое значение speed[0]=10. speed_ind=speed[0]/1;
Получаем второе значение speed[1]=10. speed_ind=speed[0]+speed[1]/2;
Получаем третье значение speed[2]=10. speed_ind=speed[0]+speed[1]+speed[2]/3;
...............
И так до десяти. (эту часть через оператор for можно сделать по идее)
Потом чтобы 11-ое значение записалось в 10-ый массив то есть чтобы весь массив на один сдвинулся вниз и самый последний вылетел.
Это наверно как-то через указатель нужно? Я думаю так будет хороший фильтр и без особой задержки.....
miwutka вне форума  
Непрочитано 18.07.2016, 23:40  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Спидометр атмега 8

-Alan-, Вот на последней странице оно?? https://kazus.ru/forums/showthread.php?t=18861&page=6

А то проинтегрировав 0.1 сек то всеравно плавают показания каждые 3-5 сек
miwutka вне форума  
Непрочитано 20.07.2016, 11:26  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Для начала следует установить Noise Canceler в on.
Someone вне форума  
Непрочитано 20.07.2016, 12:26  
Signalshik2
Вид на жительство
 
Аватар для Signalshik2
 
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
Signalshik2 на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от miwutka Посмотреть сообщение
ISR(TIMER1_OVF_vect)
{
****x=0;
****y=0;
****z=0;
****t=0;
****speed=0;
****rpm=0;
}
- зачем инициализацию переменных проводить в ISR(Interrupt Service Routine) по переполнению таймера 1? По-моему это делается в функции InitVariables()(можно вообще функцию не делать) в начале Maina.
Signalshik2 вне форума  
Непрочитано 20.07.2016, 14:39  
Signalshik2
Вид на жительство
 
Аватар для Signalshik2
 
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
Signalshik2 на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Чуваки, за какое время колесо совершает один оборот?
Signalshik2 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
атмега прошил другой прошивкой bass1981 AVR 17 28.05.2016 19:04
Тахометр и спидометр на Atmega8l GMVM Микроконтроллеры, АЦП, память и т.д 14 05.07.2010 16:29
Атмега 32а, не известно под какую частоту прошита. sae74 Микроконтроллеры, АЦП, память и т.д 1 10.04.2010 19:33
Добрый вечер,люди нужна схема корректора показаний спидометр MAICOM Электроника средств транспорта 5 10.02.2008 19:07
Электронный спидометр на Газель-33021 Gazel37 Информация по радиокомпонентам 1 12.05.2007 00:41


Часовой пояс GMT +4, время: 15:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot