# OpenEFI (Sistema de inyeccion OpenSource)



## FrenouxDiego (Ene 16, 2019)

Hola a todos! luego de pertenecer un rato largo a este foro, doy mi primer aporte, bueno, mejor dejo de palabrerio y les muestro de que trata.

_*ADVERTENCIA: este proyecto todavia esta en fase de desarrolo, si intenta usarla en su vehiculo, lo hace bajo su propio riesgo*_

OpenEFI es basicamente una ecu programable como las megasquirt, Besse, fueltech, etc, solo que esta esta orientada de otra manera, en las demas los sensores y actuadores ya estan definidos (pin 8 es el acelerador por ejemplo).

en cambio, en esta ecu, solo hay X cantidad de entradas analogicas + sensor lambda + sensor ckp, estos dos no entran en el conjunto anterior por necesitar un tratado de señal diferente, pasa lo mismo con los actuadores, hay X cantidad de canales de salida, estos son manejados por mosfet de canal N, por lo que permiten conectar cuantas bobinas o inyectores se necesite.
todo esto se desarrollo para que la ecu sea lo mas "universal" que se pueda, asi ademas de podes adaptar motores de carburador a inyeccion facilmente, se puede adaptar la ecu a una instalacion de inyeccion ya existente

de toda la parte logica se encarga un STM32F, con bootloader de arduino, aunque, tambien se puede usar un arduino nano sin problemas o incluso otro , OpenEFI se centra en presentar un software opensource para crear una ecu, usted puede o no usar el hardware recomendado, yo solo las hice para que no quede "vació" el proyecto

la programación de las tablas y/o algoritmos de la misma, se realiza a través de un programa de pc que estoy diseñando, se llama "OpenEFI || Tunner" que voy a ir mejorando conforme avance el tiempo, no es la interfaz mas linda del mundo, pero anda

este es el diagrama de una entrada analógica cualquiera, es un simple filtro pasa bajos para evitar la interferencia que pueda llegar a tener la señal:


y este es un driver:

se usa un zener de 24v y 1W (1n4004) para protejer el mosfet, aunque también se puede remplazar por dos diodos en flyback, respecto al mosfet en si, se puede usar cualquiera de canal N con una corriente superior a los 10A y con baja resistencia (menos de 1 ohm en lo posible), yo use este porque quería usar mosfet SMD, un mosfet fácil de conseguir y que ya probé como driver es el IRFZ44N
PD: aparece un MJD122 en el plano porque me gustaba mas el footprint de este que el del mosfet que iba a usar, asi que quedo ese componente

dado que los driver sirven indistintivamene para bobinas o inyectores, se pueden armar varias configuraciones como por ejemplo:

6 inyectores independientes, encendido convencional
6 inyectores agrupados ( 3 en un canal, 3 en otro) y encendido electrónico
4 inyectores independientes y encendido electrónico
4 bobinas de encendido electrónico (para un V8 /L8 )
3 bobinas de encendido electrónico (para un V6/L6)
2 bobinas de encendido elelectronico (para un 4L)

si se utiliza un Arduino Mega o DUE se pueden incluso tener un motor V8 / L8 con encendido electrónico e inyección
también se disponen de 5 relay con múltiples funciones (también se pueden reprogramar para hacer otra cosa)

Relay de bomba de combustible
Relay de ventilador
Relay de rampa de inyección y bobina
Relay de A/A
Relay de GNC/GLP

desde esta ecu tambien se pueden manejar equipos de gnc/glp sin tener que poner emuladores de inyectores ni nada raro

además estoy empezando a implementar DTC's para verificar la integridad de los sensores, para leerlos o borrarlos no hace falta un scanner, solo conectar la ecu por el puerto usb como se usaría para programar.
estos son los PCB para STM32:


todo el código se encuentra en GitHub, publicarlo acá haría muy engorroso el actualizarlo, este es el link FDSoftware/OpenEFI

si tienen alguna idea constructiva /destructiva siempre sera bienvenida, en un futuro pienso implementar el bus can en la ecu para poder controlar un odómetro, dejo en adjuntos los planos de eagle
PD:  mañana empiezo a explicar el funcionamiento de la ecu, y como administra cada algoritmo de inyeccion, ademas de que voy a responder algunas dudas que tengan. Gracias!


