Starter pour carburateur

bonjour a tous,

avant de me lancer dans l'eventuel achat d'une carte arduino j'aurais aimer savoir si quelqu'un peut me dire si mon projet est realisable.

mon projet consiste a controler un servomoteur (relier au carburateur de mon auto) en fonction de la vitesse de rotation du moteur (capteur PMH) (3 fils masse, +12, signal) afin de garder un ralenti constant meme moteur froid.

dans l'ideal il faudrait pouvoir parametrer sur 750 trs/min.

merci d'avance pour l'aide que vous pourez m'apporter car je ne connais rien au language C et C++.

Bonjour,
tous dépend si le starter est automatique sur le carburateur (système qui agit sur les papillons suivant la température du moteur).
Cdt.
Marcus

le starter n'est pas existant, je comptait tout creer.

pour la partie meca c'est les doigts dans le nez mais la partie programation c'est pas mon truc.

je comptait faire un systeme PID avec le capteur PMH.

en gros:

  • moteur arreter 0rpm papillon de starter tirer a fond
  • moteur allumer si le ralenti est trop bas (consigne defini dans le programme de 700rpm) le servomoteur ajuste en actionnant le papillon de starter
  • quand le ralenti est ok le servomoteur reste en attente

voila pour les grandes lignes

merci pour l'aide apporté.

c’est possible a faire, pour le moteur un PAP est mieux (couple de maintien élevé) un moteur thermique à une forte dépression.

Bonsoir,

C’est intéressante ce projet. Si tu prend le signal régime moteur par le capteur PHM, il faudra abaisser la tension car je doute que l’arduino apprécie le 12v :wink:

le capteur PHM est inutilisé (citroen ax) je peut donc je pense le branché en 5v ?

Bonjour,
c'est un allumage électronique sur le moteur ?
Marcus.

oui et non le seul piece electronique est le module d'allumage qui est monté sur un distributeur d'allumage mecanique (tete de delco)

OK, la tension du capteur PMH n'est pas un problème avec 2 résistances et une zener ça vas le faire.
La première étape est faire un compte tour fait des recherche et écris un bout de code, j'ai déjà écrit un programme de compte tour (interruption du timer1 et préscaler partis a bien comprendre avec la fréquence du quartz)

j'ai deja un compte tour sur mon vehicule qui recupere l'info sur la bobine d'allumage au primaire, est il plus simple de ce piqué ici plutot que sur le capteur PMH ?

si tu as un delco donc 1 bobine et 4 cylindres c'est plus le même calcul.
PMH = point mort haut = 1 pulse par tour.

j'ai les deux, quel serait le montage le plus simple sachant que mon capteur PMH ne sert a rien sur mon vehicule je peut donc en faire ce que je veut car il n'est pas branché.

Bonjour,
prendre le capteur de PMH, déclencher une interruption sur front haut ou bas, pas sur changement d'état,
compter et calculer le nombre de pulse du quartz suivant le diviseur, appliquer la formule F=1/T*60 pour le nombre de tours minutes.
Suivant le résultat tourner X pas en plus ou moins du PAP pour avoir le bon nombre de tours minutes, avec un temps de réaction de quelques millisecondes et avec une tolérance de X tours minutes +-

tres bien je comprend le principe en revanche je prefere utilisé un servomoteur de 12kg car j'en ai a revendre (modelisme) plutot qu'un PAP .

sauf si il y a un reel interet a mettre un PAP, mais dans ce cas il faudrais m'aider pour le choix

OK pour le servo moteur.
voici le principe du compte tour a toi de faire des recherches sur comment piloter un servo-moteur, il y a des exemples.

#include <avr/io.h>
#include <stdint.h> 
#define F_CPU 16000000
#include <avr/interrupt.h>// pour utiliser uint8_t
#include <LiquidCrystal.h>         // on importe la bibliothèque
LiquidCrystal monEcran(A0,A1,A2,A3,A4,A5);//23-24-25-26-27-28
volatile float Tours_secondes=0;
volatile float Tours_minutes=0;
volatile float tctn = 0;
void setup(){
cli();        //interdit les interruptions  
monEcran.begin(16,2);     //on initialise la communication avec 20 colonnes et 2 lignes
 monEcran.setCursor(0,0); monEcran.print("  Tours minute") ;
//Serial.begin(115200);
//TCCR1B   7      6    5    4     3     2    1    0
//       ICNC1  ICES1  -   WGM13 WGM12 CS12 CS11 CS10
//mode normal  prescaler 1024 front montant
//ICES1 = 1 front montant pour capture evenement 0x45
//ICES1 = 0 front descendant pour capture evenement 0x05
TCCR1B = 0x45; // 4=> evenement sur PB0 en front montant. et 5=> prescaler de 1024
TCCR1A = 0x00; // 0=>mode Normal, 2=>CTC
TCNT1  = 0x00; // raz du compteur timer1
TIMSK1 = 0x20; // autorise une interruption sur evenement sur PB0 D2
TCNT1 = 0;     // Compteur Registre à 0 permet la lecture et l'écriture
sei();         // autorise les interruptions
}
ISR (TIMER1_CAPT_vect){
uint8_t SaveSREG = SREG;   // empile le registre d'état 
    TCCR1B = 0x00;         // arret du timer 1    
    Tours_secondes = ICR1; // nombres de ticks par tour
    tctn = ICR1;
    Tours_secondes = 1/((Tours_secondes*1024)/16000000); // F = 1/(16Mhz / ( Nombre de ticks  mutltiplier par le prescaler) ).
    Tours_minutes  = Tours_secondes*60;                  // RPM = F * 60 
    TCNT1  = 0x00;         // raz du compeur timer1
    TCCR1B = 0x45;         // mise en marche du timer1
    SREG = SaveSREG;       // dépile le registre d'état  
}
void loop()
{                   
       delay(1000);   
       monEcran.setCursor(6,1);monEcran.print(Tours_minutes);               
}

Si ton capteur PMH est libre, tu peut lui mettre une tension de 5v pour récupérer l'info sans problème mais attention au type de capteur utilisé et au branchement.

  • Capteur inductif 2 fils (il crée une tension à ses bornes) donc pas besoin d'alim il faut juste mesurer la tension qu'il produit pour être sur de pas cramer l'arduino)

  • Capteur à effet hall 3 fils (+/-/signal)

Bonjour,
pour le capteur regarde sur oscaro par exemple pour avoir la ref du capteur.

dans ce cas c'est bien un capteur a effet hall (3fils), sur oscaro ils disent inductif 70 ohm pour info

as-tu commencé a faire un bout de code pour le servo-moteur

pas du tout je ne connais pas le language "C" c'est tout nouveau pour moi (je prefere les automates en ladder).