positionnement avec un moteur pas à pas

dje8269

Senior Member
Utiliser le 0 pour sortir signifie , qu'il n'ai pas utilisable pour les chiffres. donc impossible d'écrire 100 ou 30 ou 1000.
On peut toujours utiliser * pour sortir mais alors il faut faire un autre menu qui choisi si on veut incrementer ou décréménter avant.
Le problème de pouvoir 4 chiffres jour également sur l'affichage. Depuis le début tout est calculé pour que les 2 chiffres finisse à la fin de la deuxième ligne.

Soit on fait un autre s/prog clavier pour les 4 chiffres ou alors on modifie l'existant .a testé à mon avis
 

PieM

Senior Member
Utiliser le 0 pour sortir signifie , qu'il n'ai pas utilisable pour les chiffres. donc impossible d'écrire 100 ou 30 ou 1000.
Ben oui c'est pas génial !!!
Soit on fait un autre s/prog clavier pour les 4 chiffres
Gag ....?

Autre chose:
le systeme pour actionner ce moteur avec le "tout clavier" devient une usine à gaz !
mettez un potard (qui servira à autre chose ensuite, d'ailleurs) entre 0V et 5V sur une entrée A.1 par exemple.
ensuite ce programme :

Code:
[color=Black]commande_pont:    [/color][color=Green]' cde manuelle du pont - vitesse et sens fonction du potard
                  'avec zone neutre entre 480 et 550
   '---------------------------------------  
   [/color][color=Blue]do    [/color][color=Green]'boucle d'attente potard au neutre 
         [/color][color=Blue]readadc10 A.1[/color][color=Black], var_temp
         [/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]139[/color][color=Black],[/color][color=Red]"attente 0"[/color][color=Blue])
   loop while [/color][color=Black]var_temp [/color][color=DarkCyan]> [/color][color=Navy]550 [/color][color=DarkCyan]or [/color][color=Black]var_temp [/color][color=DarkCyan]< [/color][color=Navy]480
   [/color][color=Green]'-----------------------------------------[/color]
[color=Blue]do 
   readadc10 A.1[/color][color=Black], var_temp
         [/color][color=Blue]select [/color][color=Black]var_temp 
            [/color][color=Blue]case [/color][color=DarkCyan]> [/color][color=Navy]550 
                  [/color][color=Black]var_temp [/color][color=DarkCyan]= [/color][color=Navy]1024[/color][color=DarkCyan]- [/color][color=Black]var_temp
                  dir [/color][color=DarkCyan]= [/color][color=Navy]1
                  [/color][color=Blue]pulsout [/color][color=Black]pas,[/color][color=Navy]1 [/color][color=Black]: [/color][color=Blue]inc [/color][color=Black]Pos_actuelle: [/color][color=Blue]pause [/color][color=Black]var_temp
                  [/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]139[/color][color=Black],[/color][color=Red]">>>>>  "[/color][color=Blue])
            case [/color][color=DarkCyan]< [/color][color=Navy]480 
                  [/color][color=Black]dir [/color][color=DarkCyan]= [/color][color=Navy]0
                  [/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]139[/color][color=Black],[/color][color=Red]"<<<<<  "[/color][color=Blue])
                  pulsout [/color][color=Black]pas,[/color][color=Navy]1 [/color][color=Black]: [/color][color=Blue]dec [/color][color=Black]Pos_actuelle: [/color][color=Blue]pause [/color][color=Black]var_temp
            [/color][color=Blue]case else
                  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]139[/color][color=Black],[/color][color=Red]"Stop  "[/color][color=Blue])
      end select
   readadc A.0[/color][color=Black], touche[/color]
[color=Blue]loop while [/color][color=Black]touche [/color][color=DarkCyan]>[/color][color=Navy]240[/color]
Principe: on appelle ce sous prog:
si le potard n'est pas à peu près en zone centrale (arrêt) on attend qu'il le soit, pour éviter toute man&#339;uvre intempestive.
dès qu'on le tourne dans un sens ou dans l'autre , le moteur suit, avec une vitesse variable.
un appui sur n'importe quelle touche du clavier renvoie au programme appelant.
là, décision de ce qui est fait de la nouvelle valeur Pos_actuelle.

