Télécommande voiture RC + caméra

dje8269

Senior Member
Bonjour à tous,

Ce matin , je voudrais essayer de diminuer les mouvements parasites de la caméra quand elle n'est pas utilisé .

Voici une photo du schéma .

Il n'y as qu'un seul condo de découplage de 100µF, sur l'alim de tous les servo . Pensez vous que je dois mettre un condo au plus prêt de chaque bornier ? si Oui de quel valeur ?

J'ai lus qu'il fallait pas de condensateur chimique , des électrolytiques c'est bon ?


Les deux diodes de puissance en série servent a faire chuter un peu la tension pour les servos , car batterie pleine , elle tourne aux alentours de 8V , ce qui doit faire beaucoup pour mes petits servos .

typon.jpg
 

PieM

Senior Member
quand j'appuie sur le BP, je ne peux pas faire un arrêt moteur, car il se se ferait a chaque fois vu qu'il est dans la boucle
C'est pour ça qu'il faut faire une séquence (s/p) freinage-arrêt indépendante. quand tu l'appelles, si le moteur est à l'arrêt tu ne fais rien sinon tu freines.
cette séquence tu l'appelles aussi dans ton s/p escape.

ce que je voulais dire c'est que escape gère le défaut de com. et dans ton défaut de com tu appelle le freinage - arrêt. c'est un choix.
tu pourrais très bien décider de faire autre chose en cas de pb de com. Tourner en rond, mettre ta vidéo en marche, lancer une fusée de détresse, pour voir où est la voiture par exemple. :)

appeler escape avec sa surveillance du hi2flag n'a pas de sens dans le cas d'un appui BP pour actionner la cam.

si par erreur je relâche un peu le BP , la voiture va réagir instantanémen
Alors il ne faut valider ton relâchement que si ton joystick est au neutre.


PS: il faudrait que tu prennes l'habitude de donner un schéma et non un typon ! Perso, j'ai passé l'âge de jouer au jeu de piste !!

1) essaie de mettre la commande disablebod en tête de prog, avant ton do loop.
2) essaie de remplacer toutes tes commandes servopos par des commandes servo.
 
Last edited:

dje8269

Senior Member
Decidemment on arriveras pas à se comprendre . Je vois ce que tu veut dire, mais j'arrive pas à bien expliquer .

ce que je voulais dire c'est que escape gère le défaut de com
Justement Non , escape est la conséquence d"une perte de com . Plutot que de l'appele escape, je vais la rénommer en arret voiture . ( qui comprends un freinage suivis d'un arrêt). C'est une seule et même procédure .

Et cette procédure , peut être appelé si perte de com ou si appui sur le BP . Je vais planché entre midi et deux sur le nouveau programme, tu devrais voir ce que je veux dire .

Alors il ne faut valider ton relâchement que si ton joystick est au neutre.
Excellent , je vais réfléchir à ça aussi . Je m'en suis rendu compte de ce probléme hier soir . quand la voiture était sur la table et à presque finis par tombée .

PS: il faudrait que tu prennes l'habitude de donner un schéma et non un typon ! Perso, j'ai passé l'âge de jouer au jeu de piste !!
C'était aussi pour vous montrer l'emplacement physique que j'ai mis ce schéma la . ça permet de situé dans l'espace les composants . Promis je mettrais les deux la prochaine fois .
j'ai passé l'âge de jouer au jeu de piste !!
Y'as pas d'age pour les jeux de pistes . L'important c'est la tête pas l'âge . ( PS : tu as quel âge ? tu n'es pas obligé de répondre. Si tu arrive à lire ces lignes tout va bien)
 

jojojo

Senior Member
Tu peux déjà rajouter un 0.1µ et un 1n, en // sur le 100µ (perso, je les mettrais à droite, à l'autre bout de la piste + .
 

PieM

Senior Member
C'est une seule et même procédure .
Bon j'abdique. Si tu veux tout mélanger, pas de pb.
T'ai expliqué que le s/p Escape que je t'avais fait mettre est appelé par le défaut de comm détecté dans le prog principal. Trop d'erreurs > appel de escape qui lui met la voiture à l'arrêt ET surveille le hi2flag.

Ce que je t'ai dit c'est d'avoir un s/p escape qui lui même va appeler le s/p freinage arret.
indépendamment de ça, ton appui sur BP n'appelle QUE le s/p freinage arrêt


Escape :
......
gosub arrêt
surveille le hi2flag
.......
return

Arrêt:
.........
si moteur en marche ... séquence de freinage arrêt
.......
return
 

dje8269

Senior Member
Bon j'abdique.
Ah non !! c'esst moi qui abdique

Si tu veux tout mélanger, pas de pb.
Non non, j'ai enfin compris ce que tu voulais dire . Je cherche qu'a m'améliorer et à bien comprendre , même si parfois si je suis un peu têtu, car je n'ai pas encore très bien assimilé la logique du µC .

C'est toi qui as raison, avec ta petite explication avec les exemples , j'ai tout de suite compris ou tu voulais en venir . et je vais faire comme tu me le préconise . En fait je pensais qu'il valait mieux garder un seul s/p qu'en faire deux séparés . On fait une routine et on l'appelle quand on en as besoin . je pense que j'ai un problème pour bien visualisé le temps, j'ai toujours l'impression qu'un go sub va me prendre un temps infini, et j'ai tendance as faire un plus court alors que ca risque de provoquer des problèmes et/ou un fonctionnement erratique .

Court n'est pas synonyme d'efficace et de simple . Il faut que je martèle ca en tête

