Salut à tous,
Je pensais l'avoir mis sur le forum, mais non apparemment.
C'est un petit montage pour pouvoir lire sa consommation instantanée mais surtout le cumul de ce qui a été consommé et donc ce qui reste dans le réservoir.
Une sorte de calculateur de bord, j'ai choisi de l'afficher sur un compteur de vélo qui n'est pas fait pour ça bien sûr.
Avantage du compteur de vélo :
pas bien cher,
facile à trouver,
étanche,
autonome (pile),
fiable,
pas trop grand pour l'installer mais visible.
Il est sensé recevoir des impulsions correspondant à une longueur parcourue pour afficher des Km/h, des km parcourus, la moyenne, le maxi en km/h...
Ici on va lui envoyer l'équivalent d'un volume d'essence injecté, tous les 0,1 litre d'essence par exemple une impulsion,
il va donc afficher des Litres / Heure, faire le cumul des litres etc.
Ce qui peut nous intéresser c'est donc le cumul de litres consommés à chaque plein et en déduire ce qu'il reste, bien utile je trouve sur le Scrambler par exemple.
Pour lui envoyer ces impulsions de consommation il faut mesurer le temps cumulé d'un injecteur ouvert, en fait sur un des fils d'injecteur il y a un + 12V permanent (contact mis) et sur l'autre des fois + 12 V et quand on passe à 0 V c'est qu'il est alimenté et ouvert.
Un seul injecteur suffit c'est juste un coefficient 2 pour avoir le total.
Il faut donc mesurer le temps à l'état bas ou 0 V, le cumuler et tous les xx ms envoyer une impulsion au compteur.
Je l'avais fait avec des circuits logiques et ça fonctionne bien depuis plusieurs années, maintenant il y a des cartes avec micro-contrôleurs très accessibles qui peuvent le faire sans beaucoup de câblage, avec quelques composants.
Donc il faut un Arduino, plus exactement avec un clone de Nano Arduino, voire plus petit un micro-contrôleur seul : Attiny 45 ou 85.
L'avantage du Nano c'est la prise USB pour charger le programme, le modifier, éventuellement lire des choses avec le port USB sur un PC, smartphone, tablette.
Il faut un régulateur qui transforme le 12V en 5V, une résistance de 100 kohms au moins (ça peut perturber l'injecteur), une petite diode zener 5,1 V pour protéger l'entrée de l'Arduino, le compteur de vélo style Sigma
avec liaison filaire, avec si possible des gros chiffres bien visibles.
Il faudra quand même un petit transistor avec une résistance pour fermer la boucle des 2 fils du compteur de vélo, l'Arduino fournit des impulsions 0 _ 5 V mais ça ne va pas sur le compteur.
Il faudra que je fasse un schéma, j'avais fait celui avec les circuits logiques, et tester ce montage Arduino à la place du mien quand même pour voir si ça fonctionne aussi bien.
Remarques :
Pour que ça fonctionne bien il faut que la pression d'essence soit constante pour mesurer la consommation, elle ne l'est pas forcément mais globalement je n'ai pas trouvé de gros écarts entre la mesure et ce que je remettais à la pompe.
Il faut faire plusieurs pleins et ajuster les paramètres compteur de vélo ou du programme pour avoir une bonne mesure.
Utiliser un Arduino pour ne faire que ça c'est vraiment du luxe mais c'est si peu cher (enfin les clones made in china) et avec l'USB, que ça ne donne pas forcément envie d'utiliser un Attiny auquel il faudra ajouter aussi quelques composants et programmer en le retirant du circuit.
Pour donner un exemple on peut faire un allumage électronique cartographique multi-courbes etc avec ça (j'en ai fait un avec l'aide d'autres gars plus pointus que moi en programmation).
On pourrait aussi lui faire mesurer la température moteur, la tension batterie, les signaux des capteurs d'injection pour faire un diagnostic etc.
Mais il faudrait un autre afficheur bien sûr, à voir pour plus tard.
On peut lui ajouter un module Bluetooth pour envoyer des infos sur un smartphone.
Certains avec de l'Arduino Mega (plus puissant) font un calculateur d'injection, ça pourrait nous servir un jour...
Alors les Nanos, on en trouve pour environ 2,50€ exemple :
https://www.ebay.fr/itm/USB-Nano-V3-0-ATMEGA328P-CH340G-5V-16M-Micro-Controller-Board-For-Arduino/263282836783?hash=item3d4ce1452f:m:mji1Vy7FboYuJuXdryBhXOgLe plus cher c'est la boîte pour mettre le Nano !
Non il y aussi le compteur Sigma comme le BC509 environ 16 €
Les composants il faudrait aller chez un vendeur de composants, sinon il y a Farnell, Conrad etc mais les frais de port vont être importants.
Le code qui pourra être améliorer bien sûr, j'ai essayé de mettre un maximum de commentaires : "// blabla..."
Attention dans le code il y a aussi un générateur d'impulsions (500 Hz) pour tester le montage en simulant les impulsions de l'injecteur.
Code:
/*
Mesure du temps d'injection pour envoyer des impulsions à un compteur de vélo qui affiche la consommation en litres par heure
On doit programmer sur le compteur de vélo une longueur (tour de roue) qui correspondra à un volume d'essence afin d'afficher des L/H à la place de Km/H
L'injecteur est alimenté en +12V d'un coté sur un fil, lorsqu'il s'ouvre pour injecter de l'essence le fil de commande passe à 0 V
Attention on doit mettre une résitance d'au moins 100 k ohms et une diode zener 5.1V pour limiter la tension vers l'Arduino
Pour une simulation la broche 2 injecteur est connectée par un fil en 3 qui est la sortie simulation
*/
const int injecteur = 2; // broche capteur injection
const int simul = 3; // broche PWM pour simulation injecteur
const int consommation = 13; // broche envoie consommation au compteur
unsigned long dureeInj = 0; // variable utilisée pour stocker la durée d'une injection
unsigned long reposInj = 0; // variable utilisée pour stocker la durée d'un repos d'injection
unsigned long cumulInj = 0; // variable utilisée pour stocker le cumul des durées d'injection
boolean imp = false; // impulsion sortie en cours vrai faux
unsigned long actu; // temps actuel
void setup()
{
Serial.begin(115200);
pinMode(injecteur, INPUT); // Injecteur est une entrée
pinMode(simul, OUTPUT); // Simulation est une sortie
pinMode(consommation, OUTPUT); // Sortie pour compteur
digitalWrite (injecteur, HIGH); // entrée injecteur est normalement à 1 au repos
digitalWrite(consommation, LOW); // sortie consommation est à 0
}
void loop()
{
analogWrite(simul, 220); // Simulation test environ 500 hz avec une valeur moyenne à état 0 d'environ 0,3 ms à 220 soit 15 % de T = 2 ms (rapport cyclique de 0 à 255)
dureeInj = pulseIn(injecteur, LOW); // La durée d'injection se fait par mesure du temps d'injecteur à 0 donc lorsqu'il est commandé
cumulInj = cumulInj + dureeInj; // Le cumul des temps d'injection est la somme du dernier cumul + le dernier temps d'injection mesuré
if (cumulInj >= 60000) // Si le cumul injection est égal ou supérieur à 60 000, cette valeur doit être ajustée, en test on a environ 65 700 us mesurés
{ imp = true; // imp est vrai
cumulInj = 0; // Cumul injection est remis à 0
digitalWrite(consommation, HIGH); // On envoie une impulsion de consommation au compteur, sortie etat haut
actu = millis(); // Temps actuel = millisecondes
Serial.println("1"); // Info port série = 1
}
if (imp == true ) // Si imp est vrai
{
if (millis() - actu >= 80) // Si temps en millisecondes - actu est égal ou supérieur à 80 ms, çà decroche au dessus
{
digitalWrite(consommation, LOW); // On passe la sortie impulsion consommation à l'état bas
imp = false; // On passe imp à l'état faux ou 0
Serial.println("0"); // Info = 0
}
}
}
Un enregistrement (analyseur logique sur PC) de ce que ça donne, en haut les impulsions injecteur, en bas les impulsions vers le compteur de vélo :