Микас спорт и 8 цилиндров

вопросы по работе с программами, FAQ
Сообщение
Автор
nikll
Сообщения: 161
Зарегистрирован: Ср май 27, 2009 9:26 am

Микас спорт и 8 цилиндров

#1 Сообщение nikll »

Вобщем сделал я програмку для микросхемы pic16F887, на симуляторе работает на ура всяко обтестировался .
Теперь осталось дело за малым, мне нужна помощь в схемотехнике для реализации тествого прототипа, и будет всем обладателям виэйтов счастье .

Код: Выделить всё

// автор: nikll@rambler.ru
// программа написанна на microC (http://www.mikroe.com/), тестировал на симуляторе PIC Simulator IDE (www.oshonsoft.com)
//
// на PORTA целпяем форсунки (с 1 по 4 контакты) и катушки (с 5 по 8 либо 5 и 6 в зависимости от выводов контроллера)
// с PORTB (1-4) идут сигналы на дублирующщие через 90градусов форсунки, и (5-8 или 4-6) сигналы на дублирующщие через 90градусов катушки
// 
// необходимо сделать обвязку на микросхему и чертеж печатной платы для изготовления опытного образца.



unsigned long
	OnTimeFors = 0,		// время между открытиями форсунок
	LastOnTimeFors = 0,	// время до открытия дублирующщей форсунки
	OffTimeFors = 0,	// время между закрытиями форсунок
	LastOffTimeFors = 0,	// время до закрытия дублирующщей форсунки
	OnTimeIng = 0,		// время между открытиями форсунок
	LastOnTimeIng = 0,	// время до открытия дублирующщей форсунки
	OffTimeIng = 0,		// время между закрытиями форсунок
	LastOffTimeIng = 0;	// время до закрытия дублирующщей форсунки

char
	lastfors=0,		// предыдущщее состояние форсунок
	diff,			// изменение в состоянии форсунок
	onfors,			// включившиися форсунки
	lastonfors=0,		// предыдущщие включившиися форсунки
	offors,			// отключившиися форсунки
	lastoffors=0,		// предыдущщие отключившиися форсунки
	outfors=0,		// состояние дублирующщих форсунок
	oning,			// включившиися катушки
	lastoning=0,		// предыдущщие включившиися катушки
	offing,			// отключившиися катушки
	lastoffing=0;		// предыдущщие отключившиися катушки