Ca résoud toujours pas mon problème de boucle . lol . Car SI le BP est appuyé , je ferais appelle à la routine arrêt a chaque boucle, durant tout le temps ou le BP sera appuyé .

En tout cas merci pour ta patience .
 

dje8269

Senior Member
@ Geroges : hello,

Tu peux déjà rajouter un 0.1µ et un 1n, en // sur le 100µ
Ok ca feras donc 3 condo en // sur l'alim c'est bien ca ? un 100µF, 0.1µF et 1nF . Electrolityque c'est bon ?

(perso, je les mettrais à droite, à l'autre bout de la piste + .
Ok , je pensais qu'il fallait les mettres "avant" pour se vider de leur energie, plutot que apres en fait . encore une mauvaise impression ! :D

Sur l'ancienne voiture le condo etait vachement plus gros , c'etait un 1000µF , mais l'alim n'est pas aussi direct car elle pasait par un régulateur qui alimentais aussi tout le reste ( moteur et éléctronique) . Tu m'avais fais mettre une diode rapide aussi, je sais plus trop pour quoi

Je fais ca tout à l'heure !
 

PieM

Senior Member
Ca résoud toujours pas mon problème de boucle . lol . Car SI le BP est appuyé , je ferais appelle à la routine arrêt a chaque boucle, durant tout le temps ou le BP sera appuyé .
tu ne l'appelle que si ton moteur n'est pas à l'arrêt.

Ok ca feras donc 3 condo en // sur l'alim c'est bien ca
en principe, les tremblements de servo sont dûs à un problème de commande parasitée. C'est le problème des Picaxes.
les condos sur l'alim servent surtout de réservoir d'énergie et évitent que les servos parasitent le reste.
 

jojojo

Senior Member
les condos sur l'alim servent surtout de réservoir d'énergie et évitent que les servos parasitent le reste.
Bien-sûr, mais pas seulement.
Par principe (loi stat), les servo sont conçu pour fonctionner coté réception. Donc, peu protégés, en interne, au niveau HF.
Si l'on est pas dans cette config, le 1n préconisé ne sera pas inutile.
A mon avis, (je ne mets plus "humble", ça lasse), le frétillement des servo's ne vient pas de l'alim. J'ai définitivement abandonné les instructions SERVO, à cause de ce phénomène. Pulsout est plus délicat a mettre en oeuvre, mais, c'est plus stable, sous réserve d'un rafraichissement correct. Pas trop applicable, ici, hélas.
 

dje8269

Senior Member
La vibration sur le servo direction existe , mais n'est en aucun cas gênant , trop faible pour qu'on s'en rende compte .

La commande pulsout , et si longue que ca ? car du coup on pourrait peut être l'appliquer seulement à la caméra, en laissant la commande servo pour la direction ? , la on pousse la perfection quand même .

Les servo et les picaxes ne font pas bon ménage ! :mad:
 

dje8269

Senior Member
Alors voila !

test concluant, mais c'est une usine à gaz, qui mérite certainement l'œil averti d'un expert !

Toutes les fonctions sont opérationnelles . On est pas loin de la perfection !!!

ce n'est pas le problème, c'est qu'il faut la répéter toutes les 20ms !
Hum.... du coup je crois que ca va m'interressé . dans le nouveau programme, la boucle qui commande la camera doit etre bien plus rapide que 20ms , qu'en pensez vous ? faisable ?

Sinon les explications des modifications .

le programme principale comprends toute la partie commande de la voiture .

Si on appui sur le BP on rentre dans un s/p . ainsi on arrête la voiture et on rentre dans une boucle tant que le BP est appuyé . Si on le relâche, on sort de la boucle, on positionne la camera au PM , et on vérifie que la commande moteur n'est pas actionné, après seulement on retourne au programme principal .

Code:
#PICAXE 20X2

'#################################################################################
'##########################   Programme 28X2 Slave   #############################	
'#################################################################################

' B_ pour Broche, c'est le nom ou est branché le composant
' E_ pour Etat, c'est la valeur de la broche
' V_ pour Variable, ou est enregistré l'Etat de la broche

' 

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

'b0 à b7 pour les communications

Symbol V_TXcam = bit0
Symbol V_BPcam = bit1

Symbol V_moteur = b2
Symbol V_direction = b4
Symbol V_Pan = b6
symbol V_compteur_com = b8
symbol V_Tilt = b9

Symbol B_moteur = B.4
Symbol B_Direction = B.2
Symbol B_Pan = B.1
Symbol B_Tilt = B.0
Symbol B_Cam = PinC.5
Symbol B_Led = C.7

dirsB = %00010111 'declare Les broches B4,B2,B1 et B0  en sortie
dirsC = %10100000	'declare Les broches C7 et C5  en sortie


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

setfreq m8				' la commande servo ne fonctionne qu'a 8Mhz

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

servo B_Pan, 150			' Initialisation des commandes servo
servo B_Tilt, 160
servo B_moteur, 150		
servo B_Direction, 150		

put 2,167				' Ecrit dans le scratchpad la valeur du point milieu pour le moteur
put 4,104				' Ecrit dans le scratchpad la valeur du point milieu de la direction
put 6,104				' Ecrit dans le scratchpad la valeur du point milieu du Pan de la caméra

					
V_compteur_com = 0		' RAZ du compteur d'erreur communication	
		


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

main:
do

	high B_led					' Allume la led test, pour verifie la communication et indique que la voiture est allumée / / peut etre supprimé.

	If V_BPcam = 1 then gosub mouv_cam	' Si le BP est appuyé, on va piloter la camera
	
	
	'-----------------------------------	
	'##### perte de communication  #####
	
	do while hi2cflag = 0			' On attend l'arrivé d'un flag pour continuer, si c'est trop long, on arrete la voiture
	
	V_compteur_com = V_compteur_com + 1	'Compteur d'erreurs de flag
			
		if V_compteur_com > 50 then 	' en augmentant le chiffre , on augmente le delai de  reaction
			gosub Escape		' Si plus de 50 erreurs à la suite, on arrete la machine
		end if
	loop

	low B_led					' On eteind la led test
	
	get 0,b0,b1,b2,b3,b4,b5,b6,b7		' Lecture du scratchpad
		
	hi2cflag = 0				' re-armement du flag
	V_compteur_com = 0			' RAZ du compteur			
	
	
	'------------------------------
	'#####  Commande des TOR  #####
	
	
	B_Cam = V_TXcam			' Declenche la caméra si le bit0 est à 1
	
			
	'--------------------------------
	'#####  Commande du moteur  #####
	' Point milieu 167 +/- 1
	' En Avant (V_moteur va 167 à 78)		/ Valeur du servo de 150 à 200
	' En arriére ( V_moteur va de 167 à 255 )	/ Valeur du servo de 150 à 100
	
		
	Select case V_moteur
			
		case < 163					' Marche avant
			V_moteur = V_moteur / 2
			V_moteur = 242 - V_moteur
		case > 171					' Marche arrriére
			V_moteur = V_moteur / 2
			V_moteur = 225 - V_moteur
		else			
			V_moteur = 150			' Point mort
		
	end select
	
	servopos B_moteur, V_moteur		' envoi du pwm sur le moteur
		
		
	'--------------------------------------
	'#####  Commande de la direction  #####
	' Point milieu du joystick 104
	' Tourne à droite (V_direction va de 104 à 185) / position du servo de 150 à 120 
	' Tourne à gauche (V_direction va de 104 à 29) 	/ position du servo de 150 à 180
	
	
	Select case V_direction
	
		case < 101					' Tourne à gauche	
			V_direction = 101 - V_direction * 5/12
	 		V_direction = 150 + V_direction
	 	
		case > 104					' Tourne à droite
		 	V_direction = V_direction - 104 * 5/12
		 	V_direction = 150 - V_direction min 120
		else
			V_direction = 150			' Point mort
		
	end select
	
	servopos B_Direction,V_direction	' Positionnement du servo
	
loop		


'####################################################################################################
'					Programme secondaire
'####################################################################################################

mouv_cam:

	gosub freinage

do 

	high B_led			' Allume la led test, pour verifie la communication et indique que la voiture est allumée / / peut etre supprimé.

	'-----------------------------------	
	'##### perte de communication  #####
	
	do while hi2cflag = 0			' On attend l'arrivé d'un flag pour continuer, si c'est trop long, on arrete la voiture
	
	V_compteur_com = V_compteur_com + 1	'Compteur d'erreurs de flag
			
		if V_compteur_com > 50 then 	' en augmentant le chiffre , on augmente le delai de  reaction
			gosub Escape		' Si plus de 50 erreurs à la suite, on arrete la machine
		end if
	loop

	low B_led					' On eteind la led test
	
	get 0,b0,b1,b2,b3,b4,b5,b6,b7		' Lecture du scratchpad
		
	hi2cflag = 0				' re-armement du flag
	V_compteur_com = 0			' RAZ du compteur			
	
	
	'------------------------------
	'#####  Commande des TOR  #####
	
	B_Cam = V_TXcam			' Declenche la caméra si le bit0 est à 1
		
	'----------------------------------------
	'#####  Commande Tilt de la camera  #####
	' Point milieu du joystick 104
	' Vers le haut (V_moteur va de 167 à 78)	/ position du servo de 150 à 70 (max 69)
	' Vers le bas (V_moteur va de 167 à 255)	/ position du servo de 150 à 160 (max 172)			

	V_Tilt = V_moteur
	V_Tilt = V_Tilt max 160

	servopos B_Tilt, V_Tilt 
	
	'---------------------------------------
	'#####  Commande Pan de la camera  #####
	' Point milieu du joystick 104 +/-1
	' Tourne à droite (V_Pan va de 104 à 181)	/ position du servo de 150 à 65
	' Tourne à gauche (V_Pan va de 104 à 32)	/ position du servo de 150 à 235 

	select case V_Pan
	
	case > 170
		servopos B_Pan,80		' Fonctionnement en creneau pour eviter les mouvements parasites
	case > 160
		servopos B_Pan,90
	case > 150
		servopos B_Pan,100
	case > 140
		servopos B_Pan,110
	case > 130
		servopos B_Pan,120
	case > 120
		servopos B_Pan,130
	case > 110
		servopos B_Pan,140
	case < 40	
		servopos B_Pan,220
	case < 50	
		servopos B_Pan,210
	case < 60	
		servopos B_Pan,200
	case < 70	
		servopos B_Pan,190
	case < 80	
		servopos B_Pan,180
	case < 90	
		servopos B_Pan,170
	case < 100	
		servopos B_Pan,160
		
	else 
	
		servopos B_Pan,150	' Point mort
	
	end select


loop while V_BPcam = 1			' On reboucle pendant tant que le BP est à 1

servopos B_Tilt, 160			' on place le tilt au milieu
servopos B_Pan, 150			' on place le pan au milieu


do 
	get 2,b2				' On lit la valeur du joystick moteur
	hi2cflag = 0			' On ré-arme le flag
loop while V_moteur>169 or V_moteur<160	' On boucle tant que le joystick n'est pas au PM

return



'####################################################################################################
'					Programme secondaire
'####################################################################################################


'########     Arret de la voiture     ##########
Escape:

Gosub freinage

servopos B_Tilt,160
servopos B_Pan,150

do loop while hi2cflag = 0	' Tant que le scratchpad n'as rien recu on laisse le moteur eteint
	
V_compteur_com = 0		' En sortant de la boucle, c'est que la communication est revenue
hi2cflag = 0			' On remet le compteur a 0 et on ré-arme le flag

return

		
'########     freinage + arret de la voiture     ##########
freinage:
if V_moteur < 130 then 		' Si la voiture était en marche arriére à une certaine vitesse
	servopos B_moteur,200	' On freine la voiture en faisant marche avant
	pause 200
end if

if V_moteur > 170 then 		' Si la voiture était en marche avant à une certaine vitesse
	servopos B_moteur,100	' On freine la voiture en faisant marche arriére
	pause 200
end if

servopos B_moteur,150		' On eteint le moteur
servopos B_direction,150	' On met la direction au milieu

return
 

PieM

Senior Member
ligne 66 : If V_BPcam = 1 then gosub mouv_cam
mal placé, puisque tu n'a pas encore lu l' état du scratchpad.

pourquoi faire un contrôle de communication pendant l'action caméra, puisque ta voiture est à l'arrêt !???

l'action sur BP ne doit modifier que la destination des infos vers les servos de la cam au lieu de ceux de moteur et direction.

On a dit aussi qu'au relâchement, il fallait vérifier que la commande moteur était au neutre.

pour escape et freinage c'est OK.
 

dje8269

Senior Member
ligne 66 : If V_BPcam = 1 then gosub mouv_cam
mal placé, puisque tu n'a pas encore lu l' état du scratchpad.
Hum.... je l'avais placé ici pour le retour du go sub , comme ca il attaque direct avec une lecture scratchpad . Ta remarque est valable pour la première mise en service non ? tu le verrais ou toi ?

pourquoi faire un contrôle de communication pendant l'action caméra, puisque ta voiture est à l'arrêt !???
Je me suis posé cette question, et je me suis dis pourquoi pas ?!? . Que se passe-t-il en cas de perte de com, quand je pilote la camera ? Bien il arrête la voiture qui est déjà arrêté , remet la camera au PM , puis attend que la com revienne .
Si je fais pas de test que ce passe -t-il . La camera garde la position quel avait avant la perte de com, vu que le scratchpad n'est pas mis a jour .

La différence est minime , tu préfère que je l'enlève ?

On a dit aussi qu'au relâchement, il fallait vérifier que la commande moteur était au neutre.
Oui ça c'est fait , j'ai eu un peu de mal d'ailleurs . voici la partie qui s'en charge .
Code:
do 
	get 2,b2				' On lit la valeur du joystick moteur
	hi2cflag = 0			' On ré-arme le flag
loop while V_moteur>169 or V_moteur<160	' On boucle tant que le joystick n'est pas au PM
l'action sur BP ne doit modifier que la destination des infos vers les servos de la cam au lieu de ceux de moteur et direction.
J'ai pas compris ou tu voulais en venir ? en rapport avec la verifictaion des coms ?
 
Last edited:

jojojo

Senior Member
Une petite suggestion (je me suis déjà servi d'un protocole du même genre...).

Perte de com=Arret. Ok

Et puis ?...

On peut faire un poil mieux. (L'idéal est avec couplage de détection d'obstacle, mais on peut faire sans).

Donc, sachant, que en RF, à 400 Mhz, il suffit parfois de peu de choses, pour récupérer une com perdue, tu peux pré-programmer un scénario "catastrophe", en cas de besoin.

Huit tests, rien de plus:
Avance au Nord pendant un temps donné. (On va dire Temps=T, pour reparler de la detec d'obstacles)
Pas de retour com? Retour point de démarage. Si com, on rend la main.
Même chose huit fois si nécessaire, avec NE, E, SE, S, SO, E, NE. (facile, de 45° en 45°)
A toi de choisir un T potable, en fonction de l'environnement (c'est là, ou c'est plus simple (?) avec les détections d'obstacles, mais ...)

Bon, on peux faire mieux (ma préférée). Tu bosses l'équation de la spirale. (ici, vive archimede http://fr.wikipedia.org/wiki/Spirale_d%27Archim%C3%A8de ,et quand la com revient tu prolonges ton avance, sans plus toucher à la direction, pendant ... Toujours le fameux T.

Bon, après, avance technique oblige, j'ai fait autrement. GR-87-0B. Que du bonheur.
Maintenant, j'avoue, je préfère "tout sous Android".

Sinon, bravo, Jeremy, tu t'es bien dépatouillé et, tu as PROGRESSE. C'est de loin ce qui compte.
Georges.
 
Last edited:

PieM

Senior Member
Oui ça c'est fait , j'ai eu un peu de mal d'ailleurs . voici la partie qui s'en charge .
Exact, j'avais pas vu !

Ton prog serait plus simple sans doubler le contrôle.
Code:
#PICAXE 20X2

'#################################################################################
'##########################   Programme 28X2 Slave   #############################	
'#################################################################################

' B_ pour Broche, c'est le nom ou est branché le composant
' E_ pour Etat, c'est la valeur de la broche
' V_ pour Variable, ou est enregistré l'Etat de la broche

' 

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

'b0 à b7 pour les communications

Symbol V_TXcam = bit0
Symbol V_BPcam = bit1

Symbol V_moteur = b2
Symbol V_direction = b4
Symbol V_Pan = b6
symbol V_compteur_com = b8
symbol V_Tilt = b9

Symbol B_moteur = B.4
Symbol B_Direction = B.2
Symbol B_Pan = B.1
Symbol B_Tilt = B.0
Symbol B_Cam = PinC.5
Symbol B_Led = C.7

dirsB = %00010111 'declare Les broches B4,B2,B1 et B0  en sortie
dirsC = %10100000	'declare Les broches C7 et C5  en sortie


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

setfreq m8				' la commande servo ne fonctionne qu'a 8Mhz

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

servo B_Pan, 150			' Initialisation des commandes servo
servo B_Tilt, 160
servo B_moteur, 150		
servo B_Direction, 150		

put 2,167				' Ecrit dans le scratchpad la valeur du point milieu pour le moteur
put 4,104				' Ecrit dans le scratchpad la valeur du point milieu de la direction
put 6,104				' Ecrit dans le scratchpad la valeur du point milieu du Pan de la caméra

					
V_compteur_com = 0		' RAZ du compteur d'erreur communication	
		


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

main:
do

	high B_led					' Allume la led test, pour verifie la communication et indique que la voiture est allumée / / peut etre supprimé.
	'-----------------------------------	
	'##### perte de communication  #####
	
	do while hi2cflag = 0			' On attend l'arrivé d'un flag pour continuer, si c'est trop long, on arrete la voiture
		V_compteur_com = inc V_compteur_com 'Compteur d'erreurs de flag
		if V_compteur_com > 50 then 	' en augmentant le chiffre , on augmente le delai de  reaction
			gosub Escape		' Si plus de 50 erreurs à la suite, on arrete la machine
		end if
	loop

	get 0,b0,b1,b2,b3,b4,b5,b6,b7		' Lecture du scratchpad
	hi2cflag = 0				' re-armement du flag
	V_compteur_com = 0			' RAZ du compteur			
	low B_led					' On eteind la led test
	
	'------------------------------
	'#####  Commande des TOR  #####
	
	B_Cam = V_TXcam				' Declenche la caméra si le bit0 est à 1
	If V_BPcam = 1 then gosub mouv_cam	' Si le BP est appuyé, on va piloter la camera
			
	'--------------------------------
	'#####  Commande du moteur  #####
	' Point milieu 167 +/- 1
	' En Avant (V_moteur va 167 à 78)		/ Valeur du servo de 150 à 200
	' En arriére ( V_moteur va de 167 à 255 )	/ Valeur du servo de 150 à 100
		
	Select case V_moteur
		case < 163					' Marche avant
			V_moteur = V_moteur / 2
			V_moteur = 242 - V_moteur
		case > 171					' Marche arrriére
			V_moteur = V_moteur / 2
			V_moteur = 225 - V_moteur
		else			
			V_moteur = 150			' Point mort
		
	end select
	servopos B_moteur, V_moteur		' envoi du pwm sur le moteur
		
	'--------------------------------------
	'#####  Commande de la direction  #####
	' Point milieu du joystick 104
	' Tourne à droite (V_direction va de 104 à 185) / position du servo de 150 à 120 
	' Tourne à gauche (V_direction va de 104 à 29) 	/ position du servo de 150 à 180
	
	Select case V_direction
		case < 101					' Tourne à gauche	
			V_direction = 101 - V_direction * 5/12
	 		V_direction = 150 + V_direction
	 	
		case > 104					' Tourne à droite
		 	V_direction = V_direction - 104 * 5/12
		 	V_direction = 150 - V_direction min 120
		else
			V_direction = 150			' Point mort
		
	end select
	servopos B_Direction,V_direction	' Positionnement du servo
	
loop		


'####################################################################################################
'					Programme secondaire
'####################################################################################################

mouv_cam:

	gosub freinage
	
do while V_BPcam = 1
		get 0,b0,b1,b2,b3,b4,b5,b6,b7	
	'----------------------------------------
	'#####  Commande Tilt de la camera  #####
	' Point milieu du joystick 104
	' Vers le haut (V_moteur va de 167 à 78)	/ position du servo de 150 à 70 (max 69)
	' Vers le bas (V_moteur va de 167 à 255)	/ position du servo de 150 à 160 (max 172)			

	V_Tilt = V_moteur
	V_Tilt = V_Tilt max 160

	servopos B_Tilt, V_Tilt 
	
	'---------------------------------------
	'#####  Commande Pan de la camera  #####
	' Point milieu du joystick 104 +/-1
	' Tourne à droite (V_Pan va de 104 à 181)	/ position du servo de 150 à 65
	' Tourne à gauche (V_Pan va de 104 à 32)	/ position du servo de 150 à 235 

	select case V_Pan
	
	case > 170
		servopos B_Pan,80		' Fonctionnement en creneau pour eviter les mouvements parasites
	case > 160
		servopos B_Pan,90
	case > 150
		servopos B_Pan,100
	case > 140
		servopos B_Pan,110
	case > 130
		servopos B_Pan,120
	case > 120
		servopos B_Pan,130
	case > 110
		servopos B_Pan,140
	case < 40	
		servopos B_Pan,220
	case < 50	
		servopos B_Pan,210
	case < 60	
		servopos B_Pan,200
	case < 70	
		servopos B_Pan,190
	case < 80	
		servopos B_Pan,180
	case < 90	
		servopos B_Pan,170
	case < 100	
		servopos B_Pan,160
		
	else 
	
		servopos B_Pan,150	' Point mort
	
	end select


loop			' On reboucle pendant tant que le BP est à 1

servopos B_Tilt, 160			' on place le tilt au milieu
servopos B_Pan, 150			' on place le pan au milieu


do 
	get 2,b2				' On lit la valeur du joystick moteur
	hi2cflag = 0			' On ré-arme le flag
loop while V_moteur>169 or V_moteur<160	' On boucle tant que le joystick n'est pas au PM

return



'####################################################################################################
'					Programme secondaire
'####################################################################################################


'########     Arret de la voiture     ##########
Escape:

Gosub freinage

servopos B_Tilt,160
servopos B_Pan,150

do loop while hi2cflag = 0	' Tant que le scratchpad n'as rien recu on laisse le moteur eteint
	
V_compteur_com = 0		' En sortant de la boucle, c'est que la communication est revenue
hi2cflag = 0			' On remet le compteur a 0 et on ré-arme le flag

return

		
'########     freinage + arret de la voiture     ##########
freinage:
if V_moteur < 130 then 		' Si la voiture était en marche arriére à une certaine vitesse
	servopos B_moteur,200	' On freine la voiture en faisant marche avant
	pause 200
end if

if V_moteur > 170 then 		' Si la voiture était en marche avant à une certaine vitesse
	servopos B_moteur,100	' On freine la voiture en faisant marche arriére
	pause 200
end if

servopos B_moteur,150		' On eteint le moteur
servopos B_direction,150	' On met la direction au milieu

return
ou alors il faut le modifier pour que la boucle de contrôle soit commune aux deux types d'action.
pourquoi aller sur mouv_cam si on a pas contrôlé que l'émetteur vidéo était à 1 ?
 

dje8269

Senior Member
J'ADOORREEEE !!!!

Mais bon, c'est pas un drone quand même . je pense d'après les émetteurs récepteurs choisis, que ce sera la vidéo qui tomberas bien bien avant la radio .
de plus au lieu de faire bouger la voiture , je peux me déplacer mon même . lol .

Mais c'est génial , peut etre pas une siprale d'archiméde , mais juste une marche avant en tournant a droite , puis une marche arriére a gauche plusieurs fois ....... .

Si on respecte une certaine logiques; sans voir la voiture, dans 99.9 % je serais en marche avant ,(Je peux pas regarder en marche arrière, lol , 0.1% c'est pour les petits ratés qui impose une marche arrière), en cas de perte de com je peux faire marche arrière pendant une seconde par exemple ; surtout que le scratchpad gardera la valeur de la direction . Donc même si j'étais en train de tourner , la direction reste la même , seul le moteur fais marche arrière ;

Genial cette idée !!!!
 

PieM

Senior Member
Genial cette idée !!!!
Moi je veux bien, mais je n'ai pas compris l'intérêt de faire bouger à priori la voiture dans tous les sens si on a plus de com et qu'on risque de ne pas être en visu directe.
Parce que si la bagnole n'est pas loin d'un point d'eau, ou peut présenter un danger quelconque ... :confused:

ou alors il faut la barder de capteur et on en fait un robot autonome. Mais c'est autre chose !

Pas tout compris là ....
 

jojojo

Senior Member
(Je peux pas regarder en marche arrière, lol
.
Si. Si ta vdéoo fonctionne, un bête petit bout de miroir, et ... Un petit rétro fonctionne très bien ...
Moi je veux bien, mais je n'ai pas compris l'intérêt de faire bouger à priori la voiture dans tous les sens si on a plus de com
L'intérêt consiste à récupérer la com. En VHF, UHF, c'est parfois à 10cm près.
 

dje8269

Senior Member
Bon, après, avance technique oblige, j'ai fait autrement. GR-87-0B. Que du bonheur.
Maintenant, j'avoue, je préfère "tout sous Android".
Ben je connais pas GR-87-B ?

Sinon, bravo, Jeremy, tu t'es bien dépatouillé et, tu as PROGRESSE. C'est de loin ce qui compte.
Merci bien Georges, ca fait plaisir ; effectivement le tout c'est de progresser en même temps je partais de rien donc pas trop dur de progresser . Mais un petit mot sympa, ca fait toujours plaisir, car j'ai eu de gros bas avec cette voiture ....... de très gros bas, elle est passé a un cheveux de partir par la fenêtre ...... maintenant elle arrache le bitume. J'espère que la vidéo seras bien aussi . 500 mètres de portée serait tout simplement génial .

Moi je veux bien, mais je n'ai pas compris l'intérêt de faire bouger à priori la voiture dans tous les sens si on a plus de com et qu'on risque de ne pas être en visu directe.
Parce que si la bagnole n'est pas loin d'un point d'eau, ou peut présenter un danger quelconque ...
Ce que veut dire Georges , c'est que la liaison radio peut se couper pour un rien, un arbre , un obstacle de rien du tout une ligne électrique . et quand cela se produit, le fait que la voiture bouge toute seule peut faire revenir la communication .
Je trouve ca très pertinent et très facile a mettre en &#339;uvre . C'est sur on demande pas a la voiture de sortir d'un labyrinthe , juste de reculer sur quelques mètres . par exemple une ou deux secondes pas tres vite .

Si la position de la direction reste la même, y'as aucune chance que je tombe dans un point d'eau , car en reculant , la voiture passeras forcement par la ou elle est déjà passée donc a priori pas sur l'eau ; cependant plusieurs problème dans mon cas .

Le fait que la com se perd très régulièrement car j'éteins mon émetteur au bout d'une seconde sans action sur les commandes ; Au pire on peut déclencher la sauvegarde au bout d'une minute par exemple . mais bon , dans la pratique , je me dirigerais naturellement vers la voiture a pied . j'aurais de meilleur résultat je pense .

Si la com se perd quand par exemple j'ai éviter un obstacle j'ai remis les roues droites , et paf , ca coupe ; la voiture risque de reculer dans l'obstacle . Si je vais doucement à la limite c'est pas trop grave ( le lac deja un peu plus lol) .

L'ideal serait d'enregistrer toutes les actions sur 10 secondes , qui tournerais en rond ; la 11 secondes effacerais la première . ainsi je pourrais revenir 10 secondes en arrière très précisément non ?
Mais je suppose qu'il faudrait beaucoup de mémoire pour stocker 10 secondes d'informations .

J'ai hâte de vous présenter la bête finie avec une vidéo . j'espère que ca vous plaira !
 

PieM

Senior Member
Le fait que la com se perd très régulièrement car j'éteins mon émetteur au bout d'une seconde sans action sur les commandes
Ben oui ! ça me semble important non ?
 

dje8269

Senior Member
Ben oui ! ça me semble important non ?
N'ayant aucun recul , et retour d'expérience sur ce genre de module et aussi pour préserver la batterie , je met l'extinction de l'émetteur en priorité. Peut être que je pourrais émettre 10 minutes sans problème , peut être pas .
 

PieM

Senior Member
N'ayant aucun recul , et retour d'expérience sur ce genre de module et aussi pour préserver la batterie , je met l'extinction de l'émetteur en priorité. Peut être que je pourrais émettre 10 minutes sans problème , peut être pas .
Ce que je voulais dire c'est que provoquant volontairement des arrêts d'émission, il me semble difficile de faire autre choses que des arrêts de la voiture.
 

jojojo

Senior Member
car j'éteins mon émetteur au bout d'une seconde sans action sur les commandes
Je t'ai déjà dit que ce n'était pas la bonne solution.

Mais, tu fais comme tu le sents. Oublie les écolo's et la nécessité de "consommer moins".
Et, oui,je suis bien sur que la vidéo va nous plaire.
 

dje8269

Senior Member
Je t'ai déjà dit que ce n'était pas la bonne solution.
???!!!???? ah bon ? Alors la je m'en souviens pas ..... . Tu es 100.000 fois plus expérimenté que moi la dessus ,je t'aurais certainement écouté . C'était quoi ta solution ? tu pense que je peux émettre avec 450mw pendant 10 minutes ? ; déjà que j'ai du mettre un radiateur sur le régulateur lol .... , au bout de dix minutes , je vais pouvoir faire cuir des &#339;ufs sur ma télécommande lol .

PS : peut-on simuler le hic2flag ?
 
Last edited:

Jacques ROBERT

Senior Member
450 mw?vous etes sérieusement au delà des NORMES autorisées, mé...fi (comme on dit à Marseille)des controles et des risques de problèmes avec les voisins!!!
 

dje8269

Senior Member
Ben je l'ai acheté en France pourtant ? ou du moins sur un site français . ou du moins sur un distributeur français , bref chez farnell quoi ! lol . Je suis pas certains que quelqu'un vienne se plaindre la ou je suis . :p
 

PieM

Senior Member
450 mw?vous etes sérieusement au delà des NORMES autorisées, mé...fi (comme on dit à Marseille)des controles et des risques de problèmes avec les voisins!!!
Entre 869.4 et 869.65 MHz, il est autorisé 500mW avec 10% de duty cycle.

En dehors de ça, tirer en continu plus de 350 mA sur une batterie de 7.4V 800 mAh, avec une tolérance d'alim du TX de 5V +/- 0.1V, je suis dubitatif !!
 

dje8269

Senior Member
7.4V 800 mAh
Je pense à la changer celle ci ; car c'est de la récup d'un vieillie hélicoptère ( je l'avais achété avec la radiocommande et le chargeur pour 2&#8364; ) j'en prendrais une avec une meilleure capacité ,car j'ai de la place dans la télécommande ' l'emplacement des piles . je pense mettre une 1500/2000 mAh . et une 3000mAh pour la voiture voir plus !!

Entre midi et deux je vais faire la carrosserie , ce week end test de portée vidéo ; La voiture fonctionne toujours a merveille ; je vais voir à l'usage pour améliorer le système de freinage . car je me suis rendu compte qu'on peut faire marche arrière si on avance , mais il faut obligatoirement passé par la position neutre durant un certain temps . C'est bien fait ces petites bêtes .
 

PieM

Senior Member
j'en prendrais une avec une meilleure capacité
Mais le problème n'est pas seulement là ! Il faut connaître les caractéristiques complètes de l'accu, car il est très possible qu'un accu chargé descende à moins de 6V si tu tire 350 mA.
Auquel cas ta tension d'alim du TX (5V ± 0.1V) est dans les choux. (Ce qui est peut être déjà le cas actuellement!)
 

dje8269

Senior Member
car il est très possible qu'un accu chargé descende à moins de 6V si tu tire 350 mA.
En parlant de ca , je ne comprends pas pourquoi une batterie s'effondre en tension ,quand on lui demande du courant ? Je pensais qu'elle se vidait plus vite et puis c'est tout . Naïf que je suis .Si c'est 6V encore ca va , avec le régulateur low drop .
Tu veux que je mesure quelques choses pour voir ?
 

PieM

Senior Member
En parlant de ca , je ne comprends pas pourquoi une batterie s'effondre en tension ,quand on lui demande du courant ? Je pensais qu'elle se vidait plus vite et puis c'est tout . Naïf que je suis .Si c'est 6V encore ca va , avec le régulateur low drop .
Tu veux que je mesure quelques choses pour voir ?
Ben rien n'est parfait, encore moins piles et batteries. Elles ont une résistance interne, donc une chute de tension en fonction du courant. En plus des phénomènes chimiques qui peuvent limiter durée de vie et capacité.
Et selon le type d'accu, tu peux avoir une sécurité interne qui limite le risque de trop descendre en tension par coupure.
Amuse toi à mesurer la tension à l'alim de ton TX quand il émet.
 

dje8269

Senior Member
Bonjour à tous,

Amuse toi à mesurer la tension à l'alim de ton TX quand il émet.
Oui j'avais deja fais des test , quand j'avais eu le probléme avec les piles . J'en ai refais ce matin histoire d'être sur !

La batterie est une Li-Po 7.4V 800mAh 10C


Mesure prise au plus pret du TX :

Sans émission : 4.995 V
Avec émission : 4.956 V

Mesure prise a l'entrée du régulateur du TX
Sans émission : 7.784 V
Avec émission : 7.701 V

PS: @PieM , j'ai commandé l'analyseur logique que tu mas conseillé .
 
Last edited:

dje8269

Senior Member
La voiture est prête pour les tests . En rentrant à la maison je mis colle ; Je croise les doigts !!!

Je me suis un peu loupé sur la taille de la carrosserie , le trou de la caméra est trop gros .
 

dje8269

Senior Member
Je croise les doigts !!!
Même en les croisant , ca n'as pas fait de miracle .

Alors, le résultat est mitigé, commençons par les cotés positifs :

La voiture et toutes les fonctions fonctionnent vraiment parfaitement, et ce moins éloigné de plus de 200m . j'ai pas pus allez plus loin je voyais plus la voiture. Même l'émetteur vidéo allumé aucun bug, rien .
les performances de la voiture n'ont certes rien a voir avec les µC ou autres , mais elle va vraiment très vite, très nerveuse ; la réactivité est au top niveau .
la commande freinage et arrêt sont très utile.

Questions voiture et radio commande parfait, je m'attendais pas a ça . je ferai un test de portée avec ma femme pour savoir quand même les limites ;

Vous aurez devinez le point noir, et il fallait s'y attendre, car c'était de loin le plus difficile pour obtenir de bons résultats , la vidéo .

Pour etre franc j'ai même été plutôt déçu .
la qualité vidéo pas trop mal, mais c'est pas une priorité .
L'ombre au tableau bien sur c'est la portée ; je ne désespère pas obtenir des améliorations toutefois . Les symptômes , dés que le moteur tourne a partir de 50m je n'avais plus la vidéo . j'avançais donc a l'aveugle , petit à petit . j'arrêtais la voiture, la vidéo revenait , je ré-avançait de quelques mètres , puis je m'arrêtais . ceci jusqu'à environ 100-150m . Ensuite plus du tout de vidéo même arrêté .

Le récepteur vidéo était sur ma tête ( je l'ai positionné sur l'élastique des lunettes d'immersion) . j'ai essayé avec l'antenne d'origine et une antenne à polarisation circulaire( je crois qu'on dis comme ca) . j'ai également essayé sans le mat sur l'antenne émission ( sur la voiture) et avec le mat de 30 cms ; ça n'as pas été très folichon .

Comme le récepteur était sur ma tête , parfois en la bougeant ( ma tête) la vidéo revenait .

donc si vous avez des idées pour améliorer la vidéo je suis preneur . je suppose que je perd beaucoup avec le moteur . car ils sont proches l'un de l'autre ( voir juste au dessus) ;

Que pensez-vous de mettre une plaque de cuivre entre les deux ? en la reliant a la carcasse de l'émetteur par exemple ?

je vais donc vous faire quelques photos et vidéo au plus vite .

Pour les détracteurs, je savais que la vidéo allez être le plus délicat, je suis juste un peu dessus des performances, j'avoue que j'espérais mieux. Mais bon c'était un premier jet . Rome ne s'est pas construit en un jour !
 

dje8269

Senior Member
Le ballon relais
Euh .... je pense pas que ce soit tres pratique lol, mais c'est une idée . on pourrais combiner voiture et un quadri-copter pour faire relais; En cherchant je suis sur que ca doit se trouver .

Avec une application téléphonique, 3G etc ... , pas possible non plus .

Juste un meilleur ensemble Tx/Rx vidéo . Je suis justement en train de chercher en descendant en fréquences genre 433mhz , mais pas évident, car je dois trouvé ca à l'étranger .
 

PieM

Senior Member
Qu'est ce que tu as comme émetteur vidéo ?
Comprends pas trop ton histoire d'antennes. Si tu as une antenne à polarisation circulaire, il faut qu'elle soit des deux cotés !
 

dje8269

Senior Member
Qu'est ce que tu as comme émetteur vidéo ?
Il s'agit d'un Tx de marque law mate plutôt bonne cam , de 1.2Ghz et de puissance 1000mW .Emetteur vidéo
Voici le récepteur associé : Rx Vidéo
Comprends pas trop ton histoire d'antennes. Si tu as une antenne à polarisation circulaire, il faut qu'elle soit des deux cotés !
J'ai fais des test avec les antennes d'origine , celles que tu peux voir sur les liens . en même temps j'avais achetés ces antennes la ! Mais j'ai cassé celle de l'émetteur (3 brins) . j'ai donc essayé en mettant que celle de la réception ( 4brins) . je ne savais pas qu'elles devaient être mise forcement ensemble .
Je pense que coté antenne, on peu amélioré la chose ;
 

MGU

Senior Member
Et avec une antenne parabolique sur la tête, en regardant vers la voiture?
En tout cas, ce serait drôle...

MM
 
Top