Delco Logique II Vendredi 12 Juin 2009 Présenté par Logiciel Embarqué Tuteuré par Pascal ACCO Présenté par Alexis DELZON, Clément GEAMBLU, Natalia MENDOZA
Plan Alexis Delzon 1 Présentation 2 Organisation / Retard 3 La conception 4 Bilan Alexis Delzon
Présentation – Organisation/Retard – La conception – Bilan Cahier des Charges Mettre en place un ordonnancement pour l’allumage du moteur d’une super 5 Traiter les informations d’autres capteurs pour informer le conducteur Analyse du fonctionnement du moteur Création d’algorithmes de calcul d’allumage Programmation d’un microcontrôleur DsPIC Alexis Delzon
Introduction à l’allumage classique Présentation – Organisation/Retard – La conception – Bilan Introduction à l’allumage classique Le moteur 4 temps Le groupe DELCOI réalisé un allumage électronique des bougies BUT : gérer l’allumage : enflammer le mélange air-essence en fin de compression Produire une étincelle qui déclenche une explosion : les gazs se détendent et poussent le piston vers le bas de la chambre de combustion Avance à l’allumage : Consiste à déclencher l’étincelle quelque instants avant que le piston atteigne le point le plus haut de la chambre de combustion (on parle de Point Mort HAUT) afin que l’explosion soit la meilleure IL faut allumer plus ou moins tôt le mélange, pour amorcer la combustion alors que le piston n'est pas au PMH. la pression commence à monter avant le PMH et est optimale à ce dernier. Il faut donc allumer au bon moment meilleur rendement Alexis Delzon
Présentation global du système Présentation – Organisation/Retard – La conception – Bilan Présentation global du système Alexis Delzon
Présentation – Organisation/Retard – La conception – Bilan Delco Logique I Batterie 4 Bobines Bougies Rupteur + Distributeur Rupteur électronique Microcontrôleur Sécurité Alexis Delzon
Les apports de Delco-Logique 2 Présentation – Organisation/Retard – La conception – Bilan Les apports de Delco-Logique 2 Simulateur capteurs Nouveaux capteurs Programmation DsPIC Alexis Delzon
Organisation de l’équipe Présentation – Organisation/Retard – La conception – Bilan Organisation de l’équipe Relation Inter-Equipe 3 Taches / 3 Membres Noyau Temps Réel Drivers Simulateurs Répartition selon Driver Driver PMH + NTR Clément Geamblu Driver Delco v2 Alexis Delzon Autres Drivers Natalia Mendoza Au début Finalement Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Retards 1 Conception des drivers Groupe Capteur 2 Ressources Communes 1 microcontrôleur à se partager 3 Installation de l’espace de Travail 30 min avant et après pour l’aménagement Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le Noyau Temps Réel Le choix PICos v1.05 Particularités Spécifique aux PIC Basé sur OSEK/VDX (Les années 1990) Offene Systeme und deren Schnittstellen fur die Elektronik im Kraftfahrzeug Vehicle Distributed eXecutive Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le PMH Qu’est ce que c’est? Point Mort Haut (PMH) Capteur envoyant des signaux carrés Après Mise en Forme Où est placé le PMH? Sur la roue dentée du cylindre moteur Renvoie l’image de la position du cycle moteur Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Principe Source: http://www.geea.org/ Auteur: Jean Pierre HOAREAU Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Problème ! Selon groupe capteur Pas de roue dentée 60 dents PMH non compatible avec la super 5 Solution Utiliser la roue dentée 101 dents Nouvel ordonnancement Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Principe d’allumage des bougies Dent 34 84 Bougie 1 Bougie 2 Bougie 3 Bougie 4 Interruption Dents Interruption Index 5 ms Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Nouvel algorithme sur l’allumage Dent 34 84 Bougie 1 Bougie 2 Bougie 3 Bougie 4 Interruption Dents Interruption Index 5 ms Algorithme à étincelle perdue Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Pourquoi ? 1 seul régime pris en compte Pas de différence entre le démarrage et le régime établi Inconvénient Consommation d’énergie non optimisée Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Finalement Fonctionne Simulateur du driver PMH! Le driver PMH avec algorithme à étincelle perdue Une version de l’algorithme normal pour le régime établi Soucis Erreur de précision négligeable pour la charge Pas de réglage de l’avance (1 dent = 3.56°) Noyau Temps Réel instable avec le driver PMH 101 dents Clément Geamblu
Présentation – Organisation/Retard – La conception – Bilan Le driver PMH Les points importants Pour l’utilisateur Activation par init_PMH() Paramétrable en statique et en dynamique Clément Geamblu
Le driver PMH / Noyau Temps Réel Présentation – Organisation/Retard – La conception – Bilan Le driver PMH / Noyau Temps Réel Temps Temps alloué au traitement pour un régime de 6000tr/min Tdent= 99µs Temps Max d’exécution mesuré en simulation Ttraitement_dent_MAX=76µs (avec Focs = 16MHz) Temps disponible pour les traitements du noyau Tnoyau_MAX=23µs Clément Geamblu
Simulation du driver PMH Présentation – Organisation/Retard – La conception – Bilan Simulation du driver PMH Haut Régime Pindex=13.55ms Bas Régime Pindex=188ms Clément Geamblu
Ordonnancement par Delco Présentation – Organisation/Retard – La conception – Bilan Ordonnancement par Delco Réutilisation des capteurs du groupe Delco I (2008) Pourquoi? Interrogations sur les nouveaux capteurs Faisabilité? Fonctionnement? Quand? Démarrage de la voiture Régime transitoire incertain Système de remplacement Alexis Delzon
Principe de Fonctionnement Présentation – Organisation/Retard – La conception – Bilan Principe de Fonctionnement Alexis Delzon
Principe de Fonctionnement Présentation – Organisation/Retard – La conception – Bilan Principe de Fonctionnement Alexis Delzon
Mise en place du simulateur Présentation – Organisation/Retard – La conception – Bilan Mise en place du simulateur Fréquence de Fonctionnement ? 10 ms et 40ms Ordre d’apparition Fréquence de fonctionnement Varie en fn du régime moteur Liée à l’arbre du villebrequin entre 750 tour/min – 3000tr/min 2 explosions/tour villebrequin 10ms et 40 ms Période entre 2 impulsions Copt ou Rupteur divisé par 4 2,5ms et 10 ms Configuration des timers REMARQUE : Le dispositif de Départ ne pouvait pas chargé pdt plus de 2,5ms en haut régime 4 bobines vont augmenter cette possibilité D’après les mesures du groupe DELCOI, le signal Copt apparaît quelque temps avant l’impulsion rupteur Alexis Delzon
Création du simulateur Présentation – Organisation/Retard – La conception – Bilan Création du simulateur Alexis Delzon
Ordonnancement par Delco I Présentation – Organisation/Retard – La conception – Bilan Ordonnancement par Delco I Volonté de pouvoir basculer d’un programme à un autre Partage des ressources du DsPIC Ressources attribuées au départ: Un Timer : gestion de l’ordonnancement Une entrée interruptive : rupteur 4 entrée NI: Signaux Delco I Alexis Delzon
Principe de l’ordonnancement Présentation – Organisation/Retard – La conception – Bilan Principe de l’ordonnancement Gestion en mode scrutatif des signaux DELCOI + Interruption par rupteur T(bob) 5ms Anticipation sur 2 fronts Nécessité de 2 timers T(TIMER) = 2T(opt) – T(BOB) Calcul de T(opt) : utilisation du capteur d’INDEX ordonnancement uniquement basé sur la détection du signal Copt N et décharger la bobine N+1 COMME dans le système mécanique de DEPART PRACTICITE besoin d’aucun calcul charge sur front de T(opt) décharge sur front Rupteur CONTRAINTE : Nécessité d’un temps de Charge bobine INFERIEUR ou EGALE à 5ms dispositif électronique qui déclenchement automatique la décharge pour une durée supérieure PROBLEME En bas régime si T(opt) = 10 ms le temps de charge de la bobine serait trop long DECHARGE TROP TOT DEUXIEME PROBLEME EN HAUT REGIME Si l’on veut une charge bobine de 5ms (Bonne étincelle) nécessité d’anticiper sur 2fronts car T(OPT) = 2,5ms Principe de l’ordonnancement lancer un timer sur un front de C(opt) puis déclenchement d’une interruption CHARGE d’une des bobines Le déchargement des bobines sera commandé lors de l’ouverture du rupteur. Le temps de chargement timer doit être calculé en fonction de la période du doigt du DELCO et du temps de charge bobine que l’on veut CALCUL AVEC CAPTEUR INDEX Gestion sructative Si T(TIMER) TROP long > manquer un signal C(opt) Nécessité de 2 timers Ressources DsPIC insuffisante Alexis Delzon
Présentation – Organisation/Retard – La conception – Bilan Résultat Test en simulation : rajout du simulateur d’index T(bob) modifiable entre 3ms et 5ms Alexis Delzon
Les drivers Position et Vitesse Présentation – Organisation/Retard – La conception – Bilan Les drivers Position et Vitesse Driver Gestion de la Position de la pédale d’accélération (driver Position) Fonctionnement de l’ADC Configuration de registres de l’ADC Programme Driver Vitesse de la voiture (driver Vitesse) Fonctionnement Configuration de Registre du Timer et d’interruption Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Position Récupérer la position de la pédale pour la transmettre à la partie communication. Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Position Fonctionnement L’ADC du dsPIC permet de convertir une grandeur continue analogique de tension comprise entre AVSS et AVDD (0 à 5V dans notre cas) Initialise les ports d’entrée Configure les registres Lance la conversion Exécute la boucle sans fin Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Position Configuration du registre de l’ADC Valeur récupérée sur ADCBUF3 void adcconfiguration(void){ // Configuration ADC en lancement immédiat ADCON1 = 0x8000; // ADON = 1 module de conversion active ADCON2 = 0x0400; // ALTS=0 ADCHS = 0x0003; // Selection de l’entrée : CHONA=0, CHOSA=0011 ADCON3 = 0x0080; // Tad = internal RC clock, ADCR = 1 ADCON1bits.ADON = 1; // turn ADC ON } Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Position Programme: 1ere Fonction Récupère une image de la position int calcul_acceleration (void){ ADCON1bits.SAMP = 0; // start conversion while(ADCON1bits.DONE); // attend la fin return ADCBUF3; } Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Position Programme: 2eme Fonction Récupère la position en % float calcule_niveau_acceleration(void) { long num ; num = calcul_acceleration (); return ((0.0244)*num); } Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Vitesse Mesure le temps entre chaque front montant - gère les interruptions - fait le calcul. Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Vitesse Fonctionnement Configuration du port d’entrée Configuration du registre d’interruption et du Timer Lancement de l’interruption Exécution de la boucle Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Vitesse Configuration des registres //Configuration du Port d’entrée : TRISD |= 0x0400; //RD10 en entrée //Configuration du registres du Timer : TMR4 = 0; //Initialisation du Compteur a 0 T4CON = 0xA020; //T2ON=1 (Demarrage Compteur), //TSIDL=1(Fonctione sur idle mode) //(Synchronisation sur Front externe), //TCS=1 (Entrée Externe sélectionné) //Configuration du registres d’Interruption: INTCON2 &= 0xFFF7; //INT3 sur front positive IEC2bits.INT3IE = 1; //Validation Interruption INT3 Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Vitesse La fonction d’interruption void __attribute__((__interrupt__, auto_psv)) _INT3Interrupt(void){ IEC2bits.INT3IE = 0; //Inhibe les interruptions sur INT3 pendant le traitement periode_vitesse = TMR4; TMR4 = 0; //Réinitialisation Timer 4 (Base de Temps Calcul Période) pour le prochain tour IFS2bits.INT3IF = 0; // Supprime drapeau d'interruption sur INT3 IEC2bits.INT3IE = 1; } Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Le driver Vitesse Fonction Utilisateur Calcul et fourni la vitesse de la voiture void lance_Vitesse_voiture (void){ // resultat en (Km/H) Vitesse_voiture = (3. 392 / periode_vitesse) ; } Natalia Mendoza
Présentation – Organisation/Retard – La conception – Bilan Bilan technique Points forts Fonctionnement des drivers Fonctionnement des simulateurs des capteurs Drivers adaptables par fichier de configuration Points faibles Aucun test en réel Noyau temps réel difficile à maîtriser Avance driver Delco v2 gérée mécaniquement Alexis Delzon
Bilan organisationnel Présentation – Organisation/Retard – La conception – Bilan Bilan organisationnel Points forts Répartition des tâches pour travailler indépendamment Meilleur gestion du temps Séparation en drivers Délimitation précise des périphériques et du code à générer Points faibles Partage des ressources parfois difficile Une seule carte de test + 1 DsPIC Natalia Mendoza
Améliorations envisageables Présentation – Organisation/Retard – La conception – Bilan Améliorations envisageables Noyau Temps Réel Faire un noyau Temps Réel propre au projet Driver PMH Utiliser un Timer pour le début de la charge de la bobine Réaliser l’algorithme de passage entre démarrage et régime établi Driver Delco v2 Utilisation de Timers pour la gestion de l’avance Clément Geamblu
Merci de votre attention Si vous avez des questions ?