Télécommande voiture RC + caméra

dje8269

Senior Member
Voila avec ce code ca fonctionne . plutot bien . le servo fais de joli aller retour propre et net .
Si j'enleve les pauses ca bug il fait n'importe quoi.

Code:
#PICAXE 28X2

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

dirsA = %0101	'declare les broches A.0 et A.2 en sortie
dirsB = %00101111 'declare les broches B.0, B.1, B.2, B.3, et B.5 en sortie
dirsC = %01000000 'declare La broche C.7 en entrée


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

setfreq m8	

servo B.1,190					'Servo direction en broche B.1, position neutre a 150


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

b1 = 190
pause 500

do
do while b1>100
	b1 = b1 - 1
	pause 2
	servopos 1, b1
loop

do while b1<190
	b1 = b1 +1
	pause 2
	servopos 1, b1 
	
loop 

loop
Vidéo

Je viens d'enlever le levier pour vérifier son bruit , et effectivement y'as un son bizarre, plus aigu , je pensais que c'etait la mécanique , mais non . Tu as eu l'oreille . Si ca se trouve il as pris une gifle ...... a force de faire des test.

allez hop.... une autopsie s'impose !!!
 
Last edited:

dje8269

Senior Member
Bon ben rien d'anormale a premiere vue , mais j'avoue fait un bruit bizarre . Est ce que ca pourrait venir du servo ?
 

PapyJP

Senior Member
Un servo doit recevoir une impulsion de commande toutes les 20ms ( et pas toutes les 2ms )
Faites "pause 20" dans vos boucles si vous êtes à 4MHz ( "pause 40" à 8MHz ).
 

dje8269

Senior Member
Je ne suis pas encore très a l'aise . Mais les infos toutes les 20ms se font en tache de fond il me semble ? indépendamment des pauses marqués dans le programme . j'avais mis 2 jsute pour faire un mioni temps d'arret entre le resultat du calcul et la commande de MAJ du servo .

Je suis tellement perdu en fait que j'ai essayé tout et certainement n'importe quoi !
 

PapyJP

Senior Member
Mais les infos toutes les 20ms se font en tache de fond il me semble ?
Avec l' instruction " servo" Oui
Mais pas avec l' instruction "servopos" à ma connaissance.
Attention à la fréquence ---> les attributs vont du simple au double.
 

PieM

Senior Member
Les 20ms sont entièrement gérées par l'instruction servo et servopos, cette dernière ne venant que modifier la largeur d'impulsion sans réinitialiser le timer.
On peut d'ailleurs modifier ces 20 ms sur les X2

Le fait de mettre des pauses entre servopos successifs est un moyen de ralentir le servo pour certaines actions.
 

jojojo

Senior Member
Heu ...

Normalement, servo fonctionne un peu comme pwm

pwm initialise la commande, et pwmduty la modifie.

servo initialise la comande, et servopos la modifie.

Et, oui, ces commandes fonctionnent en tâche de fond. Donc, oui, le servo est réinitialisé toute les 20ms, que l'on modifie sa position par servopos ou pas.

Donc, le chmilibilick est ailleurs.
 

PieM

Senior Member
J'ai testé le programme donné avec ma formule sur un 14M2 (plus de 28X2) avec un servo lambda, un joystick parallax, et ça fonctionne parfaitement.
Le servo doit répondre à toute commande servopos sans avoir besoin de pause !
Je pense qu'il y a un problème avec ce servo; piste potard abimée ou un truc comme ça.
 

GM39

Senior Member

dje8269

Senior Member
Donc la boucle de Dje dure 22ms
Il me semble pas . Le servo va cherche sa valeur toutes les 20 millisecondes ; La commande servopos, sert juste a mettre à jour la valeur qu'il va cherche toutes les 20ms . Mais en fait servopos va mettre tout de suite a jour sans reinitialiser le timer des 20ms . Donc après un servopos , il faut attendre que le timer arrive a 20ms pour mettre jour .

Je pense qu'il y a un problème avec ce servo; piste potard abimée ou un truc comme ça.
Après le remontage , le bruit était un peu plus évident . je pense effectivement qu'il est pas clair ce maudit servo. Il était quand même tout neuf , et ma couté 12&#8364; cette vieille saloperie .
Pensez vous qu'il y as quelques choses a faire ? demonter le potar ?

toutes les dents ont l'air bien le circuit aussi

P1020548.JPG

P1020551.JPG
 

dje8269

Senior Member
C'est curieux en effet. Est-ce qu'il n'y a pas réinitialisation du picaxe ?
Je pense pas car cela bug qu'avec certaines valeurs !! mais en effet, ça fait un peu comme ca . car c'est bizarre le servo buggait sans même allumé la télécommande . donc il ne recevais aucun infos ! Vraiment bizarre

(niveau bas de la batterie à force de faire des essais et le servo qui pompe un peu trop)
J'ai egalement fais ces test ce matin , la batterie est toujours a 7.2V ( le regulateur , regul toujours bien a 5V le picaxe).
La telecommande aussi pas de soucis de ce coté la !!!

Demain j'essaierais avec un autre servo
 

PieM

Senior Member
Donc la boucle de Dje dure 22ms ( même si l' impulsion de commande du servo est 1 ms ) c' est bien ça ?
Non, c'est une tâche de fond donc elle n'est pas affectée par la pause.
En fait la nouvelle valeur de servopos se met à jour toutes les 20ms en fonction de l'état courant de la variable.
à la limite, mettre une pause de 20 ms et et incrémenter 10 fois plus que ce qu'on fait toutes les 2 ms doit avoir le même résultat.
 

PapyJP

Senior Member
Non, c'est une tâche de fond donc elle n'est pas affectée par la pause
Comprends plus !
Si le timer est affecté à l' instruction " servo " ( ou servopos ), il n'est plus disponible pour d' autres tâches !
OU, s' il est utilisé par d' autres tâches ( pause par ex ), il ne peut plus cadencer "servo" et "servopos" correctement.
Conflit ?
Y-a-t-il plusieurs timers cachés? ( '' On ne nous dit pas tout ! " (Anne R.))
 

PieM

Senior Member
Y-a-t-il plusieurs timers cachés?
ils ne sont pas cachés. on en a déjà parlé a propos des commandes servo et pwm simultanées. Il y en a 3 sur un X2.
Voir §conflits en fin du manuel2
 

PieM

Senior Member
Y-a-t-il plusieurs timers cachés?
ils ne sont pas cachés. on en a déjà parlé a propos des commandes servo et pwm simultanées. Il y en a 3 sur un X2.
Voir §Appendix4 en fin du manuel2
 

jojojo

Senior Member
A tout hasard, je mettrai une bonne capa au plus près de l'alim servo.

Je pense comme GM, à un reset intempestif, lié aux "cochonneries" générées par le servo.

Une diode rapide, en // sur l'alim ne serait peut-être pas un luxe, non plus.
 

PieM

Senior Member
J'ose espérer que le condo de forte valeur était présent et le câblage était correct !
Un reset intempestif est facile à mettre en évidence: il suffit d'allumer et eteindre une led à l'initialisation.
 

PieM

Senior Member
avec la diode dans le bon sens ça serait mieux.
Ce qui m'inquiète, c'est que le 5V, si j'ai bien vu sur le typon, semble provenir d'un circuit +5V qui alimente au passage tous les composants avant d'arriver au connecteur de servo !!

mettre une ledde test comme je l'ai dit plus haut.
 

dje8269

Senior Member
J'ose espérer que le condo de forte valeur était présent et le câblage était correct !
Aïe , non je n'ai pour le moment qu'un seul condo de forte valeur , pour le moteur . Rien pour les servos !!! :( Ca sent la defaite à plein nez ca )

Ce qui m'inquiète, c'est que le 5V, si j'ai bien vu sur le typon, semble provenir d'un circuit +5V qui alimente au passage tous les composants avant d'arriver au connecteur de servo !!
Euh Oui !!!!! croyez vous que je devrais mettre un regulateur specialement dédié aux servos ? Ou je rajoute un strap qui part de l'alim et direct aux servos !

Un reset intempestif est facile à mettre en évidence: il suffit d'allumer et eteindre une led à l'initialisation.
Ok, j'ai justea mettre un etat haut sur ma broche A.0 par exemple .

avec la diode dans le bon sens ça serait mieux.
Oups !!!
 

jojojo

Senior Member
Te casse pas le popotin : Tu alimente le servo en 7.2V, DIRECTEMENT !

Il n'en mourra pas, et ça doit résoudre une bonne partie de tes soucis.
 

PieM

Senior Member
et ça doit résoudre une bonne partie de tes soucis.
Pas certain ! car pour l'instant le fait d'avoir des valeurs anormales dans le scratchpad ne vient sans doute pas de là.
Il est vrai que sur la platine, le récepteur monté contre toute la partie régulation était exactement ce qu'il ne faut pas faire!
J'obtiens les mêmes oscillation sur un servo quand il est commandé via un readadc dont la connexion ana est en l'air.
 

dje8269

Senior Member
Je vais deja comménce par changer le servo, en mettant une grosse capa aux bornes de l'alim du servo + une diode schottky . ( c'est le plus simple et plus rapide pour moi ,afin de savoir si ca viens de la)

Cette platine on diras quelle me serviras de test , pour la finale , je placerais mieux tout ca .
 

jojojo

Senior Member
+ une diode schottky

Nan !

La même que celles en protection du FET cmd moteur.
Là, il en faut une rapide, et à fort courant, pas forcément à faible chute.
 

dje8269

Senior Member
J'ai eu à peine 5 minutes aujourd'hui entre midi et deux . Juste le temps de télécharger le programme , de faire la modification, pour allumer la led a l'initialisation , et un test .

Le résultat est donc tombé , le picaxe se réinitialise une fois sur deux !!!! . donc avant d'acheter un nouveau servo , je vais essayé de regler ce problème .

DOnc j'alimente direct en 7.2 V , un gros condos aux bornes de l'alim des servos ( 1000uF ) , et une diode rapide BYV26 je crois . Allez demain je fais tout ca !!!

PS: un gros merci a GM39 qui nous a mis sur la piste de la reinitilastion
 

PieM

Senior Member
Je crains que cela n'explique pas tout: car pourquoi ça fonctionne sans problème avec une formule de calcul et pas avec l'autre, alors que c'est celle qui va jusqu'en butée , donc parasites maxi, qui marche le mieux.
et pourquoi dans un cas les valeurs sorties du RFout (b0 à b7) sont bonnes et pas dans l'autre ...
Vous avez dit bizarre ?

En tout cas le typon est à reprendre sérieusement car on ne peut pas dire qu'il soit dans les règles de l'art. En particulier la proximité du Rx avec la régulation de tension !
 

dje8269

Senior Member
Je crains que cela n'explique pas tout:
Oui je suis d'accord aussi . J'avais éliminer le problème hard , car ca fonctionnais très bien avec une formule .
mais bon essayons de les corriger un par un . Peu etre qu'on y verra plus clair petit à petit .

Vous avez dit bizarre ?
Oui Bizarre !


En tout cas le typon est à reprendre sérieusement
je suis d'accord , mais la , ca me fais mal !! rien que de penser au boulot qu'il faut faire ........... . c'est plus facile de faire un p'tit pond qu'un typon :D
 

PieM

Senior Member
je suis d'accord , mais la , ca me fais mal !! rien que de penser au boulot qu'il faut faire ........... . c'est plus facile de faire un p'tit pond qu'un typon
C'est plus facile de faire un typon quand les problèmes sont réglés sur un proto !
 

dje8269

Senior Member
Bonsoir à tous,

bon , j'ai du ralentir la cadence , peut êtr que vous l'aviez remarqué :eek: .
J'ai du préparé un déplacement et je vais devoir m'absenter pendant quelques semaines ( 3 normalement) . A mon retour je mets les bouchées doubles, pour finir cette voiture qui me tiens à c&#339;ur.

je vais donc consacrer ce petit week end à ma petite famille !!! .

Un grand merci pour le chemin déja fais avec vous ! et qui s'annonce encore très sinueux a mon retour . ( j"espere que mike auras bien avancé) .

J'éspere vous retourvé en pleine forme, pret pour repartir pour de nouvelles aventures !
 

dje8269

Senior Member
Bonjour a tout les picaxiens,
Me voilà de retour, je passe en coup de vent car je vais passer ce petit week-end avec ma petite famille. Si ça vous dis on reprends de plus belle après. J'ai le courage pour refaire le typon après 3 semaines d'absence. Il faudrat qu'on reparle de la disposition afin d'éviter le plus possible les perturbations parasites ( éloigner la régulation de tension me paraît déjà une bonne chose).

Bon week-end à tous
 

dje8269

Senior Member
Bonsoir à tous,

Ce week-end je pensais refaire mon typon, afin d'y appliquer quelques changements que vous m'avez fait remarqués plus haut dans les post .

Je vous les résume ici pour plus de simplicité, si vous voyez ou lisez quelques choses qui vous chiffonne n'hésitez pas :

- Éloigné géographiquement le récepteur des sources de parasites , donc loin du régulateur de tension , loin des servos moteurs , et loin du moteur.
- Alimenté les servos direct en 7.2V ou alors en passant par une diode pour abaisser un chouilla la tension ?
- un gros condo aux bornes de l'alim des servos ( 1000uF chimique ) ça irais ?
- Une diode rapide BYV26 je crois .

L'idée de torsader les fils du servos, et mettre une ferrite au plus prêt pourrait aidé aussi ? Qu'en pensez vous ?
 

dje8269

Senior Member
Bonjour à tous ,

J'ai un peu bossé afin d'améliorer la voiture et de résoudre le problème de reset et de courbe .

Coté direction et servomoteur :
-Alimentation direct sur la batterie en passant pour une diode pour abaisser un peu la tension.
- Ajout d'un condo de forte valeur (1000µf), au plus pret du servo.
-Ajout d'une diode rapide sur l'alim du servo.

Problème de direction résolu ainsi que les min/max pour éviter la butée .

coté moteur :
J'ai apporté quelques modifications afin d'améliorer la sensibilité du joystick . En effet j'ai créé un zone morte pour la marche arrière ainsi qu'une sensibilité accru pour le démarrage . Je ne sais pas si mes formules sont très "académiques" mais ça fonctionne .

Pkoi la zone morte ? en fait le moteur commence a faire roulé la voiture quand la valeur du pwm est de 25 et plus . avant la voiture n'arrive pas a rouler . Il faut donc que la courbe commence a partir de 25.
De plus afin d'éviter les déclenchements intempestif du relais passant de marche avant a marche arrière , j'ai décidé de déclencher celui ci un peu plus tard a partir de 100 me laissant ainsi une marge de manœuvre.

il reste quelques petits parasites sporadiques, qui j'espère pourront être résolus avec le nouveau typon, séparant les parties perturbatrices des commandes et de la réception radio.Peut-etre qu'une solution soft est possible ?
Si vous voyez des améliorations ou simplifications je suis preneur !


Code:
#PICAXE 28X2

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

Symbol moteur = B.0
Symbol sens = C.6
Symbol Direction = B.1
Symbol Pan = B.2
Symbol Tilt = B.3
Symbol Sirene = B.5
Symbol Secu = PinC.7
Symbol Gyro = pinA.0
Symbol Option = A.2

dirsA = %0101	'declare les broches A.0 et A.2 en sortie
dirsB = %00101111 'declare les broches B.0, B.1, B.2, B.3, et B.5 en sortie
dirsC = %01000000 'declare La broche C.7 en entrée


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

setfreq m8	

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

servo B.1,150				'Servo direction en broche B.1, position neutre a 150, MAJ 20ms

pwmout B.0, 25, 0 			' rapport cyclique a 0

b1 = 125
b3 = 125
put 1,b1
put 3,b3
séparant sens

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

	get 0,b0,b1,b2,b3,b4,b5			' Lecture du scratchpad

Gyro = bit4						' Commande TOR


'#####  Commande moteur  #####

Select Case b1			

Case < 100 		'Marche arriere
	high sens
	b1 = 125-b1			' La marche arriere se declenche seulement a partir de 100
	
Case > 128		'Marche avant
	low sens
	b1= b1-104			'Le moteur fait rouler la voiture a partir de b1=25
	
else
	b1 = 0			'Si b1 entre 120 et130 signifie au point milieu , donc a l'arret

end select

pwmduty B.0, b1			'envoi du pwm sur le moteur

'#####  Commande direction  #####

Select case b3

case  < 120
	b3 = b3*3/8
	b3 = 192 - b3
case > 134
	b3 = b3*4/10
	b3 = 200 - b3
else
	b3=150
	
end select

servopos 1,b3

Loop
Sur le Banc d'essai:
Vidéo plein écran par ici

[video=dailymotion;x1pbii3]http://www.dailymotion.com/video/x1pbii3_voiture-rc-avec-picaxe-4_tech[/video]
 

dje8269

Senior Member
Test sur la pelouse non tondu !!!! lol

Désolé pour la qualité de la vidéo, mais filmé en conduisant, c'est vraiment pas évident, voir dangereux !

Vidéo plein écran par ici

[video=dailymotion;x1pbiwv]http://www.dailymotion.com/video/x1pbiwv_voiture-rc-avec-picaxe-5_tech[/video]
 
Top