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
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
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