|
Les réalisations
J'ai réalisé un nouveau projet à base d'un pic
16F88 qui, je pense, intéressera plus d'un, enfin...
j'espère.
Il s'agit d'une sorte d'oscilloscope à double trace mais destiné à la mesure de signaux plus lents non observables
sur un oscilloscope classique.
Les tensions à mesurer doivent être des tensions continues (variation entre 0 et Vcc), pas question donc de vouloir
observer une sinusoïde avec des crêtes négatives, on ne verrait dans ce cas là que l'alternance positive.
On peut toutefois mesurer des signaux TTL à partir de 100 mS sur la base de temps de 1 Sec. Je prévois de développer
un oscilloscope prochainement mais je suis encore nulle part.
Comme sur un oscilloscope, il y a une base de temps qui s'étend de 1 Sec jusqu'à 100 sec/Division. L'écran du scope
possède 30 divisions ce qui permet des mesures de 30 sec jusqu'à 3000 sec.
Il y a également un combinateur pour chaque circuit d'entrée. Les tensions peuvent aller de 100 mV à 2 volts/division,
ce qui correspond à des mesures pouvant aller de 1 volt à 20 volts pour les 10 divisions du scope.
Pour changer la position du combinateur, il suffit de cliquer sur la valeur indiquée tout autour du combinateur.
Pour Time/Div par exemple, pour passer à 5 S/Div, cliquez simplement sur le chiffre 5 et le combinateur de positionnera
automatiquement. C'est pareil pour les combinateur Volts/Div.
Dans la partie Volt/Div, on remarquera 2 petits poussoirs gris. Ces poussoirs permettent d'afficher ou non la trace
du canal concerné. Le poussoir n'agit que sur le canal sélectionné.
Un réglage de la position horizontale permet de déplacer la trace, surtout utile lorsqu'on travaille en mode zoom
de même que le réglage de la position verticale pour chacun des canaux d'entrée.
Ce réglage de la position verticale peut être utile lorsqu'on a deux signaux presque identiques, on peut donc soit les
séparer soit les superposer.
On peut trouver à gauche de l'écran, 4 boutons poussoirs, "Trace", "Réticule", "Marqueur" et "Zoom".
Le bouton "Trace" permet d'augmenter l'épaisseur de la trace du scope, utile surtout lorsqu'on veut imprimer le graphique.
Le bouton "Réticule" permet d'avoir un réticule plus clair ou plus foncé. Le bouton "Zoom" multiplie par 10 la largeur du
tracé, c'est un peu comme si on divise par 10 la valeur de la base de temps.
J'ai gardé le bouton "Marquer" pour la fin. Suivant la position du poussoir, lorsqu'on clique sur l'écran du scope, on peut
placer des marqueurs, soit pour mesurer le temps entre 2 points soit pour mesurer la tension entre 2 crêtes.
La couleur du marqueur temps est rouge, pour les tensions la couleur est bleue. Au premier clic sur l'écran on positionne
le premier marqueur, au deuxième clic on positionne le deuxième marqueur. Au troisième clic on efface les marqueurs.
Les marqueurs s'efface également lorsqu'on change la position du poussoir, même si l'on a placé qu'un seul marqueur.
Sous l'écran du scope il y a un bouton "CLS", comme on l'aura deviné, il sert simplement à effacer la trace su scope, mais
l'écran s'efface de toute façon à chaque nouvelle acquisition.
A droite de l'écran, 4 boutons. "Communication : Ouvrir et Fermer". Ces 2 boutons ouvrent ou ferment la communication entre
le pic et le pc. La détection du port est automatique. Si le programme ne détecte pas l'appareil il le signale.
Enfin, les 2 boutons "Acquisition : Démarrer et Arrêter" permettent de démarrer ou d'arrêter la mesure. Normalement l'acquisition
s'arrêtera automatiquement en fin d'écran, le bouton "Arrêter" pouvant être utile lorsqu'on veut interrompre la mesure avant
la fin du cycle, par exemple lors d'une mesure relativement longue.
En haut de l'écran il y a une barre de menu avec à gauche "Fichier". Par ce menu il y a possibilité d'ouvrir un fichier,
d'enregistrer un fichier, d'enregistrer l'image du scope ou de l'imprimer. Il y a aussi un aperçu avant impression. Pour l'aperçu
ne pas craindre de maximiser la fenêtre, en effet la fenêtre s'ouvre en taille réduite.
On trouve enfin, dans ce même menu l'option "Quitter" pour quitter et fermer l'application.
Dans le programme d'installation j'ai inclus un fichier avec un signal 1,2 sec issu du timer d'un pic alimentant une led. Le signal
du haut représente la mesure effectuée en sortie du port du pic, le signal du bas représente le signal prélevé sur une led branchée
sur ce même port. Ce fichier est juste un exemple et se trouve dans le dossier où l'on a installer le programme..
Lorsqu'on enregistre un fichier, tous les paramètres des réglages sont sauvés également, base de temps, position des traces, Volts/div.
Juste une petite remarque concernant la réalisation du circuit imprimé... la ligne de masse est très importante, surtout pour les
mesures de signaux faibles, c'est pour cette raison que j'ai réalisé le circuit principal en double face avec des lignes de masse
relativement importantes.
Le programme du pic ne demande pas beaucoup d'explication. Le programme pc est prévu pour Windows XP, Vista et Windows 7, 32 ou 64 bits.
Je n'ai pas eu l'occasion de tester avec Windows 8.
J'ai du apporter une petite modification récente au programme du pc car il y avait une légère différence entre la version XP et Windows 7,
la position des marqueurs était différente d'une version à l'autre.
Autre détail concernant la réalisation: la communication est RS232 mais dans mon schéma j'ai opté pour un adaptateur USB/UART. J'ai trouvé
2 types d'adaptateur, soit un FTDI FT232RL soit un Prolific PL2303. Avant de pouvoir utiliser le Data Recorder il faut avoir installé
les drivers correspondant au type d'adaptateur sélectionné. Je peux fournir les drivers pour ceux qui auraient des difficultés à
se les procurer. On peut les trouver facilement sur internet mais il faut choisir le site officiel du fabricant, donc soit FTDI soit Prolific.
Pour l'adaptateur Prolific, il n'est pas compatible jusqu'à présent avec Windows 8. A la place d'un adaptateur USB/UART il est bien sûr
possible de faire la communication avec un circuit basé sur un MAX232 qui se connectera alors sur un port com normal. Je fournirai un schéma
pour ce type de branchement. Il ne faudra pas dans ce cas installer de driver.
Avant d'installer le programme pc il faut avoir au préalable avoir installé 2 autres programmes de Microsoft, le système fonctionnant
sous Net Framework 4. J'ai inclus les programmes également, il s'agit de Microsoft Net Framework Client Profile (Fichier: doNetFx40_Client_Setup)
et de Microsoft Visual Basic PowerPacks 10.0 (Fichier: VisualBasicPowerPacksSetup). Ces 2 fichiers proviennent du site officiel de Microsoft.
Pour ceux qui disposent de Visual Basic Express 2010 (ou supérieur) ils ne doivent pas installer ces 2 fichiers. Pour ceux qui, lors de mises à jour
de Windows, ont déjà installé Net FrameWork 4, ils ne doivent pas installer le premier fichier.
Voilà, un peu long et d'apparence compliquée mais tout le monde verra qu'à l'utilisation c'est beaucoup plus simple. Je joints une copie d'écran
avec quelques détails suplémentaires, un petit dessins vaut mieux que de longues explications.
Cordialement
Michel Leclère |
2ChDataRecorder |
J'ai réalisé un nouveau projet à base d'un pic
16F88 qui, je pense, intéressera plus d'un, enfin...
j'espère.
Il
s'agit d'un thermomètre-hygromètre. Le thermomètre
est assez banal,
construit autours d'un LM35DZ qui est plus un thermomètre
d'ambiance
pour appartement, sa gamme de mesure allant de 0° à
50°C. Je crois que
c'est suffisant pour l'intérieur. La partie hygromètre
m'a pris pas mal
de temps à mettre au point et peux paraître complexe
à première vue. La
construction est en fait assez simple, le réglage est par contre
plus
délicat mais pas insurmontable. L'électronique mis en
oeuvre m'a permis
de simplifier grandement le programme. Je mettrai un commentaire
sur le site pour les réglages si tu juges que le projets vaut la
peine
d'être mis en ligne.
Comme d'habitude je te joints les schémas, le programme et
quelques photos du projet terminé.
Cordialement
Michel Leclère
|
ThermHygr |
Je t'envois un projet qui
n'est pas une nouveauté en soi mais plutôt une
modification du vumètre déjà mis en ligne.
Il n'y a pas de changement
au niveau de l'ampli d'entrée, la modification n'étant
que du module d'affichage. J'ai voulu en effet montrer que l'on peut
parfaitement gérer les afficheurs graphiques avec Logipic. J'ai
choisi ici un modèle très courant, un 128x64 à
backlight bleu et caractère blancs mais d'autres modèles
peuvent aussi convenir, il faut juste s'assurer de la
compatibilité du brochage. La taille du circuit imprimé
peut paraître un peu exagérée par rapport au nombre
de composants mais j'ai voulu l'adapter à la taille de
l'afficheur lui même pour des raisons de facilité.
Pour le
µcontrôleur, j'ai gardé un 16F870 mais on peut
très bien utiliser le programme pour un 876 ou un 877. Pour
d'autres pic il faudra adapter en fonction de l'initialisation du pic
lui même.
Je te mets en pièce
jointe quelques photos ainsi que le programme.
Amicalement
Michel
|
VuMetre2.rar |
Mesure de la longueur d'un signal de
réception
issu de télécommande de modèle réduit

