Nouvelles:

Le Forum est maintenant chiffré (préambule https). Bien sûr, des liens externes insérés dans les sujets vont demeurer inchangés. Mais la composition des pages du Forum est désormais sécurisée. Si des problèmes d'affichage surviennent, veillez à vider votre cache pour ce site.

Menu principal

Boitier E85 pour rouler sur circuit projet fini

Démarré par Marcus_95, Mai 22, 2018, 02:22:12 PM

« précédent - suivant »

Marcus_95

Bonjour,
nickel ça marche, j'ai tester tout les ports, ça clignote.
Merci, version idem que la tienne.
Amitiés.
Marcus.

Marcus_95

J'ai testé avec MPLAB IDE 8.92 pour créer un fichier HEX d'après ton programme et programmer le PIC ça marche  :D :)

Curiosus

#32
Bonsoir Marcus_95, et tout le forum,

Si ton programmeur Pickit3 fonctionne c'est super, on va pouvoir continuer, et reprendre mon schéma du post http://forum.bidouilleur.ca/index.php?topic=355.msg2028#msg2028

Bon tu me dis ceci : Pour cette configuration il faut une résistance de 1.8k à  2.2K entre le 13V et la sortie du calculateur

D'accord avec toi, mais à  un moment donné l'impulsion devient négatif, cela veut dire que la base du transistor BC548 devient négatif.

Le courant ne passe plus sur la sortie du collecteur du transistor BC548.



Ce qui a pour effet de rendre le collecteur du transistor BC548 positif, et là  ça devient intéressant au point de vue programmation de notre microcontrôleur, car il na plus besoin de gérer l'ouverture du port, il va gérer juste la fermeture
du temps programmer.

Et de plus le condensateur qui a actuellement une valeur de 1nf(et qu'il faudra ajuster par la suite)

Va maintenir la valeur de la base du transistor TIP122 positivement, quand le collecteur du transistor BC548 devient négatif.

ça permet au microcontrôleur de prendre le relais pour une prolongation de temps, et évite un trou de quelque microseconde.

Le microcontrôleur ne doit pas gérer les entrées, mais les sorties, sinon çà  devient un casse tête.

Avec la méthode que je te propose le programme aura une tolérance de plus ou moins 2µs.

ce qu'il faut, c''est suivre l'ordre d'allumage qui est d'après toi : 1, 6, 3, 5, 2, 4

Voilà  comment on va faire

1)On attend que l'entrée passe à  1 avec mon montage                         
2)Quand celui-ci passe à  1 on lit la valeur du codeur                             
3)On va chercher la valeur qui correspond à  celle-ci en sdram                           
4)On incrémente le timer1 qui peu compter jusquâ€™à  65535 µs(65ms)             
5)On attend que l'entrée passe à  0 avec mon montage                           
6)Quand celui-ci passe à  0 On déclenche le timer1                       

7)On passe au cylindre suivant                                                                   
8)On attend que le timer1 soit à  la valeur programmer
9)Une fois la valeur du timer1 atteint, On ferme l'électrovanne du cylindre ci-dessus
                                                                                                             
Après on refait la même chose, je peux le faire de deux façon avec timer1, ou sans timer1 

A+

Marcus_95

#33
Bonjour Curiosus,
ne serait-il pas plus simple:
Début du programme
Lecture de la roue pour avoir la valeur en plus
Injecteur1 demande une ouverture
Interruption par front descendant, ont commute la sortie correspondante, déclanchement du timer1 et on prépare la future interruption par front montant"
L’interruption n'étant pas bloquante on peut faire autre chose.
Injecteur(X) demande son ouverture ont commuté directe sa sortie.
Interruption par front montant détecter sur l'injecteur1, on lit la valeur du timer1
Lancement du timer2 en comparateur suivant la valeur calculer du timer1.
Fin du timer2 on inverse la sortie et on prépare pour une interruption par front descendant sur injecteur1.
Injecteur(X) a fini on relance le timer2 avec la même valeur que l'injecteur1, et ceux pour tous les injecteurs.
De cette façon on utilise qu'une interruption, reste a savoir si le PIC sera suffisamment rapide  ;D
Un injecteur a un temps de réponse d'environ 80µS (un PIC a 20Mhz a du temps devant lui  ;) )
Amitiés.
Marcus