----------



## juanma2468 (Ene 16, 2019)

La primer pregunta que se me genera es, como adaptas la ECU universal a un determinado auto sin conocer su curva de avance? Esta claro que si es perfectamente configurable las entradas (sensores) y salidas (actuadores), pero cada auto trabajo de forma distinta, y su motor tiene características distintas, por lo que sus avances varían de auto a otro. Como también varían las señales del sensor de fase de un vehículo a otro. Como es que abordas está problemática sin conocer dichos parámetros?
Por cierto muy buen aporte e interesante proyecto.


----------



## FrenouxDiego (Ene 16, 2019)

juanma2468 dijo:


> Como es que abordas está problemática sin conocer dichos parámetros?


Básicamente con una cantidad gigante de #defines en el código (como aca con los DTC), además que hay tablas de avance y de tiempos base de inyección que el usuario va a tener que llenar mañana temprano subo lo que falta de los planos y tambien muestro como son las tablas de avance / inyeccion, tambien uso algoritimos que utilizan otras ecus, como el BPW o e Alpha Plus en este segmento de codigo se ven, ademas de mas #define para configurar la ecu


----------



## TRILO-BYTE (Ene 16, 2019)

que bárbaro se me ocurrió hacer una ECU hace como un año pero esto esta muy por encima de lo que había pensado.
que emoción ¿como empezaste el proyecto?  y ¿en que protocolos te basaste?


----------



## FrenouxDiego (Ene 17, 2019)

el proyecto lo habia empezado hace dos años cuando estaba cursando el secundario, en mi colegio no tenian una ecu programable, por lo que hablando con un profesor termine diciendo que podria desarrollar una pequeña para "safar" mientras conseguian una "enserio" , en ese entonces ya sabia algo de programacion en C++ y tenia algunos proyectos realizados con arduino,
luego de un tiempo dejaron de ayudarme en el colegio cuando se dieron cuanta que iban a tener que gastar dinero para hacerlo de la cooperadora (años despues me entere que todo lo relacionado con  la cooperadora estaba bastante corrupto y por eso no compraban nada a pesar de tener un ingreso bastante importante)

pero bueno, no quise dejar todo lo que habia desarrollado juntando mugre, asi que le puse un nombre y lo subi a github, con el tiempo fui mejorando el codigo, ademas de seguir formandome sobre electronica y profundizar mas mis conocimientos de c++ hasta que pude avanzar lo suficiente en el desarrollo como  para que merezca la pena publicarlo aca,  ahora en un ratito muestro los algoritmos


estas son las tablas de inyeccion (rpm/temp) y avance (rpm/map), las mismas se editan con OpenEFI Tunner , ya que estoy subo un par de capturas del mismo:

esta es la de avance: faltan cargarle datos, pero tiene esta estructura


proximamente quiero terminar de asignarles colores a los rangos de tiempos de inyeccion y avance como se ve en la primer foto, todo este programa esta desarrolado en C#
ahora el software, esta todo programado en C++ con algunos segmentos en C, esta diseñado para compilarse en la mayoria de las placas de arduino, o que puedan usar el bootloader arduino (como el STM32F que uso en el pcb)

como compilador uso el Visual Studio con la extencion "visual micro" pero tambien se podria usar la ide de arduino, aunque es bastante mas complicado el depurar codigo, por eso hice el cambio de IDE basicamente

la configuracion principal esta en el archivo "OpenEFI.ino"


```
/*-----( Define's )-----*/
#define test 1  //modo pruebas con placa debug
#define mtr 1   //definir tipo de motor 0 = diesel ; 1 = nafta
#define dev 1   //habilita modo desarollo
#define alpha 1 //Habilita el modo de prubas alpha
#define GNC_MOD 0 //activa el modo de GNC/GLP en la inyeccion
#define uEFI 0 //en 1 si se compila para una placa uEFI
#define OpenEFImode 0 // en 0 si es OpenEFI con Arduino nano, en 1 si utiliza un Node MCU
```

