Show Posts
Pages: 1 2 [3] 4 5 ... 240
31  International / Français / Re: circuit de gestion du temps d’impulsions exernes on: July 22, 2014, 03:44:35 pm

si j'ai bien compris Void comptage est la fonction d'interruption?

Oui

mais combien de temps mettra elle a s'exécuter?
 car moi ce dont j'avais peur, c'est que par exemple l'ordre d'injecté est donné et des interruptions interviennent, qui chacune mettent un certain temps a s'exécuter et cela créerai un retard qui peut pourrais être dangereux.... Car je te rappel qu'a la vitesse maximale du moteur l'arduino reçoit un signal carré de 6000 Hz !!!
6000 interruptions par secondes? cela va pas être beaucoup?

Je suis pas expert dans l'execution en temps réel du code, mais un switch case c'est quelques cycles, incrémentation du compteur 1 cycles (donc on est jusque là sous la µs puisqu'à 16 mhz, un cycle = 0.0625 µS). En fait le plus (c'est ce que je disais avant) c'est au maxi 20 µS. Donc, aller, cette interruption écrite comme elle est écrite prendra 25 µS grand maximum. Mais comme j'ai dis plus haut également, avec rien que de la manip de registre, on se passe de digitalWrite() (et y'a absolument rien de compliqué) et la on passe à une interruption qui doit être sous la µS ....

6000 hz = période de 166µS donc on est largement bon, même en pur Arduino. Unze interruption est prioritaire au reste du code, donc même s'il est occupé dans la loop(), l'interruption sera forcement gérée. Donc ici, si on en reste à ces timing, l'interruption monopolisera 100-(166-25)/166*100 = 15% du µC smiley

Le seul problème qu'on peut rencontrer, c'est que par exemple, si les 14 ms sont écoulées, et que pile à ce moment la l'interruption est déclenchée, celà retardera l'arrêt de l'injection de la durée de l'interruption, soit 25µS. 14 000 par rapport à 25, je crois que c'est négligeable smiley-wink


Encore un truc:
a ton avis comment repérer le point de départ du compteur? car dans le but de caler l'allumage, et les injecteurs...
il faut mettre le compteur a zéro quand le premier piston est au Point Mort Haut. Un coup de bol, sur ma roue (voire en piece jointe) il y a une partie sans trous... donc l'impulsion envoyée a l'arduino a ce moment sera plus longue, mais comment la détectée? et mettre a ce moment la le compteur a 0.
j'ai pensé a mesurer le temps entre deux interruptions et les comparer mais plus facile a dire qu'a faire.... surtout que je ne veux pas surcharger mon pauvre petit arduino (mais d'après vous je le sous estime c'est cela?)
l'inconvenient de ma méthode c'est que la boucle sera executée a chaque fois et si l'arduino est limite en ressources.....


Une broutille : à l'interruption tu enregistres micros(), compare à la précédente valeur : si c'est supérieur à telle durée, alors c'est le point 0
32  International / Français / Re: circuit de gestion du temps d’impulsions exernes on: July 22, 2014, 01:13:50 pm
Supposons 5 injecteurs, sans la gestion de la bobine :

Code:

unsigned long StartTime[5];
int piston[]={4,5,6,7,8} ; // au pif hein, à configurer

void setup() {

for (int i=0;i<5;i++) {
pinMode(piston[i],OUTPUT);
digitalWrite(piston[i],LOW);
}

}

void loop() {

for (int i=0;i<5;i++) {
if(micros>(StartTime[i]+14000)) digitalWrite(piston[i],LOW);
}

}

void comptage(){
   
compteur++;

if(compteur>=240) compteur=0;

switch(compteur) {

case 10:
digitalWrite(Piston[1],HIGH);
StartTime[1]=micros();
break;

case 20:
digitalWrite(Piston[2],HIGH);
StartTime[2]=micros();
break;

case 30:
digitalWrite(Piston[3],HIGH);
StartTime[3]=micros();
break;

case 40:
digitalWrite(Piston[4],HIGH);
StartTime[4]=micros();
break;

case 50:
digitalWrite(Piston[5],HIGH);
StartTime[5]=micros();
break;

default:
break;

}
 
  }
33  International / Français / Re: tableau dynamique : mon code fonctionne ... mais pourquoi ? on: July 22, 2014, 09:04:16 am
Salut,

Pense à utiliser les balises code, plus lisible et évite les bugs dus aux autres balises.

Ma première question est : que vient faire le malloc() ici ?
34  International / Français / Re: circuit de gestion du temps d’impulsions exernes on: July 22, 2014, 09:01:21 am

Mais sinon comment dois je procéder pour que l arduino gère les temps en plus?


Je te l'ai posté mis quelques  posts avant ...
35  International / Français / Re: rc voiture + arduino uno + monster motor shield = voiture qui roule on: July 22, 2014, 08:59:58 am
On va peut-être arrêter la multiplication des topics ...
36  International / Français / Re: Controler led à partir du terminal serie on: July 22, 2014, 02:23:42 am
13 c'est le "carriage return"

En fait quand tu fais println() au lieu de print() (le moniteur série Arduino fait un println() quand tu envois quelque chose, mais c'est la même chose côté Arduino) tu fais la même chose, sauf que les caractère 10 et 13 de la table ASCII sont ajouté.

http://www.asciitable.com/index/asciifull.gif

 C'est une convention qui signifie la fin d'une ligne :
http://fr.wikipedia.org/wiki/Carriage_Return_Line_Feed
37  International / Français / Re: circuit de gestion du temps d’impulsions exernes on: July 22, 2014, 02:20:04 am
Souvent ce sont des capteurs inductifs (en tout cas sur ma jaguar c'est ça) ou des fourches infrarouges (c'est ce que j'ai sur ma 307 d'après ce que j'ai compris du garagiste quand il m'a fait mon volant moteur ...)
38  International / Français / Re: circuit de gestion du temps d’impulsions exernes on: July 21, 2014, 03:43:10 pm
Non mais tu te rends pas compte : la charge de travail est minimale pour le µC là ... 14 ms c'est une éternité pour un microcontrôleur à 16 mhz. Je t'assure que tu pourrais piloter 100 cylindres si tu veux ...

Code:
void loop() {

if(micros()>(DepartPiston+14000) digitalWrite(piston,LOW);

}

void Interruption() {

digitalWrite(piston,HIGH);
DepartPiston=micros();

}

Et encore ça c'est la méthode Arduino, si on commence à taper dans la manip directe de timer et de registre t'es précis à la µs ...
39  International / Français / Re: quelle carte choisir ? on: July 21, 2014, 10:17:06 am
Salut,

Visiblement c'est un 1284p dessus, donc tu dois pouvoir suivre les info ici pour l'ajouter :
http://forum.arduino.cc/index.php/topic,64612.0.html

Au pire pas d'inquiétude, si c'est pas bon ça te donnera une erreur et c'est tout.
40  International / Français / Re: circuit de gestion du temps d’impulsions exernes on: July 21, 2014, 08:01:14 am

je ne peux pas demander a mon arduino MEGA de gérer le temps de l’impulsion en plus car il a déjà beaucoup a faire, c'est pour cela que je veux confier cela a un circuit externe qui serait sous les ordres de mon arduino MEGA 1280.

En plus je serais curieux de savoir ce que c'est que le "beaucoup à faire", parce que tu pourrais avoir 100 injecteurs à gérer que ça serait tout à fait possible
41  International / Français / Re: faire du "multitâches" ? on: July 21, 2014, 07:58:39 am
http://battomicro.wordpress.com/2013/06/07/tutorial-les-interruptions-temporelles-avec-arduino/
42  International / Français / Re: lcd on: July 21, 2014, 07:58:00 am
un gros condo permet de répondre aux appel de courant du LCD et donc de stabiliser la tension en évitant qu'elle chute brusquement. Les condensateurs plus petits permettent de filtrer les parasites. je suis pas du tout un spécialiste dans le domaine du filtrage, mais c'est un problème courant et ce sont des valeurs "typiques" à utiliser (je mets des " " car évidemment ça dépend du type de parasite et de la taille du consommateur)
43  International / Français / Re: lcd on: July 21, 2014, 06:28:09 am
Normalement avant de faire un nouvelle affichage (avant tout tes print() donc) on fait un lcd.clear() (pas sûr que ça résolve ton problème mais sait-on jamais)

Sinon problème d'alim "classique" sur les lcd. Faut rajouter un condo polarisé >
100µF+ 1 de 100nf aux bornes du lcd.
44  International / Français / Re: projet avec une carte Galileo sur Arduino on: July 21, 2014, 06:25:35 am
Déjà si tu poses la question à mon avis tu n'as le niveau pour réécrire une librairie comme ça :s

Après je ne pense que qu'il faille reprendre toute la librairies, simplement le bas niveau, mais vu qu'il y a des partie en assembleur ... Et puis ça implique de parfaitement maitriser la communication série, sinon tu vas rien pigé.

Y'a plein de tuto sur internet, ça te donnera déjà une idée du boulot à accomplir, même si softwareSerial est loin d'être la plus complexe :
http://www.robot-maker.com/index.php?/tutorials/article/30-creer-une-bibliotheque-arduino/
http://www.siliciumcorp.com/developpement/arduino/les-librairies-et-arduino/#more-689

Après une autre possibilité est d'écrire une routine basique pour faire du serial soft, juste avec des digitalWrite() et digitalRead(). Les perfs devraient être dégueulasses face à software Serial, mais ça peut fonctionner.
45  International / Français / Re: projet avec une carte Galileo sur Arduino on: July 21, 2014, 06:05:29 am
Salut,

Normal, ce n'est pas du tout la même architecture, donc toute la partie bas niveau n'a rien à voir ... Donc tu dois réécrire la lib
Pages: 1 2 [3] 4 5 ... 240