Страница 1 из 1

Велокомп

Добавлено: Пт май 24, 2013 10:50:54
MAndrey90
Привет народ. Есть атмега8515, хочу на ней собрать велокомпьютер. Проблема заключается в следующем.Как настроить таймер и выводить(считать) текущую скорость велосипеда. По геркону будут считаться количество оборотов, длина окружности будет постоянной величиной. желательно с кодом. Весь моск себе уже сломал.

Re: Велокомп

Добавлено: Пт май 24, 2013 11:01:55
igor-x
весь моск уже поломали другие
http://cxem.net/mc/mc154.php

Re: Велокомп

Добавлено: Пт май 24, 2013 11:11:49
akl
MAndrey90 Когда-то писАл :oops:
Спойлер
V=S/T
S[m]=L*Nx,
где L[m]-длина окружности колеса, Nx-целое число оборотов колеса за время измерения
T=to*nox=nox/Fo,
где to-период частоты тактирования Fo, nox-число периодов частоты тактирования за время прохождения Nx.
V[м/сек]=Fo*L*Nx/nox или
10*V[км/час]=36*Fo*L*Nx/nox. Для более полного удовлетворения потребностей при различных входных параметрах
введем в выражение еще одну составляющую Z, а именно число импульсов от датчика за один оборот колеса.
Получаем итоговое выражение

10*V[км/час]=K*Nx/nox*Z, где
K-коэффициент пропорциональности, определением которого займемся ниже.


Допустим, что Fo=7'372'877Hz ( ну нет у нас резонатора 10МГц. Идти в магазин лениво; да и жаба орет благим матом.
Зато в развалах нашли такой и измерили его частоту),
L=2.07345м( взяли рулетку и измерили длину окружности), Z=1(один магнит на колесе и один геркон) и спидометр может
определять скорость 180.0км/час.
Время измерения примем ~0.3 секунды.
Велик, без сомнения, не сможет двигаться с такой скоростью, но учитывать это мы обязаны.
180'000 м/3600 сек= 50м/сек или 15м за 0.3 сек
Nx при этом будет 15/2.07345=7,23 оборота. Дождемся прохождения полного оборота колеса и тогда Nx=8. Эти 8 оборотов
колесо совершит за 0,331752 секунды или за nox=2'445'966 периодов Fo
K=36*7'372'877*2.07345=550'342'505.

10*V[км/час]=550'342'505*Nx/nox.

Например:
Измеряется скорость 28.76км/час
Колесо при какой скорости совершит один оборот за 28.76[км/час]/3.6=7.9(8)[м/сек]-> 7.9(8)[м/сек]/2.07345[м]=
3.85xxx[1/сек] или 0.259541сек. Так как период меньше принятого времени измерения дожидаемся прохождения еще одного
периода. При этом Nx=2 и nox=3'827'127
10*V=550'342'505*2/3'827'127=287.6
V=28.8 км/час
Если подойдёт, то можно и поисками асма заняться.

Re: Велокомп

Добавлено: Пт май 24, 2013 11:46:35
MAndrey90
меня интересует программная реализация,кто нибубь поможет кодом?

Re: Велокомп

Добавлено: Пт май 24, 2013 12:10:13
BoRtO

Re: Велокомп

Добавлено: Пт май 24, 2013 14:24:17
MAndrey90
Мне этот исходник ни о чем не говорит, куча всяких букв. Нужный мне кусок я так и не смог найти.

Re: Велокомп

Добавлено: Пт май 24, 2013 15:53:10
MAndrey90
Попытался написать код, но он нормально не работает, в чем ошибка? напрягают меня переменные величин . По нажатию кнопки(или геркону) на ЖКи выводятся случайные симовлы.

Код: Выделить всё

#include <mega8515.h>
#include <delay.h>
#include <lcd.h>
#asm
  .equ __lcd_port=0x15 ;
#endasm
#include <lcd.h>
 unsigned int num;// время
unsigned int l=100;//длина окружности
unsigned int n ; //кол-во оборотов
unsigned int v=0;//скорость
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TCNT1H=0;
TCNT1L=0;
 num++;  

}
 interrupt [EXT_INT0] void ext_int0_isr(void)
{ 
  n++; 
    
    }      


void main(void)
{
  MCUCR |= (0<<ISC01)|(0<<ISC00); //устанавливаем условие внешенго прерывания от INT0
    GICR |= (1<<INT0);   
    MCUCR |= (0<<ISC10)|(0<<ISC11); //устанавливаем условие внешенго прерывания от INT1
    GICR |= (1<<INT1);
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
PORTE=0x00;
DDRE=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x1E;
OCR1AL=0x85;
OCR1BH=0x00;
OCR1BL=0x00;
MCUCR=0x00;
EMCUCR=0x00;
TIMSK=0xC0;
UCSRB=0x00;
ACSR=0x80;
SPCR=0x00;


// Global enable interrupts
#asm("sei")

while (1)
      {
          v=l*n/num;//находим скорость
       lcd_init(16);//выводим на ЖКИ
  lcd_clear();
  lcd_gotoxy(0,0);  
    lcd_putchar(v);
  

      }
}

Re: Велокомп

Добавлено: Пт май 24, 2013 17:04:56
igor-x
напрягают меня переменные величин
а что это за величины?

Re: Велокомп

Добавлено: Пт май 24, 2013 17:12:04
MAndrey90
Ну время, расстояние. длина окружности и т.п.

Re: Велокомп

Добавлено: Пт май 24, 2013 17:16:34
igor-x
так вам уже предложили 2 готовых устройства которые можно скопировать не напрягаясь.
если же вы ставите себе задачу изучения вычислений на МК, то вероятно надо поискать учебные материалы .

Re: Велокомп

Добавлено: Пт май 24, 2013 17:36:56
MAndrey90
так, таких мк у меня нет, придется перекомпилировать весь проект, что равнозначно созданию прошивки по новой.