positionnement avec un moteur pas à pas

zeltron

Senior Member
j'ai modifié le programme suivant votre remarque et joué avec les valeurs de pause
effectivement cette pause stabilise encore plus le rebond
mais c'est surtout la derniere pause du programme qui stabilise completement le chiffrage
celle ci
endselect
serout B.7,N2400_16,(254,135,#chiffre," ")
pause 550
loop
entre 800 et 1000 y'a plus de pb mais il faut rester presque une seconde appuyé sur la touche
ce qui peut surprendre d'une utilisation normale d'un clavier mais avec l'habitude, pas de soucis pour moi
 

BESQUEUT

Senior Member
j'ai modifié le programme suivant votre remarque et joué avec les valeurs de pause
effectivement cette pause stabilise encore plus le rebond
mais c'est surtout la derniere pause du programme qui stabilise completement le chiffrage
celle ci
endselect
serout B.7,N2400_16,(254,135,#chiffre," ")
pause 550
loop
entre 800 et 1000 y'a plus de pb mais il faut rester presque une seconde appuyé sur la touche
ce qui peut surprendre d'une utilisation normale d'un clavier mais avec l'habitude, pas de soucis pour moi
Curieux ??? normalement, le chiffre doit apparaitre instantanément. Ce n'est que la répétition qui apparait au bout d'une seconde.
Merci de donner l'intégralité de votre programme de test.
Avez-vous mis le condensateur ? Et si oui, que se passe-t-il en le supprimant ou en diminuant notablement sa valeur ?
 

zeltron

Senior Member
je me suis peut être mal exprimé le chiffre apparait instantanement
mais c'est au relachement du bouton poussoir qu'il peut y avoir une erreur d'interprétation et un changement de la valeur si l'on relache trop vite le bouton....
mal'heuresement il n'y a pas plus de ligne à mon programme que ci dessus
je cherche la solution pour afficher les dizaines etc...
mais sur le net je ne trouve pas d'exemple pour l'instant je continue de chercher...
pour le condo c'est un 10nf comme sur le schema de gauche fournis plus haut
j'avais changé la valeur du condo sur l'autre schema sans différence notable alors je n'ai pas recommencé avec celui la...
Code:
[color=Navy]#PICAXE [/color][color=Black]40X2 [/color][color=Green]' a la palce de 28X2 tu met ton type de picaxe[/color]

[color=Blue]symbol [/color][color=Black]touche [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]Symbol [/color][color=Black]Chiffre [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]

[color=Blue]setfreq m16             [/color][color=Green]'frequence 16MHz interne[/color]

[color=Blue]pause [/color][color=Navy]500[/color]
[color=Blue]SerOut B.7[/color][color=Black], [/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]( [/color][color=Navy]254[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Blue])         [/color][color=Green]' efface l'eran[/color]

[color=Blue]serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Red]"touche="[/color][color=Blue])
do

   readadc a.0 [/color][color=Black], touche [/color][color=Green]' On lit la touche appuyee
   [/color][color=Blue]if [/color][color=Black]touche  [/color][color=DarkCyan]< [/color][color=Navy]200 [/color][color=Blue]then
      
      pauseus [/color][color=Navy]400     [/color][color=Green]'
      [/color][color=Blue]readadc a.0 [/color][color=Black], touche
      [/color][color=Blue]select case [/color][color=Purple]b1    [/color]

[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]6 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]12[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]30 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]11[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]50 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]10[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]70 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]9[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]80 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]8[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]90 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]7[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]105 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]6[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]112 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]5[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]120 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]4[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]129 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]3      [/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]136 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]2[/color]
[color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]140 [/color][color=Black]: chiffre [/color][color=DarkCyan]= [/color][color=Navy]1[/color]

[color=Blue]endselect
endif

serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]135[/color][color=Black],#chiffre,[/color][color=Red]" "[/color][color=Blue])
pause [/color][color=Navy]800[/color]
[color=Blue]loop[/color]
 

dje8269

Senior Member
Ton 40X2 ne sert qu'a ca ?

Voila un petit programme :

Code:
#PICAXE 40X2 ' a la palce de 28X2 tu met ton type de picaxe

symbol touche = b1
Symbol Chiffre = b2

setfreq m16             'frequence 16MHz interne

