Horloges / Thermomètres
Gestion d'horloges et thermomètres avec les PICBASIC
NUMANA2005 - 08/09/2005 - Mr Champleboux E.
"NUMANA 2005": Quand la technologie... rejoint l'art !
"NUMANA2005" est une horloge mélangeant les technologies analogiques et numériques. Au bout de chaque aiguille des minutes et des heures sont disposés des satellites d'affichage sept segments de grande taille composés de LEDs très haute luminosité. Ces satellites ( un rouge, un vert) suivent l'indication analogique des aiguilles mais restent toujours horizontaux grâce à un système de chaînes. Un troisième satellite (bleu), fixe indique les secondes.
Toute la mécanique est réalisée entièrement en pièces MECCANO™. La gestion de l'horloge est confiée à un PIC basic P3B, associé à une horloge temps réel DS1302 et à un oscillateur 32Khz thermostaté du même constructeur afin d'obtenir une très grande précision.
Les satellites sont reliés à l'ensemble mécanique uniquement par 2 tiges isolées qui assurent à la fois l'alimentation et la transmission sérielle des données.
Le codage sériel (4 bits) a été réalisé de façon originale par l'utilisation du très ancien couple codeur, décodeur: MC145026,145027 avec des adresses différentes pour chaque digit. Le programme récupère les données binaires de chaque digit et les transmet séquentiellement. Le PIC basic pilote aussi un motoréducteur qui effectue un tour toutes les minutes.
L'alimentation est sauvegardée par batterie en cas de coupure secteur. Cette horloge est très visuelle et aussi extrêmement originale.
Horloge originale - 12/06/2004 - Mr Champleboux E.
Conçue sur la base d'un "PICBASIC-3B", d'un module RTC-Board et d'un afficheur LCD à commande série Comfile Technology, cette étonnante horloge (dont les aiguilles sont matérialisées par 2 billes d'acier qui se déplacent toutes seules sur le cadran) allie ingéniosité de conception, raffinement et élégance. Un vrai travail de passionné...
Gestion d'un circuit DS1302 via le bus I2C™ - 23/02/2002 - Mr Bernard Bourgeois
Ce programme permet de lire et d'écrire dans un circuit intégré horloge temps réel DS1302 suite à une interruption générée sur une des entrées du PICBASIC-2H. Téléchargeables sous les fichiers "PROJET.zip" et "EXEMPLES.BAS".
Gestion d'un module "RTC-Board" - Lextronic
L'application qui suit montre comment piloter un module "RTC-Board" (à base de circuit DS1302) à partir d'un module PICBASIC. Ce petit module dispose d'une capacité de sauvegarde qui vous permettra de disposer d'une mémorisation d'environ 1000 heures en cas de coupure d'alimentation.
La platine dispose de 7 adresses mémoires dans lesquelles vous pourrez stocker les données relatives aux heures, minutes, secondes, mois , jour, année... (La valeur de ces adresses diffère selon que vous veniez "lire" ou "écrire" dans le composant).
Le programme ci-dessous permet d'initialiser l'horloge avec une valeur arbitraire (ici 15 h 33 : 01) et ensuite d'afficher en permanence l'heure issue du module "DS1302".
DIM SEC AS BYTE
DIM MIN AS BYTE
DIM HEU AS BYTE
SET PICBUS HIGH
LCDINIT
CSROFF
OUT 10,1
SHIFTOUT 8,9,0,&H8E,8
SHIFTOUT 8,9,0,0,8
OUT 10,0
OUT 10,1
SHIFTOUT 8,9,0,&H80,8
SHIFTOUT 8,9,0,&H15,8
OUT 10,0
OUT 10,1
SHIFTOUT 8,9,0,&H82,8
SHIFTOUT 8,9,0,&H33,8
OUT 10,0
OUT 10,1
SHIFTOUT 8,9,0,&H84,8
SHIFTOUT 8,9,0,&H01,8
OUT 10,0
10 OUT 10,1
SHIFTOUT 8,9,0,&H81,8
SEC=SHIFTIN(8,9,2,8)
SEC=(SEC<<1) or SEC.7
OUT 10,0
OUT 10,1
SHIFTOUT 8,9,0,&H83,8
MIN=SHIFTIN(8,9,2,8)
MIN=(MIN<<1) or MIN.7
OUT 10,0
OUT 10,1
SHIFTOUT 8,9,0,&H85,8
HEU=SHIFTIN(8,9,2,8)
HEU=(HEU<<1) or (HEU.7)
OUT 10,0
LOCATE 0,0
PRINT HEX(HEU,2,0),":",HEX(MIN,2,0),":",HEX(SEC,2,0)
GOTO 10
Utilisez des DS1820 avec les PICBASIC - 28/02/2006 - Mr Jacobée JP.
Cette application montre comment utiliser des capteurs 1-Wire™ de type DS18B20 sur un PICBASIC au moyen d'un circuit d'interface spécialisé I2C™ <-> 8 Ports 1-Wire™ de référence "DS2482-800". Schéma (Temp2.jpg) et l'explication (Temp1820.txt) disponible dans le fichier (.zip) de nos notes d'applications.
Gestion d'un thermostat via un DS1620 - 02/03/2002 - Mr Bernard Bourgeois
Ce programme permet de réaliser un thermostat digital -25°C à + 125 °C avec 2 seuils d'alarmes à l'aide d'un circuit Dallas™ DS1620 associé à un module PICBASIC-2H et à un afficheur LCD série. Voir le fichier "Thermometre.pdf" disponible dans le fichier (.zip) de nos notes d'applications.
Simulation d'un thermostat à 2 valeurs de consigne - Lextronic
Cette description va vous permettre de simuler le fonctionnement d'un petit thermostat doté de 2 valeurs de consigne associées à 2 sorties:
- Température basse -> actiation d'un chauffage
- Température haute -> activation de la climatisation
Reliez dans un premier temps l'entrée "I/O 0" de votre module PICBASIC (tout modèle sauf "PICBASIC-1B") sur le curseur d'un potentiomètre dont les 2 autres connexions sont reliées au +5 V et à la masse. reliez ensuite les ports "I/O 8" et "I/O 15" à des Leds (via des résistances de 1 Kohm). Nous appelerons ces Leds (Led1 et Led2).
Recopiez alors à l'écran le programme ci-dessous:
DIM TEMP AS INTEGER
10 TEMP=ADIN(0)
IF TEMP < 200 THEN
OUT 8,0
OUT 15,1
END IF
IF TEMP > 600 THEN
OUT 8,1
OUT 15,0
END IF
IF TEMP > 200 AND TEMP < 600 THEN
OUT 8,0
OUT 15,0
END IF
GOTO 10
Les 2 sorties du thermostat (activation chauffage et activation climatisation) seront simulés par les Led L1 et L2 (respectivement reliées à "I/O 8" et "I/O 15".
La mesure de la température sera simulée par la mesure de la valeur analogique présente sur le curseur du potentiomètre de la platine. En tournant le potentiomètre, on simulera les changements de températures.
Le programme est assez simple à comprendre. En ligne 10, on récupère la valeur de la tension présente en "I/O 0" sous la forme d'un nombre stocké dans la variable TEMP (déclarée dans la première ligne du programme). On va ensuite effectuer des conditions sur la valeur de la "température" lue et en fonction de ces conditions actionner les sorties du thermostat. Ces conditions seront générée à l'aide d'une nouvelle instruction:.
IF ... THEN... ENDIF
Ainsi, la 3ème ligne du programme va tester si la température lue est inférieur à une certaine valeur consigne "basse -> 200". Si tel est le cas, on va désactiver la première sortie du thermostat (celle liée à la climatisation) et activer la seconde (celle liée au chauffage).
Nota: la valeur de consigne est arbitraire et n'a aucun rapport avec une vraie valeur de température. Il s'agit la d'un exemple didactique.
La suite du programme va également tester si la température lue n'est pas supérieur à une valeur de consigne "haute -> 600". Si tel est le cas, on va activer la première sortie du thermostat (celle liée à la climatisation) et désactiver la seconde (celle liée au chauffage).
Le programme va également tester si la température se situe entre les 2 valeurs de consigne "basse et haute - (entre 200 et 600). Si tel est le cas, on considère que la température est "normale" et on désactive les 2 sorties (climatisation et chauffage).
Dès lors, en tournant le potentiomètre, vous pourrez tester qu'en dessous d'une certaine position la Led L1 s'allume seule (simulant l'activation du chauffage). Dès que la température remonte (lorsque vous tournez le potentiomètre), cette Led s'éteint. Si vous continuez à tourner le potentiomètre (afin de simuler l'augmentation de la température), la Led L2 s'allume alors (simulant l'activation de la sortie climatisation). En tournant le potentiomètre dans le sens inverse (afin de simuler la diminution de la température), la Led L2 s'éteint alors à nouveau et ainsi de suite.
On remarquera que dans les positions limites de consignes, les Leds correspondantes peuvent se mettre à clignoter brièvement (ceci est du au fait que le convertisseur analogique/numérique retourne une valeur pouvant varier d'une unité en fonction de la précision du potentiomètre).
Optimisation du programme
Cette nouvelle version du programme réalise exactement la même fonction. Toutefois elle permet d'économiser des lignes de codes en optimisant la programmation.
DIM TEMP AS INTEGER
DIM RELAIS1 AS BYTE
DIM RELAIS2 AS BYTE
10 RELAIS1=0
RELAIS2=0
TEMP=ADIN(0)
IF TEMP < 200 THEN RELAIS2 = 1
IF TEMP > 600 THEN RELAIS1 = 1
OUT 8,RELAIS1
OUT 15,RELAIS2
GOTO 10
Pour ce faire, on utilisera 2 nouvelles variables attribuées à l'état que devront prendre chaque sortie.
RELAIS1 pour l'état de la sortie climatisation.
RELAIS2 pour l'état de la sortie chauffage.
En ligne 10 on initialise l'état des 2 sorties relais à 0 (sorties non activées).
Puis on teste les valeurs de consignes en ne modifiant que l'état du relais associé à la valeur. On notera que contrairement au programme précédent, on ne testera pas si la valeur de la température est comprise entre les 2 valeurs de consignes. En fait, en ligne 10 on partira du fait que d'office la température est comprise entre les 2 valeurs de consigne et on désactivera l'état des 2 sorties. Si c'est effectivement le cas, aucune des 2 conditions n'affecte l'état des sorties. Si ce n'est pas le cas, la régulation sera alors appliquée. Les 2 avants dernières ligne récupèrent les états "logiques" des sorties et les appliquent "physiquement" aux port du PICBASIC afin d'activer ou non les leds.
Si la variable RELAIS1 = 0, l'instruction OUT 8,RELAIS1 éteindra la Led L1.
Si la variable RELAIS1 = 1, l'instruction OUT 8,RELAIS1 allumera la Led L1.
Il est est de même pour RELAIS2 et la Led L2.
Régulateur d'hygrométrie - 19/08/2003 - Mr Moulin JP.
Encore un très bon document (fichier "Regulateur.pdf") expliquant la conception d'un régulateur d'hygrométrie à partir d'un capteur spécifique associé à un module "PICBASIC-3B".
Station météo - 30/07/2003 - Mr Moulin JP.
Un très bon document (fichier "Station.df") avec de nombreuses explications et schémas techniques reprenant la description d'une centrale météo avec transmission radio. Vous y trouverez des informations sur la conception de vos capteurs.