con el "test" en 1 se anula la verificacion del PMS del motor, lo uso solo para probar el funcionamiento de la ecu con un 555 en la entrada del sensor CKP
en un futuro quiero que la ecu tambien se pueda usar con motores Diesel, pero por ahora mtr siempre tiene que ser 1 , sino se desactiva el encendido electronico


luego la configuracion de los sensores se describe en "pines.h"


```
/*-----( PINOUT: (Sensores) )-----*/
#define maraccMode 1
//modo de mariposa de aceleracion, en modo (1) utiliza solo el potenciometro 1
//en modo 0 utiliza los dos

#define uEFI 0

#if defined(ESP8266)
//OpenEFI con NodeMCU
byte A = 3, //pines del MUX analogico
    B = 4,
    C = 5;
byte TPS1 = 2;  //Pin de potenciometro de TPS 1
byte TPS2 = 3;  //Pin de potenciometro de TPS 2
byte TEMP2 = 4;  //pin de sensor de temperatura de agua
byte mar = A0; //pin de mariposa de acelerador
byte LMBA = A0; //pin sonda lambda A
byte LMBB = A0; //pin sonda lambda B
byte vmtP = 1;  //pin de ventialador
#endif // OpenEFImode == 1

#if uEFI == 0
#if defined(__AVR_ATmega328P__)
//OpenEFI con Arduino NANO v3
byte A = A3, //pines del MUX analogico
     B = A2,
     C = A1;
byte TPS1  = 2;  //Pin de potenciometro de TPS 1
byte TPS2  = 3;  //Pin de potenciometro de TPS 2
byte TEMP2 = 4;  //pin de sensor de temperatura de agua
byte mar   = A1; //pin de mariposa de acelerador
byte LMBA  = A4; //pin sonda lambda A
byte LMBB  = A5; //pin sonda lambda B
byte vmtP  = 4;  //pin de ventialador
#endif // OpenEFImode == 0
#endif

#if uEFI == 1
byte TPS1 = 2;  //Pin de potenciometro de TPS 1
byte TPS2 = 3;  //Pin de potenciometro de TPS 2
byte TEMP2 = 4;  //pin de sensor de temperatura de agua
byte mar = A0; //pin de mariposa de acelerador
byte LMBA = A1; //pin sonda lambda A
byte vmtP = 4;  //pin de ventilador
#endif // uEFI == 1
```

uEFI en una version mas ligera de la ecu, parecida a las Motronic 2X de bosh, mañana explico bien como se diferencia esta del resto

las versiones con STM32, Arduino Uno / Nano / Micro al tener menos pines se utiliza un mux analogico (74hc4067) para poder administrar todas las entradas analogicas

y la de los actuadores en "pines2.h"


```
/*-----( PINOUT: (Actuadores) )-----*/
byte pines[] = { 1,5,6 }; //inyectores
byte pinesE[] = { 7,8}; //encendido
```

aca se define cuantos driver se utilizan para inyectores y cuantos para encendido, otra configuracion para tener 6 salidas de inyectores seria esta:

```
/*-----( PINOUT: (Actuadores) )-----*/
byte pines[] = { 1, 5, 6 , 7, 8}; //inyectores
byte pinesE[] = { 0, 0}; //encendido
```


----------



## TRILO-BYTE (Ene 17, 2019)

que triste de verdad todos pasamos por la corrupción, yo tengo varias Ecu para 3 cilindros y 3 bobinas 4 cilindros con válvula IAC a motor de pasos , de 4 bobinas y 2 bobinas ahí tiradas  y varios sensores CKP y CMP inductivos y tiliches varios. 

casi todas usan chips infineon y transistores IGBT para el control de las bobinas casi todas truenan de los drivers de cuerpo de aceleración y de los drivers de control de rele de gasolina o ventilador.
nunca falta un monkiki que hace sus inventos reventando la electrónica de la ECU.


----------



## pandacba (Ene 17, 2019)

juanma2468 dijo:


> La primer pregunta que se me genera es, como adaptas la ECU universal a un determinado auto sin conocer su curva de avance? Esta claro que si es perfectamente configurable las entradas (sensores) y salidas (actuadores), pero cada auto trabajo de forma distinta, y su motor tiene características distintas, por lo que sus avances varían de auto a otro. Como también varían las señales del sensor de fase de un vehículo a otro. Como es que abordas está problemática sin conocer dichos parámetros?
> Por cierto muy buen aporte e interesante proyecto.