SerOut B.7, N2400_16,( 254, %00000001 )         ' efface l'ecran
serout B.7,N2400_16,(254,128,"touche=")
pause 500

do
	
do 
	readadc a.0 , touche ' On detecte un appui
loop while touche > 200

pause 50     ' on fait une pause pour stabiliser la tension
readadc a.0 , touche	' On relie la valeur une fois stabilisé
	

select case b1    

case < 6 : chiffre = 12
case < 30 : chiffre = 11
case < 50 : chiffre = 10
case < 70 : chiffre = 9
case < 80 : chiffre = 8
case < 90 : chiffre = 7
case < 105 : chiffre = 6
case < 112 : chiffre = 5
case < 120 : chiffre = 4
case < 129 : chiffre = 3      
case < 136 : chiffre = 2
case < 140 : chiffre = 1

endselect

serout B.7,N2400_16,(254,135,#chiffre," ")

do 
	readadc a.0 , touche ' On detecte un ralechement 
loop while touche < 250

loop
 
Last edited:

BESQUEUT

Senior Member
Ton 40X2 ne sert qu'a ca ?

Voila un petit programme :
Le pauseus 50 est trop court. Je propose plutôt un pause 50
Dans le dernier commentaire, on détecte un relâchement, pas un appui.
Merci d'utiliser le symbole "Touche" à la place de b1...
 

PieM

Senior Member
Reste que la tension ne passe pas instantanément de 5v à quelques volts
qu'est ce qui ralentit les électrons ?
D'autre part le temps de réponse de la commande readadc x, bx est de l 'ordre de 200 µs à 16 Mhz. Ce qui permet fort heureusement de suivre une sortie de capteur analogique qui varie constamment.
Par contre la résistance de contact parasite d'un mauvais clavier, n'est par définition, jamais constante.

je cherche la solution pour afficher les dizaines etc...
mais sur le net je ne trouve pas d'exemple pour l'instant je continue de chercher...
Je vais vous faire un petit bout de programme en test.
 

dje8269

Senior Member
Le pauseus 50 est trop court. Je propose plutôt un pause 50
+1 je n'avais pas vu que c'etait en µs ; effectivement je voulais mettre "pause 50"

on détecte un relâchement, pas un appui.
Mausdit copier/coller , autant pour moi .

Qu'est ce qu'ils ont l'&#339;il ces experts !! :cool:

@PieM : je ne trouve pas d'exemple pour faire mon VHL de reconnaissance, tu pourrais me faire un petit programme test ? lol
 

BESQUEUT

Senior Member
qu'est ce qui ralentit les électrons ?
D'autre part le temps de réponse de la commande readadc x, bx est de l 'ordre de 200 µs à 16 Mhz. Ce qui permet fort heureusement de suivre une sortie de capteur analogique qui varie constamment...
C'est là qu'est l'os hélas...
En admettant que la tension en sortie du pont diviseur mette plus que zéro seconde pour passer de 5V à qq volts,
comme le Picaxe échantillonne strictement n'importe quand, il doit pouvoir lire strictement n'importe quoi entre qq volts et 5 volts.
Statistiquement, il est plus probable que ça soit du coté des qq volts, mais en fonction de la forme de la courbe et des éventuelles variations de résistance dues à l'augmentation progressive de la pression sur le poussoir, ça peut mettre un peu de temps à se stabiliser.
A ma connaissance, l'entrée du Picaxe a une certaine impédance ; donc, alimenté au travers d'une résistance, il faut un certain temps pour faire changer la tension.
Encore plus si le condo indiqué sur le schéma (ou celui cité en #170) a été installé...
Donc le changement en zéro seconde, je n'y crois pas.
Par contre la résistance de contact parasite d'un mauvais clavier, n'est par définition, jamais constante..
Même touche enfoncée, la résistance varie sans arrêt ? Ca serait intéressant d'avoir un scope...
 
Last edited:

zeltron

Senior Member
Ton 40X2 ne sert qu'a ca ?
revoir le post dans son ensemble le 40x2 va être utilisé dans l'automatisation d'un reseau train ech z avec pont tournant etc...
étant débutant je commence pas à pas avec les differents programme et composant
déjà que je melange pas mal de commande si j'essais de sortir le programme complet d'un seul coup je vais terminer au urgence!!:(
quand ces differents petits programmes marcherons je verrai pour les réunir

j'ai un scop mais il n'a pas de mémoire donc je ne pense pas voir de variation....
 

BESQUEUT

Senior Member
+1 je n'avais pas vu que c'etait en µs ; effectivement je voulais mettre "pause 50"
Mausdit copier/coller , autant pour moi .
Toutes mes excuses : c'est moi qui suis à l'origine de l'erreur...
Ben : sauf erreur de ma part, un commentaire est fait pour être lu.
Sinon, pour le coup, ça ne sert vraiment à rien...
 

BESQUEUT

Senior Member
je me suis peut être mal exprimé le chiffre apparait instantanement
mais c'est au relachement du bouton poussoir qu'il peut y avoir une erreur d'interprétation et un changement de la valeur si l'on relache trop vite le bouton....
OK : c'est conforme.
Et je persiste à penser que du fait de ce condo la variation de tension ne peut pas être instantanée et donc le Picaxe peut lire n'importe quoi si le programme ne prends pas en compte ces temps de stabilisation de la tension.
Il faut juste attendre le relachement avant de prendre en compte une nouvelle pression. Voir proposition de programme par dje.

Je profite de ce post pour rappeler une remarque faite au début : il faudra à un moment donné choisir la fréquence du Picaxe, à priori 16 ou 64 Mhz. En effet de nombreuses commandes et paramètres en dépendent, et plus on attends, plus il y aura de choses à changer...

PieM a proposé de rester à 16 Mhz. Si le Picaxe est débordé, il proposera probablement d'en mettre plusieurs et de les faire communiquer...
J'aurais plutôt tendance à choisir 64 Mhz pour préserver l'avenir sur un seul Picaxe, en particulier s'il y a beaucoup d'entrées à lire tout en scrutant le clavier et autres tâches simultanées.

Pas vraiment d'urgence à choisir, et c'est assez philosophique, mais bon, vous pouvez donner votre point de vue.
 
Last edited:

PieM

Senior Member
BESQUEUT said:
A ma connaissance, l'entrée du Picaxe a une certaine impédance ; donc, alimenté au travers d'une résistance, il faut un certain temps pour faire changer la tension.
Un Pic à 20 Mhz est capable d'échantillonner un signal de 120 kHz
 

BESQUEUT

Senior Member
Un Pic à 20 Mhz est capable d'échantillonner un signal de 120 kHz
Un PIC ou un Picaxe ?

J'ai la flemme de faire le calcul :
ça donne quoi le temps de descente du signal de 5V à 2,5V pour un condo de 10 nF et les résistances en série ?
De plus, je reste persuadé que la résistance du clavier est infinie touche relâchée, puis diminue progressivement ou plus ou moins aléatoirement lors de l'appui, puis se stabilise à peu près quand la pression est suffisante (classique des claviers à pastilles de carbonne)
Du coup, là encore, il faut un certain temps pour que la tension soit stable.

Mais peu importe : même si ce n'est qu'une fraction de ms, rien n'empêche que le Picaxe fasse sa mesure pile à ce moment là.
Statistiquement, il y a plus de chances que ce soit du coté de 2,5V, ce qui explique que le programme basique "tombe en marche"
Mais rien n'empêche que ça donne 3 ou 4V !

Seule solution à mon sens :
dès qu'on détecte que ce n'est plus 5V, on attends un peu et on refait une mesure.
Cette mesure donne la touche enfoncée.
puis on attends que ça revienne à 5V avant de prendre en compte une nouvelle touche.
 
Last edited:

PieM

Senior Member
Un PIC ou un Picaxe ?

J'ai la flemme de faire le calcul :
ça donne quoi le temps de descente du signal de 5V à 2,5V pour un condo de 10 nF et les résistances en série ?
Pic ou Picaxe ça ne change pas le hardware ! le temps d'acquisition (sampling & Hold) est le même. le Pic a une capa à l'entrée qu'il faut charger en moins de 500ns. C'est pour ça qu'on conseille d'éviter des impédances de circuit d'entrée > 10 ou 20k selon le Pic

Et c'est pour ça qu'il ne faut pas mettre de capa à l'entrée, comme je l'ai déjà dit. Après chacun fait comme il le sent.
 

PieM

Senior Member
@ Zeltron

premier jet (non testé !):
Code:
[color=Navy]#PICAXE [/color][color=Black]40X2  [/color]

[color=Blue]symbol [/color][color=Black]touche [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]Symbol [/color][color=Black]nombre [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]

[color=Green]'initialisation ======================================[/color]
[color=Blue]setfreq m16             [/color][color=Green]'frequence 16MHz interne[/color]

[color=Blue]SerOut B.7[/color][color=Black], [/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]( [/color][color=Navy]254[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Blue])   [/color][color=Green]' efface l'ecran[/color]
[color=Blue]pause [/color][color=Navy]1000[/color]
[color=Green]'programme principal #####################################[/color]
[color=Blue]do
   serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]128[/color][color=Black],[/color][color=Red]"touche="[/color][color=Blue])
   gosub [/color][color=Black]clavier
   [/color][color=Blue]pause [/color][color=Navy]2000[/color]
[color=Blue]loop[/color]
[color=Green]'s/programma saisie clavier ===========================[/color]
[color=Black]clavier:
nombre [/color][color=DarkCyan]= [/color][color=Navy]0[/color]
[color=Blue]do
readadc a.0 [/color][color=Black], touche    [/color][color=Green]' On lit la touche appuyee[/color]
[color=Blue]select case [/color][color=Black]touche  [/color][color=Green]'on reaffecte aux touches leurs vraies valeurs sauf # et *
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]6 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]12  [/color][color=Green]'validation
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]30 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]0
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]50 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]11 [/color][color=Green]'correction
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]70 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]9
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]80 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]8
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]90 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]7
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]105 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]6    
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]112 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]5
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]120 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]4
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]129 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]3
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]136 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]2
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]140 [/color][color=Black]: touche [/color][color=DarkCyan]= [/color][color=Navy]1[/color]
[color=Blue]endselect

