Véhicule RC

dje8269

Senior Member
Bonjour à tous,

Me voici dans le gros du projet. La fabrication d'un VHL radio-commandé , piloté en FPV ( avec camera embarqué et retransmission en direct de la vidéo pour la conduite).

Ce post à pour but de réfléchir sur l'architecture à adopter pour le faire fonctionner au mieux .Car il reste différent du proto tout de même.

J'ai déjà réfléchis à la question , mais plein de question reste en suspend, car je n'ai pas les connaissances nécessaire pour y répondre en avance de phase .Si vous le désirez je vous propose de m'aider à réfléchir la dessus . Sur la faisabilité ou non de certains truc, sur des idées nouvelles, d'un point de vue exterieur .

Je précise que rien n'est figé, je dois toujours gardé en tête une mini marge de manœuvre ( par exemple laissé des broches libres pour d'autres périphériques ou options qu'on me demanderai de rajoutés, ou un changement d'équipements avec d'autres options , camera par exemple zoom pas zoom etc ....). Le cahier des charges n'est donc pas figés, et ne pourra jamais l'être.

Beaucoup de paramètres sont à prendre en compte, et je vais essayer de les expliquer au mieux ; mais comme je pourrais jamais penser a tout , car je manque d'expérience , n'hésitez pas a posez vos questions .

Par ou commencer : les fonctions du VHL ?

- être piloter par RC
- activer ou non sa vidéo à distance par réfléchir
- activer ou non deux périphériques embarqués à distance par TOR
- passer les vitesses par TOR mais avec mouvement de servo (et extérieur d'arrêt pour ne pas endommager les pignons)
- Passer les différentiels avant et arrière par TOR mais avec mouvement de servo ( même protocole d'arrêt que les vitesses)
- tourné les roues avant ( un servo par roue , deux servos en phase sur le même axe)
- Avoir un protocole spécial en cas de perte de communication
- Avoir un protocole en qu'a de longues pertes de communication, pour la retrouvée ( test a faire avec le proto et en cours de réflexion)
- faire bouger une camera en pan et tilt .

Voila j'espère ne rien avoir oublié .

Concernant les priorités :
La plus grande des priorités , c'est la communication avec celui ci .En effet il en va de sa sécurité, il pourrait tombé, foncé sur un obstacle etc ..... mais ca ne concerne pas les picaxe, je pense . La deuxième , c'est la réactivité du VHL pendant la conduite . la ca concerne les picaxes, il est préférable d'actualisé aussi souvent que possible les ordres de pilotage, quitte à perdre de la réactivité pour les TOR . Je préfère que le VHL s'arrête instantanément , plutôt qu'il active sa vidéo . En termes de priorité les TOR doivent passer en second plan .

Concernant la sécurité :
Comme dit plus haut , le pilotage reste prioritaire sur tout, il en va de son intégrité physique lol. Mais toutefois sur le plan de la sécurité et non de la priorité, il conviendrait d'effectuer un arrêt d'urgence en cas de perte de com ou dans certains cas pour ne pas l'endommager . Notamment pour le passage de vitesse et la mise en place des deux différentiels ( avant et arrière).

Fonctions particulières:
-Un protocole de recherche de communication est prévu à l'essai . à l'heure actuelle, la seule façon viable à mon sens, serait le retour du VHL sur une certaine durée dans le sens inverse ; Ce qui implique l'enregistrement des mouvements en mémoire EEprom. et donc change l'architecture. ce protocole pourra être automatique ou manuel
- Le mouvement de la camera doit être fais a l'arrêt, par activation d'un TOR ( BP sur la télécommande), et utilisé le même joystick que la marche avant/arrière .

Et le reste :
L'allumage de la vidéo , des périphériques embarqués , des phares etc .... seront au dernier plan .

Voila j'espère ne rien avoir oublié .

Maintenant la base posée , lancement des débats .

Ce à quoi je pensais pour l'architecture .

Un 14M2 dédié pour la réception radio et la distribution des ordres . En communication en i2C il serait donc maitre et pourras écrire ses données reçues par RF sur le 20X2 ou 28X2 .
Pourquoi dédié ? pour permettre la détection de la perte de communication .

Un 20X2 ou 28X2 en esclave ( d'ou le X2) , pour la gestion des TORs, mais il devra également être capable d'écrire sur le SD20 pour donné les ordres aux servos, après traitement de l'information ( mise a l'échelle). Il devra pouvoir aussi écrire sur l'Eeprom les infos ( si cette option est retenue).

Le SD20 lui en esclave ne fait que recevoir des ordres de la part du 28X2 ou du 20x2 .

Et enfin la mémoire EEProm qui relié au 28X2 ou 20x2 serait écrite pour le stockage des différentes infos de moteur et direction seulement. ( le timing se fera au nombre d'ordre recus et non en temps)

Avec cette config Mon 14M2 réception ne fait que recevoir les infos par RF et les transmettre, donc meilleure réactivité ; Même si en réfléchissant autrement il peut recevoir des ordres que toutes les 38ms ( donnée fournis par l'émetteur lors de mes tests). donc on pourra envisagé de faire quelques trucs entre .
Le 20X2 ou 28X2 ferait le gros du travail ; mise a l'échelle des différentes valeurs analogiques reçues . envoyé sur le SD20 par i2c , écriture sur l'eeprom en i2C , et activation des sorties TOR . il doit faire tous ça en moins de 36ms, donc moulinage a fond certainement mais pas sur. Dans le but de ne jamais loupé une info venant du 14M2

Voila ceci est un premier jet qui mérite je n'en doute pas quelques améliorations .

Bien sur , il peut être envisagé d'autre façon de voir les choses, On peut aussi envisagé plusieurs picaxes dédiés genre un pour les TOR , un pour les ordres au SD20 ....
je ne suis presque pas contraint par la place sur lVHL contrairement à la télécommande, même si je souhaite mettre tout ça, dans une boite métallique pour le blindage !

Peut etre que mon projet est utopique, mais si vous voulez y participez se sera avec un grand plaisir que je débattrai avec vous sur ce sujet .


Celle que je trouve belle

« On commence par dire : cela est impossible pour se dispenser de le tenter, et cela devient impossible, en effet, parce qu'on ne le tente pas. » de Charles Fourier
« Il n'y a qu'une seule chose qui rend un rêve impossible à réaliser : La peur de l'échec. » Paulo Coelho
« L'impossible est ce qui ne peut pas être et qui pourtant est. » de Yvon Rivard
« Agissez comme s'il était impossible d'échouer. » de Winston Churchill
 

PieM

Senior Member
je rajouterai "Pourquoi faire simple quand on peut faire compliqué?"

Car partir avec un système avec boite de vitesses , différentiels blocables et direction avec servos séparés sur chaque roue, c'est vraiment chercher la difficulté déjà au niveau mécanique et commande !

rien que pour commander les servos en respectant l'épure de direction, je souhaite du plaisir !!
 

PieM

Senior Member
Ça c'est bon. !
Je ne connais pas l'empattement ni la voie de ton engin, mais de toute façon l'écart d'angle est lié au rayon de braquage. ce n'est pas une valeur fixe.
sur un virage serré il peut atteindre 20°
Donc ne pas s'étonner si les trajectoires en marche AV et en marche AR ne sont pas les mêmes.
 

dje8269

Senior Member
J'ai effectué quelques tests afin de valider mon architecture ou non . Ma plaquette d'essai est montée comme ceci :

Sans titre.jpg

Le programme est celui ci :

Code:
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]

[color=Green]'#################################################################################
'##########################   Programme 20X2 Slave   #############################  
'#################################################################################


'########################  Configuration  ########################

'b0 a b7 pour les communications


'########################  Initialisation  ########################[/color]

[color=Blue]setfreq m8                    

hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10100000 [/color][color=Green]' Met le 20X2 en Esclave[/color]

[color=Blue]high C.1
pause [/color][color=Navy]500[/color]
[color=Blue]low C.1[/color]

[color=Green]'#################################################################################
'##########################    Programme Principal    ############################  
'#################################################################################[/color]
[color=Black]main:[/color]
[color=Blue]do
low C.0

hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10100000 [/color][color=Green]' Met le 20X2 en Esclave      [/color]

[color=Blue]do loop while [/color][color=Purple]hi2cflag [/color][color=DarkCyan]= [/color][color=Navy]0    [/color][color=Green]' j'attend tant que j'ai recu
            
      [/color][color=Blue]get [/color][color=Navy]0[/color][color=Black],[/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7       [/color][color=Green]' Lecture du scratchpad
      [/color]
[color=Purple]hi2cflag [/color][color=DarkCyan]= [/color][color=Navy]0      [/color][color=Green]' armement du flag[/color]

[color=Blue]high C.0    [/color][color=Green]' On allume une led pour visualis� la recetpion d'une consigne[/color]

[color=Purple]b3 [/color][color=DarkCyan]= [/color][color=Purple]b3[/color][color=DarkCyan]+[/color][color=Navy]24  [/color][color=Green]' Mise a l'echellerapide pour test[/color]


[color=Blue]hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%11000010[/color][color=Black], [/color][color=Blue]i2cfast_8[/color][color=Black], [/color][color=Blue]i2cbyte    [/color][color=Green]' met le 20X2 en mode maitre pour envoi au SD20[/color]
[color=Blue]pause [/color][color=Navy]50[/color]

[color=Blue]hi2cout [/color][color=Navy]17[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b3[/color][color=Blue])    [/color][color=Green]' envoi de l'info au SD20[/color]

[color=Blue]pause [/color][color=Navy]200[/color]

[color=Blue]loop[/color]
Malheureusement, la led s'allume au premier envoi de données , donc l'info passe , et arrive au servo car il bouge furtivement ;
Mais ensuite la led reste éteinte . Donc le l'info n'est pas reçue .

Je suppose que c'est la remise en mode esclave qui pose problème ? non ? car que ce passe t-il du flag qu'on a remis à un ?
 

PieM

Senior Member
Sinon l'architecture par rapport au besoin vous semble correct ?
Si on fait abstraction de tous les problèmes qui risquent de se poser, ne connaissant ni les traitements à faire donc les temps de cycles, ni le volume et la fréquence de données à écrire en eeprom, donc les temps d'écriture (qui sont longs) pourquoi pas ?
C'est ta méthode de travail. Pour moi l'expression du besoin est trop succincte. Personnellement je me garde bien de valider ces choix.
 

dje8269

Senior Member
Si on fait abstraction de tous les problèmes qui risquent de se poser
Que voit ut se profiler a l'horizon comme problème ?

ne connaissant ni les traitements
Qu'entends tu par traitement ? les calculs et mise a l'échelle ?

ni le volume et la fréquence de données à écrire en eeprom
Pour moi il y aura deux variables a enregistrer . Le moteur et la direction . le temps lui se calculera en nombre d'information en fait . je m'explique . Le récepteur reçoit les infos toutes les 40ms . donc si le VHL avance pendant 4 secondes , en fait il aura reçu 100 infos . On l'a vu lors des test la précision n'est pas de mise pour le back up , autant que faire se peut. Pour le volume, j'avoue être dans l'inconnu pour ma part ;mais je pensais un peu comme un carte mémoire , une fois pleine , la dernière infos qui arrive écrase la plus ancienne , ainsi on tourne en boucle . jusqu'à qu'on s'en serve, mais je parle sans trop de connaissance c'est vrai .

pourquoi pas ?
Ouf ! un brin d'optimisme

Pour moi l'expression du besoin est trop succincte
demande moi , ce qu'il te manque comme infos ?

Imagine la chose suivante : j'arrive chez toi avec un VHL tout terrain , que je pose sur la table . je place à cote des périphériques. et la je te demande peut tu faire aller ces appareils sur le dos de ton VHL à 500m et plus ? ayant déjà vu le proto a l'œuvre . Que répondrais tu ?
 

PieM

Senior Member
Imagine la chose suivante : j'arrive chez toi avec un VHL tout terrain , que je pose sur la table . je place à cote des périphériques. et la je te demande peut tu faire aller ces appareils sur le dos de ton VHL à 500m et plus ? ayant déjà vu le proto a l'œuvre . Que répondrais tu ?
Ce genre de demande vu le cahier des charges, ne sachant toujours pas en en quoi consiste ton "VHL" , (quelles dimensions, j'ai cru comprendre qu'il était sur roues en non sur chenilles, il est électrique ? thermique?) ce qu'il doit faire , où, et dans quelles conditions de sureté ma réponse est bien évidemment que je décline.
En fait tu as un package de composants et il faut assembler tout pour faire je ne sais quoi ! c'est un Légo ou un Meccano? Non, désolé je t'ai déjà dis que je ne travaillais pas comme ça.
 

dje8269

Senior Member
Il s'agit d'un VHL tout terrain 4x4, électrique, il doit atteindre des endroits non accessibles par l'homme pour cause d'instabilité ( avalanche , éboulement, effondrement etc..) capable d'emporter du matériel et/ou des capteurs de recherche .

Voici la bête que l'on ma demandé de "customisé" en engin de reconnaissance. la plaque du dessus est un premiet jet , popur installer mon electronique .

HPIM2475.jpg
 

dje8269

Senior Member
Avec le schéma en #7 , je n'arrive pas a communiquer avec mes servo .

J'ai essayé de comprendre le problème . Ce peut il qu'il y ai un conflit sur le bus , quand je passe le 20X2 en maitre ( pour écrire sur le SD20) , avec le 14M2 qui lui reste en maitre en permanence, i l n'y aurais pas un conflit ?? j'ai essayé de mettre des diodes pour empêcher le signal de remonter sur le 14M2 mais rien n'y fais ...

Y'aurait-il une subtilité que je n'aurai pas lu sur la doc , ou vu sur le NET car depuis ce matin je sèche. Il faudrait que mon 14M2 soit maitre sur le 20X2 et que le 20X2 après avoir reçu un ordre passe en maitre pour écrire sur le SD20 ! je doute que ce soir réalisable ;

Peut être qu'il faudrait faire écrire le 14M2 sur le 20X2 , que le 20X2 fasse les calculs ; que le 14M2 récupère le résultat des calculs , et les envois au SD20 ?
 

BESQUEUT

Senior Member
Concernant l'enregistrement des ordres, il y a une alternative (donc 2 options) :
- soit on enregistre avec une périodicité connue (commode si les changement sont permanents),
- soit n'enregistre que les modifications et dans ce cas, on enregistre aussi à quel moment le changement a lieu.


En gros : ça ne sert à rien (et ça prends beaucoup de temps) d'écrire 100 fois la même information.
C'est plus pertinent d'écrire :
- Temps 0 : Moteur=0 Direction = 150
- T=123 M=145 D=150
- T=246 M=145 D=220
etc...
Bien que le volume par ligne soit plus important, la seconde solution mobilise souvent moins de volume de données et donc moins de temps d'écriture.
Cela dit, si c'est pour enregistrer les 10 derniers mètres du parcours, ça ne change pas grand chose. Et d'autre part, il existe des mémoire EEprom ou FRAM de très grande capacité à interface I2C ou SPI qui vont bien au delà des besoins.
 
Last edited:

BESQUEUT

Senior Member
J'ai essayé de comprendre le problème . Ce peut il qu'il y ai un conflit sur le bus , quand je passe le 20X2 en maitre ( pour écrire sur le SD20) , avec le 14M2 qui lui reste en maitre en permanence, i l n'y aurais pas un conflit ?? j'ai essayé de mettre des diodes pour empêcher le signal de remonter sur le 14M2 mais rien n'y fais ...

Y'aurait-il une subtilité que je n'aurai pas lu sur la doc , ou vu sur le NET car depuis ce matin je sèche. Il faudrait que mon 14M2 soit maitre sur le 20X2 et que le 20X2 après avoir reçu un ordre passe en maitre pour écrire sur le SD20 ! je doute que ce soir réalisable ;

Peut être qu'il faudrait faire écrire le 14M2 sur le 20X2 , que le 20X2 fasse les calculs ; que le 14M2 récupère le résultat des calculs , et les envois au SD20 ?
Des diodes sur un bus I2C !
Attention : on ne joue pas au petit électricien... Ce sont des données qui passent sur le bus...
Comme déjà dit et répété, il ne peut y avoir qu'un seul maître sur le bus. Si un Picaxe est esclave a un moment, c'est qu'il y a déjà un maître... qui va entrer en conflit si par mauvais esprit le premier était tenté de devenir maître à son tour...
On n'est plus dans les Shadoks là : c'est Iznogoud...
 

dje8269

Senior Member
Des diodes sur un bus I2C !
Lol , bon d'accord j'ai fais mon boulet , mais j'essaye des trucs ..... mdr .

Plus sérieusement . je pense donc que le 20X2 ne peut pas être un coup esclave et un coup maitre !!!! ca change donc l'architecture ........ du tout au tout si tel et le cas .

Je viens de finir un test pas trop mal ! . attention assoyez vous bien au fond du siège !!! ca reste un test .

-Je reçois mon RFin sur le 14M2 .
- j'envoie les infos en i2C sur le 20X2 avec hi2cout
-pause de 2ms (pendant cette pause mon 20X2 effectue des calculs sur les données)
- je vais cherché mes données sur le 20X2 avec un hi2cin
-je passe mon 14M2 en maitre avec un autre esclave (le SD20)
- j'envoie les infos sur le SD20par un hi2cout .

et je reboucle .

Et ben ça marche super !!!!!!

Donc du coup qu'est ce que vous en pensez ? c'est nul ?
 

PieM

Senior Member
je pense donc que le 20X2 ne peut pas être un coup esclave et un coup maitre
Bien sûr que si. Mais il faut comprendre comment fonctionne le bus I2C ce qui n'est pas certain quand on met des diodes "pour empêcher le signal de remonter sur le 14M2 "

Donc du coup qu'est ce que vous en pensez ? c'est nul ?
Fais un chronogramme des deux picaxes et tu en déduiras la réponse....

avalanche , éboulement, effondrement etc..
vu la taille de l'engin et les roues, ce sont des toutes petites avalanches ...
 
Last edited:

dje8269

Senior Member
Fais un chronogramme des deux picaxes et tu en déduiras la réponse....
Ben je vais encore passé un con , mais je sais pas comment faire . un chrono gramme représente des séquences dans le temps, mais je vois pas ce que tu me demande ;
 

dje8269

Senior Member
Sans faire de chrono-gramme, mais avec un peu de réflexion , je vois bien que ce système à ces limites . J'ai donc reposé les bases car à force de test et de réflexion je mélange tout . Malheuresement je suis obligé de faire des test pour voir si ce que je pense focntionne . je suis pas assez experimetné pour reflechir " a froid".

Si vous me confirmez et j'y reviendrais plus , qu'on ne peut pas faire un système a deux niveaux / avec deux picaxes qui passent maitre en même temps. même en hard a la limite coupure de la ligne ou autre ( d'ou l'idée des diodes en gros)

Premier point:
la réception doit se faire avec un picaxe qui prend le RFin donc 14M2 ,18M2 ,20M2 et 28X2 et 40X2
SI la réception se fait sur un esclave se pourra être qu'un 28X2 ou 40X2 par déduction . La réception par un esclave change forcement le système de détection de perte de com ( j'y reviendrais )car on ne pourra plus utilisé le hi2cflag.
Dans tout les cas , la réception et le picaxe qui donne les ordre données au SD20(pour le moteur) doivent être séparés . En effet, en cas de perte de com le picaxe "récepteur" sera bloqué sur Rfin, et ne pourra donc pas donner d'ordre au moteur ( pas bon !).

Comme la réception doit être séparée forcement il faut un deuxième picaxe, qui doit forcement être maitre à un moment( et donc le seul) pour pouvoir écrire au SD20 .
Soit il sera maitre en permanence et dans ce cas tout les picaxes sont possible , soit de temps en temps ,donc se sera soit un 20X2,28X2, ou 40X2.

Pouvez vous me dire si l'une des deux options ou les deux sont susceptibles de fonctionner ! . Voila ce a quoi j'avais pensé :

1ere solution :
Les deux picaxes changent alternativement de maitre a esclaves(donc 28X2 en réception et 20X2 ou 28X2 en "données") , en essayant de créer une synchro pour ne pas qu'il passe maitre ensemble, mais esclave ensemble oui . J'ai imaginé les deux en esclaves en même temps . quand le récepteur reçoit un RFin, il enregistre les données, il passe en maitre envoi les données et repasse tout de suite en escalve . En // l'autre est en esclave pendant qu'il reçoit les données , les calculs sur les variables servant de temporisation le temps que le récepteur repasse en esclave; le picaxe "données" passe a son tour maitre ( l'autre est sensé être repassé esclave) et ecrit sur le SD20 , puis repasse tout de suite en esclave . les deux se retrouve esclave en attente de consignes .

Avec cette config : le protocole de perte de com reste le même avec le hi2cflag .
1 ere solution.jpg


2ième Solution :
La réception est en permanence esclave donc un 28X2 pour le Rfin . Dans cette config , la méthode de perte de com ne peut plus fonctionner avec le hi2Cflag, il faut en envisagé une autre . Donc un seul maitre en permanence le "donnée" . Qui va cherché les infos sur le récepteur , pose un flag qui sera effacé a chaque nouvel Rfin ( pour la détection de perte de om). fais les calculs avec les infos, et change d'esclave écrit sur le SD20 ..

Le problème avec cette méthode sera la synchronisation entre une réception de données et pour allé la cherchée . On peut donc imaginé des "loupé" de temps en temps . en terme de loupé je veux dire que le picaxe " donnée" pourra lire deux fois la même valeur de suite s'il va trop vite , ou loupé une valeur s'il est trop long ( donc aussi deux fois la même valeur) . L'erreur dans ce cas sera de 40ms .

2ere solution.jpg
 

BESQUEUT

Senior Member
Si vous me confirmez et j'y reviendrais plus , qu'on ne peut pas faire un système a deux niveaux / avec deux picaxes qui passent maitre en même temps. même en hard a la limite coupure de la ligne ou autre ( d'ou l'idée des diodes en gros)
Voir le post #6 :
Can 2 masters reside on the same bus???
Yes, but only one can be active as a master at a time. The PICAXE does not AFAIR support multi-master mode and that would have to be implemented using your own arbitration mechanisms.

En réalité, Philips (inventeur du bus I2C) a prévu un mode "multi-maîtres" . Mais ce protocole n'est pas implémenté dans les Picaxes.
Vous restez libre d'implémenter un protocole pour faire en sorte qu'à un moment donné, il n'y ait qu'un seul maître.

Sur la solution N°2, en numérotant les paquets, vous saurez si c'est le même ou si des paquets sont perdus...
 

dje8269

Senior Member
Merci BESQUEUT pour ces précisions . Ma solution 1 " ma préférée " peut donc fonctionner .

vous saurez si c'est le même ou si des paquets sont perdus...
Oui mais ca , c'est pas important de le savoir , l'important c'est de pas en perdre .

Je crois que je suis un chat noir ....

J'ai effectué le montage de mon idée 1 . rien ne fonctionne. Je regarde de plus pret . en face je reste bloqué sur le Rfin !!! Normal je me dis , j'ai pas l'entrée en Trigger de schmidt ! . Je regarde la notice , et je me rends compte que la commande "inputype" n'est faisable que sur certains M2 . Je regarde donc je dois me branché pour avoir une entrée TDS , si je peux les configurés ???!! Aucune entrée n'est en TDS sur un 28X2 !!???

Donc mon 28X2 ne peut pas recevoir les données ? avez une solution pour ce problème , car la je vois pas .... même le 40X2 n'as pas d'entrée TDS . il me faut donc un picaxe capable d'avoir la commande "Rfin", de passer en esclave et en maitre, avec une entrée TDS , et aucun ne peut tout faire !!!

HELP !!

Je vais essayer avec une porte NAND cd4093BE , sans grand espoir
 
Last edited:

dje8269

Senior Member
Bon , avec 2 porte NAND , J'ai un comportement bizarre de mon signal .

Voici ce que j'ai tenté :
Le 4093 est un quadruple porte NAND avec trigger de schmitt

porte.jpg

En fait que je le débranche du 28X2 , le signal est le même que celui de l'entrée , ça c'est normal . Par contre que je le branche sur la pinC.0 de mon 28X2 , j'ai une composante continue de Vcc ? savez vous pourquoi mon signal disparait ?
 
Last edited:

dje8269

Senior Member
Voila un petit schéma pour être certain que j'ai pas fais d'erreur .

Sans titre.jpg

J'ai donc 2.5V de chaque coté , avec une R de 1K
 

BESQUEUT

Senior Member
Je voulais dire : entre le 4093 et le Picaxe...
De plus, il faudrait faire la mesure avec l'entrée du 4093 dans les 2 états possibles.
J'ai comme l'impression que le Picaxe est configuré en sortie et "tiens" sa sortie à VCC.
Le 4093 n'ayant qu'un courant de sortie très faible ne peut tenir la tension demandée si le Picaxe s'y oppose...
Avec une résistance entre les deux, on peut "voir" dans quel sens le courant passe, quelle est son intensité et quels niveaux cherchent à atteindre les 2 protagonistes (ou pas, si un des 2 est grillé...)

Je ne sais pas pour ce cas...
Mais pour le reste, et vu la nature de vos montages, un analyseur logique vous serait utile, sinon nécessaire. Il est encore temps pour votre lettre au Père Noël...
 

dje8269

Senior Member
lol . j'a ideja demandé un bouquin sur les pic au père noel , je sais pas s'il sera aussi généreux.

Mais pour le reste, et vu la nature de vos montages, un analyseur logique vous serait utile, sinon nécessaire. Il est encore temps pour votre lettre au Père Noël...
J'en ai un , mais j'ai pas réussis a m'en servir en fait .

Ok je fais le montage tout de suite
 

jojojo

Senior Member
Bonsoir.

Après pas mal d'essais, je confirme que l'instruction RFIN semble positionner automatiquement l'entrée concernée en mode trigger.
CONTRAIREMENT à Serin ...

Donc, pour RFIN, pas besoin de portes en plus...

Une autre petite chose, dont je me suis rendu compte, ces dernier jours (si j'ai un peu de temps, je ferais un tableau ... Je vais le faire, parce que ça m'a bien gonflé !).

RFIN et RFOUT ne sont pas aussi fiables que l'on pouvait le supposer.

Les huit octets transmis sont DETERMINANTS pour une portée optimale.

Avec un premier octet de 1 à 255, et sept octets à 0, la portée est doublée, quel que soit la valeur du premier octet.

Et, il semble, que plus la somme des contenants des sept derniers octets soit importante, plus la fiabilité (portée), diminue ...

Ces constatations ont été effectuées, avec un 14M2 coté TX, et un 40X2, coté RX. Et toujours dans les mêmes conditions (TX, RX, antennes, nombre de trames; etc. Seule la distance était progressivement augmentée, jusqu'a perte du signal transmit.

Je n'ai pas d'explication logique.

J'ouvrirais un fil spécifique, mais, il ne va pas être simple, de touver la relation "fiabilité/contenu" ...

Georges.
 

dje8269

Senior Member
Salut Georges ravi d'avoir de tes nouvelles !

Alors dans l'ordre :
Sans titre.jpg

Sans titre.jpg

C'est bien dommage ! C'est lequel ?
Celui que m'avait conseillé PieM je crois :

Par ici

J'ai essayé vite fait une fois pour voir un peu comment ca faisait sur une trame codé manchester !! la ligne est resté plate ....... :(

Après pas mal d'essais, je confirme que l'instruction RFIN semble positionner automatiquement l'entrée concernée en mode trigger.
Sur un 28X2 aussi ?
 

BESQUEUT

Senior Member
J'ai le même analyseur. Il marche très bien. Quand vous aurez un moment, il faudra faire de nouveaux essais. Pensez à télécharger la dernière version du soft. En plus Ikalogic peut accepter de remplacer gratuitement les circuits défectueux.
Pour le Picaxe, pour moi, il n'est pas configuré en entrée et tiens un "1" logique, c'est à dire 5V. Toutefois la deuxième mesure, avec exactement la même tension des 2 cotés me laisse perplexe ! (ou alors il y avait un mauvais contact avec C.0 comme sur le dessin...)

Les 2 états possibles, c'est à l'entrée du 4093 (0 ou 1) 0V ou VCC si vous préférez.
Utilisez de préférence une autre résistance pour établir un niveau à l'entrée (RFin débranché), l'autre extrémité étant reliée soit à 0V soit à 5V)
L'autre résistance reste branchée en permanence.
 

dje8269

Senior Member
Pour le Picaxe, pour moi, il n'est pas configuré en entrée et tiens un "1" logique, c'est à dire 5V
Hummmm ... je re-initialise le picaxe . j'ecris
" dirsC = 0" afin de mettre toutes les I/O de C en entrée , et j'ai 5 v sur C.0 ??? sans rien de branché sur le picaxe ??? HS ? je veins de pensé a un truc !! n'aurai je pas pris par le plus gros manque de chance le même µC que celui de la télécommande que j'avais branché a l'envers !! ?? ca serait pas de chance

sur la patte C.1
Sans titre.jpg

Sans titre2.jpg

On branché le fil la tension s'ecroule !!
 
Last edited:

dje8269

Senior Member
Pendant ma douche je pensais à un truc . j'ai deux picaxes de branchés sur ma carte axe091 , je pas réussis a trouvé le schéma d'inter-connexion de celle-ci . c'est possible que ca me faoute le bazar ? j'en doute quand même
 

dje8269

Senior Member
Problème je pense réglé ! .. J'ai honte , mais préfère le dire si ça peut servir a quelqu'un . en fait l'emplacement est prévu pour le 40X2 aussi ; les connecteurs juste à coté ne correspondent pas aux broches du 28X2 ! . oui il y as un décalage de crée pour pouvoir laissé la place au 40X2 .

Donc en gros je me branchais au mauvais endroit !! J'ai donc essayé sans TDS , ça fonctionne , ou alors ça bascule je sais pas . Mais ça fonctionne en tout cas ;
 
Last edited:

PieM

Senior Member
Bonsoir.
Après pas mal d'essais, je confirme que l'instruction RFIN semble positionner automatiquement l'entrée concernée en mode trigger.
CONTRAIREMENT à Serin ...

Donc, pour RFIN, pas besoin de portes en plus...
J'en doute, car les entrées sur Pic 18FxxK22, donc les picaxes X2, ne sont pas configurables ....
Par contre il y a vraisemblablement une erreur sur la doc Rev/Ed et datasheet Microchip, concernant les ports C,D,E.
En cours d'examen par Technical.
 

dje8269

Senior Member
Bon apres avoir été refroidis par ma connerie . Il manque quelques détails sur le chronogramme;

Voici mes deux programmes :

Le premier celui du récepteur :

Des que j'envoie des données par voir radio ( je bouge un joystick par exemple), la led clignote à fond ; une impulsion toutes les 40ms environ . donc mon Rfin n'est pas bloqué donc les infos sont envoyées sur le bus I2C .

Code:
#PICAXE 28X2

'#################################################################################
'##########################     Programme 28X2 RX    #############################	
'#################################################################################


'########################  Configuration  ########################

'b0 a b7 pour les communications


'########################  Initialisation  ########################

setfreq m8
				

DIRsC = 0



'#################################################################################
'##########################    Programme Principal    ############################	
'#################################################################################


do 

low A.0
RFin C.1,b0,b1,b2,b3,b4,b5,b6,b7				' Enregistre les donnees du RX
High A.0

hi2csetup i2cmaster, %10100000, i2cfast_8, i2cbyte 	' met le 28X2 en mode maitre
hi2cout 0,(b0,b1,b2,b3,b4,b5,b6,b7)				' Envoi des donn?es 
hi2csetup i2cslave, %10100000					' Met le 28X2 en Esclave

loop
Maintenant la deuxième partie . celui du 20X2 qui reçoit les infos et les distribue au SD20 : Pour visualiser le travail je fais clignoter une led. Ainsi que une info est ecrite je le vois .

Code:
#PICAXE 20X2

'#################################################################################
'##########################   Programme 20X2 Slave   #############################	
'#################################################################################


'########################  Configuration  ########################

'b0 a b7 pour les communications


'########################  Initialisation  ########################

setfreq m8				

hi2csetup i2cslave, %10100000	' Met le 20X2 en Esclave

high C.0
pause 500
low C.0

'#################################################################################
'##########################    Programme Principal    ############################	
'#################################################################################

do

low C.0

do loop while hi2cflag = 0			' j'attend tant que j'ai rien recu
		
	get 0,b0,b1,b2,b3,b4,b5,b6,b7		' Lecture du scratchpad
	hi2cflag = 0				' ré-armement du flag
	high C.0					' On allume une led pour visualis? la recetpion d'une consigne

b3 = b3+24						' Mise a l'echelle rapide pour test
b5 = b5+24
b7 = b7+24

pause 10		' simulation du reste du programme

hi2csetup i2cmaster, %11000010, i2cslow_8, i2cbyte 	' met le 20X2 en mode maitre pour envoi au SD20
hi2cout 17,(b3,b5,b7)
hi2csetup i2cslave, %10100000					' Repasse le 20X2 en Esclave


loop
Que ce passe-t-il ? : Au démarrage , quand j'allume le circuit . tout est éteint , normal . Maintenant je bouge un joystick . donc mon 28X2 reçoit l'info , la led(du 28X2) se met a clignoter rapidement , normal les infos passe .
Par contre étrangement , la led du 20X2 , clignote une seule fois , puis reste éteinte . Donc au démarrage , quand le 20X2 est esclave , ca fonctionne , mais après plus rien ????? . Si je fais le chrono gramme, il est impossible que les deux passe maitre en même temps normalement . Car le 28X2 est maitre quand il écrit dans le scratchpad du 20X2 , et le 20X2 devient maitre bien longtemps après avoir reçu le flag du 28X2 .

J'ai surement fais une erreur mais je vois pas ou ?
 

BESQUEUT

Senior Member
C'est le moment de ressortir l'analyseur logique...
2 sondes pour l'I2C et une sur chaque LED...
 
Last edited:

dje8269

Senior Member
J'ai ramener tout le matos à la maison car demain je dois garder le petit. C'est bon !
 
Last edited:

dje8269

Senior Member
Bonjour ,

Bon je galére , car je n'arrive a obtenir un joli i2C avec le 20X2 !! pour tant avec le même programme tout simple que le 28X2, avec qui j'y arrive bien .
Je test , je test
 

dje8269

Senior Member
Bon j'ai evité de vous saoulé , mais la vraiment je séche !

voila deux jours que j'essaie, avec oscillo et analyseur logique et j'y arrive pas ..... Pourtant je pesais que c'était bon car mes signaux ne se croise pas alors je sais pas pourquoi !!!

La com i2c du 28X2 ai 20X2 passe bien .... quand le 28X2 est maitre le 20X2 esclave .
La com i2c du 20X2 ai 28X2 passe bien .... quand le 20X2 est maitre le 28X2 esclave .

Maintenant quand j'en met un maitre il écrit sur l'autre repasse en esclave , et l'autre passe maitre et écrit sur l'autre , ca ne fonctionne pas !!! ; Les deux picaxe ne sont jamais maitre ensemble seulement esclave ? est que deux esclave peuvent cohabiter sans aucun maitre ?

Peut être que je devrais passer par interruption hard pour faire passer l'un en maitre ?

Question peut être bête, au niveau de l'adresse de l'esclave ! . Est ce que c'est dérangeant que un maitre commander un esclave a une adresse et lui même retrouve la même adresse quand il repasse esclave .
Quand on écrit : hi2csetup i2cmaster, %10100000, i2cfast_8, i2cbyte , l'adresse c'est l'adresse avec lequel le master va parler ?
et quand on ecrit : hi2csetup i2cslave, %10100000 , c'est bien l'adresse ou l'on met notre esclave ? donc il ne devrais pas y avoir de problème en théorie
Voici mes programmes :

Code:
[color=Navy]#PICAXE [/color][color=Black]28X2[/color]

[color=Green]'#################################################################################
'##########################     Programme 28X2 RX    #############################  
'#################################################################################

'########################  Configuration  ########################

'b0 a b7 pour les communications

'########################  Initialisation  ########################[/color]

[color=Blue]setfreq m8
hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10100000                         [/color][color=Green]' Met le 28X2 en Esclave

'#################################################################################
'##########################    Programme Principal    ############################  
'#################################################################################[/color]
[color=Blue]do

RFin C.1[/color][color=Black],[/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7                      [/color][color=Green]' Enregistre les donnees du RX[/color]

[color=Blue]High A.0
hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%11100000[/color][color=Black], [/color][color=Blue]i2cfast_8[/color][color=Black], [/color][color=Blue]i2cbyte    [/color][color=Green]' met le 28X2 en mode maitre  [/color]
[color=Blue]hi2cout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7[/color][color=Blue])                   [/color][color=Green]' Envoi des donnees[/color]
[color=Blue]low A.0

hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10100000                         [/color][color=Green]' Met le 28X2 en Esclave[/color]

[color=Blue]loop[/color]
20X2 :
Code:
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]
[color=Green]'#################################################################################
'##########################   Programme 20X2 Slave   #############################  
'#################################################################################

'########################  Configuration  ########################

'b0 a b7 pour les communications

'########################  Initialisation  ########################[/color]

[color=Blue]setfreq m8
hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%11100000                         [/color][color=Green]' Met le 28X2 en Esclave

'#################################################################################
'##########################    Programme Principal    ############################  
'#################################################################################[/color]
[color=Blue]do
      
do loop while [/color][color=Purple]hi2cflag [/color][color=DarkCyan]= [/color][color=Navy]0          [/color][color=Green]' j'attend tant que j'ai rien recu
            
      [/color][color=Blue]get [/color][color=Navy]0[/color][color=Black],[/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7 [/color][color=Green]' Lecture du scratchpad
      [/color]
[color=Purple]hi2cflag [/color][color=DarkCyan]= [/color][color=Navy]0                        [/color][color=Green]' re-armement du flag[/color]

[color=Blue]pause [/color][color=Navy]10[/color]
[color=Purple]b0[/color][color=DarkCyan]=[/color][color=Navy]5[/color]
[color=Purple]b3[/color][color=DarkCyan]=[/color][color=Navy]133[/color]
[color=Purple]b7[/color][color=DarkCyan]= [/color][color=Navy]222[/color]

[color=Blue]High C.0
hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%10100000[/color][color=Black], [/color][color=Blue]i2cfast_8[/color][color=Black], [/color][color=Blue]i2cbyte    [/color][color=Green]' met le 28X2 en mode maitre  [/color]
[color=Blue]hi2cout [/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7[/color][color=Blue])                   [/color][color=Green]' Envoi des donnees[/color]
[color=Blue]low C.0

hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%11100000                         [/color][color=Green]' Met le 28X2 en Esclave[/color]

[color=Blue]loop[/color]
et le screen explicatif :

On voit clairement qu'au déclenchement après un Rfin ( courbe rouge la led du 28X2) , le message part impeccable .
en théorie le 28X2 repasse en esclave , et quelques mili-secondes plus tard ; c'est au tour du 20X2 d'envoyer ses ordres (declenchement led courbe verte) ; ca a l'air de fonctionner , mais les valeurs ne sont pas exact . Il envoie seulement un "0" alors qu'il devrait envoyer les 8 bits ? ; déjà la je comprends pas . mais y'a une info qui part quand même .
Et ensuite il repasse en esclave ;
Après un nouveau RFin c'est de nouveau au 28X2 d'envoyer ces infos . on voit qu'il se passe quelques choses , mais gros bug , car les courbes de l'i2c reste a l'état bas ( pull up de 4.7k pourtant ?)

Sans titre.jpg

J'ai pensé aussi un probléme de timer , ou a cause du blocage par le Rfin ?? car quand le 28x2 recoit les données par le RFin il est bloqué il ne fait qu'attendre les données non ? pourrait il recevoir des données sur le bus ?? car j'avoue ne pas savoir comment aller plus profond l'architecture du picaxe .
 
Last edited:

PieM

Senior Member
Je ne comprends pas trop cette partie de ping pong entre 2 picaxes...
Sinon, je ne vois pas comment le 20X2 pourrait renvoyer des bonnes valeurs puisqu'elle n'ont pas été lues dans le scratchpad !

Mais de toute façon gros problème si sda reste à l'état bas ! un picaxe est demandeur mais il n'y a pas de réponse.
et le sd20 il est où dans tout ça ?
 
Top