Esa información es fácilmente conseguible en el ámbito de los que trabajan con Ecus, Hay información de todo lo relacionado a cada modelo, tanto de nacionales como importados.
Utilice parte de esa información para hacer un simulador que nos pidieron para poder trabajar con la Ecu fuera del auto, hay toda la info necesaria, con gráficos y detalles puntuales.
Esa información sirve para cambiar el comportamiento integro del motor y es utilizado por aquellos que venden los llamados chip potenciados para las Ecus.
Por ejemplo esta el regimen máximo del motor en condiciones standard la curvas de rpm y potencia y las de rpm y torque, y los niveles de los distintos sensores existentes para cada uno de los parámetros anteriores, no es juego de niños, requiere conocer muy bien sobre motores de combustión interna de 4T, también el ámbito de sensores disponibles en el mercado.
He participado en la elaboración de una Ecu para autos que no la tenían que permite reemplazar el carburador por un sistema monopunto por ejemplo, se empezó con algo muy sencillo y luego se fue perfeccionando, logrando resultados increíbles, es un mundo apasionante y hay que dedicarle mucho tiempo para obtener resultados, si se trabaja en equipo mucho mejor, también hay que tener elementos de análisis y construirte tu equipamiento para ensayo de sensores, para lo cual hay que estar muy empapado del funcionamiento de c/u, con eso podes obtener las curvas y cualquier otra información que sea necesaria.

Quién no conoce de pleno este mundo mira esto con esceptisismo pero es perfectamente viable.
Ayuda a conocer los componentes típicos que se utilizan en una Ecu, en mi caso he reparado una gran cantidad de ellas.


----------



## TRILO-BYTE (Ene 18, 2019)

Nunca he diseñado una pero he llegado a reparar computadoras ecu y los sensores me sorprende que son muy simples pero robustos.
Ejemplo el tps es un potenciómetro , el cuerpo de aceleración electrónico es solo 2 potenciómetros, el Sensor de temperatura es un termistor , el Sensor MAP es un termistor y un piezoeléctrico, el ckp y el cmp son inductores y en otros son Sensores Hall.
Las fallas siempre son por algún manotas que le corta o pica los arneses con un alfiler o una navaja por qué no tienen idea de lo que están haciendo.

Y la verdad con todo eso que vi en el taller me salió la curiosidad de si se podía hacer una ECU con un pic o un AVR no se me ocurrió hacer la infraestructura del OBDII.
La verdad es fascinante


----------



## FrenouxDiego (Ene 18, 2019)

TRILO-BYTE dijo:


> casi todas usan chips infineon y transistores IGBT para el control de las bobinas casi todas truenan de los drivers de cuerpo de aceleración y de los drivers de control de rele de gasolina o ventilador.
> nunca falta un monkiki que hace sus inventos reventando la electrónica de la ECU.



sep, yo en un principio queria usar IGBT  de infenion, además de unos chip para los sensores que hace nxp, que agarra todas las señales y las pasa por spi, además que hace el mismo chip la generación de los DTC, pero acá en argentinaworld es medio imposible traer algo de electrónica en cantidad como para probar y quemar tranquilo, asi que me la tuve que arreglar con los componentes que se consiguen acá


----------



## garomba (Mar 18, 2019)

Muy bueno el proyecto felicitaciones, estoy intentando compilar el proyecto para un nano sin éxito. Me tira error con REQ_FUEL no definida, en algún lugar tenes el proyecto actual? vi que hay dos en gitgub.  Estaba buscando un CDI con mapa pero esto es superador, abrazo


----------



## FrenouxDiego (Mar 19, 2019)

garomba dijo:


> Me tira error con REQ_FUEL no definida, en algún lugar tenes el proyecto actual? vi que hay dos en gitgub.  Estaba buscando un CDI con mapa pero esto es superador, abrazo


 Hola, fíjate que tiene que ser el branch máster y con el usuario "FDSoftware" que es el mio, ahí se encuentra el código mas actualizado, ahora cuando pueda reviso ese define, pero creo que compilaba ahora


----------



## garomba (Mar 20, 2019)

