LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: Rui em 03 de Agosto de 2009, 17:59

Título: Arduino deixou de funcionar
Enviado por: Rui em 03 de Agosto de 2009, 17:59
Boa tarde ,

Andava aqui a brincar com um ventoinha de computador usando um MOSFET e PWM para controlar a velocidade de rotação. Tinha ligado um transformador de 12V e 1A com centro positivo e tudo estava a funcionar bem.
Passado um bocado fiz umas alterações ao código (nada de especial, mudei so o tempo de delay), desliguei o transformador, liguei o cabo USB, compilei o código e quando fiz o upload deu-me os seguintes erros:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Já tentei em 2 computadores diferentes e dá-me sempre o mesmo erro.
Quando é ligada, seja por transformador externo ou por USB, liga-se a LED PWR e piscam as LEDs TX e RX três vezes, a partir daí fica ligada a LED PWR e não faz absolutamente nada.

Será que o bootloader foi apagado por alguma razão ou foi alguma falha de hardware?
Título: Re:Arduino deixou de funcionar
Enviado por: metRo_ em 03 de Agosto de 2009, 18:10
A mim já me deu esse erro e dava porque tinha o arduino em cima de uma superfície condutora lool e na altura andei a pesquisar e havia alguma gente com esse problema. Se entretanto não conseguires parece que só programando novamente o bootloader.
Título: Re:Arduino deixou de funcionar
Enviado por: ghostbuster em 03 de Agosto de 2009, 18:46
tenta fazer reset manualmente passado exactamente 3 segundos apos teres carregado em upload
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 03 de Agosto de 2009, 19:27
Infelizmente não é por estar numa superfície condutora lol. Esá numa mesa de madeira. Também ja dei uma vista de olhos às soldaduras e parece-me estar tudo bem.
Já tentei fazer reset antes de fazer upload e depois, mas não teve qualquer efeito. Mas parece que é realmente um problema do bootloader pois quando faço reset a LED do pino 13 não pisca, nem a embutida, nem usando uma externa.

Vou tentar programar isto.
Que programador sugerem? Algo que não seja muito difícil de construir e não precise de muitas peças de preferência, e se possível que use a porta USB.

Obrigado pela ajuda :)
Título: Re:Arduino deixou de funcionar
Enviado por: metRo_ em 03 de Agosto de 2009, 19:43
http://lusorobotica.com/index.php/topic,427.0.html
Título: Re:Arduino deixou de funcionar
Enviado por: amando96 em 03 de Agosto de 2009, 21:04
já me deu esse erro inúmeras vezes, o mais certo e estar no ''tools > board'' a placa errada, ou uma má connecção do cabo USB. porque agora já nao me dá esse erro.

ás vezes esporadicamente dá, mas pouco.

Título: Re:Arduino deixou de funcionar
Enviado por: TigPT em 03 de Agosto de 2009, 21:58
Podes também experimentar uma versão anterior ao mega, por exemplo a 014, pode evitar estes problemas.
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 04 de Agosto de 2009, 22:44
metRo_:
Obrigado pela sugestão mas acho que vou fazer o de porta paralela já que pode ser usado com o IDE do Arduino.

amando96:
Não é nem uma nem outra, antes fosse lol.

TigPT:
Versão 014 do bootloader, IDE ou dos dois?
Título: Re:Arduino deixou de funcionar
Enviado por: TigPT em 05 de Agosto de 2009, 00:28
És de queluz certo? fica-me um bocadinho foram de mão, senão oferecia-me para o ver.
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 05 de Agosto de 2009, 01:00
Sim sou, obrigado de qualquer maneira.
Se for só o bootloader devo conseguir pô-lo a funcionar (espero eu  :D).

PS: Acabaste por não dizer se era a versão 014 do bootloader ou do IDE lol.
Título: Re:Arduino deixou de funcionar
Enviado por: TigPT em 05 de Agosto de 2009, 01:01
Desculpa. Referia-me apenas ao IDE. Se não conseguires avisa que combinamos para mo emprestares ou envias-me por correio ;)
Título: Re:Arduino deixou de funcionar
Enviado por: metRo_ em 05 de Agosto de 2009, 01:25
Não emprestes é que se o problema até agora é só de bootloader o atmega depois vem do TigPT a cantar "Tutti Frutti Summer Love" :D
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 05 de Agosto de 2009, 02:09
Haha.

Bem, vou mesmo fazer o programamdor de porta paralela.
Vou seguir o esquema que se encontra no site do Arduino:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Farduino.cc%2Fen%2Fuploads%2FHacking%2Fprogrammer_schematic.jpg&hash=022623f2c584bfb8d5e421edfe054182083d412f)