J'utilise uniquement la variable temporaire que j'avais défini dès mon premier programme.

Ce principe (et ce même potard) pourra être utilisé pour définir certains paramètres de vitesses maxi dans un sens ou dans l'autre, de commande manuelle d'une loco etc...

Encore autre chose:

Il ne faut pas oublier que la mémoire EEPROM du picaxe est effacée à chaque chargement de programme.
C'est à dire qu'il faut impérativement mettre les valeurs d'initialisation des voies en EEprom lors du chargement.
d'où ma ligne EEPROM (.....) au début de mon programme initial.
ça veut dire qu'il faut les relever à la main après une initialisation des voies !
Autre solution qui serait préférable:
il y a ces valeurs à rentrer (sans se gourer puisque vous ne voulez pas que le N° de voie corresponde exactement à l'adresse mémoire), mais aussi les valeurs liées au paramètre des "trimmers" qui seront numériques.
Donc la meilleure solution serait de stocker tout ça sur une EEprom externe.

Les entrées analogique sur X2 sont à configurer avec adcsetup.
pour A.0 et A.1 : adcsetup $03
 

dje8269

Senior Member
le systeme pour actionner ce moteur avec le "tout clavier" devient une usine à gaz !
Je suis d'accord avec toi . Surtout qu'avec ma méthode , je vais pas a l'économie de ligne de code , mais ca a l'avantage d'etre compréhensible pour un novice

d'où ma ligne EEPROM (.....) au début de mon programme initial.
bien vu , je me demandais à quoi elle pouvait bien servir cette ligne , ça évite de se retaper tout les réglages a chaque fois qu'on reprogramme

La mémoire est une très bonne idée,ça complique le hard et le soft pour un débutant ; communication i2c et ligne d'écrire dans les registres, mais rien d'insurmontable.

depuis le début moi aussi j'avais proposé la fabrication d'un "pupitre" avec quelques potar et quelques BP , voir même quelques inter a leviers . Mais je me plie au exigence de zeltron .

Zeltron, tu dois d'ailleurs commencer a te rendre compte , que les changements deviennent de plus en plus ardus . Et après le moindre ajout ou modification deviendra lourd . Mais sache que c'est possible et qu'on peut rester comme ca et continuer . Moi je rejoins PieM, sur l'idée du potar et je vais plus loin avec des inter et des BP , mais si tu veux pas ; no problemo on continu.
 

zeltron

Senior Member
no souci pour ajouter un potard surtout qu'il peut servir pour la suite à régler le rapport cyclique d'une des alims pwm non?

ah et bien voila à quoi servait la fameuse ligne de reservation eeprom!;)
sans se gourer puisque vous ne voulez pas que le N° de voie corresponde exactement à l'adresse mémoire),
ce n'est pas que je ne veux pas c'est que je ne savais pas pourquoi!
n'ayant pas suffisament d'experience pour juger de l'avenir je progresse avec ce developpement qui est pédagigique pour moi
ok pour l'eeprom externe
communication i2c et ecriture dans les registre ok de toute façon c'est la suite à donner pour les petites cartes 16 entrées/sortie que j'ai acheté
vers quel eeprom ou carte dois-je m'orienter?
vi les changement deviennent de plus en plus hard
alors ok pour prendre le bon chemin maintenant!
mais s'il faut le changer plus tard ça sera un peu plus facile que de tout refaire car j'aurais assimilé chaque bride de sous programme
vais cabler le potie!
 
Last edited:

dje8269

Senior Member
vers quel eeprom ou carte dois-je m'orienter?
Je ne pense pas que tu es besoin de gros . mais au vue de la différence dérisoire de prix entre une petite et une grosse autant prendre la grosse : moi j'ai utilisé celle ci

Nickel avec le potar ! je crois qu'un 10K c'est le plus adéquat si tu as ca dans tes fonds de tiroir. sinon un autre fais aussi l'affaire , mais apres c'est une question d'impedance un truc du genre, je laisse la main aux experts la dessus
 

PieM

