Архив за месяц: февраля 2017

Выбран цвет для Колхозия

Красный Prelude должен быть красным, чисто красным!
DeBeer BEROBASE MM 537 (красный, просто красный)

и лак, много лака — STANDOX 2K Crystal Clear и полировать 3M до опупения, что бы блестело как у кота… ))))

Безтрамблерное зажигание (CoilOnPlug) #6 (версия 0.2)

Пока делал первую версию контроллера, параллельно решил сделать упрощенную версию (без подкидного дурака и студенток) на ATTiny44

3D модель платы без посадочных отверстий (размер вышел 25х25мм):

Схема:

Плата:

PS по размерам идеально на место коммутатора встает 🙂

Безтрамблерное зажигание (CoilOnPlug) #5 (похвастаться-попозориться)

Собран натурный макет:) похоже даже, что все работает, теперь дело за отладкой прошивки на моторе 🙂

по габаритам может даже на место коммутатора встанет, поприкидываем 🙂

PS и да, руки из нижнего плечевого пояса растут. так что smd пайка страшненькая

Безтрамблерное зажигание (CoilOnPlug) #4 (на по обсуждать)

На текущий момент пока вот такое вырисовывается (это все дичайшая alfa версия, для обсуждения!)

Схема:

С1 и PG — сенсор CYP1 в трамблере
+12 и G — питание
1,2,3,4 — выход-триггер на катушки
IGN — сигнал зажигания от ECU
TACH — выход тахометра
VCC, GND, SCK, MSIO, MOSI, RST — выходы на программатор

Плата:

из трамблера выкидывается: бегунок, катушка, коммутатор, плата ставится на место катушки (там с запасом места, в теории можно на место коммутатора пристроить, надо будет по мозговать.

Код (на drive нельзя <pre> сделать, так что код — боль, смотреть: icelord.net/wordpress/archives/16569):

/*****************************************************
Project : Ab0VE Tech Coil on Plug I4 Controller
Version : 0.1
Author : icelord
MCU : ATTiny26
*****************************************************/

#include <avr /io.h>
#include </avr><avr /interrupt.h>

// OUTPUT
#define IGNITION1 PA0
#define IGNITION2 PA1
#define IGNITION3 PA2
#define IGNITION4 PA3
#define LED PB6
#define TACHO PA5

// INPUT
#define CYP1 PA4
#define IGN PB5

uint8_t CYLINDER=0;
uint8_t WASFIRE=0;
uint8_t INFIRE=0;
uint8_t WASCYP=0;

ISR( __vectorPCINT4, ISR_NOBLOCK) // PCINT4 — CYP PA4
{
// Check CYP
if ( ((PINA & (1 < < 4))==1 ) && (!WASCYP)) { // CYP
CYLINDER=1;WASCYP=1;
}
if ( ((PINA & (1 << 4))==0) && (WASCYP)) { // GONE CYP
WASCYP=0;
}
}

ISR( __vectorPCINT13, ISR_NOBLOCK) // PCINT13 — IGN PB5
{
// Check FIRE
if ( ((PINB & (1 << 5))==1) && (!INFIRE)) { // Start FIRE
INFIRE=1;
}
if ( ((PINB & (1 << 5))==0) && (INFIRE)) { // GONE FIRE
INFIRE=0;
}
}

int main(void)
{
uint8_t LEDSTATUS=0;

DDRB = 0b01000000;
DDRA = 0b00101111;

PORTB |= _BV(LED); // LED ON on start

while (1)
{
if (INFIRE==1)// Fire coil?
{ WASFIRE=1;
PORTA |= _BV(TACHO);
switch (CYLINDER){ // Set fire for required coil 1-3-4-2
case 1: PORTA |= _BV(IGNITION1);
case 2: PORTA |= _BV(IGNITION3);
case 3: PORTA |= _BV(IGNITION4);
case 4: PORTA |= _BV(IGNITION2);
}
} else
{
if (WASFIRE==1){ // ready for next cylinder?
PORTA=0; // disable all coils and TACHO for some reasons
WASFIRE=0;
CYLINDER++;
if (CYLINDER>4) { // only 4 cylinder model 🙂
CYLINDER=1;
if (LEDSTATUS==0) {// Change LED on each _FULL_ cycle
PORTB &= ~_BV(LED); // LED ON
LEDSTATUS=1;
} else {
PORTB |= _BV(LED); // LED ON
LEDSTATUS=0;
}
}
} // was fire
}

} // main loop

}

Правки-идея-предложения — welcome! )