Я у вас спрашивал откуда берете сигнал с коленвала или от датчика тахометра TD. Тоже собрал блок для гбо ардуино UNO на выходе поставил полевые логические транзисторы(40 ампер) модель точно уже не помню катаюсь уже больше 10 000км без проблем
У него, походу. вообще нет привязки к датчику - оно "не заработало", там "нужны таблицы и графики" - а это сложно... так что он просто открывает форсунки на 1 мс один раз в 25мс и все
Я у вас спрашивал откуда берете сигнал с коленвала или от датчика тахометра TD. Тоже собрал блок для гбо ардуино UNO на выходе поставил полевые логические транзисторы(40 ампер) модель точно уже не помню катаюсь уже больше 10 000км без проблем
Сигнал беру с распредвала на нем 4 холла повесил.Что за тупость сигнал с тахометра брать.
впрыск уменьшить с 160 мс до 1 мкс, как мечтает автор - экономия в 160 тыс раз!
Ну во первых впрыск работает на 2 милисикундах примерно(тахометр не работает) до 4000 оборотов сегодня пробовал.А 1 милисекунда это не предел можно и в микры перейти похоже форсунки на пределе в холостую работают а под давлением сил открытся нету надо другие искать.
А во вторых это не мечты а реальность ,это у вас все в мечтах.Я без практики ни чего не делаю в ращетах можно ошибится а на практике нет.
А во вторых это не мечты а реальность ,это у вас все в мечтах.Я без практики ни чего не делаю в ращетах можно ошибится а на практике нет.
Это точно. Уверен, что на практике там никакими 1 мс и не пахнет - форсунки открываются и закрываются как и прежде, на десятки и сотни миллисекунд, просто у тебя нет приборов, чтобы это измерить. Критерий прост - если не получишь снижения расхода хотя бы в 10 раз - значит скетч нифига не работает.
infyniti пишет:
Ответе лучше на вопрос через ком порт одновременно можно следить за всеми датчиками одновременно.
Это точно. Уверен, что на практике там никакими 1 мс и не пахнет - форсунки открываются и закрываются как и прежде, на десятки и сотни миллисекунд, просто у тебя нет приборов, чтобы это измерить. Критерий прост - если не получишь снижения расхода хотя бы в 10 раз - значит скетч нифига не работает.
Програмно меня устоновленно 1 милисикунда а в чем я уверен то что у меня 15 ОМ форсы и в холостую они срабатывают 350 микросекунд не мили а вот под нагрузкой 1-1.5 милисикунды еле тянут на 2 стабильная работа
Это точно. Уверен, что на практике там никакими 1 мс и не пахнет - форсунки открываются и закрываются как и прежде, на десятки и сотни миллисекунд, просто у тебя нет приборов, чтобы это измерить. Критерий прост - если не получишь снижения расхода хотя бы в 10 раз - значит скетч нифига не работает.
И еще возми калькулятор и посчитай за какое время делает каленвал 2 оборота там сотнями не пахнет 160 мл на холостом и 13.3333333мл на 9 т. А если будет 13.4 то попращайся со своими форсами через несколько минут.
Ответе лучше на вопрос через ком порт одновременно можно следить за всеми датчиками одновременно.
А при чём тут датчики к компорту? Датчики подключаются не к компорту, а к ардуино. В свою очередь, ардуино получает с них данные и потом пересылает в компорт. Поэтому, как уже сказали выше, всё зависит от написанной программы.
И еще возми калькулятор и посчитай за какое время делает каленвал 2 оборота там сотнями не пахнет 160 мл на холостом
Ты совсем тупой? С чем ты споришь? сам же пишешь, что на ХХ - 160мс. Вот примерно столько твои форсы и открыты. а не 1мс
Еще раз - для тупых. Если бы у тебя мотор мог бы работать на форсунках , открытых 1 мс вместо 160 мс - у тебя расход упал бы в 100 раз. А этого у тебя нет, и уверен - никогда не будет. Значит в твоих расчетах ошибка
И еще возми калькулятор и посчитай за какое время делает каленвал 2 оборота там сотнями не пахнет 160 мл на холостом
Ты совсем тупой? С чем ты споришь? сам же пишешь, что на ХХ - 160мс. Вот примерно столько твои форсы и открыты. а не 1мс
Еще раз - для тупых. Если бы у тебя мотор мог бы работать на форсунках , открытых 1 мс вместо 160 мс - у тебя расход упал бы в 100 раз. А этого у тебя нет, и уверен - никогда не будет. Значит в твоих расчетах ошибка
Как может быть ошибка в работе самого двигателя?Я его завел и он работает.И еще раз повторяю электронная форсунка это не механическая она должна отдыхать большее время чем работать иначе сгорит.
Еще раз - для тупых. Если бы у тебя мотор мог бы работать на форсунках , открытых 1 мс вместо 160 мс - у тебя расход упал бы в 100 раз. А этого у тебя нет, и уверен - никогда не будет. Значит в твоих расчетах ошибка
А расход на ХХ для к -джетроника это и есть проблема .Когда стоиш больше расход больше.Ездиш больше расход меньше.Арасход на ХХ действительно упадет в 100 раз.
Не всегда это возможно, зачем выключать двигатель на 30 секунд ведь пуск движка сожрет столькоже.Но если уменьшить расход на ХХ то за месяц можно хорошо сэкономить.
А потом если катится с горки с выключиным двигателем????Аварийная ситуация.Только одно нажатие на тормоз ,неработающая гидравлика,и ночью с выключиными фарами и габаритами?
Конечно спасибо за все но это я все знаю я бывший инжекторщик.Это для тех кто со мной спорил надо, а то у них такты в соттнях милисикунд .
Я конечно некрасиво влезу в ветку но на сколько мне известно на 124 любые попытки привести в чувство KJ Troniс заканчиваются групповым суицидом всех кто к этому причастен ))) Может стоит подумать о экономии нервов и поставить январь какойнибудь? Так по идее проще должно быть в разы....
Я конечно некрасиво влезу в ветку но на сколько мне известно на 124 любые попытки привести в чувство KJ Troniс заканчиваются групповым суицидом всех кто к этому причастен ))) Может стоит подумать о экономии нервов и поставить январь какойнибудь? Так по идее проще должно быть в разы....
Насчет суицида я не согласен ,в к-джетронике нет ни чего сложного если знаеш отремонтируешь,кто не знает тому конечно веревку с мылом вместо надежной езды.
Здесь больше интерес к тому,почему не поставили электро форсунки а сразу перешли на ЭБУ здесь датчики не нужны все делает механника а вот отрезать расход на холостых можно с помощью элфорсунок.
Скорее это финансовый вопрос какой потребитель будет интересоватся этим.
Инжектор стоит и работает ввопрос в том как его обвешать как мне нужно убрать расход(на данный момент он 7-9 литров), а на январе пусть катаются т(В)АЗы.Да и турбину чтоб поставить надо ЭБУ обкатывать к-джетроник нет.
//--------------------Cl_Idling---------------------------------------------
// класс холостого хода
class Cl_Idling {
const byte _pin;
uint32_t *const _pntIdling;// указатель переменную которая меняет значение холостого хода по положению ручки потенциометра
uint32_t past = 0;
public:
/*конструктор:Cl_Idling
описание: оздает объект класса
ввод: pin: -нога для подключения потенциометра
pntIdling: указатель на переменную которую меняют
вывод;
*/
Cl_Idling(byte pin, uint32_t *pntIdling): _pin(pin), _pntIdling(pntIdling) {}
/*конструктор:setup
описание:для нормальной работы класса вставьте в setup программы
ввод: нет
вывод; нет
*/
void setup() {
*_pntIdling = map(analogRead(_pin), 0, 1023,/*min*/ 1,/*max*/ 80);//min, max пределы регулирования
}
/*функция :loop
описание:для нормальной работы класса вставьте в loop программы
ввод: нет
вывод; нет
*/
void loop() {
if (mill - past >=/*время*/5) {// время опроса в миллисек
past = mill; //<---здесь должна быть такая строчка
*_pntIdling = map(analogRead(_pin), 0, 1023,/*min*/ 1,/*max*/ 80);//min, max пределы регулирования
}
}
};
ПС: А такая конструкция должна быть более быстрее
/**/
unsigned long mill;
//-----Cl_Tuk-----------------------
class Cl_Tuk {
unsigned long time;
unsigned long past = 0;
public:
Cl_Tuk(unsigned long _time): time(_time) {}
void setup() {}
void loop() {
if (mill - past >= time) {
past = mill;
Serial.println("Tuk");
}
}
};
//----Компоновка------------------------
const unsigned long time_1s = 1000;
Cl_Tuk Tuk(/*время*/time_1s);
//-----main-----------------------
int main() {
init();
// setup
Serial.begin(9600);
for (;;) {
// loop
mill = millis();
Tuk.loop();
}
return 0;
}
/*Скетч использует 1514 байт (4%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 202 байт (9%) динамической памяти, оставляя 1846 байт для локальных переменных. Максимум: 2048 байт.
*/
//--------------------Cl_Idling---------------------------------------------
// класс холостого хода
class Cl_Idling {
const byte _pin;
uint32_t *const _pntIdling;// указатель переменную которая меняет значение холостого хода по положению ручки потенциометра
uint32_t past = 0;
public:
/*конструктор:Cl_Idling
описание: оздает объект класса
ввод: pin: -нога для подключения потенциометра
pntIdling: указатель на переменную которую меняют
вывод;
*/
Cl_Idling(byte pin, uint32_t *pntIdling): _pin(pin), _pntIdling(pntIdling) {}
/*конструктор:setup
описание:для нормальной работы класса вставьте в setup программы
ввод: нет
вывод; нет
*/
void setup() {
*_pntIdling = map(analogRead(_pin), 0, 1023,/*min*/ 1,/*max*/ 80);//min, max пределы регулирования
}
/*функция :loop
описание:для нормальной работы класса вставьте в loop программы
ввод: нет
вывод; нет
*/
void loop() {
if (mill - past >=/*время*/5) {// время опроса в миллисек
past = mill; //<---здесь должна быть такая строчка
*_pntIdling = map(analogRead(_pin), 0, 1023,/*min*/ 1,/*max*/ 80);//min, max пределы регулирования
}
}
};
ПС: А такая конструкция должна быть более быстрее
/**/
unsigned long mill;
//-----Cl_Tuk-----------------------
class Cl_Tuk {
unsigned long time;
unsigned long past = 0;
public:
Cl_Tuk(unsigned long _time): time(_time) {}
void setup() {}
void loop() {
if (mill - past >= time) {
past = mill;
Serial.println("Tuk");
}
}
};
//----Компоновка------------------------
const unsigned long time_1s = 1000;
Cl_Tuk Tuk(/*время*/time_1s);
//-----main-----------------------
int main() {
init();
// setup
Serial.begin(9600);
for (;;) {
// loop
mill = millis();
Tuk.loop();
}
return 0;
}
/*Скетч использует 1514 байт (4%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 202 байт (9%) динамической памяти, оставляя 1846 байт для локальных переменных. Максимум: 2048 байт.
*/
Я не о потенциометрах там (тоже пробовал)отдельная история я еще не дошол, 2 должны будут добавлять(холостой ход и нагрузка) один отнимать(температура)но они на данный момент не подключины еще.
Я заливал код на 2 датчика холла и 4 инжектора он от скачков напрежения или замыкания виснит.Начинает работать сам. Движок стоит а инжектора включаются сами по себе.
Я не стал разбиратся в этом и решил переделать всетаки на 4 холла и 4 инжектора + 2 комутатора зажигания .
Так работает чем и пока пользуюсь
/*
порядок 1-3-2-4
под мега 2560
ардуино пин A13 <--> средний вывод потенциометра нагрузки
ардуино пин A14 <--> на вывод термистора // cчитаем еще один потенциометр
ардуино пин A15 <--> средний вывод потенциометра холостой ход
расчет потенциометров-холостой ход + нагрузка + прогрев
холостой ход + прогрев без нагрузки
холостой ход + нагрузка без прогревa
ардуино пин 8 <--> датчик холла 1
ардуино пин 9 <--> датчик холла 3
ардуино пин 10 <--> датчик холла 2
ардуино пин 11 <--> датчик холла 4
ардуино пин 22 <--> инжектор 1
ардуино пин 23 <--> инжектор 3
ардуино пин 24 <--> инжектор 2
ардуино пин 25 <--> инжектор 4
ардуино пин 26 <--> катушка 1
ардуино пин 27 <--> катушка 2
*/
uint32_t micro, mill; // переменные для micros() и millis()
/*
//--------------------Cl_Potentiometer---------------------------------------------
// класс потемциометр . Меняет значение внешней переменной в зависимости от ручки потенциометра
class Cl_Potentiometer {
const byte _pin;
uint32_t *const _pntTemp;// указатель переменную которая меняет значение температуры по положению ручки потенциометра(входящее значение)
uint32_t *const _pntTime;// указатель переменную которая меняет значение времени по положению ручки потенциометра
uint32_t past = 0;
public:
Cl_Potentiometer(byte pin, uint32_t *pntTemp, uint32_t *pntTime): _pin(pin), _pntTemp(pntTemp), _pntTime(pntTime) {}
void setup() {
* _pntTime = _pntTemp + map(analogRead(_pin), 0, 1023, 0, 2000); //<--- здесь функция поворота ручки в значение
}
void loop() {
if (micro - past > 1) {
*_pntTime = _pntTemp + map(analogRead(_pin), 0, 1023, 0, 2000); //<--- здесь функция поворота ручки в значение
}
}
};
//--------------------Cl_Temp---------------------------------------------
// класс измерителя температуры
class Cl_Temp {
const byte _pin;
uint32_t *const _pntTemp;// указатель переменную которая меняет значение температуры по положению ручки потенциометра
byte past = 0;
public:
Cl_Temp(byte pin, uint32_t *pntTemp): _pin(pin), _pntTemp(pntTemp) {}
void setup() {
*_pntTemp = map(analogRead(_pin), 0, 1023, 3000, 0);//<--- здесь функция поворота ручки в значение температуры
}
void loop() {
if (micro - past > 1) {
*_pntTemp = map(analogRead(_pin), 0, 1023, 3000, 0);//<--- здесь функция поворота ручки в значение температуры
}
}
};*/
//--------------------Cl_XolostoiXod---------------------------------------------
// класс холостого хода
class Cl_XolostoiXod {
const byte _pin;
uint32_t *const _pntXolostoiXod;// указатель переменную которая меняет значение холостого хода по положению ручки потенциометра
uint32_t past = 0;
public: Cl_XolostoiXod(byte pin, uint32_t *pntXolostoiXod)
: _pin(pin), _pntXolostoiXod(pntXolostoiXod) {}
void setup() {
*_pntXolostoiXod = map(analogRead(_pin), 0, 1023, 1000, 5000);//<--- здесь функция поворота ручки в значение холостого хода
}
void loop() {
if (micro - past > 1) {
*_pntXolostoiXod = map(analogRead(_pin), 0, 1023, 1000, 5000);//<--- здесь функция поворота ручки в значение холостого хода
}
}
};
//--------------------Cl_HallToInject-------------------------------
// класс Датчик Холла задает начало открытия инжектора
class Cl_HallToInject {
uint32_t time = 0; // длительность
uint32_t *const _pnt;// указатель переменную которая задает новое значение time
const byte _Hall_pin ; // пин холла
const byte _Inject_pin;// пин инжектора
bool Hall, Hall_old;
bool Inject;
bool _invH, _invI; // инверсия выходов датчика Холла и инжектора
uint32_t past = 0;
public:
Cl_HallToInject(byte Hall_pin, bool invH, byte Inject_pin, bool invI, uint32_t *pnt)
: _Hall_pin(Hall_pin), _invH(invH), _Inject_pin(Inject_pin), _invI(invI) , _pnt(pnt) {}
void setup() {
pinMode(_Hall_pin, INPUT);
Hall_old = _invH ^ digitalRead( _Hall_pin);
pinMode(_Inject_pin, OUTPUT);
Inject = 0;
digitalWrite(_Inject_pin, _invI ^ Inject);
}
void loop() {
Hall = _invH ^ digitalRead( _Hall_pin);
if (Hall && !Hall_old) { // если сработал датчик Холла
Hall_old = 1;
Inject = 1; // то вкл Инжектор
digitalWrite(_Inject_pin, _invI ^ Inject);
time = *_pnt; // выставить новое время впрыска
past = micro;
}
else if (!Hall && Hall_old) {
Hall_old = 0;
}
if (Inject && micro - past >= time) { // если истекло время
Inject = 0; // то выкл Инжектор
digitalWrite(_Inject_pin, _invI ^ Inject);
}
}
};
//--------------------Cl_HallToCamutator-------------------------------
// класс Датчик Холла задает искру
class Cl_HallToCamutator {
uint32_t time1 = 1000; // длительность 1 milliсекунды
uint32_t *const _pnt;// указатель переменную которая задает новое значение time
const byte _Hall_pin ; // пин холла
const byte _Camutator_pin;// пин камутатора
bool Hall, Hall_old;
bool Camutator;
bool _invH, _invI; // инверсия выходов датчика Холла и камутатора
uint32_t past = 0;
public:
Cl_HallToCamutator(byte Hall_pin, bool invH, byte Camutator_pin, bool invI, uint32_t *pnt)
: _Hall_pin(Hall_pin), _invH(invH), _Camutator_pin(Camutator_pin), _invI(invI) , _pnt(pnt) {}
void setup() {
pinMode(_Hall_pin, INPUT);
Hall_old = _invH ^ digitalRead( _Hall_pin);
pinMode(_Camutator_pin, OUTPUT);
Camutator = 0;
digitalWrite(_Camutator_pin, _invI ^ Camutator);
}
void loop() {
Hall = _invH ^ digitalRead( _Hall_pin);
if (Hall && !Hall_old) { // если сработал датчик Холла
Hall_old = 1;
Camutator = 1; // то вкл камутатор
digitalWrite(_Camutator_pin, _invI ^ Camutator);
time1 = *_pnt; // выставить новое время искры
past = micro;
}
else if (!Hall && Hall_old) {
Hall_old = 0;
}
if (Camutator && micro - past >= time1) { // если истекло время
Camutator = 0; // то выкл камутатор
digitalWrite(_Camutator_pin, _invI ^ Camutator);
}
}
};
//------------------Компоновка---------------------------------
uint32_t time1 = 1000; // длительность искры
uint32_t temp = 0; // температура
uint32_t time = 0; // длительность впрыска
Cl_XolostoiXod XolostoiXod(/*пин потенциометра*/A13,/*переменая*/&time);// подключить потенциометр холостого хода
//Cl_Temp Temp(/*пин потенциометра*/A13,/*переменая*/&time);// подключить термометр
//Cl_Potentiometer Potentiometer(/*пин потенциометра*/A15,/* входная переменая*/&temp,/*выходная переменая*/&time);// подключить потенциометр нагрузки
// Замечание: Если вам нужно проинвертировать сигнал, то замените 0 на 1
Cl_HallToInject HallToInject1(/*датчик Холла*/8,/*инверт сиг с датХолла*/1,/*инжектор*/22,/*инверт сиг на инжектор*/0,/*время впрыска*/&time);
Cl_HallToInject HallToInject2(/*датчик Холла*/9,/*инверт сиг с датХолла*/1,/*инжектор*/23,/*инверт сиг на инжектор*/0,/*время впрыска*/&time);
Cl_HallToInject HallToInject3(/*датчик Холла*/10,/*инверт сиг с датХолла*/1,/*инжектор*/25,/*инверт сиг на инжектор*/0,/*время впрыска*/&time);
Cl_HallToInject HallToInject4(/*датчик Холла*/11,/*инверт сиг с датХолла*/1,/*инжектор*/24,/*инверт сиг на инжектор*/0,/*время впрыска*/&time);
Cl_HallToCamutator HallToCamutator1(/*датчик Холла*/8,/*инверт сиг с датХолла*/1,/*инжектор*/38,/*инверт сиг на инжектор*/0,/*время впрыска*/&time1);
Cl_HallToCamutator HallToCamutator2(/*датчик Холла*/9,/*инверт сиг с датХолла*/1,/*инжектор*/46,/*инверт сиг на инжектор*/0,/*время впрыска*/&time1);
Cl_HallToCamutator HallToCamutator3(/*датчик Холла*/10,/*инверт сиг с датХолла*/1,/*инжектор*/38,/*инверт сиг на инжектор*/0,/*время впрыска*/&time1);
Cl_HallToCamutator HallToCamutator4(/*датчик Холла*/11,/*инверт сиг с датХолла*/1,/*инжектор*/46,/*инверт сиг на инжектор*/0,/*время впрыска*/&time1);
//------------------main()---------------------------------
void setup() {
Serial.begin(9600);
// RPM.setup();
//Temp.setup();
XolostoiXod.setup();
//Potentiometer.setup();
HallToInject1.setup();
HallToInject2.setup();
HallToInject3.setup();
HallToInject4.setup();
HallToCamutator1.setup();
HallToCamutator2.setup();
HallToCamutator3.setup();
HallToCamutator4.setup();
}
void loop() {
Serial.println(time);
micro = micros();
mill = millis();
XolostoiXod.loop();
//Temp.loop();
//Potentiometer.loop();
HallToInject1.loop();
HallToInject2.loop();
HallToInject3.loop();
HallToInject4.loop();
HallToCamutator1.loop();
HallToCamutator2.loop();
HallToCamutator3.loop();
HallToCamutator4.loop();
}
Просто решил переделать 2 холла на 4 холла потому что в этом скатче нет задержки перед впрыском а в том есть.
Можно конечно попробовать вставить,но пока ума не хвотает.
Можно я немного мыслей выдам?
1. Классы для микроконтроллеров можно применять в приложениях для рюшечек. Кнопочки, буковки....
2. Сама изначальная идеология микроконтроллеров - системы реального времени с максимально быстрой реакцией на внешние события, что подразумевает использование прерываний, что не совместимо с классами прямо.
3. Если использовать прерывания в программе, то на одном корпусе наны можно сделать все хотелки ТС, при этом большую часть времени процессор будет спать.
Что бы это реализовать, нужна точная блоксхема необходимой программы со всеми управляющими сигналами и реакцией на них. У ТС не хватает знаний понять это. Жаль. Пять страниц темы даже не приблизили к результату.
nik182. Ну вы здесь глубоко не правы. Наверно вы знаете про "закон Мура"- ну там где все растет лавинообразно. Но в отличии от железа. Работать программисты по закону Мура не могут. Так что бы освоить весь фунционал контролера приходится переходить на модульность системы, языки высокого уровня. Так что из-за этого Си стал Си++ и в ООП. Но все это преамбула. Посмотрите на камень Ардуины, с которым мы работаем. Он уже перестал быть маленьким. Но и да в этом он уже стал слабым для теперешних хотелок, по памяти и по аппаратной части. И как вы собираетсь их программировать. Или на пседоклассах- подключаемых файлах библиотек отдельных функций связаных функционалом. Или уже без надувания щек-"не место классов в программировании контролеров" использовать классы при программировании микропроцессоров.
ПС: Я не хотел обидить вас. Скорее всего вы программируете МК лучше меня, но без классов уже никуда. Вот только тащить в МК стандартную библиотеку шаблонов рановато. Мелковаты пока МК.
qwone - как говорят, самый подходящий язык программирования для задачи - тот, который лучше знаешь. Есть люди, которые все пишут через классы. а есть отличные программисты, решающие задачи вообще без ООП. и программы у них получаются не хуже.
В задаче ТС нет ничего такого, что требовало бы решать ее только через классы.Не надо начинать холивар на тему "процедуры vs ООП" . Смысл сообщения nik182 совсем в другом - проблема этого кода не в реализации, а в том что ТС крайне слабо представляет. чтоже конкретно нужно запрограммировать.
Можно я немного мыслей выдам? 1. Классы для микроконтроллеров можно применять в приложениях для рюшечек. Кнопочки, буковки.... 2. Сама изначальная идеология микроконтроллеров - системы реального времени с максимально быстрой реакцией на внешние события, что подразумевает использование прерываний, что не совместимо с классами прямо. 3. Если использовать прерывания в программе, то на одном корпусе наны можно сделать все хотелки ТС, при этом большую часть времени процессор будет спать. Что бы это реализовать, нужна точная блоксхема необходимой программы со всеми управляющими сигналами и реакцией на них. У ТС не хватает знаний понять это. Жаль. Пять страниц темы даже не приблизили к результату.
Дело не в блок схеме ее дествительно нет,я пытаюсь сделать универсальную схему для всего, моновпрыск,инжектор, чтобы не нужно было перезаливать а изменить параметры отверткой.
А так как я не концерн фолксваген где все занимаются своей задачей с необходимыми приборами,то у меня это занимает на много больше времени тем более что я занимаюсь и своими делами кроме авто.Все проходит в последовательности, я не считаю что я дам схему и она заработает.Потом с простыней возится?Зачем?
О прерываниях пока только мысли сейчас все строится на меге2560 и ее хватает.
А пять страниц темы 4 из которой спам то что поделать форум.В споре рождается истина,хотя не одного совета по изменению моего мнения.
Ну а о том что нет результатов это не в тему, все работает проверенно на авто но требует коррекции и доработки.
Смысл сообщения nik182 совсем в другом - проблема этого кода не в реализации, а в том что ТС крайне слабо представляет. чтоже конкретно нужно запрограммировать.
Ведь и Я слабо представляю, что надо запрограммировать. Но программирование через классы позволяет абстрагироваться от железа. Это тоже не решает задачу. Программирование через процедуры более сложное. Вот поэтой причине все на написания кода забили.
Я не против классов. Я против классов в реалтайм. Здесь именно такая задача. Реалтайм реакция нужна. Абстрагироваться от железа нельзя. Ваша идея об абстракции хороша для больших машин, но даже там есть драйвера - прокладки, которые позволяют абстрагироваться. Сами драйвера абстагируясь не напишешь. Здесь как раз ситуация писания драйвера к железу. Куда вы собираетесь абстагироветься?
Вот возьми-те стандартную ситуацию. Есть заказчик, у заказчика есть проект и есть вы . Разумеется вы хотите кушать. Замечательно если проект вылизан и его нужно просто перевести в код. Но если у заказчика только есть хочу. И это хочу он видел на выставке, но платить за это он не хочет. Он хочет платить вам, а вам надо "кушать". Что делать. Поэтому рисуется код макет из той херни, вам дали под названием ТЗ. Код лучше рисовать все же через классы. Потому так все же быстрее. Да и подключать можно уже проверенные наработки. Потом показ. Заказчик понимает что это и то и не то одновременно. Но работа есть , часть денег можно получить. А вот если уже все отлажено,то можно уже раскрыть классы и переложить на процедуры . Разумеется так программа станет лучше.
Я не против классов. Я против классов в реалтайм. Здесь именно такая задача. Реалтайм реакция нужна. Абстрагироваться от железа нельзя. Ваша идея об абстракции хороша для больших машин, но даже там есть драйвера - прокладки, которые позволяют абстрагироваться. Сами драйвера абстагируясь не напишешь. Здесь как раз ситуация писания драйвера к железу. Куда вы собираетесь абстагироветься?
А где у меня железо?Это форсунки чтоли?Или потенциометр или датчик температуры?Может камутатор интерестно куда здесь дрова нужны?
Вот возьми-те стандартную ситуацию. Есть заказчик, у заказчика есть проект и есть вы . Разумеется вы хотите кушать. Замечательно если проект вылизан и его нужно просто перевести в код. Но если у заказчика только есть хочу. И это хочу он видел на выставке, но платить за это он не хочет. Он хочет платить вам, а вам надо "кушать". Что делать. Поэтому рисуется код макет из той херни, вам дали под названием ТЗ. Код лучше рисовать все же через классы. Потому так все же быстрее. Да и подключать можно уже проверенные наработки. Потом показ. Заказчик понимает что это и то и не то одновременно. Но работа есть , часть денег можно получить. А вот если уже все отлажено,то можно уже раскрыть классы и переложить на процедуры . Разумеется так программа станет лучше.
Полностью согласен если чтото не нравится можно это заменить не переписывая.
http://microsin.net/adminstuff/hardware/power-mosfet-tutorial.html
Я у вас спрашивал откуда берете сигнал с коленвала или от датчика тахометра TD. Тоже собрал блок для гбо ардуино UNO на выходе поставил полевые логические транзисторы(40 ампер) модель точно уже не помню катаюсь уже больше 10 000км без проблем
У него, походу. вообще нет привязки к датчику - оно "не заработало", там "нужны таблицы и графики" - а это сложно... так что он просто открывает форсунки на 1 мс один раз в 25мс и все
4 СМД чуда припоял завтра буду пробовать, дадут они мне 1 милисекунду или на микросекунду могут выйти.
Я у вас спрашивал откуда берете сигнал с коленвала или от датчика тахометра TD. Тоже собрал блок для гбо ардуино UNO на выходе поставил полевые логические транзисторы(40 ампер) модель точно уже не помню катаюсь уже больше 10 000км без проблем
Сигнал беру с распредвала на нем 4 холла повесил.Что за тупость сигнал с тахометра брать.
Еще чуть скеч доработать, и движок таки сам начнет мироточить бензином.
Еще чуть скеч доработать, и движок таки сам начнет мироточить бензином.
впрыск уменьшить с 160 мс до 1 мкс, как мечтает автор - экономия в 160 тыс раз!
Еще чуть скеч доработать, и движок таки сам начнет мироточить бензином.
Останется подвести к нему трубу и ... почём там нынче за баррель дают?
впрыск уменьшить с 160 мс до 1 мкс, как мечтает автор - экономия в 160 тыс раз!
Ну во первых впрыск работает на 2 милисикундах примерно(тахометр не работает) до 4000 оборотов сегодня пробовал.А 1 милисекунда это не предел можно и в микры перейти похоже форсунки на пределе в холостую работают а под давлением сил открытся нету надо другие искать.
А во вторых это не мечты а реальность ,это у вас все в мечтах.Я без практики ни чего не делаю в ращетах можно ошибится а на практике нет.
Ответе лучше на вопрос через ком порт одновременно можно следить за всеми датчиками одновременно.
А во вторых это не мечты а реальность ,это у вас все в мечтах.Я без практики ни чего не делаю в ращетах можно ошибится а на практике нет.
Это точно. Уверен, что на практике там никакими 1 мс и не пахнет - форсунки открываются и закрываются как и прежде, на десятки и сотни миллисекунд, просто у тебя нет приборов, чтобы это измерить. Критерий прост - если не получишь снижения расхода хотя бы в 10 раз - значит скетч нифига не работает.
Ответе лучше на вопрос через ком порт одновременно можно следить за всеми датчиками одновременно.
можно, конечно, если программировать умеешь
Это точно. Уверен, что на практике там никакими 1 мс и не пахнет - форсунки открываются и закрываются как и прежде, на десятки и сотни миллисекунд, просто у тебя нет приборов, чтобы это измерить. Критерий прост - если не получишь снижения расхода хотя бы в 10 раз - значит скетч нифига не работает.
Програмно меня устоновленно 1 милисикунда а в чем я уверен то что у меня 15 ОМ форсы и в холостую они срабатывают 350 микросекунд не мили а вот под нагрузкой 1-1.5 милисикунды еле тянут на 2 стабильная работа
Это точно. Уверен, что на практике там никакими 1 мс и не пахнет - форсунки открываются и закрываются как и прежде, на десятки и сотни миллисекунд, просто у тебя нет приборов, чтобы это измерить. Критерий прост - если не получишь снижения расхода хотя бы в 10 раз - значит скетч нифига не работает.
И еще возми калькулятор и посчитай за какое время делает каленвал 2 оборота там сотнями не пахнет 160 мл на холостом и 13.3333333мл на 9 т. А если будет 13.4 то попращайся со своими форсами через несколько минут.
Так как они перестанут закрыватся и сгорят.
160 милисекунд 4 такта тоесть впуск длится 40 милисикунд и то в конце и в начале клапан закрыт какие сотни???
Ответе лучше на вопрос через ком порт одновременно можно следить за всеми датчиками одновременно.
А при чём тут датчики к компорту? Датчики подключаются не к компорту, а к ардуино. В свою очередь, ардуино получает с них данные и потом пересылает в компорт. Поэтому, как уже сказали выше, всё зависит от написанной программы.
И еще возми калькулятор и посчитай за какое время делает каленвал 2 оборота там сотнями не пахнет 160 мл на холостом
Еще раз - для тупых. Если бы у тебя мотор мог бы работать на форсунках , открытых 1 мс вместо 160 мс - у тебя расход упал бы в 100 раз. А этого у тебя нет, и уверен - никогда не будет. Значит в твоих расчетах ошибка
Я это и имел в виду не надо придиратся я не тупой.Что датчик работает я и без ком порта знаю а вот как работает мохет знать только программа.
И еще возми калькулятор и посчитай за какое время делает каленвал 2 оборота там сотнями не пахнет 160 мл на холостом
Еще раз - для тупых. Если бы у тебя мотор мог бы работать на форсунках , открытых 1 мс вместо 160 мс - у тебя расход упал бы в 100 раз. А этого у тебя нет, и уверен - никогда не будет. Значит в твоих расчетах ошибка
Как может быть ошибка в работе самого двигателя?Я его завел и он работает.И еще раз повторяю электронная форсунка это не механическая она должна отдыхать большее время чем работать иначе сгорит.
Еще раз - для тупых. Если бы у тебя мотор мог бы работать на форсунках , открытых 1 мс вместо 160 мс - у тебя расход упал бы в 100 раз. А этого у тебя нет, и уверен - никогда не будет. Значит в твоих расчетах ошибка
А расход на ХХ для к -джетроника это и есть проблема .Когда стоиш больше расход больше.Ездиш больше расход меньше.Арасход на ХХ действительно упадет в 100 раз.
Таже проблемма у карбюраторов если сделать электронный ускоритель расход упадет минимумна литр на сотню обьяснять не буду.
Когда стоиш больше расход больше.Ездиш больше расход меньше.
Нобелевскую премию в студию! :)
Больше стоишь - больше расход - это верно для любой машины. Купи себе учебник арифметики для второго класса....
Купи себе учебник арифметики для второго класса....
Не так
Надо писать Гугл в помощь....
Когда стоиш больше расход больше.Ездиш больше расход меньше.
А если стоять с выключенным зажиганием?
Не всегда это возможно, зачем выключать двигатель на 30 секунд ведь пуск движка сожрет столькоже.Но если уменьшить расход на ХХ то за месяц можно хорошо сэкономить.
А потом если катится с горки с выключиным двигателем????Аварийная ситуация.Только одно нажатие на тормоз ,неработающая гидравлика,и ночью с выключиными фарами и габаритами?
http://www.oldmerin.net/board/index.php?showtopic=215706
http://www.oldmerin.net/board/index.php?showtopic=215706
У меня к-джетроник вообще не каких датчиков электрических или электронных нет кроме прогрева .
На 102 ке-джетроник подача топлива регулируется через ЭБУ уже все на датчиках. но форсы механические.
Теперь понятно, я то думал зачем вставить датчик холла так как TD сигнал и так дает тот же сигнал
Думаю вам поможет для более грамотный настройки топлива
Конечно спасибо за все но это я все знаю я бывший инжекторщик.Это для тех кто со мной спорил надо, а то у них такты в соттнях милисикунд .
Yer, почему было не вставить ПДФ, если источник в нем? Вы думаете, кто-то станет ломать глаза, рассматривая скрин-шоты?
Конечно спасибо за все но это я все знаю я бывший инжекторщик.Это для тех кто со мной спорил надо, а то у них такты в соттнях милисикунд .
Я конечно некрасиво влезу в ветку но на сколько мне известно на 124 любые попытки привести в чувство KJ Troniс заканчиваются групповым суицидом всех кто к этому причастен ))) Может стоит подумать о экономии нервов и поставить январь какойнибудь? Так по идее проще должно быть в разы....
Я конечно некрасиво влезу в ветку но на сколько мне известно на 124 любые попытки привести в чувство KJ Troniс заканчиваются групповым суицидом всех кто к этому причастен ))) Может стоит подумать о экономии нервов и поставить январь какойнибудь? Так по идее проще должно быть в разы....
Насчет суицида я не согласен ,в к-джетронике нет ни чего сложного если знаеш отремонтируешь,кто не знает тому конечно веревку с мылом вместо надежной езды.
Здесь больше интерес к тому,почему не поставили электро форсунки а сразу перешли на ЭБУ здесь датчики не нужны все делает механника а вот отрезать расход на холостых можно с помощью элфорсунок.
Скорее это финансовый вопрос какой потребитель будет интересоватся этим.
Инжектор стоит и работает ввопрос в том как его обвешать как мне нужно убрать расход(на данный момент он 7-9 литров), а на январе пусть катаются т(В)АЗы.Да и турбину чтоб поставить надо ЭБУ обкатывать к-джетроник нет.
qwone в этом коде неправильные пчелы и они делают неправельный мед.
решил переделать под 4 датчика
qwone у меня получаются не правельные пчелы и они не делают мед совсем.Компилятор пропускает но ни чего не происходит.
чтото я упустил,где ошибка?
Может так
ПС: А такая конструкция должна быть более быстрее
Может так
ПС: А такая конструкция должна быть более быстрее
Я не о потенциометрах там (тоже пробовал)отдельная история я еще не дошол, 2 должны будут добавлять(холостой ход и нагрузка) один отнимать(температура)но они на данный момент не подключины еще.
Я заливал код на 2 датчика холла и 4 инжектора он от скачков напрежения или замыкания виснит.Начинает работать сам. Движок стоит а инжектора включаются сами по себе.
Я не стал разбиратся в этом и решил переделать всетаки на 4 холла и 4 инжектора + 2 комутатора зажигания .
Так работает чем и пока пользуюсь
Просто решил переделать 2 холла на 4 холла потому что в этом скатче нет задержки перед впрыском а в том есть.
Можно конечно попробовать вставить,но пока ума не хвотает.
Вобщем такая ситуация когда за коментируешь 3холла 3 инжектора и все камутаторы
1 холл и 1 инжектор работают,раскоментируешь ни чего вообще не работает.
Похоже вам не хватает этого класса. Изменение значения переменной ручкой потенциометра и выводом ее в serial.
Вот еще один код
Похоже вам не хватает этого класса.
Можно я немного мыслей выдам?
1. Классы для микроконтроллеров можно применять в приложениях для рюшечек. Кнопочки, буковки....
2. Сама изначальная идеология микроконтроллеров - системы реального времени с максимально быстрой реакцией на внешние события, что подразумевает использование прерываний, что не совместимо с классами прямо.
3. Если использовать прерывания в программе, то на одном корпусе наны можно сделать все хотелки ТС, при этом большую часть времени процессор будет спать.
Что бы это реализовать, нужна точная блоксхема необходимой программы со всеми управляющими сигналами и реакцией на них. У ТС не хватает знаний понять это. Жаль. Пять страниц темы даже не приблизили к результату.
nik182. Ну вы здесь глубоко не правы. Наверно вы знаете про "закон Мура"- ну там где все растет лавинообразно. Но в отличии от железа. Работать программисты по закону Мура не могут. Так что бы освоить весь фунционал контролера приходится переходить на модульность системы, языки высокого уровня. Так что из-за этого Си стал Си++ и в ООП. Но все это преамбула. Посмотрите на камень Ардуины, с которым мы работаем. Он уже перестал быть маленьким. Но и да в этом он уже стал слабым для теперешних хотелок, по памяти и по аппаратной части. И как вы собираетсь их программировать. Или на пседоклассах- подключаемых файлах библиотек отдельных функций связаных функционалом. Или уже без надувания щек-"не место классов в программировании контролеров" использовать классы при программировании микропроцессоров.
ПС: Я не хотел обидить вас. Скорее всего вы программируете МК лучше меня, но без классов уже никуда. Вот только тащить в МК стандартную библиотеку шаблонов рановато. Мелковаты пока МК.
qwone - как говорят, самый подходящий язык программирования для задачи - тот, который лучше знаешь. Есть люди, которые все пишут через классы. а есть отличные программисты, решающие задачи вообще без ООП. и программы у них получаются не хуже.
В задаче ТС нет ничего такого, что требовало бы решать ее только через классы.Не надо начинать холивар на тему "процедуры vs ООП" . Смысл сообщения nik182 совсем в другом - проблема этого кода не в реализации, а в том что ТС крайне слабо представляет. чтоже конкретно нужно запрограммировать.
Похоже вам не хватает этого класса.
Дело не в блок схеме ее дествительно нет,я пытаюсь сделать универсальную схему для всего, моновпрыск,инжектор, чтобы не нужно было перезаливать а изменить параметры отверткой.
А так как я не концерн фолксваген где все занимаются своей задачей с необходимыми приборами,то у меня это занимает на много больше времени тем более что я занимаюсь и своими делами кроме авто.Все проходит в последовательности, я не считаю что я дам схему и она заработает.Потом с простыней возится?Зачем?
О прерываниях пока только мысли сейчас все строится на меге2560 и ее хватает.
А пять страниц темы 4 из которой спам то что поделать форум.В споре рождается истина,хотя не одного совета по изменению моего мнения.
Ну а о том что нет результатов это не в тему, все работает проверенно на авто но требует коррекции и доработки.
Ведь и Я слабо представляю, что надо запрограммировать. Но программирование через классы позволяет абстрагироваться от железа. Это тоже не решает задачу. Программирование через процедуры более сложное. Вот поэтой причине все на написания кода забили.
Я не против классов. Я против классов в реалтайм. Здесь именно такая задача. Реалтайм реакция нужна. Абстрагироваться от железа нельзя. Ваша идея об абстракции хороша для больших машин, но даже там есть драйвера - прокладки, которые позволяют абстрагироваться. Сами драйвера абстагируясь не напишешь. Здесь как раз ситуация писания драйвера к железу. Куда вы собираетесь абстагироветься?
qwone до меня еще не доходит как вставить переменную задержки впрыска перед впрыском
Вот возьми-те стандартную ситуацию. Есть заказчик, у заказчика есть проект и есть вы . Разумеется вы хотите кушать. Замечательно если проект вылизан и его нужно просто перевести в код. Но если у заказчика только есть хочу. И это хочу он видел на выставке, но платить за это он не хочет. Он хочет платить вам, а вам надо "кушать". Что делать. Поэтому рисуется код макет из той херни, вам дали под названием ТЗ. Код лучше рисовать все же через классы. Потому так все же быстрее. Да и подключать можно уже проверенные наработки. Потом показ. Заказчик понимает что это и то и не то одновременно. Но работа есть , часть денег можно получить. А вот если уже все отлажено,то можно уже раскрыть классы и переложить на процедуры . Разумеется так программа станет лучше.
А где у меня железо?Это форсунки чтоли?Или потенциометр или датчик температуры?Может камутатор интерестно куда здесь дрова нужны?
Вот возьми-те стандартную ситуацию. Есть заказчик, у заказчика есть проект и есть вы . Разумеется вы хотите кушать. Замечательно если проект вылизан и его нужно просто перевести в код. Но если у заказчика только есть хочу. И это хочу он видел на выставке, но платить за это он не хочет. Он хочет платить вам, а вам надо "кушать". Что делать. Поэтому рисуется код макет из той херни, вам дали под названием ТЗ. Код лучше рисовать все же через классы. Потому так все же быстрее. Да и подключать можно уже проверенные наработки. Потом показ. Заказчик понимает что это и то и не то одновременно. Но работа есть , часть денег можно получить. А вот если уже все отлажено,то можно уже раскрыть классы и переложить на процедуры . Разумеется так программа станет лучше.
Полностью согласен если чтото не нравится можно это заменить не переписывая.