Se usar resistências de 220 Ohms em vez das de 470 não deve haver problema pois não?
Tenho visto alguns programadores para atmega com resistências de 220 Ohms e vi um que nem usava resistências :O
Penso que seja para evitar que a porta paralela se queime, se 220 não for suficiente vou ver se compro umas de 470 amanhã.
Título: Re:Arduino deixou de funcionar
Enviado por: ricardo-reis em 05 de Agosto de 2009, 02:12
se eles falam em 470, ao menos, mete duas de 220 em série, k já ficas com 440..
Título: Re:Arduino deixou de funcionar
Enviado por: inmotion.pt em 05 de Agosto de 2009, 04:06
Olá Rui,

Dado que já tentaste programar o Arduino noutros computadores e visto que as configurações da porta e modelo do mesmo estão correctas lamento informar-te mas o mais provável é que a porta série do Arduino tenha sido danificada. Se o led pisca 3 vezes significa que o bootloader está OK. Estive a ver o código do bootloader para procurar o significado de piscar o led 3 vezes e o comentário que vem com o código é este. Se fosse o bootloader que estivesse apagado não verias nenhum piscar de led's.

Código: [Seleccione]
/* flash onboard LED three times to signal entering of bootloader */
/* l needs to be volatile or the delay loops below might get
    optimized away if compiling with optimizations (DAM). */

Infelizmente isso significa que provavelmente queimaste a porta série (ou parte) do Atmega. Já tive um problema semelhante e foi causado por uma alimentação de 12V, 1A. No caso em concrecto ouve um contacto acidental entre a alimentação e o conector USB da placa Arduino. Este contacto foi o suficiente para danificar os pinos 0 e 1. Só foi possível apurar o problema ao tentar programar novamente o Atmega.

As boas notícias é que só necessitas de substituir o ATmega e por isso a restante placa do Arduino deverá estar operacional. O ideal para evitar estas situações é usar opto-coupling entre o circuito que estás a controlar e o Arduino. Quando tenho mesmo que ligar alguma alimentação externa e usar o cabo USB evito usar voltagens demasiado elevadas em relação aos normais 5V. Se houver algum contacto acidental entre uma linha de 12V e de 5V o outra linha qualquer do micro poderá resultar na destruição do mesmo. Em geral o Atmega é bastante resistente mas não suporta tensões muito acima da alimentação.

Melhores cumprimentos
Filipe Valpereiro

http://inmotion.pt (http://inmotion.pt)

Boa tarde ,

Andava aqui a brincar com um ventoinha de computador usando um MOSFET e PWM para controlar a velocidade de rotação. Tinha ligado um transformador de 12V e 1A com centro positivo e tudo estava a funcionar bem.
Passado um bocado fiz umas alterações ao código (nada de especial, mudei so o tempo de delay), desliguei o transformador, liguei o cabo USB, compilei o código e quando fiz o upload deu-me os seguintes erros:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Já tentei em 2 computadores diferentes e dá-me sempre o mesmo erro.
Quando é ligada, seja por transformador externo ou por USB, liga-se a LED PWR e piscam as LEDs TX e RX três vezes, a partir daí fica ligada a LED PWR e não faz absolutamente nada.

Será que o bootloader foi apagado por alguma razão ou foi alguma falha de hardware?
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 05 de Agosto de 2009, 05:10
ricardo-reis:
Também pensei nisso mas só tenho 4 resistências de 220 ohms. Vou ver se compro umas quantas amanhã e um cabo paralelo também.

Filipe:
Tenho um Arduino Duemilanove com ATmega328 por isso o LED do pino 13 devia piscar apenas uma vez. O que acontece é que ele não pisca.
Os únicos LEDs que piscam são o TX e RX, e esses sim, piscam 3 vezes.

Pode ter havido algum contacto entre o conector da alimentação e alguma parte do Arduino, mas se houve não reparei.
Vou comprar algumas coisas que me faltam amanhã e tentar gravar o bootloader, se não der compro outro ATmega que felizmente não são muito caros.
Título: Re:Arduino deixou de funcionar
Enviado por: Njay em 05 de Agosto de 2009, 09:59
Se tens um Arduino diecimila ou um com mega328, o LED só pisca 1 vez ao entrar no bootloader. O comentário do código é enganador Filipe, é "lixo" que ficou de outras versões. Hoje em dia o número de vezes que o LED pisca é dado como parametro na compilação e definido na Makefile que vem na mesma directoria.

