Bonjour à tous, je suis actuellement sur le projet d'un robot suiveur de ligne et détecteur d'obstacle, nous programmons un PIC 18F2550 avec le logiciel PIC C COMPILER. Le robot comporte 2 moteurs branchés en inverses.
Mon problème c'est que je n'arrive pas à faire tourné les moteurs, Il faut 4,5V a ses bornes pour qu'ils puissent avancé, cependant j'obtiens 4,8 au + et 0.8 au - je comprend pas pourquoi... Je suis débutant en programmation de C donc je suis preneur de tous conseils.
Je commande les moteurs sur le port A : A0 jusque A3 en analogique
Voila mon programme :
void main()
{
init();
output_low (Mgm);
output_low (Mdp);
while(1==1)
{
moteur();
//detect();
}
}
//*****************************************************************************
void init()
{
setup_adc_ports(AN0_TO_AN3|VSS_VDD);
setup_adc(ADC_OFF);
port_b_pullups (TRUE); // initialisation portB
output_bit (Almm, 1);
output_bit (Gndm, 0);
// initilisation interruption externe
// ext_int_edge( l_to_h ); //Interruption déclenchée sur un front montant
// enable_interrupts( INT_EXT1 ); // Autorisation d'interruption par RB1
// enable_interrupts( GLOBAL ); //Autorisation d'interruption global
}
//*****************************************************************************
//void detect()
//{
//output_high (CmdAlimGP2);
//}
//*****************************************************************************
void moteur()
{
if (LM == 1)
{
if ((LD == 0)&&(LG == 0))
output_high((Mdm)&&( Mgp));
if ((LD == 1)&&(LG == 0))
output_high(Mgp);
output_low(Mdm);
if ((LD == 0)&&(LG == 1))
output_high(Mdm);
output_low(Mgp);
}
if (LM == 0)
{
if ((LD == 0)&&(LG == 0))
output_high((Mdm)&&( Mgp));
if ((LD == 1)&&(LG == 0))
output_high(Mgp);
output_low(Mdm);
if ((LD == 0)&&(LG == 1))
output_high(Mdm);
output_low(Mgp);
}
}
Si vous avez des suggestions sa sera avec plaisir ! Merci d'avance.