Aller au contenu


Photo
- - - - -

PPE recharge autonome


194 réponses à ce sujet

#21 hmnrobots

hmnrobots

    Membre passionné

  • Membres
  • PipPipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 02 avril 2012 - 08:32

Ah tu le faisais avec une arduino... parceque si il y a environ 40 periodes dans une salve pour 50ms de pose, ça fait un rapport cyclique de environ 2% et donc c'est impossible à réaliser avec un 555 astable!
je vais retourner voir le post de Bennurre pour tester :)

pas un arduino mais un simple 12F675 (petite carte faite maison)c'est vrai que c'est plus facile de modifier et vérifier le signal par programme, la balise ne répond au robot que si le robot le demande
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#22 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 08 avril 2012 - 06:02

Suivant les conseils de hmnrobots, j'ai fait le code et la simulation de la balise non plus avec un ne555 (une vraie galère, surtout sur une Labdec...) mais avec un PIC (16F88) pour tous les avantages que ça présente: facilité de modification, stabilité, simplicité du montage. En plus ça me permettra de rajouter dans le PIC (qui est relativement gros: 13 I/O) un morceau de code permettant de ne déclencher la charge que quand le robot est "docké" (avec des micro-rupteurs comme capteurs par exemple).

Voici l'algo concernant l'émission du signal infrarouge (j'ai choisi des salves de 200 cycles avec une pause de 25ms entre chaque salve):
capture algo flowcode.JPG


et le code:
char FCLV_LOOP1;

void main()
{

	//Initialisation
	ansel = 0;
	cmcon = 0x07;


	//Code d'initialisation d'Interruption
	option_reg = 0xC0;


	//Connection Point
	//Point de Jonction: [A]: A
FCC_Main_A:


	//Loop
	//Boucle: Boucle 200 fois
	for (FCLV_LOOP1=0; FCLV_LOOP1<200; FCLV_LOOP1++)
	{
		//Output
		//Sortie: 1 -> B0
		trisb = trisb & 0xfe;
		if (1)
			portb = (portb & 0xfe) | 0x01;
		else
			portb = portb & 0xfe;


		//Delay
		//Pause: 11 us
		delay_us(11);


		//Output
		//Sortie: 0 -> B0
		trisb = trisb & 0xfe;
		if (0)
			portb = (portb & 0xfe) | 0x01;
		else
			portb = portb & 0xfe;


		//Delay
		//Pause: 11 us
		delay_us(11);


	}


	//Delay
	//Pause: 25 ms
	delay_ms(25);


	//Goto Connection Point
	//Aller au Point de Jonction: [A]: A
	goto FCC_Main_A;


	mainendloop: goto mainendloop;
}

void interrupt(void)
{
}


J'avais rencontré des problèmes avec la compilation en .hex de Flowcode (voir ici) mais j'ai pu compiler en utilisant un compilateur externe.

Voici les captures d'écran de la simulation (avec ISIS):

schéma du circuit:
schéma simu pic balise.JPG


signal (oscillo):
simu balise PIC oscillo 1.JPG


zoom sur une salve:
simu balise PIC oscillo 2.JPG
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#23 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 08 avril 2012 - 09:03

Je viens de rajouter au schéma le système de protection de la borne de rechargement, pour éviter que quelqu'un s'électrocute: le courant ne passe dans les électrodes que quand des micro-rupteurs assurant de la présence du robot sont enclenchés. Je voulais au départ gérer ça avec le PIC mais je me suis rendu compte de la débilité de la chose: c'est totalement inutile et ça risque de changer la fréquence d'émission de la balise, en rajoutant du temps dans la boucle.
Bref, voici le schéma:
schéma borne complet.JPG

Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#24 hmnrobots

hmnrobots

    Membre passionné

  • Membres
  • PipPipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 09 avril 2012 - 07:13

que donne la réception ?
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#25 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 09 avril 2012 - 10:25

que donne la réception ?


Je n'ai pas encore testé, le PIC n'est même pas programmé... Je suis en bac blanc cette semaine et apres c'est les vacances donc ça va être chaud mais je vais essayer de me trouver un heure...
Au pire je me debrouille sans oscillo
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#26 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 09 avril 2012 - 12:01

Je viens de me rendre compte d'un truc super bizarre (enfin peut-être pas mais en tout cas je ne comprends pas pourquoi :P): à la sortie du PIC le signal est exactement comme je voudrais mais ensuite si je place un transistor comme amplificateur pour commander la LED, le signal en sortie du transistor est complètement différent!

schéma:
test.JPG

Signal: (en rouge le signal à la sortie du PIC, et donc avant le collecteur du transistor; et en jaune le signal juste devant la LED)
test2.JPG

Si quelqu'un pouvait m'éclairer...

EDIT: En fait j'ai trouvé le problème (il faut que j'arrête de poster aussi vite sans réfléchir beaucoup :D): il aurait fallu que j'utilise un PNP au lieu d'un NPN, sinon il faut que je modifie le schéma comme ceci:
test.JPG

Le signal est bon, mis-à-part un étrange pic de tension négative sorti de je ne sais où mais qui ne devrait pas poser de problème:

test2.JPG


de plus, j'ai fait le calcul pour dimensionner la résistance mais je ne sais pas si il est juste:
V led=1.35V
I led=100mA

Vcc = 5V
4 LEDs en parallèle donc
V totale=1.35V
I total=100^-3 * 4 = 400mA (je sais, c'est beaucoup...)

R=(Vcc-Vtotale)/I total
=(5-1.35)/400*10^-3
=9.125 Ohms... :o c'est minuscule!
Je me suis trompé?
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#27 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 10 avril 2012 - 06:34

Bon j'ai fait les mesures sur la simulation et apparemment les valeurs des résistance sont bonnes donc j'ai pu terminer le schéma complet de la balise. J'ai rajouté un interrupteur DIP pour pouvoir sélectionner les LED que je veux allumer (pour faciliter les tests) du coup j'ai 4 résistances au lieu d'un seule mais bon, c'est pour la bonne cause ;)
aussi je pense remplacer ces même résistances par des résistances variables pour pouvoir faire varier la puissance d'émission (et aussi parce que des résistances de 36.5Ohms, ça n'existe pas :P)
schéma:
schéma balise complete.JPG


Je vais sûrement faire un pause parce que cette semaine c'est bac blanc et que je serais crevé, mais les vacances qui arrivent juste après seront intensives pour le projet (réception de toutes les pièces qui manquent, PIC programmé et surtout temps libre :))

Je vous tiens au courant!

p-s il y a toujours les quelques questions posées précédemment qui restent en suspend, je ferais peut-être un récapitulatif...
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#28 bennurre

bennurre

    Habitué

  • Membres
  • PipPip
  • 160 messages
  • Gender:Male

Posté 10 avril 2012 - 06:42

Je vais sûrement faire un pause parce que cette semaine c'est bac blanc et



bon courage man !!!

...................................................

Mon premier projet arduino...

Blog de ma Tondeuse RC...

...................................................


#29 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 10 avril 2012 - 06:43

bon courage man !!!


merci, j'en aurai besoin :P
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#30 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 10 avril 2012 - 07:24

J'ai encore fait une amélioration (décidément, je suis en forme ce soir: tout sauf réviser les maths): j'ai ajouté des LEDs témoins pour la charge et l'émission ainsi que un test de la charge pour arrêter d'émettre lorsque le robot est déjà docké et ainsi économiser de l'électricité :)
algo:
algo complet.JPG


schéma:
schéma balise complete.JPG


code:
//Déclarations de Variable
char FCV_CHARGE;
char FCV_MICRORUPTEURS;

char FCLV_LOOP1;


//Implémentations Macro

void main()
{
	
	//Initialisation
	ansel = 0;
	cmcon = 0x07;


	//Code d'initialisation d'Interruption
	option_reg = 0xC0;


	//Connection Point
	//Point de Jonction: [A]: A
FCC_Main_A:


	//Entrée
	//Entrée: A0 -> charge
	trisa = trisa | 0x01;
	FCV_CHARGE = ((porta & 0x01) == 0x01);


	//Décision
	//Décision: charge?
	if (FCV_CHARGE)
	{
		//Sortie
		//Sortie: 0 -> B1
		trisb = trisb & 0xfd;
		if (0)
			portb = (portb & 0xfd) | 0x02;
		else
			portb = portb & 0xfd;


	} else {
		//Sortie
		//Sortie: 1 -> B1
		trisb = trisb & 0xfd;
		if (1)
			portb = (portb & 0xfd) | 0x02;
		else
			portb = portb & 0xfd;


		//Loop
		//Boucle: Boucle 200 fois
		for (FCLV_LOOP1=0; FCLV_LOOP1<200; FCLV_LOOP1++)
		{
			//Output
			//Sortie: 1 -> B0
			trisb = trisb & 0xfe;
			if (1)
				portb = (portb & 0xfe) | 0x01;
			else
				portb = portb & 0xfe;


			//Delay
			//Pause: 11 us
			delay_us(11);


			//Output
			//Sortie: 0 -> B0
			trisb = trisb & 0xfe;
			if (0)
				portb = (portb & 0xfe) | 0x01;
			else
				portb = portb & 0xfe;


			//Delay
			//Pause: 11 us
			delay_us(11);


		}


		//Delay
		//Pause: 23 ms
		delay_ms(23);


	}


	//Goto Connection Point
	//Aller au Point de Jonction: [A]: A
	goto FCC_Main_A;


	mainendloop: goto mainendloop;
}

void interrupt(void)
{
}




Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#31 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 11 avril 2012 - 07:17

Bon alors petit récapitulatif des questions qui restent sans réponse:
  • est-ce que l'algo principal vous semble bon?
  • est-ce que quelqu'un peut m'expliquer les bases de la création d'un typon ou me filer le lien d'un bon tuto parce que tous ceux que j'ai trouvé sont trop vaques, trop spécifiques ou emploient des notions que je ne connais pas... Ce ne sera pas forcement nécessaire pour le projet mais j'aimerais quand même apprendre :P
  • formule qui permet de calculer l'angle d'un cône de réception/émission après passage dans un tube (voir post #13)
  • si les durées de salve et de pause vous paraissent corrects
  • Le truc bizarre du transistor (#26), j'ai trouvé la solution mais je ne comprends toujours pas!
  • si les schémas, idées etc (bref un peu tout) vous semblent corrects
  • De manière générale votre avis sur les choix faits, c'est le dernier moment pour changer des trucs ;)
J'ai aussi vu qu'une question de Telson reste en suspend ici donc si quelqu'un a une réponse à lui donner (même si c'est vieux de 3 mois :P)


Merci d'avance
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#32 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 11 avril 2012 - 07:18

Désolé, double post...
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#33 hmnrobots

hmnrobots

    Membre passionné

  • Membres
  • PipPipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 12 avril 2012 - 08:04

Je viens de me rendre compte d'un truc super bizarre (enfin peut-être pas mais en tout cas je ne comprends pas pourquoi :P): à la sortie du PIC le signal est exactement comme je voudrais mais ensuite si je place un transistor comme amplificateur pour commander la LED, le signal en sortie du transistor est complètement différent!

schéma:
test.JPG

Signal: (en rouge le signal à la sortie du PIC, et donc avant le collecteur du transistor; et en jaune le signal juste devant la LED)
test2.JPG

Si quelqu'un pouvait m'éclairer...

EDIT: En fait j'ai trouvé le problème (il faut que j'arrête de poster aussi vite sans réfléchir beaucoup :D): il aurait fallu que j'utilise un PNP au lieu d'un NPN, sinon il faut que je modifie le schéma comme ceci:
test.JPG

Le signal est bon, mis-à-part un étrange pic de tension négative sorti de je ne sais où mais qui ne devrait pas poser de problème:

test2.JPG


de plus, j'ai fait le calcul pour dimensionner la résistance mais je ne sais pas si il est juste:
V led=1.35V
I led=100mA

Vcc = 5V
4 LEDs en parallèle donc
V totale=1.35V
I total=100^-3 * 4 = 400mA (je sais, c'est beaucoup...)

R=(Vcc-Vtotale)/I total
=(5-1.35)/400*10^-3
=9.125 Ohms... :o c'est minuscule!
Je me suis trompé?

le montage npn avec emetteur à la masse est meilleur car tu es sur que le transistor (ici en simple ampli de courant) sera bien saturé; avec les charges dans l'émetteur la commutation sera moins bonne voire mauvaise;
en mettant les diodes en parrallèle, le courant se répartit à peu près en fonction des caractéristiques des diodes, de plus si une se met OFF alors les autres vont souffrir, il est généralement péconisé de les mettre en série car on impose alors l'intensité qui les traverse (c'est le paramètre qui nous intéresse) même si dans ce cas avec 1 OFF plus rien ne marche mais on ne crame pas les autres
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#34 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 16 avril 2012 - 08:46

le montage npn avec emetteur à la masse est meilleur car tu es sur que le transistor (ici en simple ampli de courant) sera bien saturé; avec les charges dans l'émetteur la commutation sera moins bonne voire mauvaise;
en mettant les diodes en parrallèle, le courant se répartit à peu près en fonction des caractéristiques des diodes, de plus si une se met OFF alors les autres vont souffrir, il est généralement péconisé de les mettre en série car on impose alors l'intensité qui les traverse (c'est le paramètre qui nous intéresse) même si dans ce cas avec 1 OFF plus rien ne marche mais on ne crame pas les autres


Je ne comprends pas trop pourquoi les mettre en parallèle est dangereux, l'intensité s'adapte à la "demande" non? Ca m'embêterai de devoir les mettre en série mais si tu dis que c'est préférable...

Sinon j'ai fait le "filtre" de la sortie du récepteur avec la (précieuse) aide de hmnrobots et Black Templar (http://www.robot-mak...signal-continu/) qui me permet d'avoir un signal logique (0 ou 1) dans le cas de l'absence/présence de détection de la balise ; à l'aide d'un monostable. Ainsi je peut très facilement gérer les infos des capteurs (pour le capteur en "T" de devant: 00=pas de signal, 01=signal à droite, 10=signal à gauche et 11=signal tout droit).
schéma du montage du monostable (la sortie du TSOP est représentée par un signal carré de 35.33568905Hz avec un rapport de 18.72791519% ; et la présence/absence du signal est faite avec un inverseur permettant d'alterner entre un signal continu ou le signal carré):
schéma.JPG


et le résultat:
test.JPG


Je ne sais pas si je vous l'ai déjà dit mais pour les capteurs du robot, on va mettre en plus du T un système avec un "cône" réfléchissant permettant une détection à 360° de la balise: dès que le signal est détecté par ce cône et pas par le T, le robot tourne sur lui-même jusqu'à ce que le capteur plus précis, c'est à dire le T le reçoive. C'est pas très fluide mais ça comporte plusieurs avantages par rapport aux autres solutions (on a détaillé tout ça dans notre compte rendu donc si vous voulez plus d'infos, pas de problème!)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#35 hmnrobots

hmnrobots

    Membre passionné

  • Membres
  • PipPipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 16 avril 2012 - 10:00

Je ne comprends pas trop pourquoi les mettre en parallèle est dangereux, l'intensité s'adapte à la "demande" non? Ca m'embêterai de devoir les mettre en série mais si tu dis que c'est préférable...

Bon parallele/série, du pour du contre mais dans les 2 cas dans le collecteur du transistor
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#36 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 17 avril 2012 - 07:15

Mais du coup ça va me refaire le problème du signal inversé non? (Ou alors c'est l'oscillo qui est mal branché)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#37 hmnrobots

hmnrobots

    Membre passionné

  • Membres
  • PipPipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 17 avril 2012 - 08:21

Mais du coup ça va me refaire le problème du signal inversé non? (Ou alors c'est l'oscillo qui est mal branché)


Je ne pense pas,lorsque le signal de commande est au niveau haut, le transistor sature et les LEDs que ce soit dans l'émetteur ou dans le collecteur doivent s'allumer: voir sur circuitlab
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#38 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 17 avril 2012 - 09:33

Ok donc c'est au niveau du branchement de l'oscillo que je m'étais trompé, ça me rassure parce que j ne comprenais vraiment pas...
merci
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#39 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 17 avril 2012 - 09:45

Voilà le schéma après rectification:
schéma balise complete.JPG

Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#40 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 19 avril 2012 - 03:33

est-ce que quelqu'un peut m'expliquer les bases de la création d'un typon ou me filer le lien d'un bon tuto parce que tous ceux que j'ai trouvé sont trop vaques, trop spécifiques ou emploient des notions que je ne connais pas... Ce ne sera pas forcement nécessaire pour le projet mais j'aimerais quand même apprendre :P


http://www.ferdinandpiette.com/blog/les-dossiers/dossier-concevez-vos-pcb-avec-kicad/

++
Black Templar

Mon site internet : http://ferdinandpiette.com/




Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users