PS j'ai un programme en C pour montage équivalent, celui que je n'arrive pas a modifier.
Le programme main est en assembleur pour Atmega328, il tourne bien sur table pas sur la voiture.


Curiosus

#34
Bonsoir Marcus_95, et tout le forum,

La roue codeuse doit pouvoir être changé à  tous moment, ça prends quelque µs à  voir la valeur.
Comme j'ai déjà  dit je ne veux pas utiliser d'interruption, c'est possible, mais il faut modifier l'électronique.

Si je te te dit ça, c'est que j'ai étudié ton problème, tu as  6 cylindres à  gérer avec des temps trop court pour des interruptions.

Les valeurs des temps doivent être inscrit en EEPROM, puis au démarrage copier en Sdram, pourquoi en EEPROM, tout simplement parce que l'on pourra changer leurs valeurs sans toucher au programme.

Regarde tes signaux sur l'analyseur logique, et tu vas comprendre que même avec des interruptions ça suffira pas.

Ce que tu me demande c'est une usine à  gaz.

Citation
j'ai un programme en C pour montage équivalent, celui que je n'arrive pas a modifier.

Et pour une bonne raison, le C c'est pas de l'assembleur, donc, manque de rapidité et de fluidité.

Et de plus dans mon système j'utiliserais l'oscillateur interne du microcontrôleur qui est de 8 Mhz, ce qui représente
un temps d'une instruction de 0.5µs, c'est largement suffisant.

A+





Marcus_95

Bonjour Curiosus,
OK je comprend mieux, on ce lance  ;D
Amitiés.
Marcus.

Curiosus

#36
Bonsoir Marcus_95, et tout le forum,

On va commencer par la gestion des temps, avec mémorisation en EEPROM, le schéma on le fera par état
d'avancement.

Le matériel : un LCD(que tu as), interrupteur à  3 positions ou plus, un bouton poussoir, et un potentiomètre linéaire genre 5k, 10k, 15K, ou autre ...

As tu tous cela ?

On est toujours d'accord pour le temps Maxi de 2000 µs ?


A+

Marcus_95

Bonjour Curiosus,
oui, j'ai le matériel.
Ok pour 2ms de plus maxi.
Amitiés.
Marcus.

Curiosus

#38
Bonsoir Marcus_95, et tout le forum,

Je voudrais savoir qu'elle type d'écran LCD(datasheet), si c'est un 2 x 16 ou un 2x 20


A+

Marcus_95

#39
Bonjour Curiosus,
l'écran est un 1602A 2X16.
Amitiés.
Marcus.
https://www.rhydolabz.com/documents/29/LCD-1602a-yellow.pdf

Curiosus

#40
Bonsoir Marcus_95, et tout le forum,


Voilà  une partie du programme terminer, gestion des temps, avec mémorisation en EEPROM pour chaque cran du codeur.

Pour chaque cran du codeur qui est de 16, tu peux régler un temps différent , ce qui te donne 16 temps. :o

Voici le schéma



Voilà  ce que ça donne




Fichier code + fichier compilé pour que tu essais, dit moi si il faut modifier le texte, ou autre.


Je fais une pause de 1 semaine, pour m’occupè de mes programmes.

A+   




Marcus_95

Bonjour Curiosus,
je teste ce W.E
Merci de ton aide.
Amitiés.
Marcus.

Marcus_95

Bonjour,
de retour.
J'ai réussi pendant mes vacances et arrêts maladie a modifier mon code avec Mikroc pour le boitier E85, ça marche.
J'ai fait plusieurs version avec des PIC 16F887 PIC 16F827 PIC 16F876 et un mixte avec un Arduino (pour la roue codeuse sans fils) et un PIC 16F887.
Merci pour tout.
Marcus.

Curiosus

Bonsoir,

Si ça fonctionne c'est le principal, bonne continuation.

A+

Marcus_95

Bonjour,
ou poster les schémas et programmes pour ceux qui aimeraient rouler au E85.
Cdt.
Marcus.