Applications CB210 (C)

Notes d'applications pour "CB210" (Part 3) 

Afin de vous aider à vous initier et à développer encore plus rapidement avec le module CUBLOC "CB210" et pour vous donner une idée de son potentiel, vous trouverez ci-dessous une sélection complète de notes d'applications (les réalisations concernent aussi bien le domaine ludique, la robotique, la mesure, le domaine professionnel...). 


Réalisation d'une station météo expérimentale

Présentation:

Cette application montre comment gérer un capteur météo afin de pouvoir afficher une représentation de la vitesse du vent, du niveau de pluviométrie et de la direction du vent sur un afficheur LCD 2 x 16 caractères. Un bouton-poussoir permet d'afficher successivement ces 3 informations à l'écran.


Matériel nécessaire:


- 1 module CUBLOC "CB210" (réf.: CB210) + 1 câble USB standard (réf.: CW090A)
- 1 ensemble capteur météo
- 4 résistances de 10 Kohms - code couleur: marron - noir - orange (réf.: R)
- 1 bouton-poussoir (réf.: KRS0615)
- 1 afficheur LCD 2 x 16 lignes (réf.: CLCD162-BL)
En option: 3 x interfaces RJ45 (réf.: BOB-00193) + 3 x connecteurs femelles (réf.: BTWF6)


Câblage de l'application:


* ATTENTION * Les capteurs de la station météo devront être reliés au plus près du module "CB210" afin de ne pas ramener de perturbation sur les entrées de ce dernier. Les commutateurs Dils de l'afficheur devront être tous sur la position "OFF" (sauf le DIL N°3). Les interfaces BOB-00193 et les connecteurs BTWF6 (voir ci-dessus) sont optionnels (ils vous permettrons de récupérer les signaux des prises RJ45 sur des fils).





Description du programme:


L'anémomètre génère la femeture cyclique d'un contact lors de sa rotation. Ce dernier est câblé entre la masse et l'entrée 0 du "CB210" (avec une résistance de tirage au +5V afin de pouvoir récupérer son signal). Le programme va détecter le front descendant du signal, puis décrémenter un compteur dont la valeur sera affichée sous la forme d'un bargraph lors de la détection du front montant du signal. Plus la vitesse de rotation sera important, moins le compteur aura le temps de diminuer et plus sa valeur sera importante (donc plus le bargraph sera "long").

Le bargraph utilisé permet d'afficher une représentation de la vitesse avec une résolution horizontale de 80 segments sur une ligne d'un afficheur LCD (ceci est possible grâce à une redéfinition de caractères - le principe de fonctionnement de ce bargraph est expliqué dans une note d'application précédente).

Le programme gère les cas de figure dans lesquels la durée de l'impulsion (de niveau logique haut ou bas) de l'anémomètre est trop longue (afin que les boucles d'attente des fronts montant et descendant ne bloquent pas l'affichage du bargraph).

Le programme vérifie également l'appui sur le bouton-poussoir (relié sur l'entrée 3 du "CB210"). A chaque sollicitation, le mode d'affichage basculera sur l'afichage des données de l'anémomètre, puis du pluviomètre, puis de la girouette, pour revenir à l'anémomètre... et ainsi de suite.





Le pluviomètre génère également la femeture impulsionnelle d'un contact à chaque remplissage complet de son godet. Ce dernier est câblé entre la masse et l'entrée 1 du "CB210" (avec une résistance de tirage au +5V afin de pouvoir récupérer son signal). Le traitement de ce type d'information nécessiterait normalement de disposer d'une entrée d'interruption ou d'une entrée de comptage sur le microcontrôleur. Ces fonctions n'étant présentent que sur les autres modules "CUBLOC", notre programme est obligé d'effectuer une lecture cyclique de l'entrée du pluviomètre. Cette solution technique n'offre toutefois pas une lecture effective à 100 % (raison pour laquelle nous avons appelé notre application: station météo expérimentale). Il peut en effet arriver suivant le déroulement du programme qu'une impulsion (arrivant par exemple lorsque le "CB210" envoi des informations sur l'écran LCD) ne soit pas captée ou que l'impulsion génère 2 détections. Ces cas sont râres et ne remettent toutefois pas en cause l'aspect ludique et éducatif de la réalisation. L'activation cyclique du godet du pluviomètre va être visualisée via la progession d'un bargraph (le bargraph se bloque au bout de 80 basculements du godet). En fonction des zones (plus ou moins pluvieuses), vous pourrez être amené à modifier cette valeur max. Une remise sous tension ou un Reset du "CB210" permettra de remettre à zéro le bargraph lié à la pluviométrie.

La girouette génère une variation de la valeur de sa résistance en fonction de son orientation. Cette variation n'est pas proportionelle à la direction (consultez la notice de la girouette pour plus d'infos). La résistance de la girouette est utilisée en pont diviseur avec une résistance de 10 K ohms afin de pouvoir générer une tension appliquée sur l'entrée du convertisseur "A/N" A0 du "CB210". Nous avons relevé les valeurs des tensions des 16 positions de la girouette et nous les avons stockée dans une variable de type "tableau". Le programme va ensuite récupérer la valeur de la tension analogique de la girouette et soustraire cette valeur à celles (des tensions des 16 positions) que nous avions stocké. Si la différence de cette soustraction est faible (nous avons choisi une tolérance de 6 unités pour couvrir la tolérance de la conversion "A/N"), le programme en déduit alors la position de la girouette et l'affiche via un pavé en dessous d'une échelle (N E S O).


Code source:


'###############################################################
' Realisation d une station meteo experimentale
' @Lextronic 2012 - 11/06/2012 - version Cubloc Studio 3.3.4
'
' Programme donne a titre d'exemple. A utiliser dans le cadre d'une initiation aux modules CUBLOC
' (l utilisation commerciale de ce programme est interdite). Lextronic decline toute responsabilite en
' cas de prejudice resultant de l'utilisation de cette note d'application.
'###############################################################


