Resposta rápida

Se o seu MPU-6050 não devolve dados, execute primeiro um scanner I2C para confirmar que o endereço é 0x68. Se o scanner não encontrar nada, verifique a cablagem SDA/SCL e a alimentação, e depois confirme os níveis lógicos: o módulo GY-521 espera I2C de 3.3V, por isso com um Arduino de 5V precisa de um level shifter ou pull-ups para 3.3V. Se o scanner detetar 0x68 mas as leituras falharem, o problema costuma ser a configuração da biblioteca ou a falta de pull-ups.

Confirme que o GY-521 está ligado e alimentado corretamente

O breakout GY-521 tem quatro pinos essenciais: VCC, GND, SDA, SCL. Alimente-o com 3.3 V se a sua placa fornecer isso; o regulador e o level shifting do módulo são mínimos, e 5 V em VCC pode danificar o MPU-6050. Ligue SDA ao pino SDA do seu microcontrolador e SCL a SCL. Num Arduino Nano V3.0, SDA é A4 e SCL é A5. Num WeMos D1 mini, SDA é D2 e SCL é D1. Mantenha os fios curtos e seguros—jumpers soltos são uma causa comum de leituras intermitentes.

Se estiver a utilizar uma placa 5V como o Arduino Nano, as linhas I2C do GY-521 não são tolerantes a 5V. Deve utilizar um conversor de nível ou alimentar o módulo a 3.3V e garantir que as pull-ups vão para 3.3V, e não para 5V. Muitas placas GY-521 incluem pull-ups de 4.7k para VCC; se o VCC for 5V, essas pull-ups irão expor o MPU-6050 a 5V em SDA/SCL. Verifique o seu módulo quanto a resistências pull-up integradas e considere removê-las se alimentar a partir de 5V, embora seja um trabalho delicado.

  • Alimente o GY-521 com 3.3 V, não com 5 V.
  • No Arduino Nano: SDA=A4, SCL=A5.
  • No WeMos D1 mini: SDA=D2, SCL=D1.
  • Utilize um level shifter para placas 5V.

Execute um scanner I2C para verificar se o sensor responde

Um sketch de scanner I2C analisa todos os endereços e reporta qualquer dispositivo que responda. Carregue um scanner padrão para a sua placa, abra o monitor série a 9600 ou 115200 baud e procure um dispositivo em 0x68. O endereço predefinido do MPU-6050 é 0x68 quando AD0 está baixo; se AD0 for colocado alto, o endereço passa a 0x69. Se o scanner não encontrar nada, o problema está na cablagem, na alimentação ou nas resistências pull-up. Se encontrar 0x68 mas a sua biblioteca do sensor falhar, o problema estará provavelmente no código ou nas definições da biblioteca.

Se o scanner mostrar 0x68 mas continuar sem obter dados, experimente o sketch de exemplo da biblioteca que está a utilizar (por exemplo, Adafruit_MPU6050 ou MPU6050_tockn). Certifique-se de que chama a função begin() correta e que o endereço I2C no seu código corresponde a 0x68. Algumas bibliotecas usam 0x68 por predefinição, outras exigem que o especifique. Verifique também se não está a usar um barramento I2C diferente (Wire vs Wire1) em placas com vários barramentos.

  • O scanner deteta 0x68: a cablagem e a alimentação estão boas; concentre-se no código.
  • O scanner deteta 0x69: AD0 está alto; ajuste o endereço no código.
  • O scanner não encontra nada: verifique SDA/SCL, a alimentação e as resistências pull-up.

Resolver conflitos de 0x68 e problemas com resistências pull-up

Se o scanner detetar 0x68 mas o seu código continuar a falhar, outro dispositivo no barramento pode estar a usar o mesmo endereço. Dispositivos I2C comuns, como alguns ecrãs OLED ou outros sensores, também podem estar em 0x68. Desligue os outros dispositivos I2C e teste o MPU-6050 sozinho. Se funcionar sozinho, tem um conflito de endereços. Pode alterar o endereço do MPU-6050 para 0x69 colocando AD0 em nível alto, mas isso requer um pino livre ou uma ponte de solda.

