Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 17.04.2012, 09:52  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка или опережение импульса

Сборисов я повторюсь что движок 2т и не инжекторный поэтому моновпрыск тут будет лишним.

Alex9797 а с чем я могу столкнуться на практике ?
Реклама:
SAHA_T вне форума  
Непрочитано 17.04.2012, 12:28  
Сборисов
Прописка
 
Регистрация: 21.11.2010
Адрес: Донецк
Сообщений: 236
Сказал спасибо: 37
Сказали Спасибо 40 раз(а) в 28 сообщении(ях)
Сборисов на пути к лучшему
По умолчанию Re: Задержка или опережение импульса

Люди моноинжектор на 2109 прилепили и катаются...
Сборисов вне форума  
Непрочитано 17.08.2014, 13:12  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка или опережение импульса

Прошло много лет. Сейчас все же решил разобраться с данным вопросом и программой https://kazus.ru/forums/showpost.php...2&postcount=56

хотелось бы разобраться как читается данная строчка и какие значения возвращаются в counter_rpm
counter_rpm=(TCNT1L|((int)TCNT1H‹‹8 )); //читаем скорость вращения

i=60000/counter_rpm; //вычисляем ячейку таблицы

откуда взята такая формула ?
bufer=counter_rpm-(counter_rpm*tablica[i]/36)-150; //вычисляем задержку
OCR1BH=(char)(bufer››8 ); //заносим задержку
OCR1BL=(char)bufer; //в счётчик


bufer=bufer-2000; //длительность импульса 2мс
OCR1AH=(char)(bufer››8 );
OCR1AL=(char)bufer;


также я не совсем понимаю в какой последовательности берутся значения из таблицы flash char tablica[104]=
{....}

Также не могу понять эту строку if(i›18&i‹104) PORTB.4=1; на порт б4 будет 1 если i будет больше 18 или меньше 104, почему эта строчка не написана таким образом if(i›0&i‹103) PORTB.4=1; ?

Заранее спасибо.

Последний раз редактировалось SAHA_T; 17.08.2014 в 13:20.
SAHA_T вне форума  
Непрочитано 18.08.2014, 01:31  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Задержка или опережение импульса

Сообщение от SAHA_T Посмотреть сообщение
Прошло много лет.
Всего-то 2 года с гаком.

Сообщение от SAHA_T Посмотреть сообщение
хотелось бы разобраться как читается данная строчка и какие значения возвращаются в counter_rpm
counter_rpm=(TCNT1L|((int)TCNT1H‹‹8 )); //читаем скорость вращения
Старший байт счётчика таймера-1 сдвигается на 8 разрядов влево и складывается по ИЛИ с младшим байтом - в переменную читается 16-битное слово из счётного регистра Таймера-счётчика1.

Сообщение от SAHA_T Посмотреть сообщение
i=60000/counter_rpm; //вычисляем ячейку таблицы
Здесь вычисляется номер ячейки таблицы.
Сообщение от SAHA_T Посмотреть сообщение
откуда взята такая формула ?
bufer=counter_rpm-(counter_rpm*tablica[i]/36)-150; //вычисляем задержку
OCR1BH=(char)(bufer››8 ); //заносим задержку
OCR1BL=(char)bufer; //в счётчик
Думаю, подобрана экспериментально.

Сообщение от SAHA_T Посмотреть сообщение
bufer=bufer-2000; //длительность импульса 2мс
OCR1AH=(char)(bufer››8 );
OCR1AL=(char)bufer;
Две тысячи тиков таймера при такте в 1МГц как раз и есть 2 миллисекунды.

Сообщение от SAHA_T Посмотреть сообщение
также я не совсем понимаю в какой последовательности берутся значения из таблицы flash char tablica[104]=
{....}
Это совсем просто, элемент массива с номером, который вычислили по этой формуле -
PHP код:
i=60000/counter_rpm
читается в той самой откуда-то взявшейся формуле
PHP код:
bufer=counter_rpm-(counter_rpm*tablica[i]/36)-150
Сообщение от SAHA_T Посмотреть сообщение
Также не могу понять эту строку if(i›18&i‹104) PORTB.4=1; на порт б4 будет 1 если i будет больше 18 или меньше 104, почему эта строчка не написана таким образом if(i›0&i‹103) PORTB.4=1; ?
Таким образом отсекаются максимальные обороты двигателя в районе 6000prm, которые, видимо, были признаны слишком высокими. Катушка зажигания просто не включается и искрообразования нет.
omercury вне форума  
Непрочитано 18.08.2014, 14:58  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка или опережение импульса

omercury, Рад снова Вас слышать.
Спасибо за помощь.

Вчера экспериментировал в отладчике Studio 4, хотелось бы улучшить и довести до ума данную программу .
мы имеем скорость вращения
counter_rpm=(TCNT1L|((int)TCNT1H‹‹8 )); //читаем скорость вращения
макс значение будет составлять FFFF=65535.

В каких единицах будет измерятся counter_rpm скорость вращения и в каких пределах будет изменятся ?

i=60000/counter_rpm; //вычисляем ячейку таблицы i›=1 and i‹=104 но из данной формулы i может быть и больше чем 104

как бы сделать что бы * i * возвращало значения таблицы tablica[104]={....} от 1 до 104 т.е при скажем малых оборотах равных 500, i = 5 при 6000 i= 60 и при 10000 i= 100
а в самой таблице вводить значения угла смещения(задержка)

как рассчитать сколько миллисекунд нужно для смещения на 1 градус или 10-ть градусов ? и вот эти миллисекунды забить в таблицу обороты - градус

в результате
bufer= tablica[i] ; tablica[i] будет возвращать значение угол-обороты.

как рассчитать значение переменной bufer что бы оно соответствовало реальной задержке в таймере т.е 1 к 1
OCR1BH=(char)(bufer››8 ); //заносим задержку
OCR1BL=(char)bufer; //в счётчик

Я наверняка написал много непонятного, не судите плиз строго, логику МК мне трудно понять
Миниатюры:
Нажмите на изображение для увеличения
Название: Таблица-значений-.jpg
Просмотров: 67
Размер:	210.0 Кб
ID:	68716  

Последний раз редактировалось SAHA_T; 18.08.2014 в 15:02.
SAHA_T вне форума  
Непрочитано 19.08.2014, 00:51  
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: Задержка или опережение импульса

еще такой вопросик, как быть если к примеру у меня 4-х тактный двигатель, в 4-х тактном за цикл происходит 2 оборота вала, возможно ли сделать таким образом ?

counter_rpm= (((TCNT1L|((int)TCNT1H‹‹8 ))) * 2;
SAHA_T вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отрабатывается нужная задержка begun Микроконтроллеры, АЦП, память и т.д 8 13.06.2011 18:39
Задержка подачи питания LUMENoff Электроника - это просто 14 05.03.2011 17:34
задержка таймера PIC worldmasters Микроконтроллеры, АЦП, память и т.д 13 08.07.2009 11:11
задержка подачи питания dgvozd Отвлекитесь, эмбеддеры! 51 08.07.2009 09:58
Задержка включения kviper Микроконтроллеры, АЦП, память и т.д 5 12.08.2007 15:57


Часовой пояс GMT +4, время: 06:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot