Problema com Motor Shield

Olá, sou iniciante na areá elétrica e estou no primeiro ano do ensino médio técnico em informatica. Recentemente o professor sugeriu que nós fisecemos um robô que seguisse linha. O material foi adquirido, e lendo alguns fóruns na internet conseguimos fazer a interação do arduino + motor shield + 2 motores. O problema aconteceu logo em seguida, um integrante do grupo ligou a bateria no motor shield com a polaridade invertida, saiu fumaça da placa... Aparentemente não tem nenhum componente estufado porem os motores não giram. Estamos utilizando arduino uno, o motor shield utilizado é o do link (http://www.emartee.com/product/42001/&usg=ALkJrhitL3Iep7mjGHQaplYn3HknieIARg), bateria de 7,4v 180mah e os motores são de 6~12v. Fizemos os testes e os motores não foram afetados, mandamos um código que faz o led do arduino ficar piscando e aparentemente a placa não foi danificada; já o motor shield tem um led, e ele ascende normalmente. Acreditamos que foi o motor shield que esta com problemas, porque a alimentação do arduino estava sendo feita pelo cabo usb, e as baterias estavam alimentando somente o arduino uno. Se alguém tiver uma ideia de qual componente esta queimado ou qualquer outra ajuda ficaria muito grato. Desde já muito obrigado.

Muuuito provavelmente o 298 queimou.Faça o teste por partes: primeiro, teste todas as portas que ligam o Arduino ao shield com leds Nao esqueça os resistores.Para testar, use o sketch Blink que está em "examples".Se tudo estiver ok, teste o shield. Ele possui 4 leds que indicam funcionamento da placa.Faça um sketch que utilize todas as portas e veja se eles acendem.

Então tomasi, eu utilizei o seguinte código para testar o led L da placa arduino, e esta tudo ok. Mas não qual seria o código para testar os leds do motor shield, você poderia me ajudar?

int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Vc so testou a porta 13 do Arduino.Nao sei quais portas o Motor Shield utiliza.Pelo o que vi no esquemático, ele utiliza 6 portas do Arduino. Vc tem q testar essas portas. Ex: se as portas forem 6,7,8,9, use este sketch:

const int ledNumeros = 4; //NUMERO DE LEDS A SEREM TESTADOS
int pinosLed[] = {6,7,8,9};   //LEDS A SEREM TESTADOS

void setup() {
  for (int thisLed = 0; thisLed < ledNumeros; thisLed++) {
    pinMode(pinosLed[thisLed], OUTPUT); 
  }
}

void loop() {
  for (int thisLed = 0; thisLed < ledNumeros; thisLed++) {
          digitalWrite(pinosLed[thisLed], HIGH);
          delay (300);
          digitalWrite(pinosLed[thisLed], LOW); 
          delay (300);
}
}

Vou aproveitar e montar um sketch pra vc testar todas as portas do Arduino (portas digitais.As anlógicas não são testadas neste sketch):

const int ledNumeros = 14 ; //NUMERO DE LEDS A SEREM TESTADOS
int pinosLed[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};   //LEDS A SEREM TESTADOS

void setup() {
  for (int thisLed = 0; thisLed < ledNumeros; thisLed++) {
    pinMode(pinosLed[thisLed], OUTPUT); 
  }
}
void loop() {
  for (int thisLed = 0; thisLed < ledNumeros; thisLed++) {
          digitalWrite(pinosLed[thisLed], HIGH);
          delay (300);
          digitalWrite(pinosLed[thisLed], LOW); 
          delay (300);
}
}

Veja se os leds que vc espetou nas portas acendem.Se todos acenderem, as portas estão Ok.Aí é hora de testar o Shield como eu postei antes.
qualquer dúvida, só postar. Avise se deu certo tb.
Boa sorte aí.

Amigo todos os leds da placa arduino acenderam, já os quatro do motor shield nenhum acendeu; só para confirmar, para realizar o teste do motor shield eu não preciso colocar nenhum leds porque os que você se referiu seriam aqueles quatro que indicam a direção do motor correto?
Quando o motor estava funcionando eu utilizei esse sketch:

// 
motor A
int dir1PinA = 13;
int dir2PinA = 12;
int speedPinA = 10;

// motor B
// motor A
int dir1PinB = 11;
int dir2PinB = 8;
int speedPinB = 9;

unsigned long time;
int speed;
int dir;

void setup() {
  pinMode(dir1PinA, OUTPUT);
  pinMode(dir2PinA, OUTPUT);
  pinMode(speedPinA, OUTPUT);
  pinMode(dir1PinB, OUTPUT);
  pinMode(dir2PinB, OUTPUT);
  pinMode(speedPinB, OUTPUT);

  time = millis();
  speed = 0;
  dir = 1;
}

void loop() {
  analogWrite(speedPinA, speed);
  analogWrite(speedPinB, 255 - speed);
  // set direction
  if (1 == dir) {
    digitalWrite(dir1PinA, LOW);
    digitalWrite(dir2PinA, HIGH);
    digitalWrite(dir1PinB, HIGH);
    digitalWrite(dir2PinB, LOW);
  } else {
    digitalWrite(dir1PinA, HIGH);
    digitalWrite(dir2PinA, LOW);
    digitalWrite(dir1PinB, LOW);
    digitalWrite(dir2PinB, HIGH);
  }
  if (millis() - time > 5000)  {
    time = millis();
    speed += 20;
    if (speed > 255) {
      speed = 0;
    }
    if (1 == dir) {
      dir = 0;
    } else {
      dir =1;
    }
  }
}

Esqueci de mencionar uma coisa, quando a polaridade foi invertida a trilha que sai do VEX se rompeu!! Então eu refiz a ligação e realizei o teste de continuidade e esse problema foi resolvido, mas não sei se isso afetou outro componente. Caso o diodo 3 estive queimado ele causaria esse problema? Eu estou achando ele um pouco estranho.

Tive um episódio parecido com o seu.Infelizmente duas portas do Arduino queimaram.Por isso, quando alguma coisa sai errado, eu sempre realizo esse teste.Era uma placa que controlava motores de passo.Enfim…

Vi também que existe um Led que indica tensão de entrada para alimentação dos motores ( sigla PWR na placa). Se ele está aceso, e os outros 4 leds estão apagados enquanto o programa roda, o L298 queimou. Caso o led PWR esteja apagado com a alimentação dos motores conectada, logicamente os 4 leds também estarão, e então foi o regulador de tensão que queimou.
Se o regulador queimou, vc pode substituir por um 7805 tranquilamente.A alimentação para a placa será de 7V no mínimo ( é o que o 7805 necessita para regular a saída para 5V ) e máxima de 24 ou 25V.N me lembro exatamente.Acima de 12V, sugiro um dissipador.Qualquer loja de componentes tem. Custa coisa de 1 ou 2 reais.
Como está o led PWR?

O led está aceso... qual seria o método para testar se o 298 realmente esta queimado? o 298 pode ser trocado?

Entao o 298 queimou. Da para trocar sim. Mas da um trabalhaooo.Muitos pontos de solda.É um componente fácil de encontrar nas lojas.Fica a seu critério.

Boa sorte no projeto

Amigo desde já muito obrigado, mas me tire uma dúvida; estou cismado com o diodo3 (D3), de acordo com o seu conhecimento se ele estivesse estragado o que ele causaria na placa? Esse diodo pode ter queimado?

Acho dificil o diodo ter problemas.Primeiro, troque o L298 e se caso a saida 2 do shield estiver com defeito, é o diodo que nao fecha o circuito com o VSS e o L298 ficaria "doido".Nao sei o comportamento que teria, mas com certeza nao iria funcionar corretamente.Eu chuto que uma fase do motor nao funcionaria. Isso causaria o motor de ficar dando solavancos, ao inveé de funcionar "liso".VSS é o pino que fornece alimentação lógica para o 298, e segundo vi no esquemático falta um capacitor de 100nF entre o VSS e o GND.mas isso é outra história.