Const Device = CB210 ' Initialisation de modele de Cubloc
Set Display 2,0,1,50 ' Initialisation de l'afficheur LCD

Const Anemometre = ' Anemometre connecte sur le port 0 du CB210
Const Pluviometre = 1 ' Pluviometre connecte sur le port 1 du CB210
Const Bouton = 2 ' Bouton-poussoir connecte sur port 2 du CB210
Const Integer Posgir = (787,406,460,83,93,65,185,126,289,1022,630,600,945,829,887,703)

Dim Vent As Integer ' Compteur mesure vitesse du vent
Dim Pluie As Integer ' Compteur mesure de pluie
Dim Mode As Byte ' Mode d affichage sur le LCD
Dim Valide As Byte ' Regsitre validation mesure
Dim MemPluie As Byte ' Registre memoire action godet pluie
Dim Anemo As Integer ' Registre lecture valeur analogique girouette

Cls ' Effacement ecran LCD
Csroff ' Suppression de l affichage du curseur
Print &H1B,&H44,8,0,0,0,0,0,0,0,0 ' Redefinition des caracteres du LCD pour gestion bargraph
Print &H1B,&H44,9,16,16,16,16,16,16,16,16
Print &H1B,&H44,10,24,24,24,24,24,24,24,24
Print &H1B,&H44,11,28,28,28,28,28,28,28,28
Print &H1B,&H44,12,30,30,30,30,30,30,30,30

Input Anemometre ' Configure le port de l anememotre en entree
Input Pluviometre ' Configure le port du pluviometre en entree
Input Bouton ' Configure le port du bouton poussoir en entree
Mode = 0 ' Selection affichage donnes de l anemometre
Pluie = 0 ' Initialise compteur Pluie
MemPluie = 0 ' Initialise action mmoire godet Pluie
Gosub AffMode ' Affiche titre du mode

Do
SYNCHRO1: ' Debut etape attente front descendant anemometre
Vent = 500 ' Initialise valeur compteur
Do While In(Anemometre) <> 0
Vent = Vent - 1 ' Decompte du Compteur
If In(bouton) = 0 Then Gosub AffMode ' Bouton selection mode affichage sollicite
If Keyin(Pluviometre,10) = 0 Then MemPluie = 1 ' Detection action godet Pluie
If Vent = 0 Then ' L anemometre ne tourne pas assez vite
bargraph 1 ' Affichage du bargraph
Goto SYNCHRO1 ' Attend toujours front montant anemometre
Endif
Loop
Vent = 500 ' Initialise valeur compteur
Valide = 0 ' On valide la mesure duree niveau bas
SYNCHRO2: ' Debut etape calcul duree impulsion basse
Do While In(Anemometre) <> 1
Vent = Vent - 1 ' Decompte du Compteur
If In(bouton) = 0 Then Gosub AffMode ' Bouton selection mode affichage sollicite
If Keyin(Pluviometre,10) = 0 Then MemPluie = 1 ' Detection action godet Pluie
If Vent = 0 Then ' L anemometre ne tourne pas assez vite
bargraph 1 ' Affichage du bargraph
Vent = 500 ' Initialise valeur compteur
Valide = 1 ' On ne tient pas compte de la duree niveau bas
Goto SYNCHRO2 ' Attend fin niveau bas
Endif
Loop
If Valide = 0 Then bargraph 1 ' Duree valide on peu afficher le bargraph
Goto SYNCHRO1 ' Attend a nouvau synchro niveau bas
Loop

'##################################
' Sous routine affichage des titres
'##################################


AffMode:
Do While Keyinh(Bouton,3) = 0 ' Attend relachement de la touche
Delay 25
Loop
Mode = Mode + 1 ' Selectionne mode affichage suivant
If Mode = 4 Then Mode = 1 ' Revient au mode 1 si depasse mode 3
Select Case Mode
Case 1
Locate 0,0 ' Affichage mode Anemometre
Print "Vitesse du vent "
Case 2
Locate 0,0 ' Affichage mode Pluviometre
Print " Pluviometrie "
Case 3
Locate 0,0 ' Affichage mode Girouette
Print "N E S O "
Locate 0,1
Print " " ' Efface 2eme ligne
End Select
Return

End

'###############################
' Fonction affichage du Bargraph
'###############################

Sub bargraph(ligne As Byte)
Dim i As Byte
Dim J As Byte
Dim K As Long
Dim valmax As Single
Dim barre As String*16
Dim vide As String*16
Dim segment As String*1
If MemPluie1 Then ' Ajoute segment Pluie si Godet Pluie active
Pluie = Pluie + 1
If Pluie > 80 Then Pluie = 80
MemPluie = 0 ' RAZ Action godet Pluie
Endif

If Mode = 3 Then ' Va afficher position girouette
Anemo=Adin(0) ' Lecture position girouette
barre=""
For i = 0 To 15
K = Abs (posgir(i)-Anemo)
If K < 6 Then ' Calcul position affichage sur LCD
barre barre + Chr(&HFF)
Else
barre = barre + Chr(20)
Endif
Next
Locate 0,1
Print barre
Else
If Mode = 1 Then ' Affiche Bargraphe vent
valmax=(Vent/6.25)/5
Else
valmax=Pluie/5.0 ' Affiche Bagraph pluie
Endif
i=valmax
barre=String(&HFF,i)
J=16-i
vide=Spc(J)
i=((valmax-i)/0.2)+8
segment=Chr(i)
barre=barre+segment+vide
Locate 0,ligne
Print barre
Endif
End Sub

Produit ajouté à ma liste