Page 2 of 2

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 24 Oct 2016 13:00
by propell_ant
lame_reef, да, именно тут.

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 24 Oct 2016 23:59
by lame_reef
propell_ant, Сорри за глупые просьбы, но как-то не получается у меня пока совладать с этим СИ. :sorry:
Перемоделировав формулу получил такое:
OCR0A = 128 + 127*(Rpm_LoadOn - 2000) / 7000 +K_P* (Rpm_LoadOn - wRpm) / 7000.
В этом случае K_P - коэффициент противодействия (хорошо-бы его тоже заносить в переменную с клавиатуры, как и Rpm_LoadOn, но это уже "бирюльки").
А вот как вложить в программу - не могу понять. OCR0A - 8и битовый регистр. Ему надо целое число от 0 до 255. Да и значение скважности для двигателя не должно быть меньше 127 (иначе он отключается). Вот такое насочинял (только не смейтесь, плз) - это, ИМХО, максимум моих возможностей:
#ifdef PWM_OUT
unsigned char PWM_cycle;
PWM_cycle = (unsigned char) (128 + 127*(Rpm_LoadOn-2000)/7000 + K_P*(Rpm_LoadOn-wRpm)/7000);
if (PWM_cycle <128)
{
PWM_cycle = 128;
}
OCR0A = PWM_cycle;
#endif
Подправьте, плз, если что неправильно.
И тут-же возникли вопросы:
- а надо-ли ограничивать по верхнему пределу или формат переменной сам отрежет до 255?
- а если заносить в PWM_cycle дробное число от он туда засунет только целую часть или надо как-то округлять?
- ну и самое противное: Программа не влазит в контроллер. Компилятор говорит, что ему надо 1042 слова из 1024 доступных.
Сможете указать мне на мои "грабли"?

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 25 Oct 2016 23:34
by propell_ant
попробуйте убрать эти строчки, начиная с 759-ой:

Code: Select all

if ((eeRpm_LoadOn > 8000) | (eeRpm_LoadOn < 30))    //если в EEPROM значение > 8000 или < 30 значит он не прошился, или 
{  
  eeRpm_LoadOn = 30;                             //чё-то глюкануло, поэтому запишем туда начальные значения.
  eeSwitchDelay = 10;                             //это тоже на всякий случай перезапишем
} 
это проверка правильности настроек - можно ее пока убрать

Добавлено спустя 6 минут 55 секунд:
lame_reef wrote: - а надо-ли ограничивать по верхнему пределу или формат переменной сам отрежет до 255?
- а если заносить в PWM_cycle дробное число от он туда засунет только целую часть или надо как-то округлять?
1. скажем так, если станет 257, то в переменной окажется 1
2. чтобы было дробное число нужно, чтобы тип переменной был ... не целочисленным. и с такими типами в attiny дулать нечего. Даже деление целых чисел довольно накладно. Результат деления целых чисел - тоже целое число.

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 26 Oct 2016 09:26
by lame_reef
propell_ant, спасибо. Вечером попробую.

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 31 Oct 2016 11:32
by nickjust
привет
есть ваз 2106 со штатным тахометром - бесконтактная система зажигания
тахометр старый нах ,а ваш в разработку, -
нужно чтобы при >=2000 об/м срабатывало реле и выключало если меньше 2000 об/м
http://natapku.ru/ustrojstvo/taxometr-vaz-2106.html


З.Ы. А можно скомпилировать схему/прошивку под Attiny26 у меня их есть...?!
И вообще супер бы было если можно выбирать пороговое значение оборотов? :-)

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 01 Nov 2016 20:10
by propell_ant
nickjust, это всё реализовано в прошивке, выложенной в первом посте этой темы.
Кроме Attiny26 - это нет.

Re: Тахометр на ATtiny2313 с реакцией на скорость вращения

Posted: 14 May 2017 19:06
by rar
Всем привет тахометр с сигнализацией обрыва который я собрал, благодаря помощи от участников этого форума, благополучно трудится на производстве уже достаточно долго облегчая труд оператора вакуумного напыления. И пришло время поделится результатом. Так, что всем кто помогал огромное спасибо!!! Выкладываю фотографии уже встроенного в установку тахометра и честно говоря такое впечатление, что так всё и было