Ви не увійшли.
все идет четко, сравнивал даже с оптическим тахометром все норм, до 13 000 адекватно считает, а дальше слегка барахлит)) ну и этого хватит
Остання редакція Figaro 77 (2018-03-23 18:27:34)
Неактивний
Вот у меня стоит стоковое зажигания с китайским коммутатором, заводится с пол тыка, средние об. 4000-5500 норм крутит макс. крутящий на 5340 об, 11,4 H/м а дальше просто теряет крутящий момент. Я прорезал крепежные уши на датчике и сместил его в сторону УОЗ. эффект моментальный на лицо, теперь "заводится хорошо но долго " из за раннего зажигания. но крутящий увеличился 5.5 H/м и составляет 16.9 H/м. макс. крутящий сдвинулся на 6500 что очень хорошо и вывод - зажигание ограничивает мощность
Остання редакція Figaro 77 (2018-03-23 18:42:15)
Неактивний
Держи в курсе. Я немного пообщался. Есть сомнения что датчик холла идеально работает..
вот такой он
похож на датчик распредвала
Остання редакція Figaro 77 (2018-03-23 22:53:29)
Неактивний
один такой не рабочий я продиагностировал спец прибором "молотком" посмотрел что внутри. там плата cmd с кренкой по питанию за ней микруха, увы маркировки не скажу, излишки ускоренного процесса разборки данного устройства
Остання редакція Figaro 77 (2018-03-23 23:01:55)
Неактивний
Неактивний
я это уже 100500 раз видел
а контролеры PIC это фигня полная, куча возни и оно того не стоит
Неактивний
Мда.Человек обратился за помощью,а ему какие-то отговорки или подножки(грубо говоря).фигаро,я сам подумываю об этой задумке,тут два варианта:либо ставить датчик холла на угол,которы установлен заводом,но тогда реакция будет приходиться на следующий такт.считаю такая схема будет тупее второго варианта:поставить датчик холла на угол равный максимальным оборотам.тогда судя по оборотам,ардуинка будет расчитывать задержку после импульса.в принципе скетч будет очень похож на тахометр,основанный на прерываниях.но надо учитывать,что чем больше градаций,тем длинее код,а значит тупее ардуинка.возможно есть вариант расчитать хитрую формулу одну на все задержки
... а контролеры PIC это фигня полная, куча возни и оно того не стоит
PIC не Arduino! Это надёжные и простые микроконтроллеры, для определённого круга задач. Эта фигня, между прочим, приобрела Atmel.
Ну, насчёт простых я бы не сказал - семейка то большая. А в остальном согласен.)
Вот эти сложные: https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-high-performance-mcus/stm32h7-series.html, а ПИК-и простые.
... а ПИК-и простые.
Были простые! Давным давно. https://www.microchip.com/design-centers/32-bit/pic-32-bit-mcus/pic32mz-da-family Супер. Никто не желает поупражняться?
га ваше рассмотрение.эта беда заработает?:
volatile float time = 0;
volatile float time_last = 0;
int rpm = 0; //вводим переменную обороты
int ugol = 0; //вводим переменную угол опережения в зависимости от оборотов
int zader = 0; //вводим переменную для вычисления времени требуемого на градус от оборота в зависимости от частоты вращения
int bah = 0; // вводим переменную для вычисления угла/времени задержки до искры после прохождения отрицательного импульса
void setup()
{
// pinMode(2, INPUT);
pinMode(13, OUTPUT); //настроили пин 5 как выход на коммутатор
attachInterrupt(0, fan_interrupt, FALLING); //прерыватель настроили (надо поднастроить на положительный или отрицательный импульс в зависимости от принципиальной схемы
}
void fan_interrupt()
{
time = (micros() - time_last); //вычисляем время между импульсами
time_last = micros(); //обнуляем time_last
}
void loop()
{
rpm =(60*(1000000/time)); //вычисляем обороты в минуту
ugol = ((75000-(3*rpm))/1000); //вычисляем УОЗ зависимый от оборотов в минуту ("3" или "2" -это разница в градусах между тысячами оборотов)("75"*1000 -это угол от получения отрицательного импульса до ВМТ.)данные параметры надо подгонять.в данный момент эти параметры задают угол от0 до 30 градусов при оборотах от 0 до 10000.
zader = (166000/rpm); //вычисляем время на угол в зависимости от оборотов(166000 или 167000 -время на градус при 1000 об/мин умноженное на 1000 для более точного вычисления "времениградуса" с точностью на каждый оборот в минуту
bah = (ugol*zader);
if ((micros()<= bah) || (micros() >= (bah + 1000))) {
digitalWrite(13,LOW);
}
if ((micros()>= bah) && (micros()<=(bah + 1000))){
digitalWrite(13,HIGH);
}
}
//пример:если время на оборот(time) равно 5000мкс,то частота оборотов (rpm) равна 12000 об/мин.при 12000об/мин угол опережения равен 12000*3=36000, 75000-36000=39000, 39000/1000=39 градусов перед ВМТ должно быть опережение.Время потраченное на прохождение угла равному одному,при 12000об/мин равно(zader)...
// 166000/12000=13,8333333333 мкс/градус(надеюсь округлится до целого числа).и наконец вычисляем (bah)=39*13=507 мкс(время задержки от получения отрицательного импульса до момента отдачи команды на образование искры).