Aller au contenu


Photo
- - - - -

Problemes de prog avec un micro-switch


  • Veuillez vous connecter pour répondre
10 réponses à ce sujet

#1 Sugi

Sugi

    Habitué

  • Membres
  • PipPip
  • 235 messages
  • Location:Vers Dunkerque

Posté 26 octobre 2006 - 04:04

Bon à tous,

Je me suis enfin décidé à faire mon premier robot, un robot simple avec:
- une plaque de bois en guise chassis
- 2 servos et une roue folle pour dirriger le tout
- un PIC 16F877A pour controler le robot
- etc etc

J'essaye de programmer le robot en C grâce au logiciel CCS, j'utilise les fonctions du
fichier SERVO.C integré à ce compilateur pour faire tourner les servos (pour le moment sa m'aide).
Aujourd'hui j'ai voulu ajouter des micro-switch au robot pour le faire tourner dès qu'il touche
un mur ou un autre obstacle...

J'ai d'abord fais un programme simple avec un seul servo et un seul switch, le voici:

#include <16f877A.h>
#fuses HS, NOWDT, NOPROTECT, NOLVP, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#include <servos.c>
#define SD pin_B4 //SD = Switch Droit

void main()
{
   while(1)
   {
	  if(input(SD)==1)
		 {
			set_servo(0, 0, 2); 
		 }					  
								
	  else					  
		 {
			set_servo(0, 1, 2);			 
		 }
   }
}

fonction set_servo(coté, sens, vitesse):
-coté: servo coté gauche=0 (pin_D6) ou droit=1 (pin_D7)
-sens: avance=0 et recul=1
-vitesse=1, 2, 3 ou 4

lorsque j'appuie sur le switch le servo à beaucoup de mal à tourner et je ne comprend pas
pourquoi, est ce que j'ai oublier quelques choses ?

Merci d'avance :)

#2 JEF

JEF

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 819 messages
  • Gender:Male
  • Location:St Cannat (13)

Posté 26 octobre 2006 - 05:12

bon, je debute aussi en programmation donc j'ai pas grand chose a te dire.
quelque question: lorsqu'il tourne dans le bon sens, la vitesse est bonne?
ton servo est bon d'origine?
la j'ai du mal a voir le souci.

a vrai dire, "l'intro" a quelque truc different de ce que j'apprend, mais bon, juste des detail et là ou il se trouve, si c'etait des erreur, ton programme ne fonctionnerai pas du tout. donc là je ne pense pas que le probleme viennent du programme... comment est branché ton switch? peu etre que ta resistance de tirage est trop faible et pompe trop de courant dans ton circuit.... essai d'inversé ton programme...boucle esle a la place de la if, et vice versa.

Chaque jour est le premier du reste de ta vie.


#3 Sugi

Sugi

    Habitué

  • Membres
  • PipPip
  • 235 messages
  • Location:Vers Dunkerque

Posté 26 octobre 2006 - 06:48

Merci d'avoir prit le temp de me repondre.

Alors mes servos son des futaba s3003 neuf que j'ai modifier avec des potar multitour, la vitesse parait bonne même si je manque de point de comparaison, en tout cas elle me convient...
Pour se qui est de mon switch il est entre le +5 du regu et la patte B4 du µC qui elle est configurée en entrée.

Peut tu develloper pour la resistance de tirage ?
Si je met une resistance je n'aurai plus 5v mais moin non ?

Mon programme j'ai essayer de le retourner dans tout les sens, j'ai essayer de faire sans les fonction etc etc mais j'en revien toujours au même.

Merci d'avance

Modifié par Sugi, 26 octobre 2006 - 06:50 .


#4 JEF

JEF

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 819 messages
  • Gender:Male
  • Location:St Cannat (13)

Posté 26 octobre 2006 - 07:10

Merci d'avoir prit le temp de me repondre.

bah, c'est bien normal...
pour les servo S3003, j'utilise que ça, etant le modele de base et neuf, il est donc ultra fiable normalement

Peut tu develloper pour la resistance de tirage ?

en fait, tu met ton switch d'un coté au +, de l'autre une resistance de 10K environ (c'est pas important, tu peu mettre 47K meme...) et l'autre bout de la resistance au -. tu recuper donc un signal au point de contact entre la resistance et le switch. attention, ton signal est inversé, tu aura 1 quand le switch est au repos, et 0 lorsque tu appui dessus.

peu etre que ton circuit marche pas quand tu appuis car ton µC ce prend 5v dans les dents sans resistance pour limité le courant...donc ça pourai créé une baisse de tension ou de courant, enfin, une 'tite connerie comme ça qui fait tout foiré.

Si je met une resistance je n'aurai plus 5v mais moin non ?

non, tu aura juste moin de courant (A), pour faire baissé la tension on met ce qu'on appelle un pont diviseur de tension, et là il faut 2 resistances au minimum......

Chaque jour est le premier du reste de ta vie.


#5 Sugi

Sugi

    Habitué

  • Membres
  • PipPip
  • 235 messages
  • Location:Vers Dunkerque

Posté 26 octobre 2006 - 07:56

Merci de ton aide, j'ai cablé le switch comme tu me l'a dit et ca fonctionne normalement.

Je vais ajouter le 2eme switch et le 2eme servo puis retester.

Plus tard j'ajouterais des LED IR et un recepteur, jimagine que le cablage serra le même ?

Merci encore.

edit: au fait je suis dans la bonne section pour ma question prog ?

Modifié par Sugi, 26 octobre 2006 - 10:07 .


#6 JEF

JEF

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 819 messages
  • Gender:Male
  • Location:St Cannat (13)

Posté 27 octobre 2006 - 10:01

j'ai cablé le switch comme tu me l'a dit et ca fonctionne normalement.

bonne nouvelle. au fait, je me suis trompé sur le nom, c'est pas une resistance de tirage, c'est une resistance de charge je crois.

jimagine que le cablage serra le même ?

non, là le recepteur debite peu de courant, donc tu pourra mettre sa sortie "signal" directement sur une entrée du µC.
par contre, pour la led, il faut l'alumé et l'eteindre a une frequence de 38KHZ pour que ça marche donc il faudra la branché a une sortie du pic et utilisé une fonction Delays ou une boucle for.

au fait je suis dans la bonne section pour ma question prog ?

je comprend pas ta question.

Chaque jour est le premier du reste de ta vie.


#7 Sugi

Sugi

    Habitué

  • Membres
  • PipPip
  • 235 messages
  • Location:Vers Dunkerque

Posté 27 octobre 2006 - 08:06

Je voulais simplement savoir si j'etais dans la bonne section du forum pour
poser mes questions sur la programmation.

Donc si j'ai bien compris, je peut monter les LED IR directement entre une patte
de mon PIC et la masse ?
Pour le signal de 38 kHz je le savais deja, je l'avais lu quelques part.

Se soir je monte les servos sur la plaque et j'essaye les 2 servo avec les 2 switch
pour voir si sa fonctionne aussi bien qu'avec un seul.

Merci encore.

#8 JEF

JEF

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 819 messages
  • Gender:Male
  • Location:St Cannat (13)

Posté 27 octobre 2006 - 08:51

Je voulais simplement savoir si j'etais dans la bonne section du forum pour
poser mes questions sur la programmation.


c'etait mieux dans la partie electronique mais bon, ça ira je pense...

Donc si j'ai bien compris, je peut monter les LED IR directement entre une patte
de mon PIC et la masse ?


met quand meme une resistance.
en fait, le mieux pour optimisé tout ça, c'est de mettre un transistor, bipolaire par exemple...tu connais?

en fait, tu commande un courant avec un autre bien plus faible. là, tu pourrais en avoir besoin...faut voir...teste comme ça, avec une led et une resistance, et si la porté est trop mauvaise, ben, je te dirai comment faire si tu sais pas.

@+

Chaque jour est le premier du reste de ta vie.


#9 Sugi

Sugi

    Habitué

  • Membres
  • PipPip
  • 235 messages
  • Location:Vers Dunkerque

Posté 27 octobre 2006 - 11:34

Ok la prochaine fois je posterais dans la partie électronique. :)

Pour les transistor bipolaire, oui bien sur je connais. Je ne fais pas de formation en électronique mais j'essaye quand même d'apprendre les composants principaux (AOP, transistor, regulateur, resistance, condo...).

Si je comprend bien tu veux me faire utiliser un transistor pour amplifier le courant au borne de la LED et ainsi augmenter la porté. Le mieux serait un transistor pour augmenter le courant et un potentiométre pour augmenter ou reduire la porté non ?

#10 JEF

JEF

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 819 messages
  • Gender:Male
  • Location:St Cannat (13)

Posté 28 octobre 2006 - 08:48

ben ouai, tant qu'on y est.... et l'avantage c'est que tu pourrai en mettre autant que tu veux car a mon avis, pour une bonne porté, il t'en faudra 2 de chaque coté...

Chaque jour est le premier du reste de ta vie.


#11 Sugi

Sugi

    Habitué

  • Membres
  • PipPip
  • 235 messages
  • Location:Vers Dunkerque

Posté 28 octobre 2006 - 10:52

Ok ben merci encore, j'ai toutes les réponces dont j'avais besoin pour se sujet.

Je reviendrais pour d'autres questions et pourquoi pas essayer de participer un

peu au reste du forum, peu être que mes maigres connaisances serviront a quelqu'un :rolleyes:




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

0 members, 0 guests, 0 anonymous users