roboforum.ru

Технический форум по робототехнике.

Автомобильный вольтметр

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Автомобилльный вольтметр

Сообщение yak-40 » 13 авг 2009, 12:42

У тебя прерывание первого таймера не открыто.
Стоит TIMSK=0x01; а надо TIMSK=0x05;
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Автомобилльный вольтметр

Сообщение avr123.nm.ru » 13 авг 2009, 12:51

У меня сделано без прерываний в основном цикле программы, обычный счетчик считает ...
Код: Выделить всёРазвернуть
char ctr_out;

while(1) {
 
if (ctr_out > 100){  //  вывод на 7seg 2 раза в секунду
     out_7seg(data);     
ctr_out = 0;  // счетчик увеличивается 200 раз в сек в прерыв переполн таймер 0

следующий код программы ...

         }
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Автомобилльный вольтметр

Сообщение Master » 13 авг 2009, 13:18

2 yak-40 Убица ап стену, пасиба, а то у меня уже моск лопнул.
Я забыл совсем про этот регистр.
2 avr123.nm.ru Ну можно и так. Просто у меня таймер свободный.

Добавлено спустя 23 минуты 31 секунду:
Отредактировал первое сообщение, выложил проект. Теперь буду плату ваять.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Автомобилльный вольтметр

Сообщение blindman » 13 авг 2009, 18:39

Master, я бы внёс в код следующие изменения.

#define ind_0 и прочие заменил бы на

Код: Выделить всёРазвернуть
static char digits[] = {
   0b00111111,
   0b00000110,
   0b01011011,
   0b01001111,
   0b01100110,
   0b01101101,
   0b01111101,
   0b00000111,
   0b01111111,
   0b01101111,
};


и Displey() переписал бы так:

Код: Выделить всёРазвернуть
void Displey(void)
{
   unsigned int data = DCV_displey;
   //Выводим dro индикатор 
   ind_dro;
   PORTD = digits[data % 10];
   pause;
   data /= 10;
   //Выводим ed индикатор 
   ind_ed;
   PORTD = digits[data % 10];
   pause;
   data /= 10;
   //Выводим des индикатор 
   ind_des;
   PORTD = digits[data % 10];
   pause;
}


ИМХО компактнее и проще
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Автомобилльный вольтметр

Сообщение Master » 13 авг 2009, 21:52

Прикольно, пасиба поробую.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Автомобилльный вольтметр

Сообщение Master » 17 авг 2009, 09:54

Я тут задумал еще светодиодик добавить чтобы при низком заряде он зажигался. Какое напряжение считается низким для авто аккумулятора?
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Автомобилльный вольтметр

Сообщение =DeaD= » 17 авг 2009, 09:59

Правильно писать:

Display()

а то глаз царапает :wink:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Автомобилльный вольтметр

Сообщение yak-40 » 17 авг 2009, 10:41

Master писал(а):Какое напряжение считается низким для авто аккумулятора?

Тут вопрос вот в чём. При заведённом двигателе измерять или при заглушеном?
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Автомобилльный вольтметр

Сообщение avr123.nm.ru » 17 авг 2009, 10:57

Master писал(а):Я тут задумал еще светодиодик добавить чтобы при низком заряде он зажигался. Какое напряжение считается низким для авто аккумулятора?


10.5 самое низкое, поэтому меньше 11 я бы не советовал разряжать. А когда мотор работает напруга должна быть 13.8 - 14.2 вольт примерно но не менее 13.2 Если меньше то генератор не рубит как надо.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Автомобилльный вольтметр

Сообщение yak-40 » 17 авг 2009, 11:13

И получается, если настроить индикатор на заведённый двигатель, то при заглушеном светодиод будет всегда гореть :(
Вопрос: нужен ли он?
Возможное решение: делать датчик работы двигателя, и менять уставку индикатора.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Автомобилльный вольтметр

Сообщение Master » 17 авг 2009, 11:40

Блин, ну и хрен с ним, откуда я датчик работы двигателя возьму.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Автомобилльный вольтметр

Сообщение Master » 30 авг 2009, 00:25

На этой неделе снова вернулся к этой теме, буду уже печатку травить.
Переписал процедуру Displey как рекомендовал blindman все работает, только я не совсем понимаю как оно работает, вот давайте пошагово.
Допустим напряжение получилось 12,6 В
DCV_displey=13,6
Код: Выделить всёРазвернуть
void Displey(void)
{
   unsigned int data=DCV_displey;  =13,6
   //Выводим dro индикатор 
   ind_dro;
   PORTD=digits[data%10];   13,6%10=6
   pause;
   data=data/10;                 13,6/10=1,36 
   //Выводим ed индикатор 
   ind_ed;
   PORTD = digits[data%10]; 1,36%10=36 Что выводим 36 ????
   pause;
   data=data/10;
   //Выводим des индикатор 
   ind_des;
   PORTD = digits[data%10];
   pause;
}
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Автомобилльный вольтметр

Сообщение avr123.nm.ru » 30 авг 2009, 01:18

Master писал(а): откуда я датчик работы двигателя возьму.


Иногда принимают порог около 12,8 вольт как признак работы мотора. Если напруга в сети выше - то работает.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Автомобилльный вольтметр

Сообщение Master » 30 авг 2009, 01:42

А если генератор не работает? Лучше отдельный провод от зажигания кинуть.

Добавлено спустя 10 минут 45 секунд:
Блин я совсем запутался
чему будет равно
1. 13,6%10=3,6
2. 13,6/10=1 если переменные целые числа (всмысле что 13,6 это содержимое целочисленной переменной data)
верно?

Добавлено спустя 3 минуты 28 секунд:
Все разобрался.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Автомобилльный вольтметр

Сообщение avr123.nm.ru » 30 авг 2009, 12:13

1. 136 % 10 будет 6
2. 136 / 10 будет 13

3. 136 % 100 будет 36
4. 136 / 100 будет 1
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2