OpenEFI (Sistema de inyeccion OpenSource)

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
1580407437640.png1580407637937.png
 
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:

Ver el archivo adjunto 175215
y este es un driver:
Ver el archivo adjunto 175216
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:
Ver el archivo adjunto 175217
Ver el archivo adjunto 175219
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!

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
 
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
 
Busqué 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)
Captura de pantalla de 2021-10-30 23-13-53.png
Captura de pantalla de 2021-10-30 23-31-47.png

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:
1635648748390.png
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


FBDf5iaUcAIooru.jpeg
FBDWkouUYAAuK5d.jpeg
IMG_20211018_204423.jpgIMG_20211022_001833.jpg


 

Adjuntos

  • µEFI_rev2.pdf
    392.3 KB · Visitas: 15
  • Sensors_V2.pdf
    21.4 KB · Visitas: 11
Última edición:
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.
 
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.
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
 
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


1644726064184.png
1644726085115.png
1644726124730.png
1644726429491.png
 
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


Ver el archivo adjunto 278155
Ver el archivo adjunto 278156
Ver el archivo adjunto 278157
Ver el archivo adjunto 278158

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:aplauso:
Esto que pongo sería para moderación (Pero con un miserable "me gusta"no lo puedo explicar :p)
 
Hola, @FrenouxDiego
La verdad no soy nada ducho en la programación, es mi talón de Aquiles.

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.
La señal resultante es la que usaré para distribuir en los inyectores con otro Arduino.
A
gradecería mucho tu ayuda.
 
Última edición por un moderador:
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.
 
Para no spamear a cada rato creo que voy a hacer updates cada trimestre o algo asi,

1664482168369.png

1664482190869.png1664482198775.png


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:
1664482665851.png

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
tambié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)
1664482944683.png1664482966021.png
sobre 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"

1664483597192.png1664483457875.png1664483475401.png
1664483495776.png
1664483517031.png
1664483572398.png
1664483613434.png
 
Última edición:
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.-
 
Hola desde Argentina , me reenganche con el tema , hice varias escus tipo megasquirt y speeduino , instale varias en autos mercedes , de los que conozco y tengo varios , me encantaria colaborar y compartir ideas . tengo 70 años y siempre loco por la electronica , de la cual conozco bastante ( 55 años en el rubro ) , he diseñado TPS con efecto Hall , medidores de combustible por sonda capacitiva , y todo tipo de inventos . los ultimos años me dedique a diseñar y fabricar emisoras de radio FM , AM y TV hasta 10 kW .
Espero formar parte del grupo aportando lo que se y al mismo tiempo aprender
 
Hola a todos, veo que este ya es un hilo casi abandonado pero veo que hay tanta controvercia en tal tema, realmente me cansé de la ecu de mi Honda Accord de 1989 y opté por hacer algo al respecto, a lo que pude terminar con el problema, hice un pequeño módulo para manejar la chispa y los 4 inyectores tan solo usando el sensor TPS o el sensor MAP y el sensor de TEMPERATURA, mi viejo carro ya tiene 3 años funcionando así con ese pequeño y sencillo módulo. Subiré fotos un día de estos, saludos.
 
Atrás
Arriba