Kit Educacional Rastreador Luz Solar Para Arduino RB2053 AE321 - Curso Completo

Kit Educacional Rastreador Luz Solar Para Arduino RB2053 AE321 — Curso Completo com Projetos Práticos

Introdução

Este curso apresenta uma formação técnica completa em sistemas embarcados, instrumentação luminosa e aproveitamento fotovoltaico por meio do Kit Educacional Rastreador Luz Solar Para Arduino RB2053 AE321, um rastreador solar didático de dois eixos (dual-axis solar tracker) controlado por placa compatível com Arduino Uno R3 (microcontrolador ATmega328P). O conjunto combina quatro fotoresistores (LDR — Light Dependent Resistor) dispostos em quadrante com anteparo cruzado, dois micro servomotores para os eixos horizontal (azimute) e vertical (elevação), painel solar monocristalino de 6 V / 3 W e módulo de armazenamento com baterias 18650 (lithium-ion rechargeable cell, formato cilíndrico 18 mm × 65 mm) e saída USB 5 V, permitindo estudar o ciclo completo de captação, conversão, armazenamento e consumo de energia.

O conteúdo foi organizado como material educacional em página única, destinado a estudantes, professores e entusiastas que estão começando em eletrônica e programação embarcada. A sequência espelha a documentação oficial do fabricante KUONGSHUN (pastas 1_Assembly_Guide, 2_Programming_Preparation e 3_Code_and_Tutorial do pacote AE321): primeiro a montagem mecânica e a fiação, depois a preparação do ambiente de programação com versão pinada, em seguida a calibração do ângulo dos servos, o código principal de rastreamento com parâmetros adaptativos e, por fim, o bloco de armazenamento e liberação de energia, com diagnóstico de falhas ao final. Ao concluir, o leitor terá um rastreador funcional que aponta o painel para o ponto mais claro do ambiente e um repertório sólido de leitura analógica, controle por largura de pulso (PWM — Pulse Width Modulation), temporização e segurança com baterias de lítio.

O que você vai aprender:

  • Compreender a arquitetura do Arduino Uno R3 e do ATmega328P aplicada ao controle de dois eixos com servomotores
  • Montar passo a passo a estrutura em acrílico, os suportes dos servos, o quadrante de LDRs e o painel solar, com validação mecânica de cada etapa
  • Instalar a IDE Arduino com versão pinada, o driver USB-serial CH340 e a biblioteca Servo, com primeiro upload e Monitor Serial funcionais
  • Calibrar o ângulo mecânico dos servos em 90 graus antes do rastreamento, corrigindo a divergência entre ângulo de programa e ângulo real do braço
  • Implementar o algoritmo de rastreamento por quadrante com médias, diferenças, tolerância e atraso adaptativos, interpretando os valores do Monitor Serial
  • Dimensionar e operar o subsistema de energia com painel de 6 V / 3 W e shield 18650, incluindo leitura de tensão e corrente e carga de dispositivos USB
  • Diagnosticar falhas típicas de montagem, fiação, upload, biblioteca, alimentação e rastreamento instável com ações corretivas objetivas

Material utilizado: Kit Educacional Rastreador Luz Solar Para Arduino RB2053 AE321


Visão Geral do Kit e Arquitetura de Hardware

O AE321 é um rastreador solar didático de dois graus de liberdade. Quatro sensores de luminosidade formam um quadrante separado por um anteparo em cruz: quando a fonte de luz está desalinhada, o anteparo sombreia parte dos sensores e cria uma diferença mensurável entre médias de linhas e colunas; o firmware corrige os dois servos até anular essa diferença dentro de uma tolerância. O painel solar acompanha o movimento porque está fixado ao mesmo conjunto móvel do quadrante. A energia gerada é armazenada em células 18650 por meio de um módulo power shield com indicação por LEDs e saída USB de 5 V para alimentar cargas externas.

Especificações da placa controladora compatível com Arduino Uno R3

A placa de controle do kit é compatível com o Arduino Uno R3, construída em torno do microcontrolador de 8 bits ATmega328P (arquitetura AVR RISC) a 16 MHz. Os parâmetros de engenharia relevantes para este curso estão consolidados na tabela a seguir.

Parâmetro de EngenhariaEspecificação TécnicaObservações de Operação neste Curso
Microcontrolador principalATmega328P (8-bit AVR, 16 MHz)Núcleo que executa o algoritmo de rastreamento
Tensão lógica de operação5,0 VCCNível dos sinais de servo e dos divisores dos LDRs
Entrada recomendada (Jack P4 / VIN)7,0 V a 12,0 VCCFaixa segura para o regulador linear de bordo
Pinos digitais de I/O14 (D0 a D13, 6 com PWM por hardware)Servos nos pinos D5 e D6 com Servo.h
Entradas analógicas6 canais (A0 a A5), ADC de 10 bitsQuadrante de LDRs em A0, A1, A2 e A3
Resolução do conversor ADC10 bits (0 a 1023 passos)Cada passo equivale a aproximadamente 4,9 mV em referência de 5 V
Corrente máxima por pino de I/O20 mA típico (40 mA absoluto)Servos NUNCA alimentados pelo pino de sinal, apenas sinal lógico
Memória Flash32 KB (0,5 KB do bootloader Optiboot)Ambos os sketches do curso ocupam menos de 10 KB
Memória SRAM2 KBVariáveis de médias, diferenças e estados dos servos
Memória EEPROM1 KBNão utilizada neste curso
Interface USB-serialCH340 (conversor UART-USB)Exige driver CH340 instalado no computador
Cabo de programaçãoUSB Tipo-C (placa V3 do kit)Utilizar cabo de dados, nunca cabo exclusivo de carga

A referência de tensão do conversor analógico-digital é, por padrão, a alimentação de 5 V da placa. A relação entre tensão aplicada e contagem digital obedece à quantização uniforme do ADC de 10 bits:

N=⌊VinVREF⋅1023⌋N = \left\lfloor \frac{V_{in}}{V_{REF}} \cdot 1023 \right\rfloor

onde NN é a contagem de 00 a 10231023, VinV_{in} é a tensão no pino analógico e VREF=5,0 VV_{REF} = 5{,}0\,\text{V} é a referência padrão. Cada incremento do conversor corresponde ao passo de quantização:

Q=VREF1024≈4,88 mVQ = \frac{V_{REF}}{1024} \approx 4{,}88\,\text{mV}

Na prática do rastreamento, o valor absoluto importa menos que a diferença entre sensores: o algoritmo compara médias de pares de LDRs e move os servos enquanto a diferença exceder a tolerância. Por isso o sistema funciona sob sol pleno, sob lâmpada interna e até com lanterna de telefone, desde que exista um gradiente direcional de luz.

Exemplo numérico completo da cadeia de medição: suponha um divisor com Rf=10 kΩR_f = 10\,\text{k}\Omega e LDR a 8,0 kΩ8{,}0\,\text{k}\Omega sob a iluminância do ensaio. A tensão de saída vale Vout=5,0⋅10/(8+10)≈2,78 VV_{out} = 5{,}0 \cdot 10/(8 + 10) \approx 2{,}78\,\text{V} e a contagem do ADC resulta N=⌊2,78/5,0⋅1023⌋=568N = \lfloor 2{,}78/5{,}0 \cdot 1023 \rfloor = 568. Se a luz aumentar e o LDR cair para 3,0 kΩ3{,}0\,\text{k}\Omega, Vout≈3,85 VV_{out} \approx 3{,}85\,\text{V} e N=787N = 787. A diferença de 219 contagens entre os dois estados excede qualquer tolerância prática, de modo que o firmware detecta a direção com folga mesmo sob ruído de dezenas de contagens. O tempo de conversão de cada analogRead() no ATmega328P a 16 MHz é da ordem de 100 μs100\,\mu\text{s}, de modo que as 4 leituras consomem menos de meio milissegundo por iteração — fração desprezível diante do atraso de dezenas de milissegundos que cadencia o controle. A impedância de saída do divisor na ordem de quilo-ohms é compatível com o tempo de acomodação do amostrador interno do ADC, e nenhuma seguidora operacional é necessária neste curso.

Painel solar monocristalino de 6 V / 3 W

O elemento gerador do kit é um painel de silício monocristalino com potência nominal de pico de 3 W e tensão nominal de 6 V, nas dimensões de 110 mm × 162 mm × 2 mm. Os limites elétricos declarados pelo fabricante são tensão de circuito aberto máxima de 7 V e corrente de curto-circuito na faixa de 0 a 400 mA, conforme a irradiância.

Parâmetro do PainelEspecificação do FabricanteLeitura de Engenharia
Tecnologia das célulasSilício monocristalinoMaior eficiência entre as tecnologias didáticas (nominal de 15% a 24% no padrão industrial)
Potência nominal de pico3 WValor de pico sob sol direto próximo ao meio-dia, nunca valor contínuo garantido
Tensão nominal6 VTensão de operação típica no ponto de máxima potência aproximado
Tensão de circuito aberto máxima7 VTeto medido sem carga; cai sob carga conforme a curva da célula
Corrente de operação0 a 400 mAProporcional à irradiância; sob sol forte de meio-dia supera 300 mA
Dimensões110 × 162 × 2 mmFixação por fitas de velcro sobre o berço de acrílico móvel
Efeito físico de conversãoEfeito fotoelétrico em junção semicondutoraFótons com energia suficiente liberam portadores que geram corrente

A potência elétrica instantânea entregue pelo painel segue a identidade fundamental da eletrodinâmica:

P=V⋅IP = V \cdot I

onde PP é a potência em watts, VV é a tensão em volts e II é a corrente em ampères. A energia acumulada em um intervalo de carga é a integral da potência no tempo, que para corrente aproximadamente constante se reduz a:

E=P⋅t=V⋅I⋅tE = P \cdot t = V \cdot I \cdot t

com EE em joules (ou em watt-hora ao dividir por 36003600). Essa relação explica por que a documentação recomenda carregar sob o sol mais forte do meio-dia: com I>0,3 AI > 0{,}3\,\text{A} a energia por hora é ordens de grandeza maior que sob luz fraca de manhã ou fim de tarde, quando o medidor USB pode sequer indicar valor.

Micro servomotores dos eixos horizontal e vertical

Os dois atuadores do kit são micro servomotores analógicos de 9 g da família SG90, com curso nominal de 180 graus, controle por trem de pulsos de 50 Hz e alimentação típica de 4,8 V a 6 V. O eixo horizontal gira a base do painel no plano do azimute; o eixo vertical inclina o berço no plano da elevação.

Parâmetro do ServoEspecificação TípicaAplicação no AE321
ModeloMicro servo 9 g (padrão SG90)Eixos horizontal (pino D6) e vertical (pino D5)
Curso angular180 graus nominaisHorizontal limitado por software a 0–180; vertical a 10–150 no código principal
Sinal de comandoPWM de 50 Hz, pulso de 1 ms a 2 msGerado pela biblioteca Servo com write(ângulo)
Alimentação4,8 V a 6 VFornecida pelo shield 18650 / placa de expansão, nunca pelo pino de sinal
Torque típicoAproximadamente 1,8 kgf·cm a 4,8 VSuficiente para o berço de acrílico com painel de 3 W
Fixação mecânicaParafusos M2 com porcas e braços em cruzetaCalibração mecânica obrigatória em 90 graus antes do rastreamento

O comando de posição de um servo hobby segue o padrão de pulso com período de 20 ms. A largura do pulso mapeia linearmente o ângulo comandado:

τ(θ)=1,0 ms+θ180∘⋅1,0 ms\tau(\theta) = 1{,}0\,\text{ms} + \frac{\theta}{180^{\circ}} \cdot 1{,}0\,\text{ms}

onde τ\tau é a largura do pulso em milissegundos e θ\theta é o ângulo de 0∘0^{\circ} a 180∘180^{\circ}. O ciclo de trabalho (duty cycle) correspondente é:

D(θ)=τ(θ)20 ms⋅100%D(\theta) = \frac{\tau(\theta)}{20\,\text{ms}} \cdot 100\%

Para θ=90∘\theta = 90^{\circ}, τ=1,5 ms\tau = 1{,}5\,\text{ms} e D=7,5%D = 7{,}5\%. A biblioteca Servo do Arduino abstrai essa geração com temporizadores de hardware: attach(pino) associa o pino ao gerador de pulsos e write(ângulo) atualiza a largura. O programa nunca precisa gerar os pulsos manualmente, apenas comandar ângulos dentro dos limites mecânicos.

Quadrante fotossensível com 4 LDRs e anteparo cruzado

Cada módulo fotossensível do kit é um divisor de tensão formado por um fotoresistor LDR e um resistor fixo em série, alimentado em 5 V. A resistência do LDR cai com o aumento da iluminância (tipicamente de centenas de quilo-ohms no escuro a poucos quilo-ohms sob luz intensa). A tensão no ponto médio do divisor é lida pelo ADC.

Para um divisor com LDR no ramo superior (entre 5 V e o nó) e resistor fixo RfR_f no ramo inferior (entre o nó e GND), a tensão de saída é:

Vout=VCC⋅RfRLDR(E)+RfV_{out} = V_{CC} \cdot \frac{R_f}{R_{LDR}(E) + R_f}

onde RLDR(E)R_{LDR}(E) é a resistência do LDR em função da iluminância EE e VCC=5,0 VV_{CC} = 5{,}0\,\text{V}. Quando a luz aumenta, RLDRR_{LDR} diminui e VoutV_{out} sobe; no escuro, VoutV_{out} tende a zero. O firmware do fabricante adota a convenção inversa na descrição textual do Monitor Serial (“0 representa o máximo brilho”), o que corresponde ao LDR no ramo inferior do divisor em algumas revisões do módulo; o que importa para o algoritmo é a comparação relativa entre os quatro canais, não o sentido absoluto, e o código trata os dois casos porque compara diferenças com tolerância simétrica.

Os quatro canais são nomeados pela posição no quadrante: superior esquerdo em A0 (ldrlt), superior direito em A1 (ldrrt), inferior esquerdo em A2 (ldrld) e inferior direito em A3 (ldrrd). O anteparo em cruz projeta sombra diferencial: com a fonte à direita, os sensores da direita recebem mais luz que os da esquerda, e a diferença entre médias esquerda e direita indica o sentido da correção.

Módulo shield 18650 com saída USB 5 V

O armazenamento de energia utiliza um módulo 18650 Mobile Power Shield com quatro compartimentos para células 18650, chave de habilitação K1, quatro LEDs indicadores de carga, saída USB 5 V para cargas externas e entrada para o painel solar ou fonte de 5 V. O módulo inclui ainda um mostrador de tensão e corrente (voltímetro/amperímetro USB acoplável) para leitura cíclica dos parâmetros de carga.

Recurso do ShieldFunçãoDetalhe Operacional
Compartimentos 4× 18650Armazenamento em lítio recarregávelObservar polaridade; células íntegras, sem amassados ou ferrugem
Chave K1Habilita a saída e a lógica do shieldDeve estar ligada durante o rastreamento e a carga de telefone
4 LEDs indicadoresNível de carga do bancoPiscam durante a carga; todos acesos indicam carga completa
Entrada de cargaPainel solar ou fonte 5 VCCCorrente do painel varia com o sol; fonte estabilizada carrega mais rápido
Saída USB 5 V OUTAlimentação de cargas externasNão carregar telefone com o sol enquanto o painel alimenta direto; usar a energia do banco
Mostrador USBTensão e corrente cíclicasSob sol forte indica mais de 0,3 A; sob luz fraca pode não indicar valor

A energia armazenável nominal de um banco de 4 células pode ser estimada pela capacidade em ampère-hora:

Ebanco=n⋅Vnom⋅CE_{banco} = n \cdot V_{nom} \cdot C

onde n=4n = 4 é o número de células, Vnom=3,7 VV_{nom} = 3{,}7\,\text{V} é a tensão nominal por célula e CC é a capacidade por célula em ampère-hora. Para células típicas de 2,0 Ah2{,}0\,\text{Ah}, Ebanco≈29,6 WhE_{banco} \approx 29{,}6\,\text{Wh}. Com o painel de 3 W de pico, o tempo mínimo teórico de carga plena sob irradiância máxima seria próximo de 10 horas, sem considerar perdas — o que justifica o aviso do fabricante de que dias nublados podem exigir vários dias ou carga auxiliar com fonte de 5 V.

Mapa de pinos e protocolos utilizados

SubsistemaPinos do ArduinoProtocolo / SinalSentido
LDR superior esquerdoA0Analógico 0–5 V (divisor)Entrada
LDR superior direitoA1Analógico 0–5 V (divisor)Entrada
LDR inferior esquerdoA2Analógico 0–5 V (divisor)Entrada
LDR inferior direitoA3Analógico 0–5 V (divisor)Entrada
Servo verticalD5 (código principal)PWM 50 Hz via ServoSaída
Servo horizontalD6 (código principal)PWM 50 Hz via ServoSaída
Monitor SerialUSB (D0/D1 reservados)UART 9600-8-N-1Depuração
Alimentação dos servosTrilho 5 V da expansão / shieldEnergia (não sinal)Fonte
Painel → shieldBornes de carga do shieldEnergia CC 0–7 VFonte
Shield → telefoneUSB-A 5 V OUTUSB energia + mostradorFonte

⚠️ Atenção: no sketch de calibração do fabricante os pinos estão trocados em relação ao código principal (SERVOPINH 5 e SERVOPINV 6 na calibração contra SERVOPINH 6 e SERVOPINV 5 no rastreamento). Antes de cada upload, confira qual sketch está aberto e ajuste a fiação ou as constantes para que o servo físico horizontal corresponda ao objeto horizontal do código em uso. O curso indica o ajuste exato em cada etapa.

Inventário completo do kit (Packing List apurada da documentação)

A lista a seguir consolida os itens identificados no guia de montagem e no tutorial do fabricante para a versão com baterias. Cantidades de parafusos e colunas seguem o texto de cada passo do manual original:

  • 1x Placa de desenvolvimento V3 compatível com Arduino Uno (microcontrolador ATmega328P, USB Tipo-C, chip serial CH340)
  • 1x Placa de expansão de I/O para a controladora (barramentos de sinal S, positivo e negativo por canal)
  • 1x Placa de base em acrílico com furações numeradas de 1 a 3 para posicionamento dos módulos
  • 1x Módulo shield de energia 18650 Mobile Power com chave K1, 4 LEDs de carga e saída USB 5 V
  • 1x Caixa de baterias com tampa para 4 células 18650
  • 4x Células recarregáveis 18650 (na versão com baterias; na versão sem baterias, providenciar localmente)
  • 1x Painel solar monocristalino 6 V / 3 W de 110 mm × 162 mm × 2 mm
  • 2x Micro servomotores 9 g com bolsas de cruzetas e parafusos de reforço do braço
  • 4x Módulos fotossensíveis com LDR e divisor de tensão integrado (quadrante superior esquerdo, superior direito, inferior esquerdo e inferior direito)
  • 1x Estrutura em acrílico do rastreador (suporte do servo do chassi, suporte do disco, suporte giratório do painel, suportes laterais, viga transversal, espaçador redondo, defletor cruzado dos LDRs e base do quadrante)
  • 1x Mostrador USB de tensão e corrente para monitoramento da carga
  • 4x Cabos dupont de 3 vias para os módulos fotossensíveis (sinal, positivo e negativo)
  • 1x Cabo USB Tipo-C de dados para programação e Monitor Serial
  • Parafusos de cabeça chata escareada M3×10 para fixação das placas e colunas sobre a base
  • Colunas duplas de cobre M3×15 para elevação da placa V3, da caixa de baterias e da controladora
  • Parafusos de cabeça redonda M2×14 com porcas M2 para o servo do chassi
  • Colunas duplas de cobre M3×40 com parafusos M3×10 escareados para o suporte do servo do chassi
  • Parafusos autorroscantes M1,4×5 para as cruzetas em formato “um” dos servos do disco e do painel
  • Parafusos de cabeça redonda M2×10 com porcas M2 para o suporte do servo vertical e o suporte fixo dos LDRs (com porca extra de calço no centro do suporte dos LDRs)
  • Pinos de encaixe do disco e do suporte do disco (4 pinos do disco, 2 pinos da viga transversal, 2 pinos de fixação do suporte)
  • Parafuso de cabeça redonda M3×12 com porca autotravante M3 e espaçador redondo de acrílico para a articulação do suporte
  • Porcas M3 para os suportes giratórios do painel
  • 4x Fitas de velcro adesivas para fixação do painel sobre o berço móvel
  • 2x Parafusos de reforço da bolsa dos servos para travamento final dos braços após a calibração

📦 Somatória Geral do Kit: mais de 90 peças individuais entre eletrônica, estrutura em acrílico, fixadores e cabos (4 módulos LDR, 2 servos, 1 painel, 1 shield com 4 células na versão com baterias, 3 placas eletrônicas, mais de 60 fixadores entre parafusos, porcas, colunas, pinos e espaçadores, 4 cabos de 3 vias, 1 cabo USB-C e acessórios de fixação), sem contar a documentação digital.

Módulo 1 — Montagem Mecânica e Elétrica na Ordem do Fabricante

A montagem segue exatamente os 14 passos do documento 1_Assembly_Guide do fabricante, sem reordenação. A regra de ouro do acrílico é nunca forçar encaixes: se um furo não alinha, confira o número gravado na base e a orientação da peça antes de apertar. Aperte parafusos em cruz e em passes progressivos, sem esmagar o acrílico. Retire a película protetora das chapas somente no momento do uso para evitar riscos.

⚠️ Atenção: este módulo é mecânico e de fiação. O passo 14 prevê upload de programa e é executado em conjunto com o Módulo 3. Na primeira passada, execute os passos 1 a 13, deixe os parafusos de reforço dos braços dos servos separados e avance para a preparação do ambiente. O ajuste fino dos braços acontece após o upload do sketch de calibração.

Passo 1 — Instalação da placa de desenvolvimento V3

Fixe a placa V3 sobre a posição numerada “1” da base de acrílico utilizando colunas duplas de cobre M3×15 e parafusos escareados M3×10. O procedimento correto é rosquear primeiro as colunas na placa de base e depois apoiar a placa V3 sobre as colunas, finalizando com os parafusos por cima.

Passo 1: placa V3 fixada sobre a posição 1 da base com colunas de cobre

Validação: a placa fica paralela à base, sem balanço, com o conector USB-C acessível para a borda e a serigrafia do número “1” visível ao lado. Tente balançar suavemente a placa: nenhum canto deve encostar na base.

A placa V3 concentra o regulador de tensão, o conversor USB-serial CH340 e o conector Tipo-C. A impedância de entrada dos pinos analógicos do ATmega328P é suficientemente alta para não carregar os divisores dos LDRs, e a corrente de cada divisor é limitada pelo resistor fixo em série. Pela Lei de Ohm aplicada ao divisor em repouso:

Idiv=VCCRLDR(E)+RfI_{div} = \frac{V_{CC}}{R_{LDR}(E) + R_f}

Com VCC=5,0 VV_{CC} = 5{,}0\,\text{V} e resistências na ordem de quilo-ohms, IdivI_{div} fica na ordem de frações de miliampère por canal, carga desprezível para o regulador da placa.

Passo 2 — Instalação da caixa de baterias

