Страница 26 из 35

Re: Цифровой спидометр

Добавлено: Пт май 25, 2012 23:20:21
dreamernf
Итак, пример кода на C (Code Vision):
определение переменных:

volatile unsigned char timer1_ovf_counter=0; // Cколько раз переполнялся таймер1 счёта импульсов
unsigned char timer1_ovf_counter_summ=0; // Cколько раз переполнялся таймер1 счёта импульсов - результирующее значение
unsigned char timer2_clock=0; // Необходимо для отсчёта времени 1 сек таймером 2


unsigned char timer1_counterH; // Старший байт таймера счёта по окончанию 1 сек
unsigned char timer1_counterL; // Младший байт таймера счёта по окончанию 1 сек

unsigned int frequency_tmp; // промежуточная переменная для расчета частоты

инициализация таймеров:
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 7.813 kHz
// Mode: CTC top=OCR0
// OC0 output: Disconnected
TCCR0=0x0D;
TCNT0=0x00;
OCR0=0x9C;


// Timer/Counter 1 initialization
// Clock source: T1 pin Rising Edge
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x07;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
// Mode: CTC top=OCR2
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x0F;
TCNT2=0x00;
OCR2=0x9C;


// Timer(s)/Counter(s) Interrupt(s) initialization
//TIMSK=0x02;
//TIMSK=0x06;
TIMSK=0x86;

функции прерываний:

// Timer2 отсчитывает 1 сек интервал и сохраняет значения счетчиков для расчета скорости
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
timer2_clock++;
//если значение счетчика равно 50 (20 мсек*50 = 1 сек) то запоминаем значения счетчиков таймеров
if (timer2_clock == FRQ_CLOCK){
timer1_counterL=TCNT1L;
timer1_counterH=TCNT1H;
TCNT1H=0x00;
TCNT1L=0x00;
timer1_ovf_counter_summ=timer1_ovf_counter;
timer1_ovf_counter=0;
timer2_clock=0;
// Расчет числа импульсов прошедших за период таймера2 с входа T1 таймера1
frequency=timer1_ovf_counter_summ;
frequency=frequency << 16;
frequency_tmp=timer1_counterH;
frequency_tmp=frequency_tmp << 8;
frequency_tmp=frequency_tmp+timer1_counterL;
frequency=frequency+frequency_tmp;
///получили текущую скорость и выполнили суммирование
avg_speed = ceil(frequency*SPEED_SENSOR_TYPE);

}
}


// Timer1 - вызов прерывания переполнения с каждым импульсом с датчика скорости
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
timer1_ovf_counter++;
}

и после этого в основном цикле выводим значение avg_speed:
sprintf(lcd_buffer,"%u км/ч ",avg_speed);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);

Re: Цифровой спидометр

Добавлено: Сб май 26, 2012 18:28:32
GP1
нифига не понял :shock:
к чему это здесь?

Re: Цифровой спидометр

Добавлено: Вс май 27, 2012 21:42:14
dreamernf
GP1 писал(а):нифига не понял :shock:
к чему это здесь?
мой вариант расчета скорости на C (Codevision AVR), может кому то пригодится

Re: Цифровой спидометр

Добавлено: Чт июн 07, 2012 02:19:01
bkost
При включении все в норме, а если подключаю генератор (от GP1 на 555), появляется такое:
Фото-0003.jpg
(81.2 КБ) 726 скачиваний
Подскажите, какая самая стабильная прошивка, именно по начальной схеме (без тахометров и т.п.) Я заливал
эти http://www.radiokot.ru/forum/viewtopic. ... 25#p470225 http://radiokot.ru/forum/viewtopic.php?p=524865#p524865

Re: Цифровой спидометр

Добавлено: Чт июн 07, 2012 07:53:01
GP1
Крайние варианты прошивок лежат на стр.22
у тебя вариант не совсем по начальной схеме, судя по фото стоит ULN2003 и нет внешней памяти.
да и скорость 521, как-то многовато будет, у меня он считает до 255 км/ч, однобайтовая переменная.

Re: Цифровой спидометр

Добавлено: Чт июн 07, 2012 08:50:43
bkost
GP1Ты имеешь ввиду вот эту "mega16-OA v23-03-2012.zip"? Просто боюсь ошибиться, первый раз залил не то, а тут уже линейки, тахометры. И можно ли малой кровью подправить прошивку под свои начальные значения пробега?

Re: Цифровой спидометр

