Bonjour,
J'ai comme projet de réaliser un afficheur graphique d'état logique ( un genre d'oscilloscope ne prenant en entrée qu'une tension nulle ou positive, ce genre d'appareil existe déjà sûrement mais c'est plus éducatif et drôle de le faire soi-même non?) que je nommerai "AG" dans ce post pour faciliter la lecture.
L'idée principale est de visualiser des signaux périodiques imperceptibles par l'oeil (genre commande PWM d'un servo moteur de période 20ms... ou ce genre de trucs rapides).
Pourriez-vous donc me dire votre avis sur ce projet, après avoir lu ceci ^^ :
- Pour le moment l'AG n'aura qu'une entrée.
- L'AG fonctionnera autour d'un PIC (16F688)
- L'affichage se fera sur un écran lcd.
- La sonde de l'AG ne sera pour le moment utilisable sur +5V maximum uniquement.
Pourquoi un 16F688 ?
Parce que c'est le seul pic en ma possession qui me semble convenir le mieux.
Horloge interne de 8MHz (possibilité d'aller jusqu'à 20Mhz si horloge externe), 7ko pour le programme, 256 de RAM, 12 I/O, 2 timers (8bits et 16bits).
L'écran LCD :
Je ne sais abosulument pas quel écran lcd choisir. L'on devra pouvoir y afficher au pixel près.
Ses dimensions seront d'au moins 2 lignes (0V ou 5v), sur le plus de colone possibles.
A l'aveugle je dirais 10px en hauteur minimum (pour pouvoir visualiser un minimum la différence entre me 0v et le +5v, pouvoir gérer plusieurs affichages et afficher le pas de temps mais ceci est un "plus"),
en largeur toujours a l'aveugle 100px pour ne pas trop ratatiner/écraser le graphique.
Les pattes du PIC :
1 Input (min) pour la "sonde".
2 Input pour l'horloge externe.
2 Input pour la selection du pas de temps (+ et -) ou bien 1 seul input en analogique avec un potentiomètre pour régler le pas de temps.
7 ou 8 output MAX pour l'écran lcd. (8 sorties du pic pour le LCD ? est-ce suffisant?)
Si l'écran nécessite moins d'entrées alors les I/O restants seront réservés à d'autres sondes.
Principe (naïf) du programme :
Config :
- basée sur une horloge de 20Mhz
- TMR0 prévu pour déborder toutes les FOS4/4*255*prescaler = (1/20000000)*4*255*1 = 51 us
Récupération de l'état logique de la sonde :
- chaque débordement de TMR0 (51us)
Rafraichissement du LCD :
- toute les 40ms, soit 25 rafraichissment/secondes, donc tous les (40000us/51us=) 784 débordements de TMR0. 40ms pour traiter/calculer, formater puis envoyer/afficher les données sur le LCD ça me semble (à vu d'oeil toujours) suffisant.
Avec ce principe le pas maximum entre chaque mesure est de 51us. C'est moyen, mais c'est suffisant.
Si le LCD est de 100px de largeur, ça donnerait 51us*100 soit une période de signal minimum de 5,1ms. (En prennant 1px/pas de temps, soit le minimum poru ne pas perdre en précision).
Autre principe (simple idée, c'est peut-être une connerie):
Même config.
Récupération de l'état logique de la sonde :
La même, à ceci près :
Dès le débordement du TRM0 remmettre le TRM0 à 0, ce qui consomerait ((1/20000000)*4) 0,2us. Et qui impliquerait un décalage de 0,2 us a chaque débordement de TRM0.
Le signal sondé étant périodique le pas de temps minimum serait donc de 0,2us.
En gros une mesure toutes les (51 + 0,2)us.
Une fois la fin de la mesure sur la période totale du signal, on calcule le temp restant avant le début d'une nouvelle période. On consomme ce temps restant et on remet TRM0 à 0.
Traitement de données :
mx est une mesure, avec :
m0..mn, avec n = periode/0,2us (0,2us étant le pas temps espaçant 2 mesures)
Les données d'une période seront stockées dans un tableau de 100 cases, 1case=>1px.Cliquez pour afficher
Raffraichissement du LCD :
Le même on va dire. Sauf qu'il faudra prendre en compte les remise à zéro de TMR0.
Avec ce principe on devrait pouvoir avoir un pas de temps pour la mesure de 0,2us minimum. Avec le LCD de 100px => période de 20us minimum. C'est plutôt cool.
Mes questions :
- Selon vous l'un des deux principes de fonctionnement pourrait fonctionner ?
- Quel LCD me conseillerez vous?
- Quel type de condensateur faut-il adjoindre à une horloge externe de type quartz de 20Mhz ? 22pF suffirait-il ?
Pour finir, une importante précision :
je n'ai que de maigres connaissances au monde des PIC et de l'électronique, donc ne m'en voulez pas pour les boulettes que j'ai pu écrire.
Donner moi votre avis, vos réponses, remarques et précieux conseils.
Merci
-----