select [/color][color=Black]touche
   [/color][color=Blue]case [/color][color=DarkCyan]= [/color][color=Navy]12 [/color][color=Black]: [/color][color=Blue]return      [/color][color=Green]'fin de la saisie clavier
   [/color][color=Blue]case [/color][color=DarkCyan]= [/color][color=Navy]11               [/color][color=Green]'correction dernier chiffre
      [/color][color=Black]nombre [/color][color=DarkCyan]= [/color][color=Black]nombre[/color][color=DarkCyan]/[/color][color=Navy]10   
   [/color][color=Blue]case [/color][color=DarkCyan]< [/color][color=Navy]240              [/color][color=Green]'un chiffre valide est rentré
      [/color][color=Black]nombre [/color][color=DarkCyan]= [/color][color=Black]nombre[/color][color=DarkCyan]*[/color][color=Navy]10 [/color][color=DarkCyan]+ [/color][color=Black]touche [/color][color=Green]'ajout du chiffre
      [/color]
[color=Blue]endselect
   serout B.7[/color][color=Black],[/color][color=Blue]N2400_16[/color][color=Black],[/color][color=Blue]([/color][color=Navy]254[/color][color=Black],[/color][color=Navy]135[/color][color=Black],#nombre,[/color][color=Red]" "[/color][color=Blue])[/color]
[color=Green]'puis on attend que les touches soient relachees pour eviter les repetitions
   [/color][color=Blue]do
   readadc a.0 [/color][color=Black], touche 
   [/color][color=Blue]loop while [/color][color=Black]touche [/color][color=DarkCyan]< [/color][color=Navy]240    
   [/color][color=Blue]pause [/color][color=Navy]200[/color]
[color=Blue]return[/color][color=Navy][/color]
[color=Blue]loop[/color]
Il faut d'ores et déjà structurer le programme, l'appel à une valeur tapée au clavier ne peut être qu'un sous programme qui sera appelé en diverses occasions.
pour l'instant donc, un prog principal qui se contente de lancer le s/prog clavier.

comme je l'expliquais en #199 il faut impérativement éviter les répétitions, donc contrôler le retour à l'état inactif du clavier.
j'ai renommé les touches dites 10, 11 et 12 en 0, validation, et correction ( 10 11 et 12 ne servent à rien pour un clavier numérique)

le programme peut être simplifié en supprimant le second "select touche", mais je le laisse pour l'instant pour une meilleure compréhension.

seule la frappe de validation permet de quitter le s/prog
sinon tout chiffre 0 à 9 sera ajouté à nombre après que ce dernier a été * 10
la touche correction divise nombre par 10 ce qui revient à effacer le dernier chiffre rentré.
 
Last edited:

zeltron

Senior Member
et bien c'est encore surprenant pour moi ce programme...
c'est à la fois simple dans le vocabulaire et tres compliqué dans la façon d'agencer la structure...
pour l'instant ça ne marche pas
l'afficheur affiche bien 0 au départ puis affiche le 1er chiffre frappé et ensuite plus rien
aucune autre frappe n'est affichée
il faut reseter le picaxe pour obtenir un nouveau chiffre et un seul
 

dje8269

Senior Member
Bonjour,
Je sais qu'à côté de PieM, je fais pas le poids. Suivez ces conseils les yeux fermés.
Mais je m'étais donné la peine de vous faire, moi aussi, un petit programme. Je trouve qu'il aurait été correct de le tester et de me dire le résultat, même s'il fonctionne pas.

bonne bidouille
 
Last edited:

PieM

Senior Member
l'afficheur affiche bien 0 au départ puis affiche le 1er chiffre frappé et ensuite plus rien
aucune autre frappe n'est affichée
il faut reseter le picaxe pour obtenir un nouveau chiffre et un seul
Normal, une ligne a sauté à cause d'un commentaire. Sorry.
je l'ai ajoutée.
 

BESQUEUT

Senior Member
Un Pic à 20 Mhz est capable d'échantillonner un signal de 120 kHz
Pic ou Picaxe ça ne change pas le hardware !
Donc un Picaxe peut échantillonner un signal de 120 kHz. Excellente nouvelle !

Accessoirement :le pause 200 à la fin de votre programme ne sert qu'à diminuer la probabilité de faire une lecture au mauvais moment. Reste que de temps en temps, le Picaxe fera sa mesure au mauvais moment...

Désolé, mais je ne veux plus polluer le thread de Zeltron avec des considérations que personne ne lit. Je lirai quand même au cas où le programme proposé par Dje serait testé.
 
Last edited:

PieM

Senior Member
Donc un Picaxe peut échantillonner un signal de 120 kHz. Excellente nouvelle !
j'ai écrit: "Pic ou Picaxe ça ne change pas le hardware ! le temps d'acquisition (sampling & Hold) est le même. le Pic a une capa à l'entrée qu'il faut charger en moins de 500ns. "
ce qui répondait à
BESQUEUT said:
A ma connaissance, l'entrée du Picaxe a une certaine impédance ; donc, alimenté au travers d'une résistance, il faut un certain temps pour faire changer la tension.
ça me semblait clair !
Cela signifie simplement que le temps d'acquisition d'une valeur analogique sur l'étage d'entrée du picaxe est très court.
Cela n'a rien a voir avec la commande readadc qui est interprétée et ne permet évidemment pas d'échantillonner un signal à 100 kHz !
(Ce qui n'empêche pas un picaxe d'échantillonner un signal de plus de 1 kHz...)
 

BESQUEUT

Senior Member
Cela signifie simplement que le temps d'acquisition d'une valeur analogique sur l'étage d'entrée du picaxe est très court.
Très court, mais pas nul... Je n'ai jamais contesté ce point. Je dis par contre que dans le cas qui nous intéresse, la tension produite par le montage ne se stabilise pas instantanément lors de la frappe d'une touche et qu'il faut donc échantillonner au bon moment.
Evidemment, si on espace les mesures, on a moins de chances de tomber au mauvais moment, (mais on diminue la réactivité sans garantir que de temps en temps ça ne va pas merder). De même en étalant mieux la plage de tension et en séparant mieux les seuils, on diminue également les risques de confusion de touches. Toutes mes excuses, mais pour moi, un programme qui "tombe en marche " dans 99,9 % des cas ou plus n'est pas satisfaisant.
 

PieM

Senior Member
mais pour moi, un programme qui "tombe en marche " dans 99,9 % des cas ou plus n'est pas satisfaisant.
Mais aucun problème pour proposer autre chose ... Notre ami Zeltron sera ravi d'avoir un programme qui marche dans 100% des cas!
 

zeltron

Senior Member
Bonjour,
Je sais qu'à côté de PieM, je fais pas le poids. Suivez ces conseils les yeux fermés.
Mais je m'étais donné la peine de vous faire, moi aussi, un petit programme. Je trouve qu'il aurait été correct de le tester et de me dire le résultat, même s'il fonctionne pas.

bonne bidouille
désolé si je vous ai blésse de ne pas avoir tester votre programme
sachez que je vous suis trés reconnaissant de vous investir autant dans mon projet et je vous en remercie
c'est vraiment extra votre dévouement!
je vais prendre le temps de le tester soyez en sur! je relis toujours les différents postes des pages précedente
car pour moi ça fait beaucoup d'infos à digérer en même temps et donc je passe sur beaucoups d'info que je finis par assimiler apres coup
je travaille le soir à l'exterieur et la journée a mon domicile j'accorde un peu de temps occasionnel et cette bidouille
mais entre l'électronique le programme et la réalisation matériel décor il faut choisir les priorités
le prochain test et de retirer le condo 10 nf
ensuite j'essaie votre programme et vous donne le résultat
merci beaucoup vous êtes tous trés sympas
 

zeltron

Senior Member
Bonjour,
Je sais qu'à côté de PieM, je fais pas le poids. Suivez ces conseils les yeux fermés.
Mais je m'étais donné la peine de vous faire, moi aussi, un petit programme. Je trouve qu'il aurait été correct de le tester et de me dire le résultat, même s'il fonctionne pas.

bonne bidouille
finalement j'ai testé votre programme sans retirer le condo pour avoir qu'un seul parametre de changé à la fois
avec la pause à 400 avant le readadc la lecture des touches n'est pas fiable du tout
mais en changeant cette valeur à 250 c'est le programme le plus fiable en lecture et rapidité en frappe clavier
je ne sais même pas si ça vous le coup de retirer le condo du coup?
félicitation! mérci et milles excuses
 

dje8269

Senior Member
Heuu !!

Il n'y a aucune pause de 400 dans mon programme !!!

Je vous remet le programme , qui avec ou sans condo devrait fonctionner .

Code:
#PICAXE 40X2 ' a la palce de 28X2 tu met ton type de picaxe

symbol touche = b1
Symbol Chiffre = b2

setfreq m16             'frequence 16MHz interne

SerOut B.7, N2400_16,( 254, %00000001 )         ' efface l'ecran
serout B.7,N2400_16,(254,128,"touche=")
pause 500

do
	
	do 
		readadc a.0 , touche ' On detecte un appui
	loop while touche > 200

pause 50     ' on fait une pause pour stabiliser la tension
readadc a.0 , touche	' On relie la valeur une fois stabilisé
	

select case b1    

case < 6 : chiffre = 12
case < 30 : chiffre = 11
case < 50 : chiffre = 10
case < 70 : chiffre = 9
case < 80 : chiffre = 8
case < 90 : chiffre = 7
case < 105 : chiffre = 6
case < 112 : chiffre = 5
case < 120 : chiffre = 4
case < 129 : chiffre = 3      
case < 136 : chiffre = 2
case < 140 : chiffre = 1

endselect

serout B.7,N2400_16,(254,135,#chiffre," ")

do 
	readadc a.0 , touche ' On detecte un ralechement 
loop while touche < 250

loop
 

zeltron

Senior Member
dsl j'ai fait une coquille au lieu de 400 il fallait lire effectivement 50
c'est moi qui à essayé ensuite la valeur 400 sans résultat
pour l'instant le mieux c'est 250 mais je vais tester d'autre valeurs pour affiner
car cette pause à l'aire d'être effectivement la clef du pb
 

dje8269

Senior Member
Cette pause si on parle bien de celle de 50 peu même est enlevée a très réduite genre 5 ou 10 . pourquoi l'avoir augmentée ?
 

zeltron

Senior Member
parce que à 50 je n'avais aucune stabilité dans la lecture, voir une tres mauvaise lecture par exemple lors du 1er essais j'ai tappé la touche 1 j'ai obtenu 0
j'ai ensuite tester 250 c'était trés bon, à la fois en vitesse de saisie et fiabilité j'ai en suite testé 500 et 400 au pif
et la c'était aussi mauvais que 50...
la bonne valeurs semble être autour de 250 c'est presque parfait je pense que je peux affiner cette valeurs
je ferai des tests
mais ayant obtenu une petite fiabilité de lecture avec les programmes précedent j'était assez présse de voir l'utilisation des dizaines surtout que j'avais fait des recherche sur le net infructueuses
 
Last edited:

dje8269

Senior Member
parce que à 50 je n'avais aucune stabilité dans la lecture, voir une tres mauvaise lecture j'ai ensuite tester 250 c'était trés bon, à la fois en vitesse de saisie et fiabilité j'ai en suite testé 500 et 400 au pif
et la c'était aussi mauvais que 50...
Je trouve que c'est très paradoxale, car normalement plus vous faites de pause, plus y'a le temps pour se stabiliser donc plus c'est fiable .......

Avez vous enlever les condos ?
essayer avec seulement pause 10 .
 

BESQUEUT

Senior Member
Je trouve que c'est très paradoxal, car normalement plus vous faites de pause, plus y'a le temps pour se stabiliser donc plus c'est fiable .......

Avez vous enlever les condos ?
essayer avec seulement pause 10 .
Sauf si la pause est tellement longue que la touche est relâchée ou commence à être relâchée avant que le deuxième READADC soit passé...
Pour les essais, ce serait bien d'avoir la valeur lue.
Le seul test qui permette d'y voir clair est celui fait en #187.
Le critère est d'avoir une plage aussi étroite que possible pour chaque touche.
Ceci acquit, tout le reste marchera.
 
Last edited:

zeltron

Senior Member
alors toujours dans le but de ne changer qu'un seul parametre à la fois je n'ai pas changé le programme
la pause est toujours à 250 c'était presque parfait à savoir j'avais une erreur de lecture de temps en temps sur la touche 12
j'ai retiré le condo et la....
ET LA c'est parfait!
 

zeltron

Senior Member
essais avec pause 10 non ça ne marche absolument pas
essais avec pause à 300 ça marche parfaitement comme en pause 250 sans difference apparente...
 

zeltron

Senior Member
j'ai parlé trop vite à 300 il commence à se glisser des erreurs
j'ai donc testé 200 ce n'est pas tip top donc je reste à 250
c'est trés bon comme résultat a la fois en fiabilité et vitesse de frappe
comme un clavier classique quoi!
 

PieM

Senior Member
Si on en est à dire qu'à 250 ms de tempo ça marche (pourquoi ?) et plus à 200 ms ni à 300ms (pourquoi ?), c'est mal barré !

Je pense que c'est perdre son temps que de faire l'autopsie des entrées ana alors que c'est celle du clavier qu'il faut faire !
Si, comme je le suppose, c'est un clavier type membrane souple avec des contacts faits par couche conductrice et peigne sur circuit imprimé, il se comporte comme une résistance variable en fonction de la force appliquée. C'est pour cela qu'ils ont généralement de 0 à 200 Ohm de résistance de contact dans les specs.
Les mesures du début montrent que la dispersion observée sur une même touche est fonction de la résistance de la branche ligne colonne. Ce qui est totalement simulable en faisant varier une résistance de contact. la seule façon d'améliorer les chose est d'avoir des réseaux de R grandes par rapport aux R de contact. Mais se posent après d'autres problèmes.

J'ai plusieurs claviers de ce type sur des appareils faits à partir d'autres µC que le Picaxe. Je les ai tous décodés par la méthode de scrutation numérique des lignes/colonne, seule solution fiable pour ce type de produit.
Le mode résistif ne peut être au mieux utilisé qu'avec des contacts mécaniques de qualité.

Le problème est maintenant de savoir qu'elle est l'intérêt d'utiliser un clavier dans ce projet ! Car si c'est pour rentrer un nombre compris entre 0 et 30 de temps en temps, c'est très luxueux.
Si c'est pour le fun c'est autre chose...
Actuellement je termine un programmateur régulateur pour four céramique qui comprends 20 programme de 15 segments chaque segment étant configurable en durée de 0 à 6h et en température de 0 à 1200°C, le tout avec 2 BP ,un codeur rotatif, et un afficheur 4 lignes.
 
Last edited:
Top