Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.03.2012, 13:04
|
|
Прописка
Регистрация: 21.11.2010
Адрес: Донецк
Сообщений: 236
Сказал спасибо: 37
Сказали Спасибо 40 раз(а) в 28 сообщении(ях)
|
Re: Задержка или опережение импульса
Да конечно тяжело вам бульдога с носорогом склещить будет.
Теория ДВС: за один обоот КВ, РВ делает пол оборота, при этом за один оборот РВ нужно 4 раза поджечь топливо.
|
|
|
|
27.03.2012, 14:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Задержка или опережение импульса
Сообщение от SAHA_T
|
а как она связанна с зажиганием ? и для чего она служит, может это для прерывателя ?
|
http://injectorservice.com.ua/hall.php
|
|
|
|
27.03.2012, 17:06
|
|
Прописка
Регистрация: 21.11.2010
Адрес: Донецк
Сообщений: 236
Сказал спасибо: 37
Сказали Спасибо 40 раз(а) в 28 сообщении(ях)
|
Re: Задержка или опережение импульса
Ну и шо это? надо другое: примерно вот это и вот это но тут не все, нет привязки к тактам и циклам. По тому как нас всегда учили чему нибудь и как нибудь.
|
|
|
|
27.03.2012, 18:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Задержка или опережение импульса
Сообщение от Сборисов
|
надо другое:
|
О - еще одно название - обтюратор с лопастями. ![Улыбка](images/smilies/icon_smile.gif) Такого еще не встречал.
|
|
|
|
27.03.2012, 21:28
|
|
Прописка
Регистрация: 21.11.2010
Адрес: Донецк
Сообщений: 236
Сказал спасибо: 37
Сказали Спасибо 40 раз(а) в 28 сообщении(ях)
|
Re: Задержка или опережение импульса
Есть реперный диск называется 60-2. Можно использовать ДНО+ДУИ такое в 2108-09-099 было в реэкспорте.
|
|
|
|
28.03.2012, 01:37
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка или опережение импульса
Люди а Вы точно программированием занимаетесь или все же автомобилями, так как знание в авто у Вас супер.
Завтра буду разбираться с этим исходником
#include ‹tiny2313.h›
#include ‹delay.h›
unsigned char i;
unsigned long int counter_rpm;
unsigned long int bufer;
flash char tablica[104]=
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
11,
12,
12,
13,
13,
14,
14,
15,
15,
15,
15,
15,
16,
16,
16,
16,
16,
16,
17,
17,
17,
17,
17,
17,
17,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
18,
17,
16,
15,
14,
10,
};
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCCR1B=0x00; //останавливаем счётчик 1Мгц
TCNT1L=TCNT1H=0xff; //заносим макс. значение
};
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
PORTB.4=1; //включаем КЗ
};
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
{
TCCR1B=0x00; //останавливаем счётчик 1Мгц
PORTB.4=0; //выключаем КЗ
};
void main(void)
{
DDRA=DDRB=DDRD=0xff;
DDRD.2=0; //вход под датчик
OCR1AL=OCR1AH=0xff;
OCR1BL=OCR1BH=0xff;
TIMSK=0xE0;
delay_ms(500);
while(PIND.2==1)
{
PORTB.4=1;
delay_us(1500);
PORTB.4=0;
delay_us(3500);
};
PORTB.4=0;
while(1)
{
while(PIND.2==0); //ждём входа лепестка
#asm("cli")
PORTB.4=0; //выключаем КЗ
PORTB.3=1; //вкл. светодиод
if(i›18&i‹104) PORTB.4=1;
TCNT1L=TCNT1H=0x00; //сбрасываем счётчик
TCCR1B=0x02; //запускаем счётчик 1Мгц
delay_us(500); //убираем дребезг
while(PIND.2==1); //измеряем скорость вращения
TCCR1B=0x00; //останавливаем счётчик 1Мгц
PORTB.3=0; //выкл. светодиод
counter_rpm=(TCNT1L|((int)TCNT1H‹‹ ![Горд собой](images/smilies/icon_dovl.gif) ); //читаем скорость вращения
i=60000/counter_rpm; //вычисляем ячейку таблицы
bufer=counter_rpm-(counter_rpm*tablica[i]/36)-150; //вычисляем задержку
OCR1BH=(char)(bufer›› ![Горд собой](images/smilies/icon_dovl.gif) ; //заносим задержку
OCR1BL=(char)bufer; //в счётчик
bufer=bufer-2000; //длительность импульса 2мс
OCR1AH=(char)(bufer›› ![Горд собой](images/smilies/icon_dovl.gif) ;
OCR1AL=(char)bufer;
TIFR=0xff; //сбрасываем флаги
TCNT1L=TCNT1H=0x00; //сбрасываем счётчик
TCCR1B=0x02; //запускаем счётчик 1Мгц
#asm("sei")
};
};
сразу встречный вопрос зачем тут массив.
|
|
|
|
29.03.2012, 15:10
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка или опережение импульса
Хочу узнать где тут задается начальный и конечный углы ? или массив это и есть показатели углов ?
|
|
|
|
02.04.2012, 09:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,690
Сказал спасибо: 130
Сказали Спасибо 1,089 раз(а) в 521 сообщении(ях)
|
Re: Задержка или опережение импульса
Если уж пошла такая пьянка - менять не систему зажигания а все мозги в сборе. Ибо углы зажигания тесно связаны с режимом двигателя.
Есть несколько проектов вполне доступных «мозгов». Есть megasquirt — www.megamanual.com/index.html, для этой аппаратной базы в последствии была написана и поддерживается кастомная прошивка с расширенным функционалом — msextra.com/doc/index.html На последнем сайте есть даже схемы этих «мозгов», может быть кому-то из электронщиков будет интересно. А программистам может быть интересно глянуть на код. Если не ошибаюсь, то он есть здесь. msextra.com/doc/ms2extra/files/release/ms2extra_3.2.1_release.zip
Есть еще VEMS — www.vems.hu/wiki/ который сначала назывался megasquirtAVR, но теперь сам по себе. Видел еще вот таких ребят — forum.diyefi.org/ там у них какой-то свой проект FreeEMS. На мой взгляд все это показывает, что все не так уж сложно и местами даже очень даже доступно.
|
|
|
|
02.04.2012, 11:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Задержка или опережение импульса
Сообщение от SAHA_T
|
где тут задается начальный и конечный углы ?
|
PHP код:
|
OCR1AL=OCR1AH=0xff; OCR1BL=OCR1BH=0xff;
|
...а конечный "0"... то бишь те самые механические 20 градусов.
Сообщение от SAHA_T
|
а Вы точно программированием занимаетесь или все же
|
Когда сын выразил желание стать программистом, сказал ему:
Математик должен знать математику, физик - математику и физику, а программист - и математику и физику и историю и химию и бухучёт и много всего другого...
|
|
|
|
02.04.2012, 14:18
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка или опережение импульса
Мне очень приятно, что хоть кто то откликнулся !!!
DanilinSA ты наверное меня не понял, или мне нужно заменить мозг ![Улыбка](images/smilies/icon_smile.gif) Я хотел бы не купить готовое, а самому интересней сделать и разобраться в принципе работы данной задачи.
У меня есть код, это большой +.
Если необходимо, могу выложить схему.
omercury согласен с тобой на все 200%.
OCR1AL=OCR1AH=0xff; = 255 т.е если мне нужно сделать задержку угла, тогда нужно указать к примеру С8 или еще меньше ?
Встречный вопрос зачем тут массив, почему он так объявляется (flash char tablica[104]={} ) вроди как он и влияет на задержку bufer=counter_rpm-(counter_rpm*tablica[i]/36)-150; при определенных оборотах, тогда я не могу понять где же тут условие типа если обороты 1000 то брать такую то ячейку из массива и смещать угол на данное значение, не пойму.
И еще что это за запись как ее понимать и какие значения появляются в данной переменной counter_rpm=(TCNT1L|((int)TCNT1H‹‹);
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:31.
|
|