Frenou:LOL:iego dijo:


> Hola, fíjate que tiene que ser el branch máster y con el usuario "FDSoftware" que es el mio, ahí se encuentra el código mas actualizado, ahora cuando pueda reviso ese define, pero creo que compilaba ahora



Ahí puede ver era un problema entre mayúscula y minúscula, después un "=" en una asignación, ahora estoy con la variable de temperatura que me dice que no esta asignada. El proyecto tal cual esta en la carpeta a vos te compila? Le estoy pifiando en algo? Saludos


----------



## FrenouxDiego (Mar 20, 2019)

garomba dijo:


> El proyecto tal cual esta en la carpeta a vos te compila? Le estoy pifiando en algo? Saludos


 si, cuando descargas todo el codigo tenes que renombrar la carpeta "stable" a "OpenEFI" y lo abris con la IDE de arduino, el codigo que esta en scr le voy agregando cosas continuamente, pero en stable esta el codigo ya funcional, cuando tenga tiempo voy a separarlo en dos ramas asi no hay mucha confusion, avisame cualquier duda. Saludos!


----------



## garomba (Mar 20, 2019)

Arduino:1.8.5 (Windows 10), Tarjeta:"Arduino Nano, ATmega328P"

C:\Users\FZ\Downloads\OpenEFI-master\stable\OpenEFI\OpenEFI.ino: In function 'void Iny()':

OpenEFI:108: error: 'main' was not declared in this scope

  if ( main.Temp() < 45 )

       ^

OpenEFI:111: error: 'main' was not declared in this scope

  if ( main.Temp() > 45 )

       ^

OpenEFI:113: error: 'main' was not declared in this scope

  if ( main.Temp() > 45 && _RPM < 1200 )

       ^

OpenEFI:115: error: 'main' was not declared in this scope

  if (main.Temp() >= 105 && _RPM < 1200) //sobre temperatura

      ^

exit status 1
'main' was not declared in this scope

Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.
 ese es el error que me tira el "stable"


----------



## FrenouxDiego (Mar 20, 2019)

garomba dijo:


> Arduino:1.8.5 (Windows 10), Tarjeta:"Arduino Nano, ATmega328P"
> ( main.Temp() > 45 )
> 
> ^
> ...


 ah asi eso es culpa mia perdon, ya lo arregle, tenes que cambiar el "main" por "s_main" , o sino redescargarlo que ya subi los cambios


----------



## garomba (Mar 21, 2019)

Genial ahi pude compilar con exito y cargarlo en el arduino, abri el opentunner scaneo el puerto y me dice que se conecto. Pero despues no puedo entrar a ninguna tabla, ni se mueve nada. Se puede setear en alguna lado el tipo de rueda fonica o esta pensado para una leva con un solo flanco. Saludos


----------



## FrenouxDiego (Mar 21, 2019)

garomba dijo:


> Pero despues no puedo entrar a ninguna tabla, ni se mueve nada. Se puede setear en alguna lado el tipo de rueda fonica o esta pensado para una leva con un solo flanco. Saludos


sisi, la parte de edicion de tablas esta y todo, el tema es que como todavia no termine de implementar la comunicacion entre el arduino y la pc no subi el codigo con los menu para la edicion de tablas, apenas termine con eso ya podrias probar grabar y leer tablas (conectandole la memoria i2c, no grabo en la eeprom del arduino)


----------



## garomba (Mar 22, 2019)

Genial quedo a la espera, confirmame lo de la rueda fonica, asi preparo alguna leva para probar. Abrazo


----------



## garomba (May 19, 2019)

No se de donde ingresa la señal del cigueñal, si es una simple leva o algun tipo de rueda fonica. Si alguno sabe se lo agradecería. Saludos Fz


----------



## FrenouxDiego (May 20, 2019)

garomba dijo:


> No se de donde ingresa la señal del cigueñal, si es una simple leva o algun tipo de rueda fonica. Si alguno sabe se lo agradecería. Saludos Fz