Para saber se a porta série está a funcionar bem, remove o ATmega e liga um fio entre os pinos 0 e 1 do Arduino (o TX e RX), abre e configura o hiperterminal (por exemplo para "1200bps, 8 data bits, 1 stop bit, 0 parity bits, flow control none"). Depois escreve qualquer coisa no hyper e se vires o que foi escrito então a porta está boa, se teclares e não aparecer nada então foi 'cos porcos. Ao ligar os pinos TX e RX (sem o mega) estamos a fazer um "loopback", ou seja, ele recebe aquilo que envia. Podes fazer o mesmo teste do hyperterminal sem o fio a ligar o TX/RX (já sem o ATmega) só para confirmar que realmente não vês nada do que teclas (há configurações mais "escondidas" no hiperterminal que permitem fazer este loopback sem "a ajuda do hardware").
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 05 de Agosto de 2009, 15:27
Já fiz esse teste e a porta parece estar boa.

Eu vou passar uns dias ao Algarve e devo voltar no Domingo ou 2ª feira.
Vou ver se ponho isto a trabalhar quando voltar.

Até daqui a uns dias pessoal e obrigado pela ajuda :)
Título: Re:Arduino deixou de funcionar
Enviado por: TigPT em 05 de Agosto de 2009, 15:29
Boas férias ;)
Título: Re:Arduino deixou de funcionar
Enviado por: inmotion.pt em 05 de Agosto de 2009, 15:45
@Njay
De facto o comentário é enganador ;D. Muito bom o truque do loopback, desconhecia-o mas é bastante útil para despistar problemas no chip FTDI.

@Rui
Se após a gravação do bootloader continuares a ter problemas com a programação do Atmega é porque a porta série foi definitivamente danificada. Este é o circuito que costumo usar para optocoupling mas em vez do BD137 costumo usar um TIP120. Vê este link
http://www.uchobby.com/index.php/2007/09/23/arduino-temperature-controlled-pc-fan/

O trabalho extra compensa largamente a segurança que te proporciona. Em especial, quando alimentas externamente o Arduino e ao mesmo tempo ligas o Arduino por USB estás a expôr o teu PC a possíveis danos causados no caso de haver um contacto acidental entre a alimentação e o USB. Já vi algumas portas USB a queimarem, felizmente não com o Arduino, porque alguns fabricantes de hardware preferem poupar uns cêntimos e não colocam protecção no barramento USB.

Melhores cumprimentos
Filipe Valpereiro

http://inmotion.pt (http://inmotion.pt)
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 09 de Agosto de 2009, 01:45
Já voltei, infelizmente mais cedo do que gostaria por motivos profissionais.

Hoje, lá fui comprar as resistências de 470 Ohms e fiz o programador paralelo.
Quando tentei gravar o bootloader deu-me o seguinte erro:
Código: [Seleccione]
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: AVR device not responding
 ***failed; 
avrdude: verification error, first mismatch at byte 0x0000
   0x05 != 0x07
avrdude: verification error; content mismatch

Portanto parece-me que o atmega pifou.
Ainda bem que já tinha encomendado um na quarta feira passada :), é só esperar que chegue.

Muito obrigado por toda a ajuda que me deram,
Rui
Título: Re:Arduino deixou de funcionar
Enviado por: Njay em 09 de Agosto de 2009, 10:05
Se não usares um cabo mesmo muito curto para esse programador, ele facilmente não funciona. "Curto" quer dizer 1/2 dúzia de cm ou menos. O 1º que fiz há alguns anos era um suporte montado em cima duma ficha LPT, portanto as ligações tinham no máximo uns 3cm.

Mas o teu problema é outro. É que esse ATmega já está programado para usar um clock a partir de um cristal externo. Se não lhe puseres um cristal externo e 2 condensadores de 22pF (tal como está no diagrama do Arduino), não vais conseguir programá-lo com esse programador de porta paralela.
Título: Re:Arduino deixou de funcionar
Enviado por: Njay em 09 de Agosto de 2009, 18:44
Esquece a última parte do meu último post (já a risquei). Não se aplica ao teu caso, uma vez que deves estar a tentar programar com o AVR encaixado no Arduino, e aí ele já tem o cristal e os condensadores.
Mas a 1ª parte mantém-se.
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 17 de Agosto de 2009, 13:49
O cabo tem uns 7 centímetros, não deve ser por isso.

De qualquer maneira já chegou o novo atmega328 e o arduino já funciona, parece que o outro atmega tinha mesmo ido à vida.
Chegaram também as samples que pedi da Maxim: dois DS1307 e dois DS1620 :)
Título: Re:Arduino deixou de funcionar
Enviado por: TigPT em 17 de Agosto de 2009, 13:50
Boa,

Então vou fechar este post para não nos dispersarmos mais no tema ok?! ;)
Título: Re:Arduino deixou de funcionar
Enviado por: Rui em 18 de Agosto de 2009, 17:08
Com certeza.
Também já descobri a (provável) causa de todo este problema: esqueci-me do diodo em paralelo com o motor.
Título: Re:Arduino deixou de funcionar
Enviado por: TigPT em 18 de Agosto de 2009, 17:13
Ok, tópico encerrado então!