Le but de
ce petit programme est de mesurer la longueur d’un
signal de récepteur de télécommande de
modèle réduits et le traiter à la
convenance pour des applications diverses
tel que des sorties en tout ou rien pour commander un
relais de puissance, un moteur électrique, des éclairages
ou comme pour moi des
inflammateurs d’artifices.
Les
signaux issus des récepteurs actuels sont en principes
de même forme et de même longueur pour une même
position de l’organe de comme
attitré à la voie sur l’émetteur.
Dans une
période de 20 ms (50 Hz) ce signal
varie de 650 à 2400 µs selon la position
de l’organe de commande de la voie
de l’émetteur et de la programmation de la largeur du
signal dans l’émetteur si
celui-ci est doté de cette fonction, qui fera que
l’appareil branché sur cette
voie du récepteur variera de position pour un servo, de vitesse
pour variateur
ou régulateur ou d’état tout ou rien pour un train
rentrant, un éclairage etc.
Voyez
aussi le programme et réalisation très
intéressante de Michel LECLERC intitulé
‘Servo’ dans la rubrique ‘Vos
programmes’.
C’est cette dernière
fonctionnalité qui sera traitée dans cette application.
Il s’agit de mettre
l’une après l’autre des 4 sorties du port GP (PIC
12F675) à 1 pendant 0.25s par
l’action d’un front montant sur l’entrée GP2
configurée interruption.
Le
programme démarre par la mise à zéro des
différentes
variables et drapeau suivit de l’initialisation du port GPIO
permettant de
modifier le registre de ce port non seulement en sorties
mais aussi en entrées. Hors du commun, le
port GP du PIC 12F675 est par défaut constructeur
configuré en entrée
Analogique !
Merci
à Michel LECLERC de m’avoir aider à
éclaircir de cas particulier.
Puis la
valeur analogique de la longueur du signal traiter
en mode interruption, est comparée à une valeur pour
décider des fonctions
suivantes.
Le but
est de modifier les sorties GP0-1-3-4 pendant 0.25s à
chaque passage au-delà de la valeur de comparaison (25 pour ce
cas, >50% su
signal).
La mesure
de la longueur du signal est réalisée dans les
sous programme en interruption sur GP2 (GP2_INT). Lors du front montant
la
valeur ‘Mesuresignal’ est incrémentée toutes
les 50µs ce qui donnera une valeur
représentative de la longueur du signal et enfin une valeur de
comparaison
‘Valeursignal’. Pas compliqué n’est ce
pas!
Pour les développeurs voulant
plus de précision dans cette
mesure réduiront cette temporisation de 50µs au plus court
par des NOP(s) pour
aller à des valeurs > à 255 en optant pour un mot de
plus de 8 bits.
J’ai réaliser une
application sur ce thème voir la photo.
Le programme :
·
Commutateur 4 voies de
télécommande 12F675.prj
Je répondrai à toutes
questions relatives à ce sujet sur le
forum.
Cordialement.
L’Arsène.
|
Télécommande.zip |
Bonjour,
Il s'agit d'un fréquence mètre à pic
16F870 dont la gamme de mesure va de 1HZ jusqu'à 1,1GHz avec une
sensibilité d'entré de 10mV sur toute les gammes. Il y a
5 modes de fonctionnement que l'on peut sélectionner par
pression sur un bouton poussoir, la sélection étant
séquentielle. Un premier programme effectue l'affichage sur un
écran LCD mais il y aura possibilité de connecter le
fréquence mètre à un PC, la connectique est
prévue sur le schéma mais le programme est encore en
cours de développement, il faudra donc patienter un peu pour
cette possibilité. Il est parfaitement adapté au Grid Dip.
Ci- joint les schémas, circuits imprimés et le
premier programme ainsi que quelques photos. Les schémas des
différents étages sont séparés pour une
meilleure lisibilité.
Certains circuits imprimés sont à double face,
ce qui rend sans doute le projet moins facile à réaliser
pour certains mais j'ai prévu un tracé de piste
suffisamment large pour le rendre plus accessible.
Amicalement
Michel
|
Frequ_LCD.zip |
Grid Dip