Senior Member
no souci pour ajouter un potard surtout qu'il peut servir pour la suite à régler le rapport cyclique d'une des alims pwm non?
bien sûr ! Ce qu'il faut comprendre c'est qu'un même organe (potard ici) va servir à plusieurs choses en fonction du programme.
Tel que le prog est fait avec des sous programme bien définis, en fonction du besoin futur, rien n'empêche de déporter ces s/prog vers un autre picaxe si le besoin s'en fait sentir.
Je pense en particulier à la gestion automatique des vitesses ou autres bricoles.

Je préfèrerai que vous partiez sur une EEprom externe effectivement. prendre dans la série 24LC xxx . la capacité n'est pas critique. Si c'est une 256, pas besoin de gérer les pages.
SI c'est le cas vous pouvez conserver la numérotation actuelle des voies de 1 en 1.
utilisez la formule adresse mémoire = N°de voie - 1 * 2 permet de charger en mémoire à partie de l'adresse 0 ce qui ne poserait pas de pb en cas de changement de page selon l'EEprom.

Un pot de 10k à 22k va bien
 

zeltron

Senior Member
voila j'ai câblé mon potie de 10k
j'ai fait des tests ça marche super
avec le potie c'est un peu moins facile que le clavier pas à pas mais c'est une question d'habitude
y'a un truc que je trouve bizarre
avec le précedent programme le pas de la voie 1 était vers 32200
maintenant il se trouve vers 31801!!!! c'est quoi donc??? la meca n'a pas changée!
je vous livre le code que j'ai bidouillé à ma sauce j'ai peut être fait une cacade...
View attachment Zeltron2.txt
 

dje8269

Senior Member
avec le potie c'est un peu moins facile que le clavier pas à pas mais c'est une question d'habitude
Hummmm C'est à dire ? ca tourne trop vite , pas assez .

maintenant il se trouve vers 31801!!!! c'est quoi donc??? la meca n'a pas changée!
Effectivement ce n'est pas normal ; j'ai regardé vite fait le code . Je pense qu'il s'agit de la precision du potar qui laisse a désirer ; En numérique quand on fait plus 1 ca avance d'un 1/8 de pas , avec le potar peut etre que ca avance de plus voir surement ; Je laisse PieM décortiquer ce soucis ;
 

zeltron

Senior Member
non non ni trop vite ni pas assez c'est simplement l'ergonomie qui est moins évidente
mais c'est pas méchant!

et pour le pb de pas je n'ai pas d'idée pour l'instant c'est pas grave puisque la voie est retrouvée
 

BESQUEUT

Senior Member
non non ni trop vite ni pas assez c'est simplement l'ergonomie qui est moins évidente
mais c'est pas méchant!