void interrupt() {
	if (INTCON.T0IF) {
		TMR0  = 160;
		
		diff = PORTA ^ lastfors;		// получаем изменение в состоянии форсунок и катушек

		onfors = diff & PORTA & 0x0F;		// получаем список включившихся форсунок
		offors = diff & lastfors & 0x0F;	// получаем список отключившихся форсунок

		oning  = diff & PORTA & 0xF0;		// получаем список включившихся катушек
		offing = diff & lastfors & 0xF0;	// получаем список отключившихся катушек

		if (onfors>0) {				// если есть открывшиеся форсунки то
			lastonfors = onfors;
			LastOnTimeFors = OnTimeFors;	// сохраняем время между открытиями
			OnTimeFors = 0;			// и обнуляем счетчик.
		} else OnTimeFors++;			// иначе увелчиваем счетчик

  		if (oning>0) {				// если есть сигнал на катушки то
			lastoning = oning;
			LastOnTimeIng = OnTimeIng;	// сохраняем время между сигналами
			OnTimeIng = 0;			// и обнуляем счетчик.
		} else OnTimeIng++;			// иначе увелчиваем счетчик

		if (LastOnTimeFors>1) {			// если время еще не вышло то
			LastOnTimeFors--;		// отматываем таймер с двойной скоростью чтобы получить половиную задержку
			LastOnTimeFors--;
		} else outfors = outfors | lastonfors;

		if (LastOnTimeIng>1) {			// если время еще не вышло то
			LastOnTimeIng--;		// отматываем таймер с двойной скоростью чтобы получить половиную задержку
			LastOnTimeIng--;
		} else outfors = outfors | lastoning;

		if (offors>0) {				// если есть закрывшиеся форсунки то
			lastoffors = offors;
			LastOffTimeFors = OffTimeFors;	// сохраняем время между закрытиями
			OffTimeFors = 0;		// и обнуляем счетчик.
		} else OffTimeFors++;			// иначе увелчиваем счетчик

		if (offing>0) {				// если нет сигнала на катушки то
			lastoffing = offing;
			LastOffTimeIng = OffTimeIng;	// сохраняем время между пропаданиями сигнала
			OffTimeIng = 0;			// и обнуляем счетчик.
		} else OffTimeIng++;			// иначе увелчиваем счетчик

		if (LastOffTimeFors>1) {		// если время еще не вышло то
			LastOffTimeFors--;		// отматываем таймер с двойной скоростью чтобы получить половиную задержку
			LastOffTimeFors--;
		} else {
			if (lastoffors.F0) outfors.F0=0;
			if (lastoffors.F1) outfors.F1=0;
			if (lastoffors.F2) outfors.F2=0;
			if (lastoffors.F3) outfors.F3=0;
		}

		if (LastOffTimeIng>1) {			// если время еще не вышло то
			LastOffTimeIng--;		// отматываем таймер с двойной скоростью чтобы получить половиную задержку
			LastOffTimeIng--;
		} else {
			if (lastoffing.F4) outfors.F4=0;
			if (lastoffing.F5) outfors.F5=0;
			if (lastoffing.F6) outfors.F6=0;
			if (lastoffing.F7) outfors.F7=0;
		}

////////////////////////////////////////////////////////////////////
		lastfors = PORTA;	// сохраняем текущщее состояние
		PORTB = outfors;
		INTCON = 0x20;		// Set T0IE, clear T0IF
	}
}

void main() {
	ANSEL = 0;		// Configure AN pins as digital I/O
	ANSELH = 0;
	OPTION_REG = 0x80;	// Assign prescaler to TMR0

	PORTA = 0x00;		// init PORTA
	TRISA = 0xFF;		// configure PORTA pins as input
	PORTB = 0x00;		// set PORTB to 0
	TRISB = 0x00;		// designate PORTB pins as output
	PORTC = 0x00;		// set PORTC to 0
	TRISC = 0x00;		// designate PORTC pins as output
	PORTD = 0x00;		// set PORTD to 0
	TRISD = 0x00;		// designate PORTD pins as output
	TMR0  = 0xFE;		// сразу уходим в прерывание
	INTCON = 0xA0;		// Enable TMRO interrupt
}
Люди, у кого есть опыт связыванния микрпоконтроллеров и силовых линий, откликнитесь плиз, нужна помощь, т.к. я не электронщик, я программист.

Аватара пользователя
Jetsamnaz
JC Administrator
Сообщения: 1152
Зарегистрирован: Вт сен 23, 2008 5:12 pm

#2 Сообщение Jetsamnaz »

Погоди не так быстро, щас кого нить будем искать
В чем сила? В турбо!

George
Сообщения: 11
Зарегистрирован: Ср авг 19, 2009 11:30 am

Re: Микас спорт и 8 цилиндров

#3 Сообщение George »

Для конкретики приведем схему микаса 7.1
http://spc.fotoplenka.users.photofile.r ... 423399.jpg

и обратим внимание на DA8, VT1 и VT2

nikll
Сообщения: 161
Зарегистрирован: Ср май 27, 2009 9:26 am

#4 Сообщение nikll »

Хм, они подключенны к P5_0 и P5_1, судя по маркировке это CCP (шим), если я не путаю то P5_2 и P5_3 это зажигание, а где еще 4 вывода используются?

А во нашел, P5_4 и P5_5 идут на контроллер датчика детонации.
DA8 это я так понимаю драйвер управления форсунками, он из двух сигналов контроллера делает четрые на форсунки:
00 - 1
01 - 2
10 - 3
11 - 4

