Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 

Les touches sensitives capacitives sur picaxes


Les touches sensitives capacitives ont l'avantage de confectionner des touches sans matériel, sans percement, de présentation irréprochable. Touche fugitives ou à enclenchement, elles s'adaptent à tous les cas.


Une petite vidéo rapide pour fixer les idées, le cuivre est sous la réglette, isolant au dessus, il ne faut pas toucher directement les broches du picaxe:
Le programme de ce test est en PDF ICI
 

Exemple 1
 
Schéma du circuit test

7 touches sensitives sur les port B0 à B6

7 sorties associées sur les ports C.

B.7 n'a pas de fonction "touch" mais sert à connecter un LCD série

Pour plus de renseignements sur les LCD série "fabrication maison", voyez cette page

Ces deux vidéos ne sont qu'une première étude des commandes  "touch" des picaxes, susceptibles de rectifications

Voici d'abord une vidéo de mise en oeuvre



 
 
La suite, avec le blindage. contrairement à ce qui est dit, le blindage des câbles n'est pas satisfaisant.



 


Le code correspondant:

 'Ex: Touche fugitive
#picaxe 20M2
   symbol baud= N4800

start0:

Do
  touch16 B.1,w13 'lit le port B.1 et renvoit un nombre w13 en fonction de la capa lue
  if w13>7500 then 'seuil basculement
    high C.0 'C.0 au niveau haut
  else 'sinon
   low C.0'niveau bas
  endif
loop
'Ex Touche à enclenchement

start1:

Do
 touch16 B.0,w12 'lecture touche
   if w12>7500 then 'seuil basculement
   toggle C.4 'inversion de valeur
  Do
  touch16 B.0,w12
  Loop while w12 > 7500 'blocage tant que la touche est activée
  endif
loop

start2: 'affichage des valeurs sur LCD 1602

  pause 200 'initialisation LCD
  do
     bintoascii w13,b1,b2,b3,b4,b5
     serout C.5,baud,(254,128,"w13= ",b1,b2,b3,b4,b5)
     bintoascii w12,b1,b2,b3,b4,b5
     serout C.5,baud,(254,192,"w12= ",b1,b2,b3,b4,b5)
  loop


Explications:

Le picaxe 20M2 peut gérer jusqu'à 8 programmes en temps partagé. Ici, il n'y en a que trois, derrière les étiquettes start0, start1, start2.

Start0 ouvre le programme de touche  fugitifve la sortie correspondante (C.0) passe au niveau haut tant que la touche est activée.

Start1 ouvre le programme de touche à enclenchement, et change d'état à chaque activation de touche. Un blocage est nécessaire pour assurer un unique changement d'état par activation.

Start2 est le programme d'affichage des valeurs retournées par les commandes TOUCH16, c'est un nombre de type "word" sur deux octets (de 0 à 65535).
Il est indispensable de connaitre ces valeurs pour calibrer le niveau de basculement un peu au dessus, en fonction de la stabilité . Il faut déterminer ces valeurs avec soins si on veut éviter problèmes et déceptions.
Dans cette première vidéo, les deux seuils sont fixés à 7500

Des améliorations de la stabilité peut être apportée par le blindage des touches et limiter les influences parasites.
Après blindage, les seuils sont fixés à 7000 pour la petite touche et 10000 pour la grande.

MAJ 27/05/2013
L'exemple suivant montre que le problème du seuil est facilement résolu par une lecture ou le calcul d'une moyenne sur plusieurs valeurs. Le seuil calculé est suffisament stable pour assurer un  fonctionnement sûr du système.
En fait, dans la pratique, il suffit de "mesurer" la valeur de la mesure retournée à vide dans une initialisation au début du programme et d'ajouter une marge de sécurité pour obtenir, dans tous les cas, un fonctionnement sûr et stable
 
 
 

Exemple 2

Cahier des charges:
Détecter l'introduction d'une clé dans une serrure sur une porte en bois.

La solution proposée emploi un picaxe 08M2 utilisant la fonction de détection capacitive des picaxes
L'afficheur LCD n'est pas indispensable, il sert ici à visualiser les variations de paramètres pour l'étude du projet

Le code:

Composé de deux pogrammes en temps partagé (pour l'exemple).
Le programme start0:
A la mise sous tension, le sous programme calib: calcule une moyenne sur dix lectures  des valeurs lues par la sonde. Cette moyenne sert de seuil initial.
Dans la boucle principale:
Le sous programme "marge:" , lit le potentiomètre et décale le seuil de sensibilité de la valeur lue.
Le sous programme "compare: , " place un flag lorsque la valeur de la sonde capacitivedépasse le seuil affiché.
Le sous programme en option "affich:" , affiche les valeurs sur le LCD série "maison".
Le programme start1:
Allume la diode lorsque le flag est à 1
 
Petite vidéo de démo:
  
 'Ex: serrure touche #picaxe 08M2
    '****** Nominations variables ********  
    symbol baud= N4800    
    symbol valtouche   = w13
    symbol seuil    = w12   
    symbol valmarge    = w11  
    symbol seuilmaj    = w10  
       symbol flag        = bit1
'******* Nominations ports ***********
    symbol LED      = C.0
    symbol POTAR    = C.4
    symbol LCD      = C.1                                 
    symbol SONDE    = C.2
'******* Programme 0 en Temps partagé *******
 start0:
 pause 200
                               
'    initiation LCD     gosub calib
' SUB CALIBRATION AUTO  
bintoascii seuil,b1,b2,b3,b4,b5 'affichage seuil     
serout LCD,baud,(254,192,"seuil= ",b1,b2,b3,b4,b5)        
 pause 3000  'pause lecture seuil
      
  Do        'BOUCLE PRINCIPALE   
     gosub marge      
     gosub compare  
     gosub affich
loop
'******** calibration de la sonde mise sous tension ***************
calib:
     seuil=0                     ;initialisation seuil     
     for b1=1 to 10            ;boucle sur 10 valeurs         
         touch16 SONDE,valtouche    ;lecture sonde         
         valtouche=valtouche/10   ;sup dernier digit         
         seuil=seuil+valtouche     ;cumul et moyenne des 10 lectures
     next     
     return     
 '******* lecture de la marge de sensibilité **********
 marge:         
     readadc10 POTAR,valmarge        ;lecture pot 0 à 1023     
     valmarge=valmarge*50        ;X 50 résolution=50, plage de 0 à 51150     
     seuilmaj= seuil+valmarge max 56000   ;majoration du seuil     
     return     
 '******** Affichage des valeurs lues ***********
 affich:
      bintoascii seuilmaj,b1,b2,b3,b4,b5             ;décomposition ascii         
      serout LCD,baud,(254,192,"seuilmaj= ",b1,b2,b3,b4,b5)    ;envoi LCD série     
      bintoascii valtouche,b1,b2,b3,b4,b5     
      serout LCD,baud,(254,128,"valtouche= ",b1,b2,b3,b4,b5)         
      return     
 '********* Comparaison Sonde / Seuil majoré **********     
 compare:
      touch16 SONDE,valtouche        ;lecture sonde capa     
      if valtouche>seuilmaj then     ;comparaison             
         flag=1             ;flag=1 = allumage led dans start1:             
      else flag=0         ;led éteinte     
      endif     
 return     
 '******** Programme 1 en Temps partagé: Signalisation **************     
  start1:
      do                     ;allumage led     
          if flag=1 then         ;en fonction                 
           high LED        ;du             
        else low LED    ;flag     
        endif     
      loop


 



Créer un site
Créer un site