Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

константин11
2020-02-24 17:57:41

га ваше рассмотрение.эта беда заработает?:
  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 мкс(время задержки от получения отрицательного импульса до момента отдачи команды на образование искры).

Green
2020-02-17 10:23:36

Ото ж.) Та даже в свежих PIC12 достаточно наворотов, не говоря уже о 18-й серии. Уж поболее чем в AVR.)

Watchdog
2020-02-16 14:49:50
Watchdog пише:

... а ПИК-и простые.  smile

Были простые! Давным давно. https://www.microchip.com/design-centers/32-bit/pic-32-bit-mcus/pic32mz-da-family Супер. Никто не желает поупражняться? lol

Watchdog
2020-02-16 14:37:39
Green пише:

Ну, насчёт простых я бы не сказал - семейка то большая. А в остальном согласен.)

Вот эти сложные: https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-high-performance-mcus/stm32h7-series.html, а ПИК-и простые.  smile

Green
2020-02-16 09:47:05

Ну, насчёт простых я бы не сказал - семейка то большая. А в остальном согласен.)

Watchdog
2020-02-16 07:40:01
Figaro 77 пише:

... а контролеры PIC это фигня полная, куча возни и оно того не стоит hmm

PIC не Arduino! Это надёжные и простые микроконтроллеры, для определённого круга задач. Эта фигня, между прочим, приобрела Atmel. big_smile

Константин11
2020-02-15 23:50:35

Мда.Человек обратился за помощью,а ему какие-то отговорки или подножки(грубо говоря).фигаро,я сам подумываю об этой задумке,тут два варианта:либо ставить датчик холла на угол,которы установлен заводом,но тогда реакция будет приходиться на следующий такт.считаю такая схема будет тупее второго варианта:поставить датчик холла на угол равный максимальным оборотам.тогда судя по оборотам,ардуинка будет расчитывать задержку после импульса.в принципе скетч будет очень похож на тахометр,основанный на прерываниях.но надо учитывать,что чем больше градаций,тем длинее код,а значит тупее ардуинка.возможно есть вариант расчитать хитрую формулу одну на все задержки

Figaro 77
2018-03-28 23:22:46

я это уже 100500 раз видел
а контролеры PIC это фигня полная, куча возни и оно того не стоит hmm

Batu
2018-03-23 23:13:32

Тут дело не в конкретной железяке, а в физических принципах работы этого датчика..)) Но, спасибо. За конкретные модели позже спрошу..

Figaro 77
2018-03-23 22:58:14

один такой не рабочий я продиагностировал спец прибором  "молотком" lol  посмотрел что внутри. там плата cmd с кренкой по питанию за ней микруха, увы маркировки не скажу, излишки ускоренного процесса разборки данного устройства  big_smile

Figaro 77
2018-03-23 22:52:07
Batu пише:

Держи в курсе. Я немного пообщался. Есть сомнения что датчик холла идеально работает..

вот такой он
5668.jpg
похож на датчик распредвала

Batu
2018-03-23 22:17:13

Держи в курсе. Я немного пообщался. Есть сомнения что датчик холла идеально работает..

Figaro 77
2018-03-23 18:38:28

Вот у меня стоит стоковое зажигания с китайским коммутатором, заводится с пол тыка, средние об. 4000-5500 норм крутит макс. крутящий на 5340 об, 11,4 H/м а дальше просто теряет крутящий момент. Я прорезал крепежные уши на датчике и сместил его в сторону УОЗ. эффект моментальный на лицо, теперь "заводится хорошо но долго lol "  из за раннего зажигания. но крутящий увеличился 5.5 H/м и составляет 16.9 H/м. макс. крутящий сдвинулся на 6500 что очень хорошо и вывод - зажигание ограничивает мощность

Figaro 77
2018-03-23 18:25:30

все идет четко, сравнивал даже с оптическим тахометром все норм, до 13 000 адекватно считает, а дальше слегка барахлит)) ну и этого хватит smile

Підвал форуму