Я обойдусь без него т.к. у мну свободных выводов с микросхемы ну просто хоть жопой жуй.

Мне бы простенкую схему из недорогих запчастей, надо от сигала напряжением 3В и силой 0,02А давать полных 12В на форсунку с необходимой силой тока, может двухступенчатый каскад из транзисторов собрать? на первой ступени обычные которые хорошо отпираются микросхемой но которые сами способны отпереть мощные полевики.

Но надо еще как то преобразовывать сигнал перехваченный от микаса к форсункам и распозновать его не спалив микросхему, нада из 12 вольт сделать 3-3,3 с силой тока 0,02-0,05А. Может резистор и стабилизатор?

Кста гляньте вот сюда http://chipdip.ru/catalog/2010.aspx тут помоему есть чтото подходящщее

P.S. не бейте больно, я в элетронике профан, так только пару раз брал паяльник в руки...

George
Сообщения: 11
Зарегистрирован: Ср авг 19, 2009 11:30 am

#5 Сообщение George »

не-не-не все неправильно. Давай пока думать в сторону действующего макета, а потом туда навесим деталей.

Я щас не все расскажу т.к. обязательно что-нибудь забуду. Вкратце.
Транзистор- ключ форсунки всего лишь коммутирует ее на землю (тк на форсунки плюс приходит с главного реле). Для этого используется микросхема-ключ но подойдут просто транзисторы причем с разным успехом почти любые 8)

Транзисторы которые идут на катушки - тип IGBT и к тому же высоковольтные тк выброс во вторичной обмотке через трансформатор пересчитывается в первичную обмотку и там тоже прилично получается. К ним тоже нужен драйвер.

Транзисторы которые идут на катушки называются 14n36 например подойдут fairchild HGTP14N36G3VL, HGT1S14N36G3VL, HGT1S14N36G3VLS .

Что касается входных напряжений то это делается просто резистивным делителем. То есть два резистора. На всякий случай я бы усложнил схему, поставив защиту от выбросов напряжения, эту часть я нарисую. С выходной пока подумаю. В идеале я бы стремился просто повторить работающую схему из микаса.

Еще я краем уха слышал что есть мозги open source к которым есть прошивки, схемы, чертежи плат и форум по обсуждению и еще можно купить конструктор или готовые. Я к сожалению не помню название но схемотехнику выходов можно и там подсмотреть.

дополнение
форсами управляет DA3 TLE5216. Кроме того что это мощный ключ на землю там еще есть средства защиты и диагностики (если есть глюк то код ошибки выдается по SPI). В принципе фичи будут нелишними, т.к. микас обычно выдерживает кз форсов на землю.

Для упрощения можно использовать драйвер мощных ключей плюс сами ключи - такие же как для катушек, см. далее. Мощным транзисторам нужен драйвер, разным типам по разным причинам. Полевикам и IGBT - затем что у них большая емкость затвора и поэтому в начальный момент переключения (сотни нс) они жрут большой ток. Такого импульса достаточно чтобы спалить ногу контроллера-сразу или со временем. А если ставить токоограничивающий резистор то переключение будет вялым с сильным нагревом транзистора. Короче говоря драйвер нужен.

дополнение 2
в микасе стоят две одинаковые микросхемы TPS2814D, DA8 и DA11. Та что DA11 управляет чем-нибудь :D что подключат и подо что напишут прошивку. DA8 управляет ключами катушек. Это стандартный драйвер мощных ключей и я бы очень советовал купить такой и полностью повторить схему включения. Желательно еще обдуманно отнестись к рисунку платы в этом месте :D поскольку токи большие.

резюме
давай посмотрим сначала, что ты сможешь достать. efind.ru в помощь :idea:
Первый вариант - копировать по максимуму: TPS2814D x1, TLE5216G x 1 , 14n36x2
Второй вариант - меньше разных деталей TPS2814D x2, 14n36x4
Третий вариант - ищем полевики и/или IGBT и драйверы такие какие можно достать...
Потом рисуем что можно сделать из того что нашли

