Aller au contenu


Photo
- - - - -

Problème liaison série et commande servo


  • Veuillez vous connecter pour répondre
Aucune réponse à ce sujet

#1 Réré

Réré

    Nouveau membre

  • Membres
  • 1 messages

Posté 01 avril 2011 - 06:58

Bonjour à tous,

Je me présente car ceci est mon premier message sur le forum. Actuellement étudiant de 5ème année d'école d'ingénieurs et fan de robotique, je réalise mon stage de fin d'étude en Argentine sur la commande d'un bras robotisé pour la chirurgie. J'ai plusieurs fois participé à la compétition de France et d'Europe de Robotique organisée par planète science au sein des équipes RCVA en 2007 (2ème de France, champion d'Europe) et de l'équipe de robotique de l'ENIVL.

Je travail avec une carte PICAXE muni d'un 18X (16F88). Pour l'instant, je réalise une petite application me permettant à partir du PC de commander la position d'au moins un servomoteur. J'ai donc conçu une application JAVA me permettant de communiquer en RS232 avec le PICAXE. Cette application fonctionne parfaitement. J'utilise sur le PICAXE les commandes serin et serout permettant la communication avec le PC.


Le problème survient en combinant la commande du servomoteur à la réception de valeurs du RS232. Comme on peut le voir dans mon code du PICAXE (cf. fin message), dans la "sous-fonction dmdCmdMoteur", j'attends une valeur transmise en RS232, puis je la renvoi pour confirmer qu'il n'y a pas eu d'erreur lors de l'envoi. Enfin je commande le servomoteur avec cette valeur dans la "sous-fonction cmdServo". Ensuite, je reboucle et j'attends une nouvelle valeur.

Avec ce code, le servomoteur n'atteint pas cette position. En fait, je pense que le PICAXE n'arrive pas à générer de PWM lors de l'attente d'une valeur en RS232 par la commande serin. Car quand je mets une pause de 3s (par exemple) après la commande du servomoteur, celui-ci atteint la position de consigne et perd tout son couple une fois les 3s écoulées. Ce qui pour moi est un gros problème, j'ai besoin que le servomoteur soit toujours en couple (PWM généré constamment) et que le PICAXE puisse recevoir une valeur à tout moment.

Je pense que le problème vient de mon code du PICAXE.
Voici le code du PICAXE:
main:
	setfreq m4 ‘ setfreq to 4MHz
	'let b1=0	'La variable b1 (Byte (8bits)) est un char 
	let b2=0
	'let b3=0

	'symbol moteur = b1
	symbol angle = b2
	'symbol data1 = b3

	servo 0, 150 ' Initialisation moteur

Label_10:
	
	gosub dmdCmdMoteur

	gosub cmdServo

	goto Label_10
	
	
dmdCmdMoteur:
			
	serin 1,N2400,angle
	serout 1, N2400, (angle, "/")
			
	return
	
	
cmdServo:

	servo 0, angle
	return


Que puis-je faire?

Merci d'avance,

Réré.




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users