Posicione a caixa de baterias sobre o número “2” da base, com a abertura da tampa voltada para cima e o cabo de saída orientado para o lado do shield. Rosqueie as colunas M3×15 na base, apoie a caixa e fixe com parafusos M3×10. Encaixe a tampa somente após conferir o assentamento.

Passo 2: caixa de baterias fixada sobre a posição 2 da base

Validação: a caixa não gira sobre a base e a tampa abre e fecha sem prender nos parafusos vizinhos. NÃO insira as células 18650 ainda: a inserção acontece no Módulo 5, com a chave K1 desligada e a polaridade conferida polo a polo.

Passo 3 — Instalação da controladora e da placa de expansão

Monte a placa controladora compatível com Arduino Uno sobre o número “3” da base e encaixe a placa de expansão sobre seus conectores, observando rigorosamente o sentido de encaixe. Nunca force a expansão: os pinos longos devem deslizar alinhados; encaixe invertido dobra pinos e pode curto-circuitar trilhos de alimentação.

Passo 3: controladora e placa de expansão sobre a posição 3 da base

Validação: a expansão assenta por igual nos dois lados, sem vão inclinado, e todos os barramentos S/VCC/GND ficam acessíveis. Se algum parafuso da controladora oferecer resistência excessiva, o manual autoriza operar com 3 parafusos em vez de 4 — prefira 3 bem assentados a 4 forçados que trincam o acrílico.

A expansão distribui cada canal em triplas de pinos (sinal, positivo, negativo), o que simplifica a ligação dos 4 cabos de 3 vias dos LDRs e dos cabos dos servos. A queda de tensão nos contatos da expansão é desprezível para sinais, mas a alimentação dos servos deve usar os trilhos dimensionados para corrente, nunca jumpers finos improvisados.

Passo 4 — Instalação do servo do chassi (etapas 4.1 e 4.2)

Primeiro fixe o servo ao suporte de acrílico do atuador com 2 parafusos M2×14 e porcas M2, observando a saída do cabo para o lado indicado no diagrama. Em seguida fixe o conjunto do suporte sobre a base com 4 colunas M3×40 e parafusos M3×10 escareados.

Passo 4.1: servo fixado ao suporte de acrílico do atuador Passo 4.2: suporte do servo do chassi elevado por colunas M3x40

Validação: o corpo do servo não gira dentro do suporte e o eixo estriado fica livre para receber o braço na calibração. Gire o suporte com a mão: o conjunto deve oscilar solidário à base, sem estalos.

Este servo será o eixo horizontal (azimute) no código principal. O torque necessário para girar o conjunto superior é pequeno porque a carga é centrada sobre o eixo; ainda assim, cabos tensionados criam torque parasita. Deixe sempre uma alça de folga nos cabos que sobem para o quadrante.

Passo 5 — Instalação do servo do disco

Fixe a cruzeta em formato “um” ao suporte de disco em acrílico com 2 parafusos autorroscantes M1,4×5. Os autorroscantes abrem a própria rosca no plástico: rosqueie devagar, sem apertar além do assentamento, para não espanar.

Passo 5: cruzeta fixada ao suporte de disco com parafusos autorroscantes

Validação: a cruzeta fica solidária ao disco, sem folga radial. Reserve este conjunto: ele será acoplado ao eixo do servo do chassi no passo seguinte.

Passo 6 — Fixação do disco

Insira os 4 pinos nos furos correspondentes e encaixe o suporte do disco sobre o eixo do servo do chassi. O disco é a mesa giratória do eixo horizontal: ele transmite o giro do servo para todo o conjunto superior.

Passo 6: disco acoplado ao eixo do servo do chassi

Validação: o disco gira solidário ao eixo quando se gira o braço do servo com a mão DESLIGADA (gire devagar e pouco, apenas para sentir o acoplamento). Nenhum pino deve ficar inclinado.

Passo 7 — Instalação do módulo fotossensível (etapas 7.1 e 7.2)

Fixe os módulos LDR no suporte próprio com parafusos M2×10 e porcas M2, instalando um lado de cada vez e utilizando uma porca extra como calço no centro, conforme o diagrama. Depois encaixe o suporte montado na posição correspondente, passe as sondas dos módulos pelos 4 furos com uma leve dobra dos terminais e insira o defletor cruzado (anteparo) entre os sensores.

Passo 7.1: módulos LDR fixados ao suporte com calço central Passo 7.2: suporte com defletor cruzado entre os quatro sensores
Detalhe do quadrante de LDRs com anteparo cruzado

Validação: os 4 sensores ficam nos quadrantes corretos (superior esquerdo, superior direito, inferior esquerdo, inferior direito) e o anteparo divide o campo de visão em 4 setores iguais. Com uma lanterna de telefone a 30 cm, cubra metade do quadrante com a mão: os valores dos canais cobertos devem variar juntos no teste do Módulo 4.

O anteparo é o coração óptico do rastreador. Sem ele, os 4 LDRs veriam praticamente a mesma iluminância e as diferenças tenderiam a zero em qualquer direção. Com ele, um desalinhamento angular α\alpha projeta sombra parcial proporcional a tan⁡(α)\tan(\alpha) vezes a altura do anteparo, gerando a diferença que o algoritmo persegue até anular. Os LDRs de sulfeto de cádmio possuem pico de sensibilidade no visível amarelo-esverdeado, com resposta lenta (dezenas a centenas de milissegundos para estabilizar após degrau de luz) — lentidão irrelevante diante do atraso de dezenas de milissegundos do controle, mas decisiva para o procedimento de teste: após deslocar a lanterna, aguarde 2 segundos antes de julgar a resposta, pois a leitura imediata ainda contém a acomodação do próprio sensor. A geometria do ganho óptico também explica por que o rastreador supera o painel fixo ao longo do dia: a irradiância efetiva sobre o painel cai com o cosseno do ângulo de incidência, de modo que um desalinhamento de 30 graus já derruba a captação a cerca de 87% do máximo, e de 60 graus a metade — o seguidor que mantém o erro dentro de poucos graus sustenta a corrente no patamar alto do meio-dia por horas, enquanto o painel fixo visita esse patamar por minutos.

Passo 8 — Instalação do braço do servo do painel

Fixe a segunda cruzeta em formato “um” ao suporte giratório do painel com 2 parafusos autorroscantes M1,4×5, no mesmo padrão do passo 5.

Passo 8: cruzeta fixada ao suporte giratório do painel solar

Validação: idêntica à do passo 5, sem folga radial da cruzeta.

Passo 9 — Instalação dos suportes giratórios do painel

Trave as porcas M3 nos furos dos 2 suportes giratórios e fixe-os à placa de base com parafusos escareados M3×10, segurando cada porca com uma mão enquanto aperta o parafuso com a outra.

Passo 9: suportes giratórios do painel fixados à base

Validação: os suportes ficam垂直 firmes e paralelos entre si, com as porcas travadas sem girar em falso. O berço do painel deve oscilar livremente entre eles no passo seguinte.

Passo 10 — Montagem do suporte com o servo vertical (etapas 10.1 a 10.4)

Fixe o segundo servo ao suporte com furo de encaixe usando 2 parafusos M2×10 e porcas M2, atentando à orientação do cabo. Una o suporte ao espaçador redondo de acrílico com o parafuso M3×12 e a porca autotravante (não uma porca comum: a autotravante possui anel de nylon que impede o afrouxamento com a vibração). Posicione o conjunto na orientação do diagrama e trave a viga transversal entre os furos com os 2 pinos.

Passo 10.1: servo vertical fixado ao suporte com furo Passo 10.2: articulação com espaçador e porca autotravante
Passo 10.3: conjunto do suporte na orientação do diagrama Passo 10.4: viga transversal travada com pinos

Validação: o eixo do servo vertical move o berço sem prender nos extremos e a articulação com porca autotravante gira com resistência suave, sem folga axial. Este é o eixo de elevação: o limite de software de 10 a 150 graus no código principal existe para impedir que o berço bata na estrutura.

Passo 11 — Instalação do painel solar

Cole as 4 fitas de velcro no verso do painel e nos 4 cantos superiores do berço de acrílico e assente o painel com pressão uniforme.

Passo 11: painel solar fixado ao berço com fitas de velcro

Validação: o painel não desliza ao inclinar o berço a 45 graus e pode ser removido para manutenção sem ferramentas. O velcro absorve dilatações térmicas do painel sob o sol, que a fixação rígida com parafusos não absorveria.

Passo 12 — Fixação do suporte com pinos

Trave o suporte do passo 10 à estrutura com os 2 pinos restantes, consolidando o pórtico que sustenta o eixo vertical.

Passo 12: pórtico do eixo vertical travado com pinos

Validação: o pórtico não abre sob o peso do painel e o berço continua oscilando livre.

Passo 13 — Fiação dos módulos e servos

Ligue os 4 cabos dupont de 3 vias entre os módulos LDR e a placa de expansão: o fio azul (ou laranja, conforme o lote) de sinal vai da fileira S do módulo à fileira S da expansão; o fio preto (ou marrom) de referência vai da fileira ”-” do módulo à fileira G da expansão; o fio restante de alimentação completa o trio. Ligue os cabos dos servos aos canais correspondentes da expansão, com o fio de sinal (laranja/amarelo) em S.

Passo 13: chicote dos 4 módulos LDR ligado à placa de expansão Visão geral da fiação dos servos e sensores na expansão

Validação antes de energizar: com o kit DESLIGADO, confira canal a canal que A0 recebe o superior esquerdo, A1 o superior direito, A2 o inferior esquerdo e A3 o inferior direito, e que D5/D6 recebem os servos conforme as constantes do sketch que será carregado. Confira que nenhum conector está deslocado de um pino (erro clássico que alimenta sinal em trilha de potência).

⛔ Perigo: nunca energize o kit com conector deslocado ou invertido na expansão. Inversão de alimentação nos módulos pode danificar o regulador e os divisores. A conferência leva dois minutos e evita a queima mais comum em kits didáticos.

Passo 14 — Calibração do ângulo (ponte com o Módulo 3)

O passo 14 do guia prevê o upload do programa de calibração, o giro dos servos ao ângulo comandado, a remoção e o reposicionamento dos braços na posição especificada e o travamento com os parafusos de reforço da bolsa dos servos. Não execute ainda: avance para o Módulo 2 (ambiente) e o Módulo 3 (calibração), depois retorne para travar os braços.

Passo 14: posição de referência para travamento dos braços após calibração

Módulo 2 — Preparação do Ambiente de Programação

Este módulo corresponde à pasta 2_Programming_Preparation do fabricante, com versões pinadas e verificadas em setembro de 2026. Nada neste módulo pode ser pulado: driver ausente é porta inexistente, núcleo errado é upload que falha, biblioteca errada é erro de compilação.

Lição 1: Instalação da IDE Arduino com versão pinada

Utilize a IDE Arduino 2.3.10 (publicada em 09/06/2026), disponível no portal oficial arduino.cc/en/software e na página de releases do GitHub arduino/arduino-ide. As variantes são instalador Windows 64 bits (EXE/MSI/ZIP), DMG para macOS Intel e ARM64 e AppImage/ZIP para Linux 64 bits. A série 1.8.x (legada, 1.8.19) continua existindo, mas este curso adota a série 2.x pela autocompletagem, navegação de código e gerenciador de placas integrado.

Página de download da IDE Arduino com as variantes por sistema Instalador da IDE Arduino no Windows

Procedimento no Windows: baixe o instalador de 64 bits, execute com privilégios de administrador, aceite a instalação do driver USB quando oferecida pelo assistente, conclua e abra a IDE. No macOS, arraste o aplicativo para a pasta Aplicativos e autorize a extensão do driver CH340 nas preferências do sistema. No Linux, conceda permissão de execução ao AppImage e adicione o usuário ao grupo dialout para acesso à porta serial.

Assistente de instalação concluindo os componentes Primeira abertura da IDE Arduino 2.x