Аватара пользователя
Jetsamnaz
JC Administrator
Сообщения: 1152
Зарегистрирован: Вт сен 23, 2008 5:12 pm

#6 Сообщение Jetsamnaz »

ну че дело движется? :wink:
В чем сила? В турбо!

nikll
Сообщения: 161
Зарегистрирован: Ср май 27, 2009 9:26 am

#7 Сообщение nikll »

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

Из возможных применений этого:
Можно мерить по шим скваженность импульсов, так мы получим загрузку форсунок, например при нагрузке в 50% начать открывать второй ряд форсунок, соответсвенно при загрузке в 75% второй ряд будет открыт на 50%, ну и во второй ряд запитать например 50% метанол :) (позволит кратковременно убить детонацию вода резко снизит темпиратуру в камере сгорания и сама при испарении даст нехилое давление, ну а про метанол думаю сам знаеш у него октановое число 108). В микасе можно задать нелинейную пропускную способность форсунок?

Кстати у тебя есть достум к исходникам прошивки на микас?
Кстати, а в железе микаса случайно нет пары лишних цифровых линий? может прямо в него впаятся?

Аватара пользователя
Merlin
Сообщения: 453
Зарегистрирован: Пн фев 02, 2009 2:26 pm

#8 Сообщение Merlin »

по поводу 5-ти и 6-ти котлов думали сделать обманку между микасом и мотором, проблемма в том что завести 5 котлов точно получиться. даже в распределённом варианте, но катавасия в этом получиться что цилиндры будут подменяться покругу "крутиться" и поцилиндрово подгонять зажигание уже неполучиться, да и все параметры внутри микаса будут неправильными, отказались от этого. хотя идея интерестна, но реализовывать её надо только переписыванием софта в ЭБУ и доработкой схемы, что есть реально но требует больших временных и финансовых затрат.

Ограничение в 4 котла это очень нехорошо, ибо более менее серьёзные тачки от 6ти начинаються. хочеться его побороть. у нас тут есть група товарищей смехотехников и програмеров которых несильно пугает это всё переделать, либо вобще создать свой блок с нуля универсальный, но его надо както подвязывать будет как вариант с темже МОЛТОм или чемнибуть подобным.

если интерестно как минимум послушать "мысли в слух" то давайте обсудим что реально что нет.

nikll
Сообщения: 161
Зарегистрирован: Ср май 27, 2009 9:26 am

#9 Сообщение nikll »

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

Ну если проблему дублированния сигналов форсунок и зажигания я решил то чтото дополнительное без исходников не сделать.

Могу и преоброзование 4=>5 сделать и 4=>6 невопрос, будет работать на пике 16F**** который стоит копейки, но я в электрике несилен, погу только программно содействовать разработке.

Можно сделать так что микас будет по прежнему работать с 4мя цилиндрами, но физически все выводы на катуши и зажигание будут подключенны к преоброзователю, а из преоброзователя можно будет хоть на 3 хоть на 7 цилиндров распределить. Вся суть сводтся к тому что мы запоминаем открытие и закрытие форсунок, можно добавить счетчики времени между открытиями форсунок, и отматывать их не 1 к 1 а например 1 к 1,2 для 5 и 1,33 для 6ц (ну в софте оно будет просто перемножатсо и декриментить иначе будут тормоза).
Последний раз редактировалось nikll Чт окт 08, 2009 5:56 pm, всего редактировалось 2 раза.

Аватара пользователя
Merlin
Сообщения: 453
Зарегистрирован: Пн фев 02, 2009 2:26 pm

#10 Сообщение Merlin »

Нехватает на выходе из блока, а на кристалле? допаять каскады можно, проблем то нет, но вот софтверно как решать?!

если Микас стоит 150 баксов и его доработка до 8ми котлов столькожэ будет стоить то это халява. клиенты будут.

Ответить