Télécommande voiture RC + caméra

dje8269

Senior Member
ça c'est facile. le problème est que quand tu tourneras la tête tu ne verras plus l'écran !
??? !!! ????? tu n'as pas dus regarder mon lien ? Il s'agit de lunette pour l' immersion , quand je tourne la tête j'ai toujours l'écran devant les yeux vu que l'ecran est au fond des lunettes....
 

PieM

Senior Member
??? !!! ????? tu n'as pas dus regarder mon lien ? Il s'agit de lunette pour l' immersion , quand je tourne la tête j'ai toujours l'écran devant les yeux vu que l'ecran est au fond des lunettes....
Ah mais si tu veux faire des lunette avec écran incorporé, là je crois que tu vises un peu haut !!
 

dje8269

Senior Member
Non non , les lunettes on peu me les preter ; Le principe seras par exemple , c'est juste une idée pour le moment ; D'accrocher un systeme sur les lunettes ou la sangle des lunettes permettant de detecter quand on tourne la tête ; Le fait de tourner la tête permettras de faire tourner la camera sur la voiture .

Pour simplifier, pouvoir piloter la camera sur la voiture , avec les mouvements de la tête! je tourne la tete a droite la camera tourne a droite , je leve la tete la camera regarde en haut ! bref tu vois le principe ;

Car j'ai vraiment été impression par ce phenome d'immersion , c'est incroyable ! le seul truc quand on conduit en immersion , on perd ces reperes ! alors piloter la voiture et bouger la camera se révèle du grosse difficulté ; alors que si la camera tounerais avec les mouvement de la tête sa rendrait la chose beaucoup plus naturelle et impressionnante .
 

PieM

Senior Member
Non non , les lunettes on peu me les preter ; Le principe seras par exemple , c'est juste une idée pour le moment ; D'accrocher un systeme sur les lunettes ou la sangle des lunettes permettant de detecter quand on tourne la tête ; Le fait de tourner la tête permettras de faire tourner la camera sur la voiture .

Pour simplifier, pouvoir piloter la camera sur la voiture , avec les mouvements de la tête! je tourne la tete a droite la camera tourne a droite , je leve la tete la camera regarde en haut ! bref tu vois le principe ;
Je t'ai donné la réponse : il te faut un magnétomètre compensé avec accéléromètres.
Capt_mag.jpg

Celui ci est encapsulé dans du plexi. relativement cher car très précis pour une appli médicale.
Mais pour ton utilisation on peut trouver du bon marché.
 

dje8269

Senior Member
Bonjour ,

voici une petite vidéo avec le principe : vidéo

Malheureusement je n'ai pas encore creuser la problématique , alors je ne sais pas ce qu'est un magnétometre compensé avec accélerometres . Mais rien que le nom , ca calme tout de suite . J'avais juste pensé a faire ca, en lisant pedro51 sur l'inclinaison de la moto etc ...

Apres je confirme que cela reste une petite idée, mais si tu me dis que c'est trop dur je laisse tombé .

Pour en revenir à nos moutons , je ne connais pas le travail avec memoire EEPROM ( je crois) . car cette histoire de slave master m'inquiquine ; si mon 14M2 de reception de Rfin envoie les infos sur une memoire eeprom ; Est ce que deux picaxes peuvent allez cherché les infos sur cette memoire ? car si je comprends on peut pas relié deux picaxes ensembles avec une liaison i2c sans un X2 s'il faut toujours un esclave . Quelque chose doit m'échapper . Désolé pour mon ignorance .
Si c'est pas possible , je vais abandonner l'idée de la musique et me concentrer sur le pilotage de la voiture de la camera , et l'allumage des phares ( qui ne clignoteront pas bien sur :) )
 

PieM

Senior Member
Déjà dit: le scratchpad d'un X2 est vu comme une mémoire EEPROM externe de la part de tout Picaxe, car tous les Picaxes sont maîtres en I2C. (les X2 pouvant être en plus esclaves)
N'importe quel Picaxe peut aller lire et écrire dans cette mémoire.
 

dje8269

Senior Member
Ok , decidemment je me perds la dedans :

Alors je reprends :

Il serait composé d'un 14M2 maitre pour recevoir le RFin et ecrire dans le scratchpad de deux esclaves .
Un 20X2 slave pour les commandes de la voiture(4 servos) en liaison i2c avec le 14M2 master .
Un 14M2 slave pour les commandes qui demande du temps aussi en liaison i2c.
En fait , peut il être composé d'un 14M2 maitre qui écrit dans le scratchpad du 20X2 qui lui serait esclave .
Un 20X2 esclave pour les commandes de la voiture (4 servos) en liaison i2c avec le 14M2 (RFin).
Et un autre 14M2 ( donc maitre par defaut) qui irais lire les infos dans le scratchpad du 20X2 ( pour jouer musqiue, gyor et autres TOR ) ?

Ceci serait-il possible ?
 

dje8269

Senior Member
Je pensais que deux maitres était incompatibles seulement possible avec deux esclaves . Ok merci beaucoup PieM !
 

dje8269

Senior Member
re moi,

désolé je suis plus sur le hard en ce moment plutôt que sur la programmation . ca ne serais tardé pour la prog....

Je pensais à un truc pour me simplifier la vie , mais je n'ai pas trouvé mon bonheur ;

Il s'agirait d'un composant capable de piloter des led ( 5 dans mon cas) en toute simplicité . car en brancher une à chaque sortie de PICAXE serait beaucoup trop gourmand en courant ( 5x15= 75mA) , mettre un transistor à chaque fois c'est quand même plutôt galère pour une diode .
Alors j'ai recherché quelques chose comme driver de led , mais j'ai rien trouvé de probant. Du coup je me demandais si en utilisant un décodeur BCD d'affichage 7 segments si au lieu de mettre un afficheur , je mettais une led ( qui est d'ailleurs une led je suppose pour un segment) a la place des segments ?

L'utilisation final : avoir un mini bargraphe pour la batterie ( vert/orange/rouge , une led pour l'allumage du VTX , une led quand l'emetteur émet ) .

Je sens que je vais encore passer pour un boulet, mais bon pas grave !!!
 

dje8269

Senior Member
Après avoir feuilleter quelques infos sur ce composant , je me suis rendus compte qu'il ne convenait pas en faite .Il me semble avoir compris que dans le principe il contrôle des leds suivant une tension de référence . il il allume une a une par palier !.

Mais moi je voudrais contrôler des leds indépendamment les unes des autres , avec par exemple un codage sur 3 bit ( allumage de 7 leds) . Un peu comme un decodeur BCD il me semble, mais au lieu d'allumer un segments d'un afficheur cela allumerai une led .
 

dje8269

Senior Member
Peut etre qu'un petit circuit comme pourrait faire l'affaire . une sortie de picaxe par led mais sans aucun autre composants a part une resistance de limitation de courant par led ; ca simplifie deja pas mal ; et plus facile à programmer qu'un codage sur 3 bit pour 7 leds !

Lien vers ULN2003
 

PieM

Senior Member
L'utilisation final : avoir un mini bargraphe pour la batterie ( vert/orange/rouge ) .
LM3914. pas besoin du picaxe.

une led pour l'allumage du VTX , une led quand l'emetteur émet .
deux leds.
toujours pas compris pourquoi il te faut un transistor ou un uln2003 pour allumer une led sur un picaxe !
 

dje8269

Senior Member
Hello,

ah ok , j'avais pas compris que le LM3914 était prévu "que" pour les le barre-graphe et ensuite deux autre leds a coté . Du coup ca me fait utiliser un "gros" composant (DIP 18) pour trois leds par très rentable tout ca .

Toujours pas compris pourquoi il te faut un transistor ou un uln2003 pour allumer une led sur un picaxe !
Ben a la base je devais allumé 5 leds donc 75mA , et il me semble que le picaxe peut sortir aux max 90mA( sur toutes ses sorties) , je trouve que ca faisait très proches de sa limite .

Il faudrait inventer ce genre de composant . On l'alimente , 3 ou 4 broches d'entrée pour le codage sur bit et plusieurs sorties en 15mA sans aucune résistance a rajouter : la grande classe lol .
 

PieM

Senior Member
Hello,

ah ok , j'avais pas compris que le LM3914 était prévu "que" pour les le barre-graphe et ensuite deux autre leds a coté . Du coup ca me fait utiliser un "gros" composant (DIP 18) pour trois leds par très rentable tout ca .
Ben a la base je devais allumé 5 leds donc 75mA , et il me semble que le picaxe peut sortir aux max 90mA( sur toutes ses sorties) , je trouve que ca faisait très proches de sa limite .
Il me semblait que tu étais limité en consommation avec tes piles... vouloir tout allumer en même temps est du gachis d'énergie.

Une led se met au rouge si ta batterie est faible. une led s'allume en même temps que ton TX et change de couleur quand tu emets.
donc deux leds maxi allumées en même temps.

Pense aussi qu'accessoirement ton émetteur doit avoir un peu de temps pour ... émettre!

Il faudrait inventer ce genre de composant . On l'alimente , 3 ou 4 broches d'entrée pour le codage sur bit et plusieurs sorties en 15mA sans aucune résistance a rajouter : la grande classe lol .
ça existe. module-bargraphe-grove-led
mais je ne conseille pas à cause de la programmation...
 

jojojo

Senior Member
Pourquoi pas un déco BCD Décimal ?
Avec des led's HL, 5 mA suffisent amplement. Donc, même pas de driver.
(CD4028 ?)
 

PieM

Senior Member
Pourquoi pas un déco BCD Décimal ?
Avec des led's HL, 5 mA suffisent amplement. Donc, même pas de driver.
(CD4028 ?)
sous 5V je ne pense pas que le 4028 sorte 5mA....
En plus notre ami veut pouvoir allumer plusieurs leds à la fois, semble t-il.

Je pense que dans peu de temps nous aurons un post demandant comment faire pour augmenter la réactivité de son système E/R. :rolleyes:
 

dje8269

Senior Member
Me revoilou ,

Pour le probéme d'energie, j'avoue ne pas tout avoir compris, je suis honnête . en fait en l'état actuel des choses ca fonctionne trés bien , certainement pas a fond , mais très bien ( la limite de la portée est fixé par la vidéo et non par la télécomande j'ai eu aucun bug pour le moment) . Malgres que quand j'emet la tension chute

entre du régulateur : sans tx 7V en émettant 5.5V
sortie du régulateur : sans tx 4.95V en émettant 3.8V

Voila je vous ai pas plus embêter que ca , car ca fonctionne ainsi , je voulais faire les choses bien mais comme je comprends pas tant pis . J'ai trouve une autre solution .

La télécommande NG est beaucoup plus grosse( donc plus de place) je vais donc l'alimenter par une batterie li-ion de 7.2V 800mAh ainsi je pourrais la recharger , et normalement j'espère qu'elle pourra fournir les 350mA du TX . Voila vous savez tous sur l'énergie . Bien entendu votre je reste ouvert a votre expertise ;

Georges ton idée me plait bien , je vais tester pour voir, si j'ai le temps entre midi et deux

PieM je trouve que tu essaie d'esquiver le problème ren allumant que deux leds !!! . Sur la le télécommande il y as deja 4 leds a un emplacement prévu . Pour ne pas défiguré le physique de la télécommande je préfère utilisé ces emplacements .

Pour le temps d'émettre pas de soucis la dessus je comptais justement rajouter un picaxe dédié a tout ce qui ne touche pas aux commandes . Tension de batterie , voyant batterie , voyant émission ....... Toujours avec un 20M2 consacré exclusivement a émettre et un 14m2 ou 20m2 pour gerer les a cotés .

Je prends en compte la possibilité ( bien plus tard) du casque avec l'accéléromètre compensé ! .

Pour le moyen je travaille sur la réception vidéo qui n'est pas top . environ 200M en champ libre . pas suffisant a mon gout ! En tout cas la première voiture avec sirène et gyro roule vraiment bien et je vous en remercie encore . Le fiston a réglé le problème du couple quand elle coince ( pas assez de couple) un bon coup de pied derrière débloque le problème. :cool:
 

PieM

Senior Member
Georges ton idée me plait bien , je vais tester pour voir, si j'ai le temps entre midi et deux
Tu as lu #819 ? un CD4028 délivre 1mA sous 5V, et ne te permet d'allumer qu'une led à la fois.
 

dje8269

Senior Member
Je possède des SN74LS47N des décodeurs BCD 7 segments . Sur la Datasheet je lis sink current 23mA, la traductuion de sink current de me donne rien de valable ! je ne comprends pas ce terme !

Un peu plus loin dans le document ( haut de la page 9) : on peut lire "Current forced into any output in the off state : 1mA" Est ce que c'est le courant qui sort quand la sortie est a l'etat bas ? et 23mA quand il est a l'etat haut ?

Les DS sont parfois complicated lol
 

jojojo

Senior Member
Pour la portée vidéo, c'est déjà très bien.