Resistências pull-up ausentes ou incorretas também podem causar falhas. O GY-521 normalmente inclui pull-ups de 4.7k para VCC. Se alimentar a partir de 3.3V, essas pull-ups estão corretas para lógica de 3.3V. Se utilizar um conversor de nível, certifique-se de que o lado alto tem pull-ups para 5V e o lado baixo para 3.3V; muitos conversores de nível incluem-nas. Se removeu as pull-ups do módulo ou está a usar um chip MPU-6050 sem placa, adicione resistências externas de 4.7k de SDA e SCL para 3.3V.

  • Desligue outros dispositivos I2C para excluir conflitos de endereços.
  • Arraste AD0 para cima para alterar o endereço para 0x69.
  • Adicione resistências pull-up externas de 4.7k se o seu módulo não as tiver.

Quando parar e escolher uma abordagem diferente

Se verificou a cablagem, a alimentação, o endereço e as pull-ups, e o scanner continua a não encontrar nada, o módulo pode estar danificado. O MPU-6050 é sensível a sobretensão; se foi acidentalmente ligado a 5 V no VCC ou SDA/SCL, pode estar avariado. Nesse ponto, substituir o GY-521 é o passo mais prático. Se precisar de uma solução mais robusta para sistemas de 5 V, considere um microcontrolador nativo de 3.3 V como o WeMos D1 mini, que evita completamente o level shifting. Para projetos que exijam um rastreamento preciso de movimento, uma IMU de gama alta com tolerância integrada de 5 V pode poupar tempo de depuração.

  • Se todas as verificações falharem, suspeite de um sensor danificado.
  • Considere uma placa 3.3V para evitar o level shifting.
  • Para necessidades avançadas, procure uma IMU com tolerância de 5V.

Lista de verificação de diagnóstico

  • Nenhum dispositivo encontrado pelo scanner I2C: Verifique a alimentação (3.3V), as ligações SDA/SCL e as resistências pull-up. Certifique-se de que o módulo não está danificado. Se a cablagem e a alimentação estiverem corretas, substitua o módulo.
  • O scanner encontra 0x68 mas a biblioteca falha: Verifique a função begin() da biblioteca e a definição do endereço. Experimente uma biblioteca ou um sketch de exemplo diferente. Se o código estiver correto, verifique problemas de velocidade do barramento I2C; experimente 100kHz.
  • Leituras intermitentes ou com ruído: Encurte os fios, adicione um condensador de desacoplamento (0.1uF) entre VCC e GND e garanta ligações sólidas. Se o ruído persistir, considere um sensor diferente ou cabos blindados.

Factos do produto

  • GY-521 MPU-6050 Módulo Giroscópio 3 Eixos + Módulo Acelerómetro 3 Eixos: Chip: MPU-6050; alimentação: 35V; modo de comunicação: protocolo de comunicação IIC padrão; conversor AD de 16 bits integrado no chip. O intervalo de alimentação de 35V é frequentemente interpretado erradamente como tolerância I2C de 5V; as linhas I2C não são tolerantes a 5V, pelo que é necessário um level shifter ao utilizar um microcontrolador de 5V.
  • Nano compatível com Arduino V3.0 com cabo USB GRÁTIS: Nano V3.0 compatível com Arduino baseado no ATmega328; sem ficha de alimentação DC; funciona com cabo USB Mini-B. Esta placa 5V é um host comum para o GY-521; os seus pinos I2C (A4/A5) são de lógica 5V, pelo que deve fazer level shift ou alimentar o sensor a 3.3V para evitar danos.
  • Shield de prototipagem mini WeMos D1: WeMos D1 mini Prototyping Shield concebido para WeMos D1 mini e mini Pro; fornecido com 3 conjuntos de headers (requer soldadura); permite empilhamento. O WeMos D1 mini é uma placa de 3.3V, pelo que pode ligar-se diretamente ao GY-521 sem um level shifter, simplificando a cablagem I2C e reduzindo os pontos de falha.