podes usar una rueda fonica 60-2, con eso vas a tener cambios de a 6 o 3° dependiendo de como configures la ecu, pero si el motor ya tenia ecu podes usar la que tiene, en un futuro queria agregar el soporte para el sensor de arbol de levas, perdon por dejar esto medio abandonado
en teoria para dentro de 2 semanas ya me tienen que llegar los PCB de la primer foto para probar como funcionan los sensores y los driver de inyecctores


----------



## FrenouxDiego (Ene 30, 2020)

Hola!, luego de desaparecer un año casi, les voy mostrando algunos avances, el programa para editar la ecu quedo inviable por una dependencia que use para el contador de rpm que me rompió todo el programa básicamente, así que ahora estoy haciendo todo desde 0 con React, asi que en un futuro, seria abrir chrome, entrar a una página web, y está todo listo para programarla, no va a hacer falta instalar nada, ni renegar con instaladores rotos como pasa con algunos scanners


----------



## FerShadow (May 23, 2020)

Frenou:LOL:iego dijo:


> Hola a todos! luego de pertenecer un rato largo a este foro, doy mi primer aporte, bueno, mejor dejo de palabrerio y les muestro de que trata.
> 
> _*ADVERTENCIA: este proyecto todavia esta en fase de desarrolo, si intenta usarla en su vehiculo, lo hace bajo su propio riesgo*_
> 
> ...



Amigo, buenas, estoy en el proceso de desarrollar una efi para una honda shadow 85 1100cc, es posible adaptar tu sistema o basar el tuyo y hacer una ecu desde 0? usando arduino uno o mega? el motor es de encendido electronico (CDI) y tiene 2 pistones con 2 bujias por cilindro, osea 4, y tiene 2 bobinas, una para cada cilindro. espero tu pronta respuesta


----------



## cejas_g (Jun 30, 2020)

Hola buenas tardes. Me interesa el tema y justo venía buscando info pero para armar una ecu para moto monocilindrica. Se podrá adaptar está ecu? Hace mucho q estoy alejado de la electrónica pero algo recuerdo aun


----------



## FrenouxDiego (Jul 9, 2020)

@FerShadow || @cejas_g


cejas_g dijo:


> Hola buenas tardes. Me interesa el tema y justo venía buscando info pero para armar una ecu para moto monocilindrica. Se podrá adaptar está ecu?


Hola a los dos!, para motos, les convendría hacer un CDI programable directamente, acá tienen un ejemplo,también hay dando vueltas en los foros de arduino algunos diseños interesantes SportDevices. Chassis and Engine Dynamometers


----------



## FrenouxDiego (Dic 18, 2020)

dejo spoiler del update GIGANTE que se viene al hilo este:


----------



## SoyYoyo (Oct 3, 2021)

FrenouxDiego dijo:


> @FerShadow || @cejas_g
> 
> Hola a los dos!, para motos, les convendría hacer un CDI programable directamente, acá tienen un ejemplo,también hay dando vueltas en los foros de arduino algunos diseños interesantes SportDevices. Chassis and Engine Dynamometers



*B*usqu*é* algunos pero ninguno es muy open*-*source que se diga, mi duda es si puedo adaptar el tuyo o tocar*í*a modificar demasiadas cosas*?*


----------



## FrenouxDiego (Oct 30, 2021)

SoyYoyo dijo:


> *B*usqu*é* algunos pero ninguno es muy open*-*source que se diga, mi duda es si puedo adaptar el tuyo o tocar*í*a modificar demasiadas cosas*?*


Buenas!,
si se puede perfectamente, solo tenés que adaptar un poco el circuito del CKP, normalmente lo hacen con las ecu's de speeduino, pero personalmente aun no lo probe,
el único problema es costo/beneficio, de andar va a andar, pero armar la ecu completa, son aprox 300~ usd en componentes por como esta toda la situación internacional,

además de que terminas con:
4 canales de inyección (hasta 8 inyectores baja impedancia)
4 canales de encendido (bobinas comunes, bobinas "lapiz" y las bobinas DIS)
que a menos que tu moto sea de 2 o mas cilindros, es medio un:

`matar moscas a cañonazos`

podés armar una mas específica como pase en el link un par de mensajes mas arriba;
y si quedas atascado/a con algo, solo hace un tema aca y apenas pueda lo reviso!

-----------------------------------------------------------------------------------------------------------------------------
Si algun mod puede editar este post para que sean dos mensajes separados se lo agradecería mucho así no se hace todo una ensalada
-----------------------------------------------------------------------------------------------------------------------------

Luego 50 años [sic], revivo un poco esto para contar mi progreso;
decidí ir por un formato más compacto intentando no reducir muchas características respecto al modelo anterior,

Lo que se fue:

CAN doble (solo 1 bus ahora)
LIN
Sensores (8 vs 16 anteriores)
Driver motor ralenti por PWM
Doble sonda Lambda (solo deje una)
Doble rampa nafta/gnc

Lo que sigue:
4 canales de inyección;
4 canales encendido
Driver motor PAP para ralenti;
8 sensores genéricos
4 salidas para relays
2 salidas de PWM genéricas, hasta 1.5A (dependiendo el caso, se puede manejar el ralenti por pwm, no lo probé aún)



en los adjuntos de este mensaje dejo el plano tanto de las placas de sensores, como de la ecu en sí, también pueden conseguir los planos para ver/editar en KiCAD 5.99 desde el GitHub: OpenEFI-PCB

Sobre el firmware, cambie completamente el stack dejando Arduino a favor de las librerías HAL/LL de ST, que me deja más posibilidades para editar registros/clocks del mcu mientras esta en marcha,
mas que nada para la generación de pulsos y la sincronización con el CKP
dentroo de todo intento poner unit-tests para tener mejor rastreo de cambios en el código que puedan romper o no las partes más criticas del sistema:

Como siempre, todo el código se puede revisar desde el github, no lo posteo aca porque sería un quilombo de explicar y no viene mucho al caso de este foro,
repositorio
la documentación de desarrollo esta acá:
devdocs
y próximamente el manual para el que quiera armar una por su cuenta acá:
documentación

-----------------------------
*esto también se podría separar de ser posible, gracias!*
-----------------------------
para no dejar esto con tanto "dibujito", acá hay un par de fotos del montaje de las últimas placas y unos tests con inyectores/bobinas







__ https://twitter.com/i/web/status/1451698516913319938

__ https://twitter.com/i/web/status/1452375481681170434


----------



## neomar5 (Nov 21, 2021)

Hola saludos,
me llamo Neomar A, y estoy tratando de hacer una inyección con arduino uno para mi carro, es una Caribe modelo viejo.
Y pregunto como hiciste programar la parte de inyección???
es decir partiendo de una señal de 90º no se como darle el tiempo de apertura de acuerdo al vacío del motor datos arrojados por medio del sensor map.
Ya realice la parte de encendido secuencial!!
te agradecería mucho me ayudaras saludos.


----------



## FrenouxDiego (Nov 23, 2021)

neomar5 dijo:


> Hola saludos,
> me llamo Neomar A, y estoy tratando de hacer una inyección con arduino uno para mi carro, es una Caribe modelo viejo.
> Y pregunto como hiciste programar la parte de inyección???
> es decir partiendo de una señal de 90º no se como darle el tiempo de apertura de acuerdo al vacío del motor datos arrojados por medio del sensor map.
> ...


si dispones solo del sensor map (y las rpm); podés usar speed-density, tengo que tener un paper dando vueltas sobre eso, pero con leer esto te vas a dar una idea de como implementarlo:
CI Engine Speed-Density Air Mass Flow Model - MATLAB & Simulink - MathWorks América Latina


----------



## FrenouxDiego (Feb 12, 2022)

Ya arranque con la rev3:

hasta ahora los cambios son:

* ADC 5v separado del mcu, baje la cantidad de componentes activos/pasivos (ya no hacen falta 2 oamp por cada entrada analógica)
* cambien WP/EN en la memoria flash, ya no hace falta puentearla para que grabe
* CAN: tiene las resistencias de final de línea que corresponden
* PMIC: también cambiaron las resistencias de feedback para poder soportar bobinas de hasta 13A que son las que estoy usando
* Relays: tienen un par de polyfuses por cada entrada que el driver no tenía ningún tipo de protección


----------



## malesi (Feb 13, 2022)

FrenouxDiego dijo:


> Ya arranque con la rev3:
> 
> hasta ahora los cambios son:
> 
> ...



Ya no estoy para este mogollón de componentes, pero me alegra que haya gente con la mente despierta para hacer esto, como @FrenouxDiego 
que no decaiga que hace falta gente como tú en el mundo
Esto que pongo sería para moderación (Pero con un miserable "me gusta"no lo puedo explicar )


----------



## neomar5 (Mar 12, 2022)

Hola*, *@FrenouxDiego
*L*a verdad no soy nada ducho en la programaci*ó*n*,* es mi tal*ó*n de *A*quiles.

La idea que tengo es usar el pulso de la bobina para ejecutar el pulso de la inyecci*ó*n, pero cambiando el ancho de pulso por medio de la referencia del sensor map, usando una resistencia variable para afinar el ancho de pulso seg*ú*n las condiciones del veh*í*culo.
*L*a señal resultante es la que usar*é* para distribuir en los inyectores con otro Arduino*.
A*gradecer*í*a mucho tu ayuda*.*


----------



## sergiot (Mar 17, 2022)

No es asi tan simple, la señal del map tiene un proceso mucho mas complejo, ademas de actuar con la inyección, actua con el avance del encendido, todo eso esta grabado en el mapeado de la memoria de las ecu's, y ademas despues de eso, se hace la auto-adaptación en la memoria ram de la ecu, que son los ajustes a los mapeados originales, esas correcciones las hace la ecu para ajustarlas a las condiciones del motor, y condiciones atmosfericas.


----------



## FrenouxDiego (Sep 29, 2022)

Para no spamear a cada rato creo que voy a hacer updates cada trimestre o algo asi, 

*

*

ahora mismo:
* ya puedo leer la señal del CKP/CMP (Fix cpwm/rpm/sinc by FDSoftware · Pull Request #38 · Churrosoft/OpenEFI)
* las salidas de inyectores/bobinas están funcionando (PMIC SPI features by FDSoftware · Pull Request #31 · Churrosoft/OpenEFI)
* el algoritmo para el encendido esta devolviendo bien los valores de avance (added ignition interrupt · Churrosoft/OpenEFI@43b6b9a)
* ya se pueden editar las tablas de avance por rpm/carga desde la página web (Feat: WebSerial by FDSoftware · Pull Request #37 · Churrosoft/OpenEFI) (check async table response · Churrosoft/OpenEFI-Tuner@7cfef8e)

arreglando ahora:
* encendido por "wasted spark" o distribuidor (Ignition, wasted spark logic · Issue #52 · Churrosoft/OpenEFI)
* driver de motor idle "paso a paso" está mal conectado en la v3 de la placa, recién terminé la v3.1 de esa misma arreglando ese problema (uEFI rev 3.1 · Churrosoft/OpenEFI-PCB@5131129)
* Todavía falta implementar algún algoritmo para la inyección (estoy entre implementar primero Alpha N y después SpeedDensity) (Injection: add Alpha-N · Issue #50 · Churrosoft/OpenEFI) 

sobre lo que falta hacer,este es un roadmap de lo que estoy pensando para implementar:


en otras noticias (?), el motor que voy a usar para las pruebas ya está listo, es un CHT AE1600, actualmente a carburador/encendido electrónico

__ https://twitter.com/i/web/status/1527717654424719360también estuve haciendo un POC de un tablero custom usando solo leds/impresión 3D y no quedo nada mal (creo que luego le voy a dedicar un post aparte)


__ https://twitter.com/i/web/status/1562605770683822081sobre la web para editar, aunque falta banda varios de los menus ya se pueden ver aunque no tengan el hardware conectado a modo de "demo"





						OpenEFI Tuner
					

A Quasar Project




					tuner.openefi.tech


----------



## Vivaelcaos (Oct 3, 2022)

Hola a todos.
Soy nuevo, quiero colaborar, pero estoy perdido, quisiera saber si el programa Openefi es posible utilizar con Windows, pues intenté abrir el programa con Arduino y debo encontrar un archivo ejecutable con extensión .ino, pero busco y busco y no lo encuentro, o solo es posible utilizar el programa con linux.
Me pueden ayudar o existe un manual de 2 o 3 hojas para empezar a analizar el programa?
Saludos y espero una pronta ayuda de alquien que sepa mas que yo.-


----------