Добавлено: Чт июн 07, 2012 08:58:04
GP1
Чтобы ответить на твой вопрос мне надо знать по какой схеме собран девайс
перекомпилить прошивку не проблема вообще, надо только знать нужна линейка или нет
начальные значения пишутся в ЕЕPROM либо во встроенную, либо во внешнюю, но порядок ячеек одинаков

Re: Цифровой спидометр

Добавлено: Чт июн 07, 2012 10:04:57
bkost
Ну вот не дождавшись пока админы исправят исходную статью, выкладываю измененную схему, прошивку и исходники от нового спидометра.
схема вот эта http://radiokot.ru/forum/download/file.php?id=34401
со встроенным EEP, хотя расстроился, прочитав твое замечание по поводу 100000 циклов перезаписи, но это меркнет, перед радостью заработавшего девайса :music:
Наивно думал открыть в hex-редакторе и подправить байты, ан нет - перекомпиляция. Мое начальное 413124 км. И спасибо за полезную вещь.
зы: без линеек. Если получится, скинь в личку, чтоб народ не вводить в заблуждение

Re: Цифровой спидометр

Добавлено: Чт июн 07, 2012 11:41:51
GP1
Хорошо, вечером сделаю

Re: Цифровой спидометр

Добавлено: Вс июн 10, 2012 12:00:24
bkost
Интересно, насколько дольше проживет внешняя EEPROM? И как узнать, что внутренняя сдыхает, чтобы успеть сохранить EEP в файл и прошить на другую мегу?

Re: Цифровой спидометр

Добавлено: Чт июн 14, 2012 00:50:29
bkost
GP1
Спасибо, вот такая солянка получилась, осталось испытать на машине
0001.jpg
(175.01 КБ) 902 скачивания

Re: Цифровой спидометр

Добавлено: Чт июн 14, 2012 16:43:50
GeparD
Как поправить прошивку под 4 и под 5 импульсов?? что нужно делать чтоб ее подправить???Обьясните пожалуйста

Re: Цифровой спидометр

Добавлено: Чт июн 14, 2012 21:58:02
GP1
bkost писал(а):GP1
Спасибо, вот такая солянка получилась, осталось испытать на машине
0001.jpg
мне ещё в прошлый раз показалось что индикатор "задом-на-перед" индицирует.
поменяй местами крайние аноды :wink:

Re: Цифровой спидометр

Добавлено: Чт июн 14, 2012 22:01:56
GP1
GeparD писал(а):Как поправить прошивку под 4 и под 5 импульсов?? что нужно делать чтоб ее подправить???Обьясните пожалуйста
скорость пересчитать не проблема, просто поменять константу (см.описание eeprom на 22 стр), а вот с пробегом...
там у меня такого набыдлокодено, :oops: что и сам не вспомню. :dont_know:

Re: Цифровой спидометр

Добавлено: Пт июн 15, 2012 19:54:20
bkost
Да, лоханулся :) , KEM5631, даташит не нашел, решил, что все стандартно - 1 = 12 нога, ан нет

Re: Цифровой спидометр

Добавлено: Ср июл 11, 2012 21:13:41
bkost
Как можно регулировать яркость семисегментников? Поставил вечерком в авто, жуть, как ярко

Re: Цифровой спидометр

Добавлено: Чт июл 12, 2012 05:35:31
GP1
на схеме есть переменный резистор - это и есть регулятор яркости.

Re: Цифровой спидометр

Добавлено: Чт июл 12, 2012 08:45:21
bkost
R7 22kOm? Вот я дятел, я посчитал, что он относится к ЖКИ и не ставил. И меня вылечат! :))

Re: Цифровой спидометр

Добавлено: Пн авг 13, 2012 14:18:17
Andrew71
GP1 писал(а):
GeparD писал(а):Как поправить прошивку под 4 и под 5 импульсов?? что нужно делать чтоб ее подправить???Обьясните пожалуйста
скорость пересчитать не проблема, просто поменять константу (см.описание eeprom на 22 стр), а вот с пробегом...
там у меня такого набыдлокодено, :oops: что и сам не вспомню. :dont_know:
Уважаемый GP1 как же быть? Хотел собрать и установить на мотоцикл "Урал", датчик планирую использовать 6ти импульсный, но у мотоцикла изменено соотношение передачи главной пары заднего моста и поэтому придётся подбирать количество импульсов на километр? :(

Re: Цифровой спидометр

Добавлено: Пн авг 13, 2012 22:03:08
GP1
вопрос конечно интересный :tea:
считай импульсы :)