Si tu veux plus, il y a deux solutions:
- Un ballon relais (je l'ai fait il y a plus de vingt ans !...)
- Le modem GSM (2€/mois), et portée ... Illimitée.
 

PieM

Senior Member
les sorties sont des collecteurs ouverts donc la charge est reliée à V+ avec 23 mA max de courant admissible.

Mais c'est un décodeur BCD 7segments ce qui n'a rien à voir avec ce que tu veux faire ! si tu as codé 2 en entrée, tu as 5 sorties activées pour les segments.
 

dje8269

Senior Member
Mais c'est un décodeur BCD 7segments ce qui n'a rien à voir avec ce que tu veux faire ! si tu as codé 2 en entrée, tu as 5 sorties activées pour les segments.
Ah ben ca , je l'avais pas vu venir . Tu as raison ; pour affiché 2 il faut 5 led . Zut alors !!!

Pour la portée vidéo, c'est déjà très bien.
Je vais travailler sur les antennes . car pour le moment elle est directement branché sur l'émetteur ( vidéo) , et reste a très faible hauteur . Je pense rajouter une petite perche d'environ 30 à 40 cm et mettre l'antenne au bout .
 

dje8269

Senior Member
Bonsoir à tous,

des nouvelles du front !!.

La télécommande NG arrive enfin à terme pour sa V1 . j'espère la finir demain soir , si je rencontre pas de problème hard ; Elle est finalement composée d'un 18M2 pour la partie émission, un 14M2 pour les options, leds batterie , test batterie , bip . Pour les leds voyant batterie j'ai finalement tilisé un ULN2003 pour garder de la souplesse si jamais la télécommande évolue ( il me reste 3 sorties).Mais l'idée du vue-metre était bien aussi ( j'en ai vu des super beau, peut être pour un autre projet).
Je n'ai pas réalisé la fonction extinction automatique car j'en avais un peu marre de tout refaire . Mais peut être pour la prochaine version :rolleyes:.

En // j'ai augmenté l'antenne de la voiture d'une trentaine de centimètre afin j'espère de gagner en portée vidéo( test avec la nouvelle radio commande ;

Voila , pour les news .

a trés vite pour la programmation !!
 

alainav1

Senior Member
bonjour,
"j'ai augmenté l'antenne de la voiture"
je pense que la longueur optimum de l'antenne c'est 1/4 de la longueur d'onde (ou alors 1/2 onde ) mais l’efficacité n'est pas proportionnelle a la longueur )
cordialement
Alain
 

dje8269

Senior Member
"j'ai augmenté l'antenne de la voiture"
Euh..... effectivement alainav1 tu as entièrement raison . Mais en fait je remarque que ma phrase est très mal tournée . Je n'ai pas augmenté la hauteur de l'antenne en elle même , je l'ai sur-élevé en fait . j'ai fabriqué une rallonge de 30 cms ( coax blindé) et j'ai l'ai mise en haut d'un mat . Des photos seront bientôt disponible .

J'ai finis la télécommande en hard et j'ai tout testé,peut etre aurez vous des photo ce soir . il me reste plus qu'a tout reprogrammé . je vous posteras tout ça en temps voulus . Même si ça me démange de posté car je bute déjà sur un premier problème pour calibrer l'allumage des leds en fonction de la tension batterie !!!!
 

dje8269

Senior Member
Bonjour à tous,

Bon voila , je galère . Je m'en remet donc a vous ;

je cherche le moyen de faire un espèce de comparateur a hystérésis en soft ;

Je vais essayer de vous expliquer avec un exemple concret .
en effet je test la tension de la batterie avec un readadc .jusque la pas de problème.

Quand la tension tombe sous un certain seuil . disons 8V ( batterie pleine 8.2V) . Je voudrais donc éteindre une led et émettre un petit beep afin de signaler un changement d'état de la tension de la batterie . ça je pense y arriver .

Malheureusement j'ai pas d'alimentation stabilisé à la maison pour testé, donc je ne fais que des suppositions, mais j'en suis quasiment sur , quand on arrive à ce seuil , il va y avoir des scintillements de la led et des beep sen permanence, Car la tension va oscillée autour de cette valeur ( un coup au dessus un coup en dessous) .

J'ai pensé à faire un truc compliqué pour y arrivé mais je me demandais si il n'y avait pas un moyen plus simple .

Voici mon code actuel en cours soyez indulgent hein !!! ( il n'est pas optimisé)
A l'allumage la télécommande fais une animation avec les leds ( des aller retours), et emet 3 petit beep . Ensuite j'aimerais qu'a chaque changemlent de seuil , cela éteigne une led et émette un petit beep .

Code:
#PICAXE 14M2
'#################################################################################
'########################    Programme Option    ###########################	
'#################################################################################

'##########################    configuration    ################################	
' 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ée l'Etat de la broche

'b1 case
'b2 for next animation
'b3 fornext buzzer
'b4 changement


symbol B_LED_R	=B.5
symbol B_LED_O	=B.4
symbol B_LED_J	=B.3
symbol B_LED_V	=B.2
symbol B_Beep	=C.4
symbol B_tension 	=C.0

dirsB = %00111110 'declare B.1,2,3,4,5 en sortie
dirsC = %00010000	'declare C.4  en sortie

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

'setfreq m4


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


Start1:

gosub animation		' Lance l'animation du début avec les leds

do

readadc C.0,b1		' Lecture de la tension a tester

select case b1

case > 204			' Suivant la valeur de la tension, on allume les leds correspondantes
	b4 = 4
	high B_LED_V
	high B_LED_J
	high B_LED_O
	high B_LED_R	
	
case > 191
	b4 = 3
	Low B_LED_V
	high B_LED_J
	high B_LED_O
	high B_LED_R
	
case > 177
	b4 = 2
	Low B_LED_V
	Low B_LED_J
	high B_LED_O
	high B_LED_R
	
case <= 177
	b4 = 1
	Low B_LED_V
	Low B_LED_J
	Low B_LED_O
	high B_LED_R
	
end select

loop				' On reboucle



start2:

gosub buzzer		' On fait un petit buzz au depart, qui va avec l'animation des leds

do

if b4<>b5 then 		' On compare pour voir si un changement de la valeur de la tension
	gosub buzzer	' On execute un  beep pour signaler un changement de l'etat de la batterie
end if

b4 = b5
loop


'#################################################################################
'##########################    Programme Secondaire    ###########################	
'#################################################################################
animation:

For b2 = 0 to 2

High B_LED_R
Low B_LED_O
Low B_LED_J
Low B_LED_V

pause 80

low B_LED_R
High B_LED_O

Pause 80

low B_LED_O
High B_LED_J

Pause 80

low B_LED_J
High B_LED_V

Pause 80

low B_LED_V
High B_LED_J

pause 80

low B_LED_J
High B_LED_O

Pause 80

next

return

Buzzer:

for b3 = 0 to 2

high B_beep
pause 50

low B_beep
pause 100

next

return
et voici mon schéma

Sans titre.jpg
 
Last edited:

PieM

Senior Member
Va falloir qu'un jour tu saches faire un schéma avec des leds dans le bon sens.... :confused:
Ton programme:
J'espère qu'avec tous ces gadgets, tu es bien conscient que tu ne va pas dans le bon sens pour la réactivité de ton émetteur . quant à l'autonomie de la batterie avec tes buzzers et leds allumées en permanence, c'est pas top non plus.
Quel intérêt d'aller mesurer tous les 10 ms la tension d'une batterie...
Ensuite, tu utilises du multitache pour ça : Je suppose que le start0 est la partie émission ?
ton start 2 tourne en permanence donc le buzzer est actionné lui aussi en permanence !

Ta led_R est allumée en permanence dans tes test batterie. Inutile de la mettre dans tes comparaisons.
la vraie hystérésis n'est pas possible avec des seuils multiples; la seule astuce est de créer des zones mortes sur les seuils eux mêmes.

Code:
#PICAXE 14M2

symbol B_LED_R	=B.5
symbol B_LED_O	=B.4
symbol B_LED_J	=B.3
symbol B_LED_V	=B.2
symbol B_Beep	=C.4
symbol B_tension 	=C.0

dirsB = %00111110 'declare B.1,2,3,4,5 en sortie
dirsC = %00010000	'declare C.4  en sortie

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

'setfreq m4


Start1:

'gosub animation		' Lance l'animation du début avec les leds

do

readadc C.0,b1		' Lecture de la tension a tester

select case b1
[COLOR="#0000FF"]
case > 206[/COLOR]			' Suivant la valeur de la tension, on allume les leds correspondantes
	b4 = 4
	high B_LED_V  ' [COLOR="#FF0000"][B]ça peut se simplifier en écrivant outpinsB=60[/B][/COLOR]
	high B_LED_J
	high B_LED_O
	high B_LED_R	
	
[COLOR="#0000FF"]case 191 to 200[/COLOR]
	b4 = 3
	Low B_LED_V  [COLOR="#FF0000"][B]ça peut se simplifier en écrivant outpinsB=56[/B][/COLOR]
	high B_LED_J
	high B_LED_O

	
[COLOR="#0000FF"]case 177 to 185[/COLOR]
	b4 = 2
	Low B_LED_V  [COLOR="#FF0000"][B]ça peut se simplifier en écrivant outpinsB=48[/B][/COLOR]
	Low B_LED_J
	high B_LED_O

	
case <= 173
	b4 = 1
	Low B_LED_V  [COLOR="#FF0000"][B]ça peut se simplifier en écrivant outpinsB=32[/B][/COLOR]
	Low B_LED_J
	Low B_LED_O

	
end select
	high B_LED_R  [B]'inutile avec la simplification.[/B]
loop				' On reboucle



start2:  [COLOR="#FF0000"]ça, ça tourne en permanence ![/COLOR]

gosub buzzer		' On fait un petit buzz au depart, qui va avec l'animation des leds

do

if b4<>b5 then 		' On compare pour voir si un changement de la valeur de la tension
	gosub buzzer	' On execute un  beep pour signaler un changement de l'etat de la batterie
end if

b4 = b5
loop

et pour ton animation ..

Code:
dirsB = %1111111

animation:
do
	outpinsB = 32
		For b10 = 0 to 2
		pause 80
		outpinsB = outpinsB/2
	next
loop
 
Last edited:

dje8269

Senior Member
Va falloir qu'un jour tu saches faire un schéma avec des leds dans le bon sens....
hé zut ! Pour être franc , j'ai refais le schéma expres pour vous bien propre et plus lisible . et j'ai effectivement oublié de retourné le lot des 4 leds . Je plaide coupable !!

J'espère qu'avec tous ces gadgets, tu es bien conscient que tu ne va pas dans le bon sens pour la réactivité de ton émetteur
Non , non , l'émetteur est géré par l'autre 14M2 .

quant à l'autonomie de la batterie avec tes buzzers
Rohh quand même , un tout petit buzzer de rien du tout en 5V , qui fais trois bip a l'allumage , et trois bip par palier de baisse de tension batterie .

et leds allumées en permanence
Pareil , je l'ai fais s'allumé assez faiblement en fait ; Les 4 Leds allumées en même temps consomme 23mA . cellle de du tx est super HL qui consomme 5mA.

Quel intérêt d'aller mesurer tous les 10 ms la tension d'une batterie...
Ben y'en as pas , c'est juste que c'est dans la boucle .

Ensuite, tu utilises du multitache pour ça : Je suppose que le start0 est la partie émission ?
Non non l'émission est gérée par l'autre µC . j'ai utilisé le multitache pour me permettre d'avoir des pauses différentes entre les led et le buzzer lors de l'allumage .

Ta led_R est allumée en permanence dans tes test batterie. Inutile de la mettre dans tes comparaisons.
Oui c'est exact .

la seule astuce est de créer des zones mortes sur les seuils eux mêmes.
Nickel , je vais planché la dessus . Mais j'ai peur que la précision ne soit pas au rendez vous ;


Un grand merci , allez je retourne a mon programme .
 

dje8269

Senior Member
Bonjour à tous ,

Merci PieM, tu m'as encore une fois de plus bien aidé a comprendre ;

j'ai donc réfléchis encore un peu afin d'améliorer le truc .

Déjà en travaillant dessus, je me suis rendu compte que je n'avais pas besoin d'un vrai hystérésis , car dans la vraie vie , la tension de la batterie ne va jamais remontée . Une fois quelle est descendu , il suffisait donc de lui donner un seuil inférieur et pas de limite haute . Une fois qu'un palier a été franchis, et une led eteinte , impossible de la rallumée.

Comme j'avais déjà fais la fonction hystérésis, je l'ai garder pour éviter éventuellement certains problèmes mais ça ne sert a rien en pratique je pense . Le seul bug que je pense qu'il peut se produire , c'est si jamais la tension remonte ( on ne sait pas comment) , il y aurait une série de BIP par palier franchis .

Sinon le principe est simple, mais long . Chaque niveau de batterie correspond à une boucle ( donc 5 dans mon cas) . Ainsi on peut varier les seuils pour sortir de cette boucle , et entrée dans la suivante et ainsi de suite .

L'utilisation de outpinsB est génial est bien plus pratique . j'étais partis au début pour travailler avec les bit plutôt afin de simplifier, mais sa reviens pratiquement au même que outpins.

Voila le code pour la partie gestion des options si cela peut donner des idées à d'autres .

L'effet animation du début est optionnel , mais je trouve que ça fais quand même sympa .

J'ai rajouté un palier qui éteint toutes les leds et qui sonne en permanence quand la tension de la batterie atteins un seuil critique, qui pourrait l'endommagée. Je n'ai pas encore la fonction extinction .

Avec un peu de retard je vous mets aussi photo et vidéo ( à regarder avec le son pour étendre les bips)

Comme d'habitude n'hésitez pas a faire des remarques .

Code:
#PICAXE 14M2
'#################################################  ################################
'########################    Programme Option    ###########################	
'#################################################  ################################

'##########################    configuration    ################################	

' 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ée l'Etat de la broche

'b0 vuemetre
'b1 V_tension
'b2 for next animation


symbol B_LED_R	=bit3
symbol B_LED_O	=bit2
symbol B_LED_J	=bit1
symbol B_LED_V	=bit0
symbol B_Beep	=C.4
symbol B_tension 	=C.0

symbol vuemetre = b0
symbol V_tension = b1

dirsB = %00111110 'declare B.1,2,3,4,5 en sortie
dirsC = %00010000	'declare C.4  en sortie

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



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

Gosub animation			' On fais l'animation à l'allumage de la télécommande

do					' Boucle principale qui comprends 5 petites boucles

'####### Premiere boucle 4 Leds allumées
do					

readadc B_tension,V_tension	' Lecture de la tension

if V_tension > 203 then		' donc 204 ou plus
	
	outpinsB=60			' On allume les leds correspondantes
else

if time>3 then
	gosub Buzzer		' Bip pour signaler un changement de boucle donc d'etat de la batterie sauf au demarrage time > 3 secondes
endif

exit					' Si on remplit pas les conditions on sort de la boucle

endif

loop


'####### deuxiéme boucle : 3 Leds allumées
do

readadc B_tension,V_tension	' Lecture de la tension

if V_tension >190 and V_tension<205 then		' Compris entre 191 et 204 , pour repasser au dessus il faut depassé 204
	
	outpinsB=28			' On allume les leds correspondantes		
else

if time>3 then
	gosub Buzzer		' Bip pour signaler un changement de boucle donc d'etat de la batterie sauf au demarrage time > 3 secondes
endif

exit					' Si on remplit pas les conditions on sort de la boucle

endif

loop

'####### troisieme boucle : 2 Leds allumées
do

readadc B_tension,V_tension	' Lecture de la tension

if V_tension >176 and V_tension<192 then		' Compris entre 177 et 191 , pour repasser au dessus il faut depassé 191
	
	outpinsB=12			' On allume les leds correspondantes		
else

if time>3 then
	gosub Buzzer		' Bip pour signaler un changement de boucle donc d'etat de la batterie sauf au demarrage time > 3 secondes
endif

exit					' Si on remplit pas les conditions on sort de la boucle

endif

loop

'####### Quatriéme boucle : 1 Led allumée
do

readadc B_tension,V_tension	' Lecture de la tension

if V_tension > 165 and V_tension < 178  then		' Compris entre 166 et 177 pour repasse au dessus il faut dépassé 177
	
	outpinsB=4			' On allume les leds correspondantes		
else

if time>3 then
	gosub Buzzer		' Bip pour signaler un changement de boucle donc d'etat de la batterie sauf au demarrage time > 3 secondes
endif

exit					' Si on remplit pas les conditions on sort de la boucle

endif

loop

'####### cinquiéme boucle : 0 Led allumée + bip permanent pour proteger la batterie
do

readadc B_tension,V_tension	' Lecture de la tension

if V_tension <166 and time>3 then		' 165 ou moins

	outpinsB = 0			' Exticntion des led
	gosub Buzzer			' On buzz
endif
		
loop


loop		' Retour boucle principale

'#################################################  ################################
'#########################    Programme Subsidiaire    ###########################	
'#################################################  ################################

animation:		'fontion qui fais des aller-retours des leds avec bip pour signaler la fin

for b2= 0 to 1

outpinsB = 4
pause 80
outpinsB= 8
pause 80
outpinsB= 16
pause 80
outpinsB= 32
pause 80
outpinsB= 16
pause 80
outpinsB= 8
pause 80

next
outpinsB = 60
gosub Buzzer

return


'####### sub Buzzer ######
Buzzer:

for b3 = 0 to 2		' Emet 3 petits bip

high B_beep
pause 50

low B_beep
pause 100

next

return
telecommande NG.jpg

telecommande NG inside.jpg

[video=dailymotion;x21snlh]http://www.dailymotion.com/video/x21snlh_telecommande-rc-avec-picaxe_tech[/video]

Plein ecran
 

PieM

Senior Member
Ton histoire de boucle me paraît bien compliquée. Je pense que tu n'as pas bien saisi le bout de programme avec les seuils en bleu que je t'ai donné...
Je regarderai ça .

Et pour ton animation:

Code:
for b2= 0 to 11
	lookup b2,(4,8,16,32,16,8,4,8,16,32,16,8,60),outpinsB
	pause 80
next
gosub Buzzer

je ne vois pas ou il y a de l&#8217;hystérésis avec ton programme !
si la tension est 204 tu as 60 en sortie.
si la tension descend à 203 c'est 28 en sortie
et si tu remonte à 204 tu retrouves 60!

idem pour les autres seuils...
 
Last edited:

dje8269

Senior Member
Apres test de ton code j'ai mieux compris . Mais je pensais qu'un select case devait absolument renvoyé une valeur . En fait tu créer une zone morte , et le select case ne touche a rien quand on rentre dans la zone morte . Je pense que ton code est mieux, car il me permettrait de ne pas avoir de bug buzzer si la tension remonte ( je sais toujours pas , par quelle miracle), mais disons que ca ferais plus propre niveaux programme .

Je suis partis dans la partie émission , je touche au dur la !
 

PieM

Senior Member
Apres test de ton code j'ai mieux compris . Mais je pensais qu'un select case devait absolument renvoyé une valeur . En fait tu créer une zone morte , et le select case ne touche a rien quand on rentre dans la zone morte . Je pense que ton code est mieux, car il me permettrait de ne pas avoir de bug buzzer si la tension remonte ( je sais toujours pas , par quelle miracle), mais disons que ca ferais plus propre niveaux programme .

Je suis partis dans la partie émission , je touche au dur la !
Dans ce que je t'ai donné, c'est simplifié: c'est à dire que si à ta première mesure tu tombes dans la zone morte, tu n'as pas d'indication. L'astuce est de gérer ça dans le cas else de ton select:
tu ajoute une variable à ta mesure d'après, supérieure à la zone morte, que tu remets à 0 dans tes tests.

J'EXPLIQUE... :rolleyes:

Code:
select b1
	b1 = b1 + b10
	case > 203
	.........blablabla....
	b10 = 0      [COLOR="#FF0000"]on remet à 0 la variable si le test est OK[/COLOR]
	case 153 to 198
	........blablabla....
	b10 = 0     [COLOR="#FF0000"]on remet à 0 la variable si le test est OK[/COLOR]
	case 103 to 148
	........blablabla....
	b10 = 0     [COLOR="#FF0000"]on remet à 0 la variable si le test est OK[/COLOR]
	else
	b10 = 5   [COLOR="#FF0000"] 'utilisée si aucun test bon, cad si on est dans une zone morte.[/COLOR]
end select
 

dje8269

Senior Member
OK, mais du coup faut encore rajouter une comparaison variable quand on change de valeur pour faire un BIP .

je ne vois pas ou il y a de l&#8217;hystérésis avec ton programme !
si la tension est 204 tu as 60 en sortie.
si la tension descend à 203 c'est 28 en sortie
et si tu remonte à 204 tu retrouves 60!
Pas tout a fais !!

if V_tension > 203 then
outpinsB=60
ok ici toutes les led sont allumées . la valeur est égale à 204 ou plus .

Ensuite la valeur tombe strictement en dessous de 204 , c'est à dire a 203 .

On rentre dans la deuxième boucle.

if V_tension >190 and V_tension<205 then
outpinsB=56
Une fois dans la deuxième boucle, si on à la tension , on ne sait toujours pas comment, qui venait à remonter . il faudrait pour sortir de cette boucle quelle soit de 205 ou plus ( strictement supérieur à 204), car à 204 on reste dans la boucle.

On as donc bien un hystérésis on descend à partir de 203 et moins et on remonte à partir de 205 ou plus
 

PieM

Senior Member
Je ne comprends pas trop, car tout pendant que la tension reste stable, ton programme ne fait rien d'autre que de tourner dans la boucle de test ?

OK, mais du coup faut encore rajouter une comparaison variable quand on change de valeur pour faire un BIP .
ben il suffit de mémoriser outpinsB et d'agir si il y a changement.
ce ne sont que deux instructions. Tu en as 15 pour faire la même chose !
 

dje8269

Senior Member
C'est exact , pour le moment il ne sert qu'a ca ! je dois le confesser ; Mais bon je vais bien lui trouver d'autre fonctions , je pense par exemple , à une fonction extinction qui couperais l'alimentation général . et j'ai encore le boitier inertiel ou gyroscopique qui me travaille , et qui m'intéresse grandement .

Par contre en travaillant sur le programme émission , je rencontre des difficultés de précisions sur les nouveaux potars des joysticks ; contrairement a l'autre télécommande, ou les potars etaient fixés sur la platine ici la valeur passe par un fil .

Les fils jaunes sur la photo ;

Du coup , le potar de la marche avant/arrière tape dans les gamelles , un coup , au point milieu , il m'indique 131 et un autre coup 116 . ce qui m'embête pour le calcul de l'activation du Tx . Demain je vais refaire le cablage , croyez vous que si je met du coax sa amelioreras la choses ? avec la gaine ( tresse ) à la masse .
 
Top