et pour le pb de pas je n'ai pas d'idée pour l'instant c'est pas grave puisque la voie est retrouvée
J'avais proposé une ergonomie "en croix" sur le clavier :
4 pour aller à gauche
6 pour aller à droite
8 pour aller plus vite (vitesse mise à jour sur l'écran)
2 pour aller moins vite
# pour sortir sans enregistrer
* pour valider et sortir
Avec cette méthode, on peut avancer (ou reculer) d'un seul 1/8 pas
ou alors de 1/4 en 1/4, 1/2 en 1/2, pas entiers, double pas, etc... à chaque pression.

En particulier votre programme ne permet que très difficilement d'avancer d'un seul 1/8 pas.
Pour faire ça, il faudrait tourner le potar jusqu'à ce que la pont avance, puis immédiatement revenir en arrière.
Mais comme le déplacement est (au sens propre) microscopique, il est trop tard quand l&#8217;&#339;il & décelé le mouvement.
 
Last edited:

PieM

Senior Member
dje said:
Je pense qu'il s'agit de la precision du potar qui laisse a désirer ; En numérique quand on fait plus 1 ca avance d'un 1/8 de pas , avec le potar peut etre que ca avance de plus voir surement
Le potard ne change rien à l'affaire ! il ne définit que le temps entre deux pas et le sens. Donc on ne fait que 1/8 pas après 1/8 pas. Et à la vitesse la plus lente il fait environ un pas (8 1/8) par seconde. Avancer d'un seul 1/8 pas c'est bouger de 4/100 de mm. il faut avoir l'oeil affuté !
 
Last edited:

dje8269

Senior Member
Le potard ne change rien à l'affaire ! il ne définit que le temps entre deux pas et le sens.
Autant pour moi , j'avais compris qu'apres . Effectivement il ne change que le temps! Je n'ai donc pas d'explication ! Je laisse la main
 

PieM

Senior Member
zeltron said:
avec le précedent programme le pas de la voie 1 était vers 32200
maintenant il se trouve vers 31801!!!! c'est quoi donc??? la meca n'a pas changée!
Ben c'est simplement que le sens comptage décomptage n'est pas bon ....
le 0 est à 32000 avant c'était 32200 soit + 200
et là c'est 31801 soit 32000 - 199 !
il faut inverser les dir = 1 et dir = 0 . Et peut être aussi l'indicateur de sens de marche sur l'afficheur ...

Ce qu'il faut au point de vue ergonomie, c'est le le sens de rotation potard soit le même que le sens de déplacement du pont, bien sûr.
Si ce n'est pas le cas inverser le branchement du potard ...
 
Last edited:

zeltron

Senior Member
ah et bien voila pourquoi j'ai été obligé de changer ccw et cw et javais déjà changé le sens des fléches
tout s'explique!
quel logique!

et le potard c'est po grave c'est parfait comme ça
je commence déjà à m'habituer
de toute façon l'étalonnage total des voies ne devrait que servir qu'une fois
et puis je me souviens que Piem avait dit que l'on pouvait refaire
un étalonnage auto apres un 1er enregistrement d'une voie
si la courroie pete etc...
pour l'instant n'ayant pas l'eeprom je vais passer commande
pour grouper les frais de port il me faudrait quoi comme picaxe pour faire les 2 alims pwm manquantes?

passons à autre chose

l'i2c pour piloter par exemple les petites droleries pcf8575
j'avais trouvé un peu de doc je ne sais plus ou sur les pcf 8574
mais ça doit être différent des pcf 8575 en adresse?
c'est evidemment dans le but de piloter la carte relais pour alimenter les voies sélectionnées pour le pont
 
Last edited:

PieM

Senior Member
ah et bien voila pourquoi j'ai été obligé de changer ccw et cw et javais déjà changé le sens des fléches
tout s'explique!
quel logique!

et le potard c'est po grave c'est parfait comme ça
je commence déjà à m'habituer
Concernant l'ergonomie , je pense que c'est préférable de commander un organe en mouvement réel avec un potard, un joystick ou un volant.
On peut piloter un avion à partir d'un clavier mais c'est pas top.

J'avais zappé la directive #no_data à mettre tout en début de programme pour ne pas écraser l'EEprom au chargement de programme. donc utiliser l'eeprom du picaxe.
pour les pcf8575 c'est là : data_sheet/PCF8575.pdf
plus complet : http://www.ti.com/lit/ds/symlink/pcf8575c.pdf

et puis je me souviens que Piem avait dit que l'on pouvait refaire
un étalonnage auto apres un 1er enregistrement d'une voie
si la courroie pete etc...
en cas de changement de courroie, ou de démontage remontage moteur, il n'y a pas de réétalonnage des voies à faire: uniquement l'initialisatio du pont à 0.
Il ne faut pas oublier que la référence est la fente située sur le pont lui même. donc tout pendant qu'on ne bouge pas la voie par rapport au pont, ou les voies autour, il n'y a rien à faire de plus.
Le moteur trouvera toujours un 1/8 de pas pour se caler...
 
Last edited:

zeltron

Senior Member
alors pour avoir à refaire un étalonnage
il faudrait dévisser l'ecrou qui maintient la poulie sur l'axe de rotation du pont

j'ai retrouvé l'info exemple pour la carte 8574
Code:
; Utilisation d&#8217;un circuit i2c pcf8574
; le PICAXE est maître, le pcf8574 est l&#8217;esclave et utilise l&#8217;adresse i2c %01000000
symbol data = b0;
hi2csetup i2cmaster, %01000000, i2cslow, i2cbyte ; adressage pcf8574,
;mode slow en octet
debut:
let data = 240 ; charge data avec la valeur 240 soit %11110000
hi2cout (data) ; envoi de la donnée data
pause 500 ; attente de 0,5 seconde
let data = 15 ; charge data avec la valeur 15 soit %00001111
hi2cout (data) ; envoi de la donnée data
pause 500 ; attente de 0,5 seconde
goto debut ; aller à debut, bouclage du programme
ça ne doit pas être tres different de ce code pour les cartes 8575
il ne doit y avoir que les adresses de differentes non?
et encore pas certain car sur la doc c'est marqué
0100aaa
 
Last edited:

dje8269

Senior Member
Ben je d'iris que c'est pareil même lol.mon anglais technique et normal aussi,d'ailleurs, n'est pas bon , mais je crois avoir lu, à la page adressing, qu le l'adresse est bien %01000000. Dans le cas où tu met À 0,A et A à zéro (ce que je te conseille).

ça ne devrais donc pas être sorcier !

Attend l'avis d'un expert quand même.
 

PieM

Senior Member
alors pour avoir à refaire un étalonnage
il faudrait dévisser l'ecrou qui maintient la poulie sur l'axe de rotation du pont
exact



Oui l'adresse de base est la même.
par contre, il est possible de mettre 8 pcf sur la même ligne I2C.
ils sont différenciés par leur adresse complémentaire, liée à la valeur de A0, A1 et A2 (3bits donc 8 possibilités) à relier directement à Gnd ou Vcc.
la première adresse sera donc %01000000
la seconde %01000010
....
la dernière: %01001110
le dernier bit est toujours à 0 car géré par les picaxes
 

PieM

Senior Member
ok j'ai tout compris pour une fois!:D
et pour ce display pour le synoptique de commande y'a pas moyen?
http://www.ebay.com/itm/3-2-inch-480x320-TFT-LCD-module-w-Font-IC-ILI9481-arduino-DUE-MEGA-2-8-3-5-/121097673674?pt=LH_DefaultDomain_0&hash=item1c31fbdbca
Parceque je commence par baver dessus....
Avec autre chose qu'un Picaxe, sans doute car des bibliothèques semblent exister.
Il peut même remplacer votre clavier car il a un touchpad !

Moi je veux bien ... si quelqu'un veut s'en charger.
Mais vous n'avez pas fini de baver dessus si vous vous en sortez!
 

zeltron

Senior Member
tant pis dans une autre vie peut être que j'aurais un v12 dans le crâne
pour l'instant c'est plutot le genre citroen deudeuche :D
 

dje8269

Senior Member
T'inquiete pas , ce sera envisageable dans le futur , mais il est vrai que la tu vise super haut .

Imagine qu'il ne s'agit que d'un interface en plus a rajouter , donc quand tout seras finis, tu pourras t'y jeter, pour le moment ca me parait aussi, prematuré. Une intefaca tactile c'est pas rien, plus l'affichage etc ....

par contre j'aurais plus vu un ecran de 4 lignes au lieu de deux , pour les menus :p
 

zeltron

Senior Member
ce n'est pas l'interface tactile qui m'interresse evidemment c'est un plus
mais la possibilité de ne pas faire de synoptique à led mécanique,
si je fais un truc dans ce genre apres je n'ai plus besoin d'un écran lcd
alors c'est pour cela que je prefere réflechir au choix tout de suite
c'est soit ecran lcd , soit synoptique méca
et comme le synoptique méca est fait avec les pcf 8575 le choix est maintenant...

et pour le petit display menu je le trouve super
tres pratique pas encombrant, facile, j'aime, je le garde!:rolleyes:
 

BESQUEUT

Senior Member
T'inquiete pas , ce sera envisageable dans le futur , mais il est vrai que la tu vise super haut .

Imagine qu'il ne s'agit que d'un interface en plus a rajouter , donc quand tout seras finis, tu pourras t'y jeter, pour le moment ca me parait aussi, prematuré. Une intefaca tactile c'est pas rien, plus l'affichage etc ....

par contre j'aurais plus vu un ecran de 4 lignes au lieu de deux , pour les menus :p
A ce niveau là (aussi bien niveau prix que programmation) autant récupérer un portable et programmer sous Windows (genre VB.NET gratuit chez crosoft...) ou idem sous Androïd
C'est plus seulement de la course à pied, c'est au moins du saut à la perche...
 

zeltron

Senior Member
pouvez vous m'assurer que le programme en # 497 fonctionne
déjà il comporte une 1er erreur sur
symbol data
data est considéré comme instruction
je le renome en dat par exemple je joue avec toutes les combinaisons des valeurs binaires de sorties, les pauses
mais ça ne marche pas
je suis certain de mon câblage ya 4 fils c'est pas compliqué!
picaxe sortie 23 pour data vers pcf en 23
picaxe sortie 18 clock vers pcf en 22
+5v et masse et 2 résistances de 4.7k en pull up sur le bus serie....
adressage en 000 shunté à la masse....
donc je soupconne encore le programme
toute les sorties carte pcf sont à 1 (avec programmation.... ou pas...)
j'ai enfiché la pcf sur la carte relais sainmart qui reste éteinte (alimenté sur 12v)
sauf quand je câble sur les sorties pcf des leds pour voir leurs états alors à ce moment
les sorties concernées (pour le câblage des led sur carte pcf) de la sainsmart s'allument
moi qui pensais finger in the noze
je n'ai pas de blair....

sur ce je vais au boulot j'ai hâte de vous lire
merci encore
 

BESQUEUT

Senior Member
pouvez vous m'assurer que le programme en # 497 fonctionne
déjà il comporte une 1er erreur sur
symbol data
data est considéré comme instruction
je le renome en dat par exemple je joue avec toutes les combinaisons des valeurs binaires de sorties, les pauses
mais ça ne marche pas
je suis certain de mon câblage ya 4 fils c'est pas compliqué!
picaxe sortie 23 pour data vers pcf en 23
Effectivement il faut changer le nom de cette variable.
L'adresse est celle d'un pcf8574.
Sur cette notice l'adresse est %01000000 page 6
mais 32 en décimal page 8 soit %00100000
Mais je n'y crois guère, les autres fournisseurs adoptant la même adresse que le PCF8574.
D'autre part, il faut envoyer deux octets pour activer les 16 sorties.
Mais avec un seul octet ça devrait marcher sur les 8 premières sorties.
Pas d'autres idées.
Peut-être pourriez vous publier une photo de votre montage ?
 
Last edited:

PieM

Senior Member
l'adresse du 8575 est la même que le 8574.
voir #499
par contre sur un 8575, il faut envoyer les deux octets représentant les ports 0 à 7 et 10 à 17.
ce n'est qu'après que les sorties sont mises à jour.
 

zeltron

Senior Member
j'ai envoyé 2 octets combiné en décimal ou binaire ça ne marche pas
peut être que je ne le fais pas correctement
Code:
; test du circuit i2c pcf8575
; le PICAXE est ma?tre, le pcf8575 est l?esclave et utilise l?adresse i2c %01000000
#picaxe 40X2
'************  initialisation   *******************
setfreq m16             'frequence 16MHz interne
'*********** variables **************************
; le PICAXE est ma?tre, le pcf8575 est l?esclave et utilise l?adresse i2c %01000000

symbol dat= w0
hi2csetup i2cmaster, %01000000, i2cslow, i2cbyte ; adressage pcf8575,
;mode slow en octet

let dat = %1111111111111111 ; charge data 65535 OU  %11111111_11111111
hi2cout (dat) ; envoi de la donnée data
pause 500 ; attente 
let dat = 0 ; charge data avec la valeur  %0000000000000000
hi2cout (dat) ; envoi de la donnee data
pause 500 ; attente 
debut:
let dat =0
hi2cout (dat)
pause 5000
let dat = 1
hi2cout (dat)
pause 5000
let dat = 2
pause 5000
goto debut ; aller ? debut, bouclage du programme
peut être doit il être mis en mode fast 400khz?
 
Last edited:

BESQUEUT

Senior Member
peut être doit il être mis en mode fast 400khz?
Ce n'est pas nécessaire, mais maintenant que vous avez la bonne syntaxe, ça serait bien de le faire.
Pour le moment il n'y a qu'un seul circuit sur le bus, mais ça risque d'augmenter...
Donc autant libérer le bus et le Picaxe le plus vite possible.
 

zeltron

Senior Member
ok merci!
décidement j'ai du mal à voler de mes propres ailes...
depuis ce matin
je cherche à faire une boucle
pour un chenillard i2c
ce n'est déjà pas simple pour moi mais en plus il me faut une instruction dans cette boucle
qui utilise le complement à 1
y'a bien l'instruction toggle mais ce n'est pas pour i2c....
et oui toujours les idées fixes...
c'est pour initialiser les aiguillages par exemple tous droit...
ils ne doivent pas être pilotés en même temps et son pilotés en logique inverse à cause des inverseurs 2803...
ou alors inverser les sorties de la carte pcf avec des inverseurs 7404?
 

BESQUEUT

Senior Member
Code:
; test du circuit i2c pcf8575
; le PICAXE est ma?tre, le pcf8575 est l?esclave et utilise l?adresse i2c %01000000
#picaxe 40X2
'************  initialisation   *******************
setfreq m16             'frequence 16MHz interne
'*********** variables **************************
; le PICAXE est ma?tre, le pcf8575 est l?esclave et utilise l?adresse i2c %01000000

symbol dat= w0
'hi2csetup i2cmaster, %01000000, i2cslow, i2cbyte ; adressage pcf8575,


dat=1
do
	dat=dat<<1+bit15
	w1=not dat
'	hi2cout (b0,b1)
	pause 500
loop
marche en simulation
Choisir w1 ou w0 suivant logique positive ou négative
 
Last edited:

zeltron

Senior Member
pff je tourne encore en rond avec mes aiguillages
enfin la comme ci dessus je m'entraine sur ma carte relais c'est idem point de vue commande
et ça evite de cramer les aiguillages

je tourne en rond car je ne sais pas comment utiliser le basic pour parvenir a
exemple
aprés avoir placer tous les aiguillages en positions droites
dois je utiliser autant de bit que d'aiguillages pour memoriser cette infos
et d'ailleurs dois je mettre le résultat en memoire
je serais tenté de dire non car les aiguillages possedent un levier manuel qui pourrait être déplacé
entre 2 allumages picaxe
d'ou l'utilité de l'init aiguillages

ou faire un genre de bascules avec memoire ou telerupteur logiciel
apres avoir appelé un aiguillage et demandé une commutation
il faudrait peut être inverser une variable bit
bref je patoge dans ces questions existentielles....
et je sens que si je m"y prends pas bien ça vite devenir une usine à gaz
 
Last edited:

PieM

Senior Member
En début de session, vous allez définir un circuit.
donc une position particulière de vos aiguillage sur le circuit actif. Peu importe leur position initiale.
Par contre si vous vous amusez à changer manuellement une position d'aiguillage sur ce circuit, c'est la cata assurée.
Inutile donc de mettre en mémoire.

chaque pcf a deux ports 0à7 et 10 à 17, image de b0 et b1 par exemple. b0 va être l'image des aguilles à commander à droite, et b1 l'image des aguilles à commander à gauche.
l'état de 8 aiguillages va être défini dans votre programme par un octets.
disons pos1_aiguil = %00101100
cad les aiguilles 1,2,5,7,8 à droite donc les autres à gauche.
pour commander vos aiguilles :
vous aurez b0 = pos1_aiguil donc %00101100
et b1 = not pos1_aiguil soit donc %11010011

et pour envoyer ça sous forme cadencée:

Code:
w1 = 1
do
  w2 = w0 & w1
  hi2cout (b0,b1)
  pause x
  w1 = w1 * 2   (ou bien  w1 <<1 sur X2)
loop until w1 = 0
 
Last edited:

PieM

Senior Member
Pensez bien à respecter le câblage :

aiguillage n°1 par exemple, la bobine droite sur le port 0 du pcf, la bobine gauche sur le prt 10 etc ... abstraction faite de l'ULN intermédiaire.
 
Top