Validação: ao abrir a IDE e conectar a placa com cabo de dados, o menu de placas deve permitir selecionar Arduino Uno e uma porta serial deve aparecer. Se nenhuma porta além de COM1 surgir no Windows, o driver CH340 não está ativo — avance para a próxima lição antes de insistir no upload.

Lição 2: Driver USB-serial CH340 e pacote de placas AVR

A placa V3 do kit utiliza o conversor CH340 (família CH340/CH341 da WCH) para a ponte UART-USB. O pacote do fabricante inclui os instaladores em CH340 Serial Driver (pasta Windows USB_Drive_CH341_3_1, versão 3.1, arquivos CH341SER.INF/SYS/CAT com SETUP.EXE, e pacote macOS CH34xVCPDriver). Ferramentas de terceiros distribuem compilações equivalentes, mas a referência deste curso é o pacote do fabricante com versão 3.1 no Windows.

Procedimento no Windows: com a placa DESCONECTADA, execute SETUP.EXE como administrador, clique em instalar, conecte a placa com o cabo Tipo-C de dados e aguarde a criação da porta COM. Confira no Gerenciador de Dispositivos que o dispositivo aparece como porta serial USB sem ponto de exclamação. No macOS, instale o pacote CH34xVCPDriver, reinicie quando solicitado e autorize a extensão.

Instalador do driver CH340 com botão de instalação Porta COM criada após instalação do driver

Em seguida instale o núcleo da placa: no Gerenciador de Placas da IDE, busque Arduino AVR Boards e fixe a versão 1.8.6, que contém as definições do ATmega328P, o protocolo de gravação Optiboot e as frequências de clock corretas. Núcleo errado ou desatualizado é a causa número um de erros de sincronização no upload (stk500_recv() e variantes).

⚠️ Atenção: utilize sempre cabo USB de dados. Cabos exclusivos de carga (comuns em carregadores de telefone) alimentam a placa sem criar porta serial: os LEDs acendem, mas nenhuma COM aparece. Se a porta não surge após o driver, troque o cabo antes de reinstalar qualquer coisa.

Lição 3: Primeiro upload de teste e Monitor Serial

Antes dos sketches do rastreador, valide a cadeia completa (IDE, driver, cabo, placa, bootloader) com o exemplo Blink embutido: Arquivo > Exemplos > 01.Basics > Blink. Selecione Ferramentas > Placa > Arduino Uno e a porta COM criada, clique em carregar e aguarde a mensagem de sucesso com o tamanho do sketch e o fechamento da barra de progresso.

Seleção da placa Arduino Uno no menu Ferramentas Seleção da porta COM da placa

Resultado esperado: o LED embutido (pino 13) pisca em intervalos de 1 segundo. O programa Blink alterna o pino entre nível alto e baixo com digitalWrite() e delay(1000), o que exercita exatamente a mesma cadeia de gravação (compilação GCC-AVR, protocolo Optiboot pela serial, reinicialização e execução da Flash) que os sketches do rastreador utilizarão — por isso ele é o teste de fumaça normativo antes de qualquer código do kit. Se o upload falhar, consulte a matriz de diagnósticos do módulo final antes de alterar fiação: na maioria dos casos a causa está em porta errada, placa errada ou cabo de carga. Registre a porta COM funcional (por exemplo COM4) e a taxa do Monitor (9600) no seu perfil de operação: ao trocar de computador ou de porta USB, esses dois valores são os primeiros a conferir, e o Blink é o teste de dois minutos que separa problema de ambiente de problema de hardware. Mantenha o exemplo Sweep da biblioteca Servo compilado em seguida como segundo teste de fumaça, pois ele valida simultaneamente biblioteca, temporizadores e um servo fora do mecanismo — se o Sweep move um servo avulso e a calibração não move o do kit, o defeito está na alimentação ou na fiação da expansão, nunca na IDE.

O Monitor Serial é o instrumento de depuração do rastreamento. Abra-o pelo ícone de lupa no canto superior direito da IDE, fixe a taxa em 9600 baud (a mesma declarada em Serial.begin(9600) nos sketches) e mantenha o terminador de linha padrão. Com o código principal carregado, o Monitor exibe em tempo real os 4 canais dos LDRs, a média geral veg, a tolerância tol e o atraso dtime. Esses valores orientam todo o ajuste fino do Módulo 4.

Monitor Serial aberto com taxa de 9600 baud

A taxa de 9600 baud significa 9600 símbolos por segundo no enlace UART entre a placa e o computador, com formato padrão de 8 bits de dados, sem paridade e um stop bit. O tempo de transmissão de um quadro típico de 10 bits (1 start + 8 dados + 1 stop) é:

Tquadro=109600≈1,04 msT_{quadro} = \frac{10}{9600} \approx 1{,}04\,\text{ms}

O volume de texto do código principal (algumas dezenas de caracteres por iteração com atraso de dezenas de milissegundos) ocupa uma fração pequena dessa banda, de modo que o Monitor acompanha o rastreamento em tempo real sem atrasar o controle nem perder caracteres.

Lição 4: Tabela-mestre de bibliotecas do curso

Todo o curso utiliza uma única biblioteca externa além do núcleo Arduino. A tabela a seguir é a referência normativa: qualquer erro de No such file or directory se resolve por ela, nunca por downloads avulsos da internet.

