Велокомп
- Сообщения: 43
- Зарегистрирован: Пт мар 29, 2013 13:07:03
Привет народ. Есть атмега8515, хочу на ней собрать велокомпьютер. Проблема заключается в следующем.Как настроить таймер и выводить(считать) текущую скорость велосипеда. По геркону будут считаться количество оборотов, длина окружности будет постоянной величиной. желательно с кодом. Весь моск себе уже сломал.
- Реклама
- Сообщения: 1817
- Зарегистрирован: Пн ноя 29, 2010 15:58:43
MAndrey90 Когда-то писАл
Если подойдёт, то можно и поисками асма заняться.
Спойлер
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 км/час
- Сообщения: 43
- Зарегистрирован: Пт мар 29, 2013 13:07:03
Пора что то поменять в своей жизни - поменял windows.
КПІ РТФ!
КПІ РТФ!
- Реклама
- Сообщения: 43
- Зарегистрирован: Пт мар 29, 2013 13:07:03
Мне этот исходник ни о чем не говорит, куча всяких букв. Нужный мне кусок я так и не смог найти.
- Сообщения: 43
- Зарегистрирован: Пт мар 29, 2013 13:07:03
Попытался написать код, но он нормально не работает, в чем ошибка? напрягают меня переменные величин . По нажатию кнопки(или геркону) на ЖКи выводятся случайные симовлы.
Код: Выделить всё
#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);
}
}- Сообщения: 1817
- Зарегистрирован: Пн ноя 29, 2010 15:58:43
- Сообщения: 43
- Зарегистрирован: Пт мар 29, 2013 13:07:03
- Сообщения: 1817
- Зарегистрирован: Пн ноя 29, 2010 15:58:43
так вам уже предложили 2 готовых устройства которые можно скопировать не напрягаясь.
если же вы ставите себе задачу изучения вычислений на МК, то вероятно надо поискать учебные материалы .
если же вы ставите себе задачу изучения вычислений на МК, то вероятно надо поискать учебные материалы .
- Сообщения: 43
- Зарегистрирован: Пт мар 29, 2013 13:07:03
так, таких мк у меня нет, придется перекомпилировать весь проект, что равнозначно созданию прошивки по новой.


