Автомобили, топлинни машини, алтернативни горива > Запалителни системи
Запалителни системи с управление на предварението
valex:
Задачка за <8 клас. На мен ми е трудно да я реша :(
Имаме автомобил, който се движи по наклонен път праволинейно и равноускорително. Покрай пътя има на равни разстояния S стълбове на ЕнергоПро. Засичаме времето за което се изминава разстоянието между всеки два стълба Tx.
Търси се формула за времето Т4 на преминаване покрай следващия стълб ако имаме 3 последователни засичания на времена между стълбове Т1 Т2 Т3.
Прилагам и пищов: http://spravochnik-fizika.hit.bg/index_files/Page347.htm
koko5:
Значи съм на прав път :) остана да преработя алгоритъма така че с един процесор да смята всичко... но все не ми стига броя на таймерите.
Пика не е 16f628A! Ползвания е с 18 пина, а 628 в опаковка SSOP e с 20 пина.
Ако можеш пусни и снимка отдолу.
По твоята задачка... нали по-рано ми написа формулата за това - алфа-бета-гама.
Разбира се, реших да видя как работи, преди да се опитам да го имплементирам в кода.
Сложих формулата в клетка D1 в ексел, а в А1,B1,C1 измерените интервали (при теб стълбовете) :)
= C1 + (C1 - B1)/((C1 + B1)/2)*C1 + ((C1 - B1)/(C1 + B1)*2-(B1 - A1)/(B1 + A1)*2)/((((C1 + B1)/2)+((B1 + A1)/2))/2)*C1*C1
valex:
Пусни таймера да се върти постоянно, а само при фронтовете взимай стойността му. За изчисленията на интервалите проверявай дали крайната стойност < от началната тогава значи, че таймера е превъртял и тогава преизчисляваш с превъртането.
Онова решение не ме устройва. Вкарани са коефициенти при сумирането на производните, което вкарва някаква неопределеност. За това търся друг начин. Това със задачката е 'аналов' метод на решаване. Може да имам проблем от дискретизацията на оборотите (времето за оборот го меря с таймер на 0.1mS).
Измислил съм и друг алгоритъм използващ скоростта и ускорението на промяната на времената между две засечки на обороти. Но нещо пак ми избягва :( По-късно ще го опиша.
koko5:
Оки, ще посмятам да видя какво ще излезе, така или иначе мислих да опитам дали мога да доразвия формулата така, че да смята на поне 5 интервала назад.
Относно таймера - Т0 е 8 битов и се превърта бързичко. При 600 оборота -> 100 мS. За да превърти не повече от веднъж: 100mS/500=0.2mS=200mikroS -> a това би означавало прескалер 256. При същия прескалер при 6000 оборота -> 10 мS таймера ще навърта 4 единици за 1мS, или 40 за един оборот, което пък означава на всеки 9 градуса по една единица -> твърде неточно.
Таймера на 0,1 милисекунда не е добра идея. По горните сметки... при 6000 оборота имаш 10мS за един оборот или 3.6 градуса за 0,1 милисекунда.
valex:
Няма смисъл по-вече извадки. Само се увеличат сметките.
Така е за оборотите. Но при тези високи обороти не е фатална 3.6 градуса неточност. При мен има доста сметки в прекъсването. Другия вариант ще го ускорявам.
Мини на 16 битов бърз таймер за да не превърта.
Пускам втория алгоритъм, който май е верен ама нещо пак не ми върши работа. Не знам защо?
Навигация
[0] Списък на темите
Премини на пълна версия