Biblioteca (#include)Buscar no GerenciadorVersão usada no cursoDownload ZIP (espelho oficial)Lições
Servo.h (Servo por Michael Margolis, Arduino)Servo → selecionar 1.1.7 → Instalar1.1.7 (confirmada no library.properties do pacote do fabricante)arduino-libraries/Servo (Code > Download ZIP)Módulo 3 (calibração) e Módulo 4 (rastreamento)

Duas vias de instalação, com o Gerenciador como recomendada. Via Gerenciador: Sketch > Incluir Biblioteca > Gerenciar Bibliotecas…, buscar Servo, selecionar exatamente 1.1.7, instalar e reiniciar a IDE. Via ZIP: baixar o repositório oficial, Sketch > Incluir Biblioteca > Adicionar Biblioteca .ZIP…, selecionar o arquivo e reiniciar a IDE. O pacote do fabricante traz ainda uma cópia da biblioteca em 2. Add library files/libraries/Servo, utilizável pela mesma via ZIP quando não houver internet para o Gerenciador.

Gerenciador de bibliotecas com busca pela biblioteca Servo Instalação da versão pinada da biblioteca Servo

Conferência obrigatória: Arquivo > Exemplos > Servo > Sweep deve abrir e compilar sem erros, e com um servo avulso ligado ao pino 9 deve varrer de 0 a 180 graus continuamente. Se o exemplo não aparece no menu, a biblioteca foi instalada na pasta errada (erro típico: pasta duplicada libraries/Servo/Servo/ criada ao descompactar o ZIP com um nível extra). O caminho correto contém Servo.h diretamente em libraries/Servo/src/Servo.h na instalação pelo Gerenciador, ou libraries/Servo/Servo.h na cópia legada do fabricante. Se o exemplo aparece mas não compila, feche todas as janelas da IDE, remova instalações duplicadas mantendo apenas a 1.1.7, reinicie e recompile: a IDE indexa bibliotecas na abertura, e pastas adicionadas com a IDE aberta só valem após reiniciar.

A biblioteca Servo não possui dependências transitivas: basta ela. Os módulos Wire e SPI não são usados neste curso, e funções como analogRead(), map(), millis() implícito via delay() e Serial pertencem ao núcleo Arduino, sem instalação.

💡 Dica: trave mentalmente a versão 1.1.7 e nunca clique em atualizar sem motivo. Atualizações de major em bibliotecas de controle costumam quebrar temporização em placas AVR antigas; neste curso, a 1.1.7 é a versão testada contra os dois sketches.

Módulo 3 — Instalação e Calibração do Ângulo dos Servos (Parte 1 do Fabricante)

O fabricante estabelece que o estado centrado e horizontal do mecanismo corresponde ao comando de 90 graus nos dois servos. Na prática, o ângulo de programa raramente coincide com o ângulo mecânico na primeira montagem, porque a cruzeta pode ter sido encaixada em qualquer dente da estria. Este módulo elimina essa divergência: carrega-se um programa que comanda ângulos conhecidos, compara-se a pose real com a pose de referência das figuras e reposicionam-se os braços sobre as estrias até a coincidência, travando-se então os parafusos de reforço.

Lição 5: Teoria do servo hobby e da calibração mecânica

Um servo hobby é um sistema de controle em malha fechada em miniatura: um potenciômetro interno mede a posição do eixo, um comparador calcula o erro entre a posição medida e a largura do pulso de comando, e o motor com redução corrige o erro até anulá-lo. O usuário nunca acessa o potenciômetro interno; acessa apenas o comando de pulso. Por isso a calibração do AE321 é mecânica, não eletrônica: o programa comanda 90 graus com precisão de temporizador, e o operador gira a cruzeta sobre a estria até que 90 graus de programa correspondam a 90 graus de mecanismo.

A relação entre ângulo comandado e largura de pulso, com período de 20 ms, é a equação linear:

τ(θ)=1,0 ms+θ180∘⋅1,0 ms\tau(\theta) = 1{,}0\,\text{ms} + \frac{\theta}{180^{\circ}} \cdot 1{,}0\,\text{ms}

Para os ângulos de referência deste módulo: θ=0∘\theta = 0^{\circ} produz τ=1,0 ms\tau = 1{,}0\,\text{ms}; θ=45∘\theta = 45^{\circ} produz τ=1,25 ms\tau = 1{,}25\,\text{ms}; θ=90∘\theta = 90^{\circ} produz τ=1,5 ms\tau = 1{,}5\,\text{ms}; θ=180∘\theta = 180^{\circ} produz τ=2,0 ms\tau = 2{,}0\,\text{ms}. A biblioteca Servo gera esses pulsos por interrupção de temporizador, de modo que o loop() vazio do sketch de calibração não significa inatividade: os pulsos continuam sendo gerados em segundo plano enquanto o programa aguarda. No ATmega328P, a biblioteca utiliza o Timer1 de 16 bits para agendar as bordas de subida e descida de cada canal com resolução de microssegundos, o que explica dois limites práticos: o número máximo de servos simultâneos (12 no Uno, compartilhando o mesmo temporizador por multiplexação temporal) e a restrição de que os pinos 9 e 10 perdem o PWM analógico por hardware quando a biblioteca está ativa, pois o temporizador deixa de servir ao analogWrite() nesses pinos. Neste curso, com apenas 2 servos em D5 e D6, ambas as restrições são folgadas, mas o conhecimento evita o erro clássico de comandar um terceiro atuador com analogWrite() nos pinos 9 ou 10 no mesmo sketch e atribuir o mau funcionamento à mecânica. O jitter (variação de borda) típico fica na ordem de poucos microssegundos, equivalente a frações de grau — invisível diante da tolerância de dezenas de contagens do quadrante. Por isso a calibração mecânica domina a precisão final: o temporizador entrega o ângulo elétrico com erro desprezível, e todo o erro restante está no dente da estria onde a cruzeta foi encaixada, exatamente o que o procedimento de separar, reposicionar e travar elimina.

O sketch de calibração do fabricante comanda inicialmente 45 graus nos dois eixos (constantes servoh = 45 e servov = 45 no arquivo distribuído), valor de estacionamento para o encaixe inicial dos braços. A pose de referência de 90 graus é atingida ao final do procedimento descrito no tutorial em PDF, quando ambos os servos são levados ao centro do curso. A divergência entre 45 e 90 nos textos do fabricante reflete duas revisões do mesmo procedimento (estacionamento em 45, referência centrada em 90); o procedimento deste curso reconcilia as duas: estaciona-se em 45 para o encaixe sem esforço, confere-se a pose contra as figuras e ajusta-se para a referência centrada antes do travamento.

📦 Bibliotecas desta lição: Servo por Michael Margolis, Arduino (versão 1.1.7).

  • Via Gerenciador (recomendado): Sketch > Incluir Biblioteca > Gerenciar Bibliotecas… → buscar Servo → selecionar 1.1.7 → Instalar → reiniciar a IDE.
  • Via ZIP: baixar em arduino-libraries/Servo (Code > Download ZIP) ou usar a cópia do pacote em 2. Add library files/libraries/Servo → Sketch > Incluir Biblioteca > Adicionar Biblioteca .ZIP… → reiniciar a IDE.
  • Conferência: Arquivo > Exemplos > Servo > Sweep deve abrir e compilar sem No such file or directory.

Lição 6: Código de calibração comentado linha a linha

Abra na IDE o arquivo 3_Code_and_Tutorial/Servo_Angle_Installation_and_Calibration/Servo_Angle_Installation_and_Calibration.ino do pacote do fabricante. O código completo, com comentários técnicos em português adicionados para este curso (o original distribui o programa sem comentários de linha), é o seguinte:

#include <Servo.h>  // instalada pelo quadro acima (versão 1.1.7); gera os pulsos de 50 Hz por temporizador

#define SERVOPINH  5 // pino do servo horizontal NESTE sketch (atenção: no código principal é 6)
#define SERVOPINV  6 // pino do servo vertical NESTE sketch (atenção: no código principal é 5)
bool operation_flag = true; // reservada pelo fabricante; não usada na lógica atual, mantida por fidelidade

// Configuração do eixo horizontal
Servo horizontal;            // objeto que representa o servo do azimute (disco/base)
int servoh = 45;             // ângulo inicial de estacionamento para o encaixe do braço
int servohLimitHigh = 180;   // teto do curso horizontal (fim de curso por software)
int servohLimitLow = 0;      // piso do curso horizontal (fim de curso por software)

// Configuração do eixo vertical
Servo vertical;              // objeto que representa o servo da elevação (berço/painel)
int servov = 45;             // ângulo inicial de estacionamento para o encaixe do braço
int servovLimitHigh = 180;   // teto do curso vertical NESTE sketch (o principal usa 150)
int servovLimitLow = 90;     // piso do curso vertical NESTE sketch (o principal usa 10)

void setup()
{
  horizontal.attach(SERVOPINH); // associa o objeto ao pino 5 e inicia o trem de pulsos
  vertical.attach(SERVOPINV);   // associa o objeto ao pino 6 e inicia o trem de pulsos
  horizontal.write(servoh);     // comanda 45 graus no horizontal (pulso de 1,25 ms)
  vertical.write(servov);       // comanda 45 graus no vertical (pulso de 1,25 ms)
}

void loop()
{
  // loop intencionalmente vazio: os pulsos continuam por interrupção de timer
  // o mecanismo permanece estacionado no ângulo comandado no setup
}

Cada linha cumpre um papel verificável. #include <Servo.h> importa o gerador de pulsos; sem ele, Servo seria tipo desconhecido (does not name a type). Os #define fixam os pinos deste sketch específico — a troca em relação ao código principal é intencional do pacote e deve ser respeitada com a fiação correspondente ou normalizada pelo operador (o curso recomenda normalizar: escolha um padrão e ajuste as constantes dos dois sketches para o mesmo padrão antes de prosseguir). As variáveis de limite documentam o curso permitido, mesmo que este sketch não as aplique em movimento. attach() reserva o temporizador e inicia os pulsos; write() posiciona; o loop() vazio mantém a posição por hardware.

Lição 7: Upload do programa de calibração e ajuste dos braços

Conecte a placa ao computador com o cabo Tipo-C de dados, selecione Ferramentas > Placa > Arduino Uno e a porta COM correta (a porta que aparece ao conectar e desaparece ao desconectar é a da placa). Clique em carregar e aguarde a confirmação de sucesso.

Seleção da placa Arduino Uno antes do upload da calibração Seleção da porta COM da placa
Confirmação de upload concluído com sucesso na IDE

Com o programa carregado, os dois servos giram ao ângulo inicial e o mecanismo assume a pose de estacionamento. Compare com as figuras de referência do tutorial (estado centrado e horizontal em 90 graus):

Pose de referência centrada do mecanismo em 90 graus Detalhe da referência horizontal do conjunto

Se a pose real divergir da referência, solte o parafuso da cruzeta, separe o braço da estria do servo SEM desligar a placa (para que o eixo permaneça energizado na posição comandada), gire o braço até coincidir com a figura e reencaixe. Repita nos dois eixos. Somente após a coincidência visual, instale os pequenos parafusos de reforço da bolsa dos servos e aperte o travamento final.

Travamento final dos braços com parafusos de reforço

⚠️ Atenção: nunca gire o eixo do servo à força com a placa ligada para “acertar” a posição. O motor energizado resiste e a forçagem quebra dentes da redução. O procedimento correto é sempre separar o braço da estria, reposicionar o braço livre e reencaixar, com o eixo parado na posição comandada.

Resultado esperado: com os braços travados, o mecanismo repousa centrado e horizontal, e um leve toque no berço encontra resistência simétrica dos dois servos energizados. Desligue a placa e avance para o código principal sem desmontar nada.

Módulo 4 — Código Principal de Rastreamento Solar (Parte 2 do Fabricante)

Com os braços calibrados, o rastreador recebe sua inteligência: o programa que lê os 4 LDRs dezenas de vezes por segundo, calcula médias por fileira e coluna, compara diferenças contra uma tolerância adaptativa e incrementa os servos passo a passo até alinhar o painel com a fonte mais intensa. Este é o módulo mais denso do curso e o único que exige compreensão plena antes do teste sob o sol.

Lição 8: Teoria do rastreamento por quadrante com tolerância

O algoritmo pertence à família dos seguidores por diferença de iluminância com banda morta. Definem-se as médias das fileiras superior e inferior e das colunas esquerda e direita a partir das quatro leituras:

avt=lt+rt2,avd=ld+rd2,avl=lt+ld2,avr=rt+rd2avt = \frac{lt + rt}{2}, \qquad avd = \frac{ld + rd}{2}, \qquad avl = \frac{lt + ld}{2}, \qquad avr = \frac{rt + rd}{2}

onde ltlt, rtrt, ldld e rdrd são as contagens de 0 a 1023 dos canais superior esquerdo (A0), superior direito (A1), inferior esquerdo (A2) e inferior direito (A3). A média geral do quadrante é:

veg=avt+avd+avl+avr4veg = \frac{avt + avd + avl + avr}{4}

As diferenças de elevação e azimute são então:

dvert=avt−avd,dhoriz=avl−avrdvert = avt - avd, \qquad dhoriz = avl - avr

A lei de controle com banda morta simétrica de largura toltol estabelece: se ∣dvert∣≤tol|dvert| \le tol, o eixo vertical permanece; se dvert>toldvert > tol ou dvert<−toldvert < -tol, o servo vertical avança um grau no sentido que reduz a diferença, respeitados os fins de curso. O eixo horizontal obedece à regra análoga com dhorizdhoriz. O incremento unitário por iteração, combinado ao atraso dtimedtime entre iterações, define a velocidade angular efetiva do rastreamento:

ωef=1∘dtime+Tproc\omega_{ef} = \frac{1^{\circ}}{dtime + T_{proc}}

onde TprocT_{proc} é o tempo de processamento da iteração (leitura dos ADCs, escrita serial e atualização dos servos, na ordem de poucos milissegundos). Com dtime=20 msdtime = 20\,\text{ms}, ωef\omega_{ef} aproxima-se de 40∘ ⁣/s40^{\circ}\!/\text{s}; com dtime=100 msdtime = 100\,\text{ms}, cai para cerca de 10∘ ⁣/s10^{\circ}\!/\text{s}. Resposta rápida demais oscila em torno do alvo (o painel ultrapassa o ponto e retorna); lenta demais perde nuvens passageiras e o movimento do sol.

A originalidade do firmware do fabricante está na adaptação automática de toltol e dtimedtime à luminosidade média vegveg. Sob luz fraca (0<veg<3000 < veg < 300 na convenção do código), os parâmetros são interpolados linearmente pela função map():

tol=map(veg,10,300,5,100),dtime=map(veg,10,300,100,50)tol = \text{map}(veg, 10, 300, 5, 100), \qquad dtime = \text{map}(veg, 10, 300, 100, 50)

A função map() implementa a interpolação linear entre intervalos:

map(x,inmin,inmax,outmin,outmax)=(x−inmin)⋅(outmax−outmin)inmax−inmin+outmin\text{map}(x, in_{min}, in_{max}, out_{min}, out_{max}) = \frac{(x - in_{min}) \cdot (out_{max} - out_{min})}{in_{max} - in_{min}} + out_{min}

Sob luz intensa (vegveg fora da faixa baixa), o código fixa tol=20tol = 20 e dtime=20dtime = 20, priorizando resposta rápida com banda estreita, porque sob o sol o gradiente direcional é nítido e o ruído relativo é pequeno. Sob luz fraca interna, a tolerância se alarga e o atraso aumenta nas bordas da faixa, evitando que o painel trema perseguindo reflexos e lâmpadas múltiplas. O operador pode sobrescrever esses valores manualmente para o seu ambiente, como detalha a Lição 11.

📦 Bibliotecas desta lição: Servo por Michael Margolis, Arduino (versão 1.1.7) — a mesma da Lição 5, nada a baixar.

  • Conferência: verifique no Gerenciador de Bibliotecas que Servo segue em 1.1.7 e que Arquivo > Exemplos > Servo > Sweep compila. Se você reinstalou a IDE entre os módulos, repita a conferência antes do upload.

Lição 9: Código principal comentado linha a linha

Abra 3_Code_and_Tutorial/Solar_Tracking/Solar_Tracking.ino. O código a seguir é o programa original do fabricante com comentários técnicos em português adicionados para este curso, sem alteração da lógica:

#include <Servo.h>  // instalada pelo quadro acima (versão 1.1.7)

#define SERVOPINH  6 // servo horizontal NESTE sketch (no de calibração é 5: normalizar antes)
#define SERVOPINV  5 // servo vertical NESTE sketch (no de calibração é 6: normalizar antes)

int tol = 50;   // banda morta inicial; será recalculada a cada iteração em função de veg
                // faixa manual útil 10 a 100: menor = mais sensível, maior = mais estável
int dtime = 50; // atraso inicial entre iterações em ms; recalculado a cada iteração
                // faixa manual útil 10 a 100: menor = resposta rápida, maior = movimento suave

// Eixo horizontal (azimute, disco/base)
Servo horizontal;          // objeto do servo que gira a mesa
int servoh = 90;           // partida no centro do curso (pose de referência calibrada)
int servohLimitHigh = 180; // fim de curso superior por software
int servohLimitLow = 0;    // fim de curso inferior por software

// Eixo vertical (elevação, berço/painel)
Servo vertical;            // objeto do servo que inclina o berço
int servov = 45;           // partida a 45 graus (o berço inicia semi-abaixado e sobe ao rastrear)
int servovLimitHigh = 150; // teto de 150 (não 180) para o berço não bater na estrutura
int servovLimitLow = 10;   // piso de 10 (não 0) pelo mesmo motivo mecânico

// Quatro canais do quadrante (nomes do original mantidos)
const int ldrlt = A0; // superior esquerdo (top left)
const int ldrrt = A1; // superior direito (top right)
const int ldrld = A2; // inferior esquerdo (down left)
const int ldrrd = A3; // inferior direito (down right)

void setup()
{
  horizontal.attach(SERVOPINH); // inicia pulsos no pino 6
  vertical.attach(SERVOPINV);   // inicia pulsos no pino 5
  horizontal.write(servoh);     // leva o azimute ao centro (90)
  vertical.write(servov);       // leva a elevação a 45
  delay(100);                   // acomodação mecânica antes das leituras
  Serial.begin(9600);           // Monitor Serial a 9600: MESMA taxa a fixar no Monitor
}

void loop()
{
  // Leitura dos 4 divisores (0 a 1023 por canal)
  int lt = analogRead(ldrlt); // superior esquerdo
  int rt = analogRead(ldrrt); // superior direito
  int ld = analogRead(ldrld); // inferior esquerdo
  int rd = analogRead(ldrrd); // inferior direito
  Serial.print("lt:"); Serial.print(lt); Serial.print(" ");
  Serial.print("rt:"); Serial.print(rt); Serial.print(" ");
  Serial.print("ld:"); Serial.print(ld); Serial.print(" ");
  Serial.print("rd:"); Serial.println(rd);

  // Médias por fileira, coluna e geral
  int avt = (lt + rt) / 2; // média da fileira superior
  int avd = (ld + rd) / 2; // média da fileira inferior
  int avl = (lt + ld) / 2; // média da coluna esquerda
  int avr = (rt + rd) / 2; // média da coluna direita

  int veg = (avt + avd + avl + avr) / 4; // iluminância média do quadrante

  // Adaptação automática de tolerância e atraso à luminosidade
  if (0 < veg && veg < 300)
  { tol = map(veg, 10, 300, 5, 100);    // luz fraca: tolerância cresce com veg
    dtime = map(veg, 10, 300, 100, 50); // luz fraca: atraso cai com veg
  }
  else
  { tol = 20;   // luz forte: banda estreita e resposta rápida
    dtime = 20; // idem
  }

  Serial.print("veg= "); Serial.println(veg);
  Serial.print("tol= "); Serial.println(tol);
  Serial.print("dtime= "); Serial.println(dtime);

  // Diferenças de elevação e azimute
  int dvert = avt - avd;   // fileiras superior menos inferior
  int dhoriz = avl - avr;  // colunas esquerda menos direita

  // Controle do eixo vertical com banda morta e fins de curso
  if (-1 * tol > dvert || dvert > tol) // fora da banda: corrige um grau
  {
    if (avt < avd) // mais luz embaixo: sobe o berço
    {
      servov = ++servov; // pré-incremento: soma 1 antes de atribuir
      if (servov > servovLimitHigh)
      {
        servov = servovLimitHigh; // saturação no teto de 150
      }
    }
    else if (avt > avd) // mais luz em cima: desce o berço
    {
      servov = --servov; // pré-decremento: subtrai 1 antes de atribuir
      if (servov < servovLimitLow)
      {
        servov = servovLimitLow; // saturação no piso de 10
      }
    }
    vertical.write(servov); // aplica; se o sentido estiver invertido no seu kit, usar (180 - servov)
  }

  // Controle do eixo horizontal com banda morta e fins de curso
  if (-1 * tol > dhoriz || dhoriz > tol) // fora da banda: corrige um grau
  {
    if (avl < avr) // mais luz à direita: gira para a direita (decrementa)
    {
      servoh = --servoh;
      if (servoh < servohLimitLow)
      {
        servoh = servohLimitLow; // saturação em 0
      }
    }
    else if (avl > avr) // mais luz à esquerda: gira para a esquerda (incrementa)
    {
      servoh = ++servoh;
      if (servoh > servohLimitHigh)
      {
        servoh = servohLimitHigh; // saturação em 180
      }
    }
    horizontal.write(servoh); // aplica; se invertido, usar (180 - servoh)
  }
  delay(dtime); // cadência do controle: define a velocidade angular efetiva
}

Pontos que merecem atenção redobrada na leitura. Primeiro, os pinos trocados entre sketches: normalize antes do upload (ou a fiação acompanha o sketch de calibração, ou as constantes acompanham a fiação atual — nunca os dois ao mesmo tempo sem registro). Segundo, os limites do vertical (10 a 150) são menores que o curso do servo de propósito: protegem a mecânica. Terceiro, os comentários originais sobre inversão (180 - servo) indicam que, dependendo do lado de montagem do braço, o sentido físico pode sair invertido; a correção é trocar o sinal no write, nunca inverter a fiação de alimentação. Quarto, a divisão inteira por 2 e por 4 trunca frações — irrelevante diante da tolerância de dezenas de contagens.

Lição 10: Upload do código principal e primeiro rastreamento

Com a fiação normalizada e a biblioteca conferida, conecte a placa, selecione placa e porta e carregue o sketch de rastreamento. Ligue a chave de alimentação do conjunto (shield com K1 habilitado ou alimentação da bancada, conforme a etapa de energia em que você está) e observe o painel apontar para o ponto mais claro do ambiente.

Abertura do programa de rastreamento na IDE Upload do código principal para a controladora

Abra o Monitor Serial a 9600 baud e observe o trio de blocos por iteração: as 4 leituras, veg, tol e dtime. Sob lâmpada interna próxima, leituras típicas ficam na casa das centenas baixas com veg < 300 e parâmetros interpolados; sob sol direto, as contagens sobem e o código fixa tol = 20, dtime = 20.

Ícone do Monitor Serial no canto superior da IDE Leituras dos quatro LDRs no Monitor Serial

Teste direcional com lanterna: aponte a lanterna do telefone a cerca de 30 cm do quadrante, primeiro à esquerda, depois à direita, depois acima e abaixo. O painel deve seguir a lanterna com atraso de frações de segundo, eixo por eixo. Cubra um dos sensores com o dedo: o painel deve fugir do lado sombreado. Esses dois testes provam, sem sol, que o quadrante, a fiação e os sentidos dos servos estão corretos.

Parâmetros veg, tol e dtime exibidos no Monitor Serial

💡 Dica: faça o primeiro teste em ambiente interno com UMA única fonte dominante (uma luminária) e as demais luzes apagadas. Múltiplas fontes de intensidade semelhante confundem qualquer seguidor por quadrante, por melhor que seja o código — não é defeito, é física: sem gradiente direcional dominante, não há direção a seguir.

Protocolo de aceitação do primeiro rastreamento, a executar nesta ordem e com registro escrito: primeiro, com a fonte ao centro, os dois eixos devem permanecer imóveis por 30 segundos (estabilidade no alvo com diferenças dentro da banda). Segundo, deslocando a fonte 15 cm para a direita, somente o eixo horizontal deve corrigir até estabilizar em até 10 segundos, sem oscilação visível. Terceiro, retornando a fonte ao centro e elevando-a 15 cm, somente o vertical deve corrigir no mesmo prazo. Quarto, cobrindo o quadrante inteiro com papelão por 5 segundos, ambos os eixos devem parar (sem gradiente, sem comando — a banda morta segura as posições em vez de caçar no escuro). Quinto, removendo o papelão com a fonte deslocada, o painel deve retomar a perseguição em até 3 segundos. Se qualquer etapa falhar, o registro indica o subsistema: falha na primeira sugere tolerância baixa demais; na segunda ou terceira, canais ou sentidos trocados; na quarta, atraso curto demais com ruído amplificado; na quinta, alimentação instável que reinicia a placa ao mover os dois servos juntos. Somente com as cinco etapas aprovadas o kit está liberado para o sol, onde a irradiância maior apenas acelera um controle já provado na bancada.

Lição 11: Ajuste fino de tolerância, atraso e limites

Os parâmetros automáticos atendem à maioria dos ambientes, mas o ajuste manual resolve os dois sintomas clássicos. Sintoma um, oscilação (o painel treme em torno do alvo sem estabilizar): aumente tol em passos de 10 (de 20 para 30, depois 40) ou aumente dtime em passos de 10 ms, recarregue e observe por um minuto. Sintoma dois, lentidão ou zona morta (o painel ignora deslocamentos evidentes da fonte): reduza tol em passos de 5 e reduza dtime, recarregue e repita o teste da lanterna.

A documentação do fabricante orienta a mesma intuição em palavras: sob luz interna, cuja variação é grande e ruidosa, fixe tol mais alto; sob o sol, cuja variação direcional é limpa, fixe tol mais baixo. A faixa recomendada para experimentação manual é 10 a 100 para tol e 10 a 100 ms para dtime. Valores fora dessa faixa são possíveis, mas abaixo de 10 o sistema tende ao nervosismo e acima de 100 à apatia.

Tabela de parâmetros tol e dtime no tutorial do fabricante

Os limites de curso também admitem ajuste fino responsável. Se o berço encosta na estrutura antes do limite de software, reduza servovLimitHigh de 150 para 140 e eleve servovLimitLow de 10 para 20, recarregue e confira o curso completo com a mão próxima à chave (sem tocar na mecânica em movimento). Nunca amplie limites além dos valores do fabricante sem inspeção mecânica: o curso extra não aumenta a captação e pode arrancar a cruzeta.

Para registrar o ponto ótimo do seu ambiente, anote em uma linha o trio final (por exemplo: interno noturno com luminária a 2 m — tol = 40, dtime = 50; externo sob sol — tol = 20, dtime = 20). Essa anotação é o seu perfil de operação e evita reajustar a cada uso.

Módulo 5 — Armazenamento e Liberação de Energia (Parte 3 do Fabricante)

O rastreador só se justifica se a energia apontada for armazenada e reutilizada. Este módulo trata o painel como gerador, o shield 18650 como reservatório e a saída USB como consumo, com a instrumentação do mostrador USB para quantificar cada etapa. A ordem do fabricante é preservada: painel, shield com LEDs, carga de telefone pelo banco, cuidados de dias nublados com fonte auxiliar, leitura cíclica de tensão e corrente, e o procedimento de ativação após reinserção das células.

Lição 12: Física do painel e condições reais de irradiância

A conversão no painel ocorre pelo efeito fotoelétrico em junções de silício: fótons com energia acima da banda proibida liberam pares elétron-lacuna que o campo interno da junção separa em corrente. A eficiência de conversão das células monocristalinas didáticas situa-se na faixa industrial de 15% a 24% citada pelo fabricante; o restante da irradiância vira calor no próprio painel, que por isso esquenta sob o sol sem que isso indique defeito.

A potência nominal de 3 W é valor de pico em condições próximas ao meio-dia com incidência perpendicular e céu limpo. Qualquer desvio — manhã, fim de tarde, nebulosidade, poeira sobre o vidro, incidência oblíqua — reduz a corrente quase proporcionalmente à irradiância, enquanto a tensão cai menos. Essa assimetria explica a recomendação do fabricante de privilegiar o sol do meio-dia para carga rápida: dobrar a irradiância dobra aproximadamente a corrente e, portanto, a energia por hora, como mostra a identidade:

P=V⋅IP = V \cdot I

Para uma sessão de carga com tensão média de 6,0 V6{,}0\,\text{V} e corrente média de 0,30 A0{,}30\,\text{A}, a potência média é P=1,8 WP = 1{,}8\,\text{W} e a energia em uma hora é:

E=P⋅t=1,8 W⋅3600 s=6480 J≈1,8 WhE = P \cdot t = 1{,}8\,\text{W} \cdot 3600\,\text{s} = 6480\,\text{J} \approx 1{,}8\,\text{Wh}

Sob luz fraca de manhã, com I=0,05 AI = 0{,}05\,\text{A}, a mesma hora rende apenas 0,3 Wh0{,}3\,\text{Wh} — seis vezes menos. O rastreamento automático maximiza exatamente esse fator geométrico: ao manter incidência próxima da perpendicular durante o dia, ele sustenta a corrente no patamar alto por mais horas, em vez de concentrar a captação em um pico estreito como ocorre com painel fixo.

Procedimento de caracterização com o mostrador USB: conecte o painel à entrada do shield, o mostrador à saída de medição e observe tensão e corrente exibidas ciclicamente. Sob sol forte de meio-dia, a corrente indicada supera 0,3 A; sob sol fraco, o mostrador pode não indicar valor — comportamento normal que indica irradiância abaixo do limiar de medição, não defeito do painel. Anote os três cenários do seu local (sol pleno, sol velado, sombra clara) com tensão, corrente e horário: essa tabela é a assinatura energética do seu ambiente e orienta as expectativas de tempo de carga.

Painel monocristalino 6V 3W com dimensões e especificações Curva de operação do painel sob diferentes irradiâncias

Limpeza e conservação do painel completam a lição: poeira, impressões digitais e respingos reduzem a transmitância do vidro e derrubam a corrente sem que a tensão denuncie. Limpe com pano macio seco ou levemente umedecido, sem solventes, e inspecione o verso e as soldas das fitas a cada mês de uso externo. Microfissuras por queda derrubam a potência de forma permanente; o velcro do berço absorve vibrações, mas o painel nunca deve sofrer impacto direto.

Lição 13: Shield 18650, LEDs de carga e chave K1

Insira as 4 células 18650 na caixa com a chave K1 DESLIGADA, conferindo polo a polo a polaridade gravada no compartimento: o polo positivo de cada célula coincide com o contato de mola correspondente, sem exceção. Uma única célula invertida impede a carga do banco e pode aquecer o contato — a conferência visual leva segundos e evita o incidente mais grave deste módulo.

Compartimento do shield 18650 com indicação de polaridade Chave K1 e LEDs indicadores do shield

Ligue a chave K1 e conecte o painel à entrada do shield sob o sol. Os 4 LEDs indicadores piscam durante a carga em padrão progressivo e acendem todos juntos na carga completa; os reflexos dos LEDs no acrílico da base permitem acompanhar o estado sem curvar-se sobre o kit. O ciclo completo sob sol pleno leva horas; sob céu velado, pode estender-se por dias — a documentação é explícita e realista nesse ponto, e a alternativa com fonte de 5 VCC existe exatamente para esses casos. Acompanhe a progressão dos LEDs como instrumento: o primeiro LED sólido com os demais piscando indica o terço inicial; dois sólidos indicam meio banco; três sólidos aproximam-se do fim; os quatro acesos sem piscar indicam carga completa e autorizam a carga de demonstração do telefone. Se os LEDs apagarem ao conectar o painel sob sol fraco e reacenderem sob sol forte, o módulo está operando no limiar de corrente mínima — registre o horário e a nebulosidade em vez de forçar conectores, pois a causa é irradiância, não contato. Nunca obstrua as aberturas do shield durante a carga: o conversor elevador para 5 V dissipa calor proporcional à corrente, e a ventilação natural mantém a temperatura em faixa segura mesmo em sessões longas de meio-dia intenso.

A capacidade nominal do banco, para células típicas de 2,0 Ah2{,}0\,\text{Ah} a 3,7 V3{,}7\,\text{V} nominais cada, é:

Ebanco=n⋅Vnom⋅C=4⋅3,7 V⋅2,0 Ah≈29,6 WhE_{banco} = n \cdot V_{nom} \cdot C = 4 \cdot 3{,}7\,\text{V} \cdot 2{,}0\,\text{Ah} \approx 29{,}6\,\text{Wh}

O tempo mínimo teórico de carga com o painel a 1,8 W1{,}8\,\text{W} médios, sem perdas, seria 29,6/1,8≈16,429{,}6 / 1{,}8 \approx 16{,}4 horas de sol de pico — na prática, com perdas de conversão e irradiância variável, distribuídas por vários dias. Esse cálculo não desqualifica o kit: ele dimensiona corretamente as expectativas e demonstra por que o rastreamento (que sustenta a corrente alta por mais horas) e a carga auxiliar com fonte (que entrega corrente estável à noite) fazem parte do mesmo projeto pedagógico.

⛔ Perigo: utilize apenas células 18650 íntegras, sem amassados, perfurações, ferrugem ou envoltório rasgado, e nunca misture células de capacidades ou estados de carga muito diferentes no mesmo banco. Células danificadas podem entrar em descontrole térmico. Carregue sempre sobre superfície não inflamável, nunca dentro de caixas fechadas ou sobre tecidos, e não deixe o banco carregando sem supervisão periódica. Se qualquer célula aquecer além do morno, desligue K1, desconecte o painel e afaste o conjunto de materiais combustíveis.

Lição 14: Carga de telefone pela saída USB e leitura do mostrador

O procedimento correto de carga de um telefone usa a energia DO BANCO, nunca a do painel em tempo real: conecte o mostrador USB à saída USB 5 V OUT do shield, o cabo do telefone ao mostrador e mantenha K1 ligada, de modo que as 18650 forneçam corrente estável enquanto o mostrador exibe tensão e corrente ciclicamente. A instabilidade da luz solar direta torna a corrente do painel inadequada para alimentar o telefone em tempo real — a documentação proíbe essa prática, e a proibição tem fundamento: nuvens passageiras derrubam a corrente abaixo do limiar do telefone, que liga e desliga a negociação de carga repetidamente, aquecendo ambos os lados sem carregar de fato.

Mostrador USB exibindo tensão de saída Mostrador USB exibindo corrente de carga

Leitura do mostrador durante a carga pelo painel (sem telefone): tensão e corrente exibidas em ciclo contínuo indicam a potência instantânea de carga do banco. Quanto maior a irradiância, maior a corrente e mais rápida a carga; sob sol fraco, a ausência de indicação significa corrente abaixo do limiar do instrumento. Durante a carga do telefone pelo banco, o mostrador indica o consumo do telefone (tipicamente 5 V com corrente entre 0,5 A e 2 A conforme o aparelho e o nível da bateria), permitindo estimar a autonomia: um banco de 29,6 Wh29{,}6\,\text{Wh} entrega, com eficiência de conversão de 85%, cerca de 25 Wh25\,\text{Wh} úteis — suficientes para uma a duas cargas completas de um telefone típico, conforme a capacidade da bateria do aparelho:

Ncargas≈Ebanco⋅ηEtelefoneN_{cargas} \approx \frac{E_{banco} \cdot \eta}{E_{telefone}}

com η≈0,85\eta \approx 0{,}85 e EtelefoneE_{telefone} na faixa de 10 a 15 Wh15\,\text{Wh} para aparelhos comuns.

Em dias nublados ou com sol fraco persistente, carregue o shield com fonte de 5 VCC (carregador de telefone com cabo de dados) na entrada do módulo, mantendo K1 ligada e acompanhando os LEDs até a carga completa. Essa via auxiliar não é improviso: é o procedimento oficial do fabricante para garantir o banco cheio antes de demonstrações e aulas, independentemente do clima.

Lição 15: Ativação após reinserção, manutenção e operação sob o sol

Se as células forem removidas e reinstaladas, o shield pode não despertar apenas com a chave K1: o circuito de proteção entra em estado dormente e exige ativação. O procedimento oficial é carregar o shield por alguns segundos com o painel sob o sol ou com fonte de 5 VCC; o módulo desperta, os LEDs retomam a indicação e K1 volta a comandar normalmente. Guarde esse procedimento junto ao kit: ele evita o diagnóstico equivocado de shield queimado após troca de baterias.

Ativação do shield com fonte auxiliar após reinserção das células Verificação da polaridade polo a polo na reinserção

Rotina de operação sob o sol para sessões de demonstração: posicione o kit em área aberta sem sombras parciais (sombras de galhos e telhados criam múltiplos gradientes que confundem o quadrante), ligue K1, aguarde o painel apontar para o sol em até um minuto, confira no Monitor Serial (com notebook) ou pelo movimento que o rastreamento estabilizou, e conecte o painel ao shield para carga. Ao fim da sessão, desligue K1, cubra o painel ou guarde o kit à sombra e limpe o vidro antes de guardar. Nunca deixe o kit sob chuva nem sob sereno intenso: a eletrônica não possui qualquer vedação contra água ou umidade.

Kit completo em operação sob o sol com painel alinhado

Manutenção trimestral: reapertar parafusos do pórtico e dos suportes (a vibração dos servos afrouxa fixadores), inspecionar cabos dupont por oxidação e folga, verificar o velcro do painel, medir a tensão do banco em repouso (banco saudável mantém acima de 14 V no conjunto de 4 células em série nominal) e rodar o teste da lanterna para confirmar que os sentidos dos servos permanecem corretos após qualquer intervenção mecânica. Registre cada manutenção com data e observações: o histórico revela padrões (por exemplo, parafuso que afrouxa sempre no mesmo ponto indica necessidade de arruela ou trava-rosca leve). O modelo mínimo de ficha possui data, horas de sol desde a última revisão, tensão do banco em repouso, estado dos 4 LEDs sob o painel ao meio-dia, folgas detectadas por eixo, cabos substituídos e o trio tol/dtime/limites vigente — uma linha por revisão basta para reconstruir a vida útil do kit ao longo de semestres letivos. Antes de qualquer demonstração pública, execute o ensaio relâmpago de 5 minutos: teste da lanterna nos 4 sentidos, leitura do mostrador sob a luz do local e conferência de K1 com os LEDs. Esse ritual elimina as três causas de demonstração frustrada (fiação tocada no transporte, parâmetro de outro ambiente ainda carregado e banco descarregado pela semana parado), e o público percebe apenas um rastreador que funciona na primeira tentativa.

Módulo 6 — Ensaios Quantitativos e Perfil de Operação do Seu Kit

Os módulos anteriores deixam o rastreador funcional; este módulo transforma o funcionamento em números registrados. Cada ensaio utiliza apenas os instrumentos já disponíveis (Monitor Serial a 9600 baud, mostrador USB e relógio) e gera uma linha do perfil de operação do seu ambiente — o documento que elimina reajustes a cada uso e sustenta demonstrações em aula com dados reais.

Lição 16: Ensaio do quadrante com lanterna e registro das diferenças

Fixe o kit sobre a bancada com K1 ligada e o código principal em execução. Posicione a lanterna do telefone a 30 cm do quadrante, alinhada ao centro, e anote as 4 leituras em repouso. Desloque a lanterna 15 cm para a direita sem alterar a distância e anote novamente; repita para a esquerda, acima e abaixo. Para cada posição, calcule as médias e diferenças exatamente como o firmware:

avt=lt+rt2,avd=ld+rd2,avl=lt+ld2,avr=rt+rd2avt = \frac{lt + rt}{2}, \qquad avd = \frac{ld + rd}{2}, \qquad avl = \frac{lt + ld}{2}, \qquad avr = \frac{rt + rd}{2} dvert=avt−avd,dhoriz=avl−avrdvert = avt - avd, \qquad dhoriz = avl - avr

Exemplo numérico com valores típicos de bancada: suponha lt=210lt = 210, rt=340rt = 340, ld=200ld = 200 e rd=330rd = 330 com a fonte à direita. As médias resultam avt=275avt = 275, avd=265avd = 265, avl=205avl = 205 e avr=335avr = 335; a média geral é veg=270veg = 270; as diferenças são dvert=10dvert = 10 e dhoriz=−130dhoriz = -130. Com veg=270veg = 270 dentro da faixa baixa, a interpolação produz tol=map(270,10,300,5,100)≈90tol = \text{map}(270, 10, 300, 5, 100) \approx 90 e dtime=map(270,10,300,100,50)≈55dtime = \text{map}(270, 10, 300, 100, 50) \approx 55. Como ∣dvert∣=10≤90|dvert| = 10 \le 90, o eixo vertical permanece; como ∣dhoriz∣=130>90|dhoriz| = 130 > 90, o horizontal corrige um grau para a direita — exatamente o comportamento esperado, com o eixo correto se movendo e o outro em repouso.

Repita o cálculo para as 4 posições e monte a tabela do seu kit com colunas de posição, 4 leituras, médias, diferenças, tol, dtime e eixo que se moveu. Se qualquer linha divergir da previsão (eixo errado se move, ou nenhum se move com diferença grande), o defeito está mapeado: canais trocados produzem erro sistemático por eixo, e tolerância alta demais produz imobilidade generalizada. Corrija fiação ou parâmetros e repita o ensaio até as 4 linhas concordarem com a teoria — esse é o critério objetivo de pronto do quadrante.

A resolução efetiva do ensaio é limitada pela quantização do ADC. Com passo de Q≈4,88 mVQ \approx 4{,}88\,\text{mV}, uma diferença de d=20d = 20 contagens corresponde a cerca de 98 mV98\,\text{mV} no divisor — margem confortável acima do ruído térmico e da flutuação da fonte. Diferenças de 1 a 3 contagens flutuando com o painel parado não indicam defeito: indicam a banda morta cumprindo seu papel de ignorar ruído. O erro clássico do iniciante é zerar a tolerância para “aumentar a precisão” e colher oscilação permanente; a precisão real do sistema é a largura da banda, nunca zero.

Lição 17: Ensaio de velocidade angular e escolha do atraso

Com o painel estabilizado sob fonte única, desloque a lanterna de um extremo ao outro do campo (aproximadamente 90 graus de azimute) e cronometre o tempo de realinhamento. A velocidade angular efetiva segue a relação do controle passo a passo:

ωef=1∘dtime+Tproc\omega_{ef} = \frac{1^{\circ}}{dtime + T_{proc}}

Meça TprocT_{proc} indiretamente pelo ritmo das linhas no Monitor Serial: com dtime programado em 20 ms e linhas surgindo a cada 25 ms, Tproc≈5 msT_{proc} \approx 5\,\text{ms}. O realinhamento de 90 graus consome então cerca de 90×25 ms=2,25 s90 \times 25\,\text{ms} = 2{,}25\,\text{s}. Se o painel oscila ao chegar (ultrapassa e retorna duas ou mais vezes), eleve dtime para 40 ms e repita: o tempo sobe para cerca de 4 segundos, mas a chegada passa a ser direta. Se o painel chega direto mas demora a perceber deslocamentos pequenos, reduza tol em vez de dtime: a lentidão de detecção pertence à banda, não à cadência.

Registre o par final como perfil de bancada (exemplo: lanterna a 30 cm, tol=40tol = 40, dtime=50dtime = 50, realinhamento de 90 graus em 5 segundos sem oscilação). Repita o ensaio sob o sol com tol=20tol = 20 e dtime=20dtime = 20 e registre o perfil externo. A troca entre perfis passa a ser uma edição de duas constantes com recarga de segundos — procedimento de rotina, não depuração.

Lição 18: Ensaio energético com o mostrador USB e autonomia

Conecte o painel ao shield sob sol direto de meio-dia e anote tensão e corrente do mostrador a cada 10 minutos por uma hora, com o kit rastreando. Calcule a potência média de cada intervalo por P=V⋅IP = V \cdot I e a energia acumulada por E=∑Pi⋅ΔtE = \sum P_i \cdot \Delta t. Exemplo com três intervalos de 20 minutos a 1,8 W1{,}8\,\text{W}, 1,5 W1{,}5\,\text{W} e 1,2 W1{,}2\,\text{W} (passagem de nuvem no terceiro): E=(1,8+1,5+1,2)/3×1 h=1,5 WhE = (1{,}8 + 1{,}5 + 1{,}2)/3 \times 1\,\text{h} = 1{,}5\,\text{Wh} na hora. Compare com a capacidade nominal do banco:

Ebanco=n⋅Vnom⋅CE_{banco} = n \cdot V_{nom} \cdot C

Para 4 células de 2,0 Ah2{,}0\,\text{Ah}, Ebanco≈29,6 WhE_{banco} \approx 29{,}6\,\text{Wh}; a hora medida repôs cerca de 5% do banco — número honesto que explica por que a carga completa consome dias de sol intermitente e por que a fonte auxiliar de 5 V faz parte do procedimento oficial. Em seguida meça o consumo: carregue o telefone pelo banco com o mostrador em série, anote tensão e corrente médias a cada dez minutos e estime a autonomia pela relação entre energia útil (η≈0,85\eta \approx 0{,}85) e energia nominal do aparelho. O par de tabelas (geração por hora e consumo por carga) é o demonstrativo energético do kit para feiras e aulas, muito mais convincente que adjetivos.

Lição 19: Perfil de operação em uma página e rotina de demonstração

Consolide os três ensaios em uma única página impressa fixada à caixa do kit: mapa de pinos normalizado (A0–A3 por quadrante, D5/D6 por eixo), trio tol/dtime/limites de bancada e de sol, tabela energética do seu local com horários, procedimento de ativação após troca de células e checklist de demonstração (K1, LEDs, Monitor a 9600, teste da lanterna, área sem sombras parciais). A rotina de demonstração em público segue essa página na ordem: teste da lanterna para provar o quadrante, apontamento ao sol para provar o rastreamento, leitura do mostrador para provar a geração e carga do telefone pelo banco para provar o armazenamento. Cada etapa possui critério objetivo de passa ou falha observável em segundos, o que mantém a apresentação fluida mesmo com sol velado ou plateia impaciente. Revise o perfil a cada estação do ano: a altura do sol e a nebulosidade típica mudam os parâmetros ótimos, e o registro histórico converte o kit de brinquedo em instrumento didático calibrado.

Guia Diagnóstico (Troubleshooting)

A matriz a seguir consolida os erros reais do kit na ordem do fluxo de uso: mecânica, fiação, driver e porta, upload, biblioteca, calibração, rastreamento e energia. Para cada sintoma, a causa raiz mais provável e a ação corretiva objetiva. Método de uso: localize o sintoma observado na primeira coluna, execute apenas a ação da terceira coluna e repita o teste que revelou a falha antes de avançar para a próxima linha — nunca aplique duas correções simultâneas, pois a correção simultânea mascara qual era a causa real e impede o aprendizado. Se o sintoma persistir após a ação indicada, desça para a próxima causa plausível do mesmo subsistema (por exemplo, da porta para o cabo, do cabo para o driver) em vez de saltar para outro subsistema. Metade dos diagnósticos deste kit se resolve nos itens 5 a 9, que pertencem ao ambiente e não ao hardware, razão pela qual o curso insiste nos testes de fumaça Blink e Sweep antes de qualquer suspeita sobre sensores, servos ou painel.

#SintomaCausa raiz mais provávelAção corretiva
1Estrutura bamba ou disco inclinado após a montagemColunas M3×15 ou M3×40 mal rosqueadas, parafuso forçado em furo desalinhadoDesapertar o conjunto, conferir números da base e orientação das peças, rosquear colunas primeiro e reapertar em passes cruzados sem forçar
2Servo gira solto dentro do suporteParafusos M2×14 frouxos ou porcas M2 não assentadasReassentar porcas nos rasgos, reapertar os 2 parafusos com o servo alinhado ao diagrama
3Cruzeta espanada (não trava na estria)Aperto excessivo dos autorroscantes M1,4×5Substituir a cruzeta pela reserva da bolsa do servo, rosquear devagar até o assentamento sem torque extra
4Berço do painel prende nos extremosPorca comum usada no lugar da autotravante, viga mal posicionadaConferir porca com anel de nylon no ponto articulado, reposicionar a viga entre os furos e travar os pinos
5Nenhuma porta COM além de COM1 no WindowsDriver CH340 ausente ou cabo USB de cargaInstalar o pacote 3.1 do fabricante com a placa desconectada, trocar por cabo de dados e conferir no Gerenciador de Dispositivos
6Porta aparece e desaparece ao tocar no caboCabo ou conector Tipo-C com mau contatoTrocar o cabo, limpar o conector, evitar tensão mecânica sobre o plugue durante o upload
7Upload falha com erro de sincronizaçãoPlaca errada selecionada, núcleo AVR desatualizado, porta erradaSelecionar Arduino Uno, fixar Arduino AVR Boards 1.8.6, escolher a COM que surge ao conectar, repetir o Blink antes dos sketches do kit
8No such file or directory para Servo.hBiblioteca não instalada ou pasta duplicadaInstalar pela tabela-mestre (Gerenciador 1.1.7 ou ZIP oficial), conferir libraries/Servo, reiniciar a IDE e compilar o exemplo Sweep
9does not name a type para ServoVersão incompatível ou instalação corrompidaFixar 1.1.7 no Gerenciador, remover pastas duplicadas de Servo, reinstalar e recompilar
10Servos não se movem após upload da calibraçãoAlimentação dos servos ausente ou K1 desligadaLigar a alimentação do conjunto e K1, conferir trilhos da expansão, repetir o upload e observar o giro inicial
11Pose após calibração diverge das figurasBraço encaixado em dente errado da estriaCom a placa ligada, separar o braço, reposicionar conforme a figura, reencaixar e travar os parafusos de reforço
12Eixo move ao contrário da luzLado de montagem do braço invertido ou canais trocadosAplicar (180 - servo) no write do eixo invertido ou normalizar A0–A3 e D5/D6 conforme o mapa de pinos, recarregar e repetir o teste da lanterna
13Painel treme sem estabilizartol baixa demais ou dtime curto demais para o ambienteElevar tol em passos de 10 e dtime em passos de 10 ms, recarregar e observar por um minuto sob a fonte dominante
14Painel ignora deslocamentos da fontetol alta demais ou dtime longo demaisReduzir tol em passos de 5 e dtime em passos de 10 ms, recarregar e repetir o teste direcional
15Leituras dos 4 canais travadas ou zeradasConector deslocado de um pino na expansão ou fio rompidoCom o kit desligado, reassentar canal a canal A0–A3 e S/VCC/GND, testar continuidade dos cabos e repetir a leitura no Monitor
16Um canal diverge sempre dos demaisSensor sombreado pelo próprio cabo, anteparo deslocado ou LDR com solda friaReposicionar o chicote para fora do campo dos sensores, recentralizar o defletor cruzado, inspecionar soldas do módulo suspeito
17Rastreamento funciona dentro de casa e falha no quintalSombras parciais e múltiplas fontes de intensidade semelhanteOperar em área aberta sem sombras de galhos e telhados, com o sol como fonte dominante única
18LEDs do shield apagados com painel no solK1 desligada, painel desconectado ou irradiância abaixo do limiarLigar K1, conferir a conexão do painel à entrada, testar sob sol de meio-dia e observar o mostrador USB
19Mostrador USB sem indicação sob luz fracaCorrente abaixo do limiar de mediçãoComportamento normal: aguardar sol mais forte ou carregar com fonte de 5 VCC, sem trocar peças
20Shield não desperta após reinserir célulasProteção em estado dormenteAtivar com alguns segundos de carga pelo painel ou fonte de 5 VCC, depois operar K1 normalmente
21Telefone não carrega na saída USBTentativa de carga direta pelo painel ou banco vazioCarregar o telefone somente pelo banco (mostrador entre shield e telefone, K1 ligada) com o banco previamente cheio
22Célula ou contato aquece além do mornoCélula invertida, danificada ou mista com outras diferentesDesligar K1 imediatamente, desconectar o painel, conferir polaridade polo a polo e usar apenas células íntegras do mesmo lote e estado

💡 Dica: diante de qualquer falha, isole o subsistema antes de trocar peças: valide a placa com o Blink, os servos com a calibração, os sensores com o Monitor Serial e a energia com o mostrador USB. O teste que passa elimina um quarto do problema de cada vez, e o defeito real aparece por exclusão em minutos.

Solução de problemas

Olá! Sou o assistente técnico da RoboBuilders. Descreva seu problema com o Kit Educacional Rastreador Luz Solar Para Arduino RB2053 AE321 - Curso Completo e eu ajudarei a encontrar a solução.

O assistente usa IA e pode errar. Confirme informações críticas no datasheet oficial do fabricante.