Bonjour,
Après une longue absence voici un nouveau projet... un
Grid Dip, ou plutôt un Dip Mètre puisqu'il n'y a plus de
"Grid" dans le montage.. un peu banal mais la
particularité ici c'est que l'affichage s'effectue par pic sur
un lcd 2x16 caractères.
Juste avant de commencer... ce montage, d'apparence simple,
exige une certaine expérience en électronique et une
extrême propreté lors de la réalisation des
circuits imprimés, il s'agit quand même de HF. Les
liaisons doivent être courtes, il ne faudrait pas qu'une piste
fasse antenne et ne vienne à polluer les récepteurs radio
du voisinage. Une fois le circuit imprimé de l'oscillateur
terminé, il est préférable de recouvrir le
côté piste avec un verni HF. Ne faire les tests qu'un fois
le verni absolument sec.(Certains vernis acryliques peuvent convenir
aussi mais vaut mieux faire des essais).
J'ai du faire beaucoup de tests, ce qui explique un peu mon
absence ces derniers temps mais j'ai eu du mal à arriver
à ce que j'attendais. Après avoir démarré
avec un oscillateur à FET, puis à Dual Gate MOS-FET afin
d'obtenir un oscillateur qui maintient son oscillation sur une
très large plage de niveau, je suis enfin arrivé à
ce que j'attendais. Ma dernière version fonctionne avec un
oscillateur de type Colpitts construit autour d'un transistor NPN
prévu pour des fréquences pouvant aller jusque 1GHz. Avec
les éléments du montages, j'ai pu le tester
jusqu'à 200MHz. C'est un montage classique avec quelques filtres
en plus afin de réduire la distorsion.
Un affichage LCD 2x16 caractères s'effectue au travers
d'un pic 16F88 qui fonctionne avec l'oscillateur interne à la
fréquence de 8 MHz. La première ligne affiche le niveau
de l'oscillateur HF ( entre 0 et 255) et la 2ème ligne est un
barre graphe qui sert à déterminer le Dip. Ce barre
graphe est très sensible (20mV par barre) ce qui permet de bien
visualiser lorsque l'oscillateur transmet sont énergie.
L'indicateur de la première ligne sert en fait à
faciliter la mise à niveau du barre graphe qui devrait
être compris entre 16 et 20. Il faut donc
régulièrement ajuster le niveau de l'oscillateur.
Pour ce qui est de la fabrication des bobines, rien de
très compliqué, il suffit d'être très
soigneux et de ne pas vouloir faire trop de spires en une fois,
surtout pour les bobines comportant beaucoup de spires.
Sur une des photos on peut voir 9 bobines
réalisées, elles vont de 1,3 MHz jusqu'à 250 MHz.
Pour les couleurs c'est pas difficiles, je suis allé dans une
grande surface, au rayon papeterie et j'ai acheter des magicolor pour
enfants. J'ai choisi un étuis avec toute une gamme de couleurs
et d'un diamètre de 12mm.
Une fois le manchon récupéré et
coupé à mesure (j'ai choisi 70 mm de longueur), il suffit
de bobiner le nombre de spires voulu et de recouvrir la bobine
terminée par de la gaine thermo rétractable transparente,
une fiche CINCH étant chassée à l'intérieur
d'une extrémité. Les bobines sont effectuées
à l'extérieur du mandrin et les fils passent par
l'intérieur afin de les souder ensuite sur la fiche CINCH.
(Petite astuce pour la gaine thermo rétractable: les
manchons en plastique étant très sensibles à la
chaleur, évitez de chauffer trop, ce qui déformerait le
mandrin de la bobine. Une fois ma bobine terminée, j'enfile la
gaine autours du mandrin et je plonge le tout dans l'eau bouillante
pendant 5 à 10 min. Quand la gaine est suffisamment serrante je
passe au four à 100° pendant un bon 1/4 d'heure puis
je laisse refroidir au four. Ne pas chauffer plus fort sinon vous
retrouverez une pâte difforme qui ne ressemblera plus à
une bobine. Le résultat final est absolument impeccable).
.
Je joints, comme d'habitude, les schémas, le
programme et quelques photos, c'est toujours plus parlant de voir
le résultat terminé. Je n'ai pas prévu de cadran
avec les fréquences mais je compte développer
prochainement un fréquencemètre, à pic of course,
qui affichera directement la fréquence de l'oscillateur HF. J'ai
quelques idées mais il faudra que je fasse monter ce
fréquencemètre à au moins 250 MHz. Il faudra donc
un peu de patience, je n'ai pas encore fait de maquette.
Pour la fabrication des
bobines, je donne ici les valeurs pour les 9 bobines que j'ai
réalisées chez moi. J'ai été surpris de
voir que les valeurs mesurées étaient très proches
des valeurs calculées.
Bobine #1 : 200 spires -
fil cuivre 0,2 mm 1,37 - 2,96 MHz
#2 :
100
0,3
2,45 - 5,31
#3 :
42
0,3
4,13 - 8,94
#4 :
20
0,4
7,40 - 16,00
#5 :
10,5 0,6
13,21 - 28,58
#6 :
5
0,6
23,02 - 49,80
#7 :
2,5 0,6 39,89
- 86,31
#8 :
1,5 0,6 62,17
- 134,50
#9 :
1
1,0
119,20 - 257,89
L'aboutissement de ce projet étant aussi de lui
adjoindre un fréquencemètre. Et puis, qui sait, cet
appareil un peu rétro quant à l'idée, peut sans
doute éveiller un petit intérêt auprès de
certains.
à bientôt
Michel
|
DipMeter.prj
Photos
Display_V32_Lay.JPG
Display_V32_Sch.JPG
Osc_V32_Lay.JPG
Osc_V32_Sch.JPG |
Horloge DCF


L'Arsène
|
Horloge_DCF.zip |
Horloge

Bonjour
Après
l'exemple de l'utilisation du Timer1 posté
récemment, j'ai pensé qu'une application plus
concrète serait peut-être la bienvenue. J'ai donc
très vite pensé à l'étude d'une horloge.
Puis je me suis dit que ça ne serait pas trop mal d'y ajouter le
jour, le mois et l'année. Le tout fonctionne avec 2
oscillateurs, donc 2 quartz distincts, et avec le Timer1 en mode
asynchrone.
Voici
donc le résultat final de
cette étude. J'ai essayé d'y introduire quelques routines
qui faisaient l'objet de discutions récentes sur le forum, comme
par exemple l'affichage selon le format "00:00:00". J'ai
également ajouté une routine d'inversion de bits d'une
variable ainsi que l'inversion simultanée de plusieurs bits d'un
port. Il y a aussi quelques données en Flash.
Le
programme est relativement complexe, je ne peux que recommander,
à ceux qui seraient tenté d'y apporter quelques
modifications, de d'abord tester le programme tel quel.
J'ai
ajouté un fichier explicatif, au format pdf, pour ce qui
concerne les réglages, mais rien de vraiment très
compliqué.
Rien
de spécial à dire de plus, juste que, mais je le dis
dans le fichier explicatif, la partie calendrier tient compte des jours
du mois et également des années bissextiles. Il y a
également la possibilité de passer à l'heure
d'été ou d'hiver par simple pression sur un bouton
poussoir. J'ai choisis une led bicolore Rouge/Bleu pour le clignotement
des secondes. Elle clignote en rouge en mode "été" et en
bleu en mode "hiver"... juste pour me faire plaisir.
Je
n'ai pas encore de circuit imprimé à proposer, juste
un cliché de la maquette. (Sur ce cliché j'utilise un
oscillateur 20MHz mais pour ma 2è maquette je l'ai
remplacé par un quartz standard de même fréquence).
Juste
pour ceux qui ne dispose pas du fichier pic du 16F870, il est
disponible dans la rubrique "téléchargement/fichiers pic/
mise à jours des fichiers pic".
à bientôt
Michel
|
Clk_870b.JPG
Clk_TMR1.prj
ClkCal_Sch.jpg
ClockCal.pdf |
Encore un petit programme
lié à Logipic...
Il existe sur le site un programme PicTimerCalc que je trouve
très pratique mais malheureusement assez incomplet. Je te
propose en pièce jointe un nouveau programme (setup.exe) avec
quelques ajoutes comme TMR0 et TMR1 ainsi que la possibilité
d'avoir un plus large éventail de quartz comme par exemple un
32,768 KHz. Il existe aussi un registre TRM2 mais je l'utilise pas, le
paramétrage de PR2 me paraissant suffisant. (Ceci est un avis
tout à fait personnel).
Rien de particulier à dire concernant le programme,
à part peut être qu'il existe 2 champs dans lesquels on
peut introduire manuellement des données. Ces champs sont
"Fréquence du quartz" et le champs grisé TMR1 qui se
trouve dans l'onglet "Timer1"
Pour la fréquence du quartz il faut introduire des
valeurs numériques uniquement, valeur en MHz. Pour 4MHz
on introduit 4, c'est logique. Si l'on veut un quartz avec des
décimales, comme un 4.096MHz, il est permis d'utiliser le
"point" comme séparateur, on introduit donc "4.096". La valeur
est fixée par défaut sur 20MHz quand on démarre le
programme.
Pour le TRM1, on peut introduire manuellement toutes valeurs
comprises entre 0 et 65535. Si l'on essaye d'introduire une valeur plus
grande, celle ci sera ramenée automatiquement à 65535.
Il ne faut pas essayer de placer des valeurs dans les
autres champs, ceux de couleur bleue. Utiliser pour cela les curseurs.
ceux ci se déplacent à droite ou à gauche.
On peut également, une fois le curseur
sélectionné ( on le sélectionne en cliquant
dessus), faire les déplacements à l'aide du clavier,
flèche gauche ou droite pour les petits pas et PageUp et
PageDown pour les grands pas. Les grands pas peuvent également
être effectués en cliquant devant ou derrière le
curseur de la glissière. On se rendra compte que cela est
très utile quand on procède au réglage du TMR1 par
exemple. Le grand pas varie d'un curseur à l'autre en fonction
de sa valeur maximum, il sera de 10 pour TRM0 et de 255 pour TRM1.
Dans la partie
"Résultats", les fréquences s'affichent soit en Hz soit
en KHz, les durée en S, mS ou µS.
On peut remarquer aussi dans la partie Timer1 qu'il y a
possibilité de travailler avec un quartz dont la valeur par
défaut est fixé à 32.768KHz. Ce choix n'est
possible que pour le Timer1, il est inactif pour le Timer0 et le
Timer2. Je te joints également un petit programme d'exemple pour
utiliser un pic qui travaille avec 2 quartz et avec le Timer1. C'est
très pratique pour avoir des durées de 1 secondes, comme
pour les horloges entre autre.
Je mets aussi en pièce jointe 2 schémas pour le
fonctionnement du programme d'exemple. Un des schémas fonctionne
avec 2 quartz standards, l'autre est un peu particulier, il fonctionne
avec un oscillateur à quartz de 20MHz mais au format DIL 14
pin... juste pour ceux qui voudraient tester ce type d'oscillateur
(voir photo QuOs20mhz). Le signal de sortie est beaucoup plus propre et
plus stable avec ce type de composant. Le 2ème quartz est un
quartz miniature, type quartz de montre.
Petite remarque concernant le
programme d'exemple:
Tout d'abord ,j'ai mis l'init
du timer dans une routine à part, ceci juste pour faciliter la
compréhension.
On pourra s'étonner aussi de l'instruction qui met 0 1
le bit TMR1IE du registre PIE1. Le pic 16F628A doit avoir cette
instruction sinon le timer ne se met pas en route alors qu'un 16F877A
se passe très bien de cette instruction. J'ai donc
décidé de conserver cette instruction quel que soit le
pic utilisé, ceci uniquement pour ne pas avoir des questions
à se poser en passant d'un pic à l'autre.
Et enfin, pour terminer, les valeurs des TMR sont à
placer DANS le cycle d'interruption, et ceci en tout début du
cycle. En effet, ces valeurs sont remise à 0 quand il y a un
débordement.
J'espère que tout ceci pourra encore intéresser
quelques acharnés des pic, je suis bien sûr ouvert
à toutes remarques ou suggestions ou à éclaircir
certains points qui pourraient paraître obscurs.
Cordialement
Michel
|
Pic Timer
Claculator.zip
QuOs20mhz.jpg
Slider.jpg
TMR1.prj
TMR1_Osc.jpg
TMR1_Xtal.jpg
ViewProg.jpg
|
Bonjour Idmax
On m'a souvent posé la question de pouvoir afficher
l'heure d'une horloge, ou chrono ou autre timer sous forme HH:MM:SS en
conservant les 0 non significatifs, par exemple un chrono devrait
afficher 00:00:00 au démarrage.
Les durées des heures, minutes et secondes
s'effectuant pas affichage de variables, les 0 d'entête sont
supprimés de même que le signe. J'avais
développé il y a fort longtemps déjà une
petite routine qui me permettait d'afficher l'heure au format complet,
pensant être le seul à vénérer cette forme.
La question vient d'être reposée récemment sur le
forum et ça m'a rassuré de voir que d'autres
développeurs adhèrent également à cette
forme d'affichage.
J'ai développé un petit programme d'exemple,
court et simple pour permettre aux habitués du forum de pouvoir
suivre les étapes facilement sans devoir faire une analyse dans
un programme trop complexe.
Le programme est simplement un compteur au format HH:MM:SS
mais il ne compte que les secondes, il s'agit plus d'un exemple que
d'une application complète.
La méthode est la
suivante:
J'ai attribué une variable V_Sec pour les secondes.
Comme tous le monde l'aura deviné, cette variable est
incrémentée toutes les... secondes avec remise à 0
après 59.
Pour afficher cette variable il suffit de la diviser par 10
pour isoler les dizaines et je récupère les unités
par la variable système V_tmp. La valeur des dizaines est
stockée dans une variable V_Tens et celle des unités est
stockée dans V_Units.
J'appelle ensuite une routine qui elle même fait appel
à LCDchar qui est une routine système. Cette routine
affiche une variable sous forme Ascii, il faut donc ajouter 48 à
V_Tens et V_Units pour pouvoir obtenir un affichage correct.
Par exemple je veux
afficher 52:
1/ J'isole les
dizaines -> 52/10 = 5
2/ Je place 5 dans V_Tens
3/ Le reste de la division
se trouve dans V_Tmp, soit 2
4/ Je place 2 dans V_Units
5/ Appel de la routine
d'affichage
Cette routine ajoute 48
aux 2 variables afin d'obtenir le code Ascii (Le code Ascii
48 à 57 correspondent aux chiffres 0 à 9)
L'avantage de cette méthode est de pouvoir afficher le
0 pour toutes les valeurs inférieure à 10, donc 5 sera
affiché 05. De plus cela simplifie le calcul de la position sur
l'afficheur puisque c'est la position réelle.
L'exemple est
développé avec un 16F877A à 20MHz
Pas de remarque
particulière pour le montage, c'est un montage classique avec un
afficheur LCD 2x20 caractères.
Data en D4...D7
E
en E1
RS en E0
Ne pas oublier un pull up
de 4K7 sur la broche 1 (MCLR)
Je te transmettrai prochainement un programme complet d'un
timer qui possède un affichage d'après l'exemple
ci-dessus. Il sera basé sur un 16F876 à 4MHz avec bien
sûr le schéma détaillé ainsi que le circuit
imprimé.
je pense que cela
intéressera quelques développeurs.
|
LCDChar.prj |
Bonjour
Il semble quand même
qu'il y ai pas mal d'intérêt sur le forum pour la gestion
des écrans graphiques.
Je me permets à nouveau
de t'envoyer un petit projet pour ouvrir la voie à ceux
que cela intéresseraient, mon choix c'est arrêté
sur un 128x64.
Comme pour la gestion Eeprom,
il ne s'agit pas ici d'un projet "clé sur porte" mais
plutôt d'un exemple pour pouvoir comprendre le fonctionnement des
signaux à mettre en oeuvre pour pouvoir piloter un GLCD.
L'exemple que j'ai choisi de proposer est simplement
l'affichage de caractères sur les deux parties de
l'écran. La première partie est affichée en
caractères vidéo normale et la deuxième partie est
en vidéo inverse. Cet exemple sert aussi à montrer
comment créer un générateur de caractères
car ce type d'écran n'en possède malheureusement pas.
J'ai logé le générateur en Flash. J'ai choisi un
type de caractères très simple, 5 x 8 bits, car
utilisant peu de place en mémoire. On peut bien sûr
modifier ce générateur pour obtenir des caractères
plus jolis et plus élaborés, voire même
créer un jeux de Fonts mais j'ai voulu faire au plus simple pour
l'exemple.
Je veux juste quand même préciser pour les
habitués du forum que ce programme ne fait rien d'autre que
d'afficher des caractères, point final. Au risque de me
répéter, c'est juste pour initier ceux qui voudraient se
lancer dans la gestion de ce type d'écran que je propose
une approche possible sous Logipic. Je penserai peut-être
prochainement à un autre programme d'exemple pour afficher des
images sur le même type d'écran.
Je joints un schéma ainsi qu'une petite note
explicative sous format pdf, je pense que tout le monde doit
posséder chez lui Adobe Acrobat Reader. J'ai essayer de faire
cette note la plus courte et la plus claire possible, ceci juste pour
ne pas assommer le lecteur éventuel avec des données trop
techniques. Je suis bien sûr à la disposition de tous pour
des renseignements complémentaires.
Concernant le schéma, j'ai placé la broche RST
au +5V à travers une résistance de 4K7. On peut
éventuellement connecter cette broche sur la broche MCLR du pic
pour provoquer un reset au démarrage ou encore prévoir un
reset par soft en la connectant sur un des ports. On peut
également prévoir un bouton reset manuel, je ne l'ai pas
prévu sur le schéma.
Aussi, pour l'alimentation du
backlight il y a une résistance 4E7, il s'agit de 4,7 ohms.
Ceux qui veulent utiliser un autre pic c'est possible mais il
faudra alors réécrire le programme... en pensant à
modifier la routine Init en fonction du pic sélectionné.
Et pour terminer, pour ceux qui
trouvent l'affichage un peu rapide... on peut prévoir l'ajout
d'une ligne de temporisation dans la boucle d'affichage des
caractères. Ceci permettrait de pouvoir suivre la façon
dont s'affichent les octets. A voir...
|
128x64.pdf
GLCD.jpg
PICT0006.JPG
TestTxt2.prj |
Le programme démarre par l'écriture de 16
emplacements mémoire (00 à 1F) avec des valeurs comprise
entre 00 et 1F également. J'ai juste fait une
incrémentation de l'adresse et de la donnée. J'ai
testé également en modifiant les emplacements
mémoires et j'accède bien chaque fois à l'endroit
voulu, on peut donc lire ou écrire à n'importe quel
emplacement et cela de façon tout à fait
aléatoire, même si plusieurs Eeprom sont présentes
dans le montage.
Ensuite commence la lecture en boucle des données
écrites, c'est une boucle sans fin.
Pour le montage test, un pic
16F877A, 8 leds montées sur le port B0...B7, quartz de 20MHz et
une mémoire 24C32 en montage classique, A0..A2 à la masse
de même que WP. SDA et SCL de la mémoire sur SDA et SDL du
pic. J'ai testé également en changeant A0...A2 vers le
+Vcc (il faut alors changer une variable dans le programme).
Le flux à
été fixé à 500KHz. Pour maintenir ce
débit il y a aussi une variable à changer dans le
programme dans le cas où l'on veut utiliser un autre quartz. Le
calculs des emplacements mémoires se fait un peu comme pour la
mémoire Flash, c.à.d. avec une adresse relative, la
routine se chargeant de pointer vers l'adresse réelle. L'Eeprom
se remet à 0 quand on provoque un reset sur la broche MCLR
Eep_Address Adresse
réelle d'écriture (1010 000 0)
Eep_Data
Variable de transfert de données entre le pic et la
mémoire (adressage et donnée en mode série)
DatOut
Data Pic vers Eeprom
DatIn
Data Eeprom vers Pic
Pollcnt Variable
de boucle pour attente fin d'écriture
Addr_High Adresse
haute de l'emplacement à atteindre
Addr_Low
Adresse basse
"
"
I2C_Clock
Sert à déterminer le débit, prévu dans le
programme pour un quartz de 20MHz.
Il faut changer la valeur quand on change de quartz.
Eep_Data et Pollcnt sont des
variables utilisées par le système et ne doit pas
être paramétrées.
Il n'y a que 3 appels de
routine à faire, Init_I2C, ByteRead et Byte_Write. Il faut
toujours commencer le programme par Init_I2C bien sûr sinon le
reste ne fonctionne pas. Il va de soi que les variables d'adresses et
de données doivent être cohérentes et
paramétrées correctement.
Juste pour le plaisir,
je mets une photos d'un vidage Eeprom sur un écran
graphique 240x128 avec la nouvelle routine I2C.
L'Eeprom est une 24C32 quasi
complète, je suis plus que content de cette routine, ça
faisait longtemps que j'y travaillais mais le déclic est venu
suite à la discussion sur le forum.
Je ne cache pas que ça a été
plutôt ardu à mettre en œuvre
M.Leclère
|
MSSP_V2.prj
I2C_V2.rtn
I2C_Sch.jpg
Demo240x128.JPG |
J'ai encore le plaisir de te soumettre un petit projet, sans
prétention aucune, mais il semble de ce sujet intéresse
certains développeurs. Il s'agit de la commande de servomoteurs.
J'ai réalisé 2 projets, un à base de
NE555 ( en fait j'ai utilisé un TLC555) entièrement
proportionnel, l' autre à base d'un pic 16F628A dont
les commandes sont réalisées par boutons poussoirs. Deux
poussoirs servent à la rotation droite ou gauche, 2 autres pour
adapter la vitesse de rotation et un poussoir pour le retour d'urgence
au neutre.
Je te joints à la présente les schémas
ainsi que quelques diagrammes des signaux. Je n'ai pas encore
réalisé les circuits imprimés, le projets
étant encore en cours de développement plus pointu mais
je tenais déjà à en faire profiter quelques
amateurs de ce genre de technique. J'ai prévu 2 types
d'affichage, soit à une LED 7 segments, soit à afficheur
LCD alphanumérique, 1ligne/16 caractères. Le programme
est commun aux 2 possibilités d'affichage, un pontage sur le
Port B5, utilisé en entrée, s'occupant de faire le
branchement dans le programme.
Pour la partie technique, j'utilise le timer2 et je provoque
une interruption toutes les 20mS. Pendant cette interruption j'adapte
la largueur des impulsions entre 650µS et 2420µS pour
amener le servo dans la position voulue. Le neutre est fixé
à 1520µS par le constructeur. Les
poussoirs accessible à chaque retour d'interruption.
La séquence est suffisamment rapide pour que l'accès aux
boutons poussoirs soit quasi permanente. Le quartz utilisé
est de 4MHz ce qui permet parfaitement d'adapter le timing requis
pour le fonctionnement des servos. Les signaux permettent une rotation
totale de 180°. Il faut savoir cependant que certains servos
tournent dans un sens alors que d'autres tournent dans le sens
contraire. J'ai donc prévu 2 pontages à positionner en
fonction du sens désiré. Certains servos également
ont une rotation légèrement inférieure à
180°, certains tiny servo par exemple.
Bien à toi, j'espère que tu pourras mettre en
ligne à l'occasion
M.Leclère |
Servo.zip
|
Voici un nouveau projet d'un Vumètre basé sur
un pic 16F870 et un afficheur alphanumérique.
Vous trouverez en pièces jointes les
schémas, les circuits imprimés, le programme
développé comme il se doit sous Logipic ainsi que
quelques photos.
Pour la calibration, j'ai opté pour un affichage en
dBm, weighting C. Pour cela il suffit d'injecter un signal sinus de
1KHz sur l'entrée ligne avec une amplitude de 2,18Vpp, soit
0,78Vrms. Régler les résistances ajustables à
l'entrée pour afficher les 20 caractères sur l'afficheur.
Ceux qui désirent un affichage en dBV il suffit d'injecter un
signal de 2,83 Vpp, soit 1Vrms. Dans le montage j'ai choisi un circuit
simple, le LM386. Ce choix a été dicté par le fait
de pouvoir disposer d'une écoute au casque. Lors des essais,
j'ai testé également le K386 qui est environ 3x moins
cher et qui donne exactement les mêmes résultats.
Juste bon à savoir...
j'utilise 2 entrées A/N avec justification à gauche et je
laisse tomber les 2 bits de poids faible, ce qui diminue un peu la
sensibilité du système mais permet malgré tout une
bonne dynamique. La gamme de mesure commence vers -15 dB en
début d'échelle, le 0 dB étant la fin
d'échelle. J'ai prévu 2 led's qui s'allument dès
qu'il y a dépassement. J'ai également prévu 2
zener, juste par sécurité, pour ceux qui appliqueraient
une tension un peu excessive à l'entrée. Egalement,
le potentiomètre de volume pour la sortie casque n'a aucune
influence sur l'affichage su Vumètre.
Voilà, je pense avoir
été assez complet, ceux qui désirent plus de
détails techniques peuvent évidement le faire via le
forum.
J'espère que ce
petit montage pourra plaire à certains.
Michel Leclere
|
Vu_20c.prj
Ampli_Lay.JPG
Ampli_Sch.JPG
Control_Lay.JPG
Control_Sch.JPG
Vu20c_0dBm.JPG
VuM_02b.JPG
VuM_Amp08.JPG
VuM_Amp09.JPG
VuM_Control.JPG
VuM_Display.JPG
VuM_E20c.JPG |
Bonjour
Je
vous transmets un projet d'alarme d'habitation, complet,
terminé et testé et même monté et
opérationnel.
Je
vous mets en pièces jointes, le schéma
électronique, le circuit imprimé ainsi que le programme
en prj. Je joints également le fichier pic du 16F876 absolument
nécessaire au bon fonctionnement du programme. En effet, les
codes modifiables sont écrite en Eprom et sans ce fichier
corrigé il ne sera pas possible d'effectuer cette tâche.
Je peux éventuellement vous transmettre le layout du circuit
imprimé à l'échelle 1/1. Vous trouverez aussi 3
photos du projet.
Juste
à savoir, mais c'est indiqué en entrée quand
on ouvre le fichier dans logipic, c'est que le code de départ
est 00000 (code sur 5 chiffres). On ne peut pas le modifier quand
l'alarme est active. On peut modifier ce code quand l'alarme est
inactive et le code de modification est ###0*
Au
démarrage du programme du pic, il détecte si l'Eprom
est vierge (rempli de FF). Si oui, il écrit le code de
première mise en service dans l'Eprom. De même,
écriture en Eprom quand on modifie le code, ce qui permet en cas
de coupure de courant de toujours avoir le même code. Je n'ai pas
repris sur le schéma mais j'ai monté mon système
avec alimentation par batterie en charge continue, cela permet à
l'alarme de rester opérationnelle même si le courant
venait à être interrompu.
En
cas de détection d'intrusion, une sirène, ou tout
autre indicateur, peut être mis en route à l'aide d'un
relais. Pour interrompre la détection d'intrusion, il suffit de
réintroduire le bon code.
Ce
même montage peut éventuellement servir d'ouvre porte
électronique, le relais pouvant actionner une gâche
électrique, la partie alarme pouvant être inhibée
en laissant le détecteur d'intrusion en position fermée.
Voilà,
j'espère que ce projet pourra intéresser quelques
habitués du forum.
Michel Leclere
|
16F876.pic
AlarmV14.prj
Alarm_Lay.JPG
Alarm_Sch.JPG
ML16F876.jpg |
Bonjour,
Je suis professeur en terminale SI (mais pas informaticien) et je viens
de découvrir Logipic.
Bravo pour le travail : je pense m'en servir l'année prochaine
avec mes élèves car il est vraiment simple et très
pédagogique ( Organigramme).
Je l'associerai au logiciel Proteus (ISIS) pour la simulation.
Pour m'entrainer j'ai réalisé l'automatisation d'un
sécateur électrique
(PELLENC) dont voici le cahier des charges :
- Positionnement de la lame du sécateur (sens alimentation
moteur) en
fonction de la position de la gâchette (potentiomètre RV1)
+ : info sur LCD
- Détection de la surchauffe du pont en H (LM335): info sur LCD
- Contrôle de la charge de la batterie : info sur LCD
- Signalisation par LED clignotante que le circuit est sous-tension.
Je joint les fichiers Logipic, Proteus + une image du schéma.
Le programme est certainement très "discutable" mais il
fonctionne...
S'il peut servir à quelqu'un ?
Encore merci.
François
|
Fichier proteus : secateur.dsn
Schéma :
secateur.jpg
projet LogiPic : secateur.prj |
Interface infrarouge pour piloter
à distance un pré-ampli audio
(par Bidul)
|
Liens |
Robotprog
est un véhicule muni de 2 moto réducteurs capable de se
déplacer dans toutes les directions. Il est piloté par un
module programmable auquel on peut adjoindre différents capteurs
et indicateurs afin de réagir et de communiquer avec
l'extérieur.
(par Thierry)
|
Realisation_Robotprog.pdf
Config_logiciels.pdf
Typons, schéma et fichier LogiPic
: Robotprog.zip
RobotBoot.zip |
PROJET : A7S
"Affichage
7 segments" ou A7S est un projet d'afficheur programmable qui
permet d'écrire un organigramme puis de programmer une
cible (un affichage 7 segments).
(par Thierry)
|
Presentation_A7S.pdf
Utilisation_logipicV2.pdf
Config_logicielsV2.pdf
Realisation_A7S.pdf
Decod2A7S.pdf |
|