

MSC25
Este projeto consiste em uma placa de circuito impresso (PCB) com firmware embarcado, projetada para realizar a leitura de alta precisão de um sensor de corrente de efeito Hall e transmitir os dados através do…
- Size
- 63 × 108 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 61
- Nets
- 54
- Pads
- 206
- Tracks, vias
- 296, 17
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 19 Sep 2025
- Updated
- 3 Jun 2026
Overview
MSC25 is an open-source printed circuit board by ZeniteSolar, from the ZeniteSolar/MSC25 repository on GitHub. It is a 2-layer board of 63 × 108 mm with 61 parts on 54 nets, routed with 296 tracks and 17 vias.
It is built around the ATMEGA328P-PU, MCP2551-I/SN and PDSE1-S5-S24-S, with the LM324, LM7805 and LL4148 among its other parts. Its parts include 20 capacitors, 12 resistors, 6 ICs, 6 diodes and 4 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Main components
8ATMEGA328P-PU
DIP-28-300mil-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 23 2KB 32KB 8 Bit AVR Built-in FLASH DIP-28-300mil Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)MCP2551-I/SN
SOIC-8-40℃~+85℃ 1Mbps 365uA 4.5V~5.5V 75mA CAN Transceiver SOIC-8 CAN Transceivers ROHSMicrochip TechnologyCAN TransceiversPDSE1-S5-S24-S
SIP,11.6x6mm-40℃~+105℃ 1 10.16mm 100mVp-p 11.6mm 220uF 24V 270kHz 4.5V~5.5V 42mA 5mA 6mm 85% Short Circuit Protection、Automatic fault recovery SIP,11.6x6mm Isolated Power Modules ROHSCUIDC-DC Power ModulesLM324
SOP-14-1.5V~10V 0℃~+70℃ 24V 250nA 3V~20V 4 40mA 50nA 700uA 7mV 80dB SOP-14 Operational Amplifier ROHSHXY MOSFETOperational AmplifierLM7805
TO-2630℃~+125℃ 1 1A 20V 2V 42uV 5V 62dB@(120Hz) 8mA Fixed Over Temperature Protection、Short Circuit Protection Positive TO-263 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSYONGYUTAIVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsLL4148
LL-341 Independent 1V@10mA 200mA 4A 4ns 500mW 5uA@75V 75V LL-34 Switching Diodes ROHSMDDSwitching DiodesRJ45
TH-12PTH-12P SMT ROHSJLCPCB AssemblyUncategorisedPESD1CAN
SOT-23-65℃~+150℃ 11pF 1nA 2 200W@8/20us 24V 30.3V 3A@8/20us 70V Bidirectional ESD IEC 61000-4-2、IEC 61000-4-5 SOT-23 ESD and Surge Protection (TVS/ESD) ROHSNexperiaESD And Surge Protection (TVS/ESD)
README
README.mdMódulo Sensor de Corrente(MSC25)
Visão Geral
Este projeto consiste em uma placa de circuito impresso (PCB) com firmware embarcado, projetada para realizar a leitura de alta precisão de um sensor de corrente de efeito Hall e transmitir os dados através do barramento CAN.
O firmware foi desenvolvido em C para microcontroladores AVR, seguindo uma arquitetura modular, não-bloqueante e orientada por eventos, garantindo robustez e tempo de resposta previsível. O sistema é configurado e compilado utilizando um ambiente avr-gcc e make.
Principais Características
- Microcontrolador: ATmega328P operando a 16MHz.
- Comunicação: Interface CAN Bus 2.0A (11-bit) implementada com controlador dedicado MCP2515 e transceptor MCP2561.
- Leitura de Sensor: Interface analógica de alta precisão para sensores de corrente, com condicionamento de sinal.
- Fonte de Alimentação: Sistema de alimentação robusto com fonte simétrica isolada para o estágio analógico.
- Modos de Leitura: Firmware com modos de operação configuráveis em tempo de compilação:
- Modo Média Móvel: Fornece leituras estáveis, ideal para monitoramento de estado.
- Modo Instantâneo: Fornece a última leitura bruta, ideal para captura de picos e transientes de corrente.
- Arquitetura de Firmware: Modular, baseada em máquina de estados e interrupções de hardware para tarefas periódicas.
Detalhes do Hardware
O hardware foi projetado para garantir a integridade do sinal e a robustez da comunicação.
Fonte de Alimentação
A placa recebe uma tensão de entrada de 18V, que é regulada internamente para os domínios digitais e analógicos:
- +12V: Gerado por um regulador LM7812 para alimentar periféricos e o estágio de amplificação.
- +5V: Gerado por um regulador LM7805 para alimentar o microcontrolador ATmega328P e o controlador CAN MCP2515.
Fonte Simétrica Isolada (±15V)
Para a correta polarização do sensor de corrente e do circuito de condicionamento analógico, foi implementada uma fonte simétrica de ±15V. Esta etapa utiliza dois conversores DC/DC isolados do tipo PDSE1-S5-S15-S. A partir da entrada de +5V, cada conversor gera uma tensão de saída isolada (+15V e -15V, respectivamente). A isolação galvânica garante que ruídos do barramento de alimentação principal não interfiram na precisão das medições analógicas.
Sensor e Condicionamento de Sinal
O circuito foi projetado para interfacear com um sensor de corrente de efeito Hall, como o SECOHR 200SCV.
O sinal de saída do sensor é processado por um circuito de condicionamento baseado no amplificador operacional LM324. Este estágio tem a função de amplificar e deslocar o nível de tensão (offset) do sinal, ajustando-o para a faixa de leitura do conversor Analógico-Digital (ADC) do ATmega328P (0-5V). O resultado é um sinal robusto e centralizado, que permite a medição de correntes tanto positivas quanto negativas.
Detalhes do Firmware
O firmware é escrito em C puro (padrão gnu99) e compilado com avr-gcc.
Arquitetura
A lógica principal é controlada por uma máquina de estados (machine.c) que é executada em uma frequência fixa de 100 Hz, controlada pela interrupção do Timer2. A leitura do ADC é desacoplada da lógica principal, sendo disparada pelo Timer0 a uma frequência de 1000 Hz e processada através de interrupções (ISR(ADC_vect)), garantindo que as amostragens ocorram de forma consistente. A comunicação entre a rotina de interrupção e o laço principal é feita através de flags voláteis para evitar condições de corrida.
Módulos Principais
main: Ponto de entrada, inicialização dos periféricos e laço principal.adc: Gerencia a configuração do ADC, o disparo por timer, a rotina de interrupção e as funções de processamento (média e leitura instantânea). Inclui um placeholder para linearização do sensor.machine: Contém a máquina de estados principal e a lógica de aplicação.can_app: Camada de aplicação do protocolo CAN. Responsável por montar e enviar as mensagens nos intervalos corretos.conf: Arquivo de cabeçalho central para todas as configurações de compilação, como ativação de módulos e seleção de modos de operação.
Protocolo CAN
A placa se identifica na rede CAN e transmite duas mensagens principais.
- Nome do Módulo:
MSC25_1 - Assinatura (Signature):
195(0xC3)
| Mensagem | ID (Hex) | ID (Dec) | Frequência | Tamanho | Payload |
|---|---|---|---|---|---|
| State | 0x79 | 121 | 1 Hz | 3 Bytes | [Assinatura, Estado, Erro] |
| Measurements | 0xF0 | 240 | 10 Hz | 3 Bytes | [Assinatura, Corrente_L, Corrente_H] |
Ambiente de Desenvolvimento
- Toolchain:
avr-gcc,avr-libc,make - Programador:
avrdude(configurado paraarduino) - Biblioteca Principal:
avr-can-lib(deve estar presente na pastalib/)
Como Compilar e Gravar
-
Preparar Bibliotecas: Execute o script para compilar a
avr-can-libe baixar ocan_ids.hmais recente.bash ./makelibs.sh -
Compilar o Projeto: Use o comando
makepara compilar todo o código-fonte.bash make -
Limpar o Projeto: Para apagar os arquivos compilados.
bash make clean -
Gravar na Placa: Para compilar (se necessário) e gravar o firmware no microcontrolador.
bash make flash -
Fazer Tudo (Limpar, Compilar, Gravar e Monitorar):
bash ./up.sh
Precisa adicionar ao can_ids.h
// MSC25_1 - Módulo Sensor de Corrente (Sua Nova Placa)
#define CAN_SIGNATURE_MSC25_1 195
// MSC25_1 - STATE - Module state report
#define CAN_MSG_MSC25_1_STATE_ID 121
#define CAN_MSG_MSC25_1_STATE_LENGTH 3
#define CAN_MSG_MSC25_1_STATE_FREQUENCY 1
#define CAN_MSG_MSC25_1_STATE_SIGNATURE_BYTE 0 //<!" Senders signature
#define CAN_MSG_MSC25_1_STATE_STATE_BYTE 1 //<!" State code
#define CAN_MSG_MSC25_1_STATE_ERROR_BYTE 2 //<!" Error code
// MSC25_1 - MEASUREMENTS - Current measurements from the sensor
#define CAN_MSG_MSC25_1_MEASUREMENTS_ID 240
#define CAN_MSG_MSC25_1_MEASUREMENTS_LENGTH 3
#define CAN_MSG_MSC25_1_MEASUREMENTS_FREQUENCY 10
#define CAN_MSG_MSC25_1_MEASUREMENTS_SIGNATURE_BYTE 0 //<!" Senders signature
#define CAN_MSG_MSC25_1_MEASUREMENTS_CURRENT_L_BYTE 1 //<!" Average current, byte low
#define CAN_MSG_MSC25_1_MEASUREMENTS_CURRENT_H_BYTE 2 //<!" Average current, byte highParts
61| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 100nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C3, C5, C6, C7, C21, C201, C202, C205, C401, C402 |
| 4 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R2, R4, R203, R401 |
| 4 | 1uF | Capacitor_Tantalum_SMD:CP_EIA-6032-15_Kemet-U_HandSolder | C1, C4, C24, C25 |
| 4 | 22pF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C203, C204, C403, C404 |
| 3 | 100R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R402, R403, R407 |
| 3 | LL4148 | Diode_SMD:D_MiniMELF_Handsoldering | D1, D2, D401 |
| 2 | 16MHz | Crystal:Crystal_HC49-U_Vertical | Y201, Y401 |
| 2 | 20k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R3 |
| 2 | PDSE1-S5-S24-S | Converter_DCDC:Converter_DCDC_Murata_MEE3SxxxxSC_THT | PS1, PS501 |
| 2 | RJ45 | KicadZeniteSolarLibrary18:RJ45_YH59_01 | J601, J602 |
| 1 | 10nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C406 |
| 1 | 120 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R201 |
| 1 | 330 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R16 |
| 1 | 4k7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R202 |
| 1 | 5V | Diode_SMD:D_MiniMELF | D3 |
| 1 | ATmega328P-P | Package_DIP:DIP-28_W7.62mm_LongPads | U4 |
| 1 | CAN_H | TestPoint:TestPoint_Pad_D1.5mm | TP207 |
| 1 | CAN_L | TestPoint:TestPoint_Pad_D1.5mm | TP208 |
| 1 | INT | TestPoint:TestPoint_Pad_D1.5mm | TP209 |
| 1 | LED_RED | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D8 |
| 1 | LM324 | Package_DIP:DIP-14_W7.62mm | U2 |
| 1 | LM7805 | Package_TO_SOT_THT:TO-220-3_Horizontal_TabDown | U1 |
| 1 | LM7812_TO220 | Package_TO_SOT_THT:TO-220-3_Horizontal_TabDown | U3 |
| 1 | MCP2515-xSO | Package_SO:SOIC-18W_7.5x11.6mm_P1.27mm | U202 |
| 1 | MCP2551-I/SN | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U201 |
| 1 | RXCAN | TestPoint:TestPoint_Pad_D1.5mm | TP204 |
| 1 | SC | TestPoint:TestPoint_Pad_D1.5mm | TP205 |
| 1 | SCK | TestPoint:TestPoint_Pad_D1.5mm | TP206 |
| 1 | SI | TestPoint:TestPoint_Pad_D1.5mm | TP201 |
| 1 | SO | TestPoint:TestPoint_Pad_D1.5mm | TP202 |
| 1 | Sensor_I | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | TXCAN | TestPoint:TestPoint_Pad_D1.5mm | TP203 |
| 1 | USART | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J401 |
| 1 | pesd1can | Package_TO_SOT_SMD:SOT-23_Handsoldering | D201 |
Questions
How big is the MSC25 PCB?
It measures 63 × 108 mm and has 2 copper layers, 1.6 mm thick.
What parts does the MSC25 use?
61 parts, built around the ATMEGA328P-PU, MCP2551-I/SN, PDSE1-S5-S24-S and LM324. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the MSC25 KiCad files?
From the ZeniteSolar/MSC25 repository on GitHub, at the commit this page was made from: the board is hardware/MSC25.kicad_pcb and its schematic hardware/MCU.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the MSC25 design in my own project?
Its repository states no licence, so its author keeps all rights: ask ZeniteSolar before reusing the design.
Similar boards
- 2 layers256.5 × 172.9 mm

- 2 layers232.1 × 131.2 mm

- 2 layers170.2 × 137.2 mm

MCS19
ZeniteSolar/MCS19
Módulo de Carregamento do Sistema da embarcação solar Guarapuvu II (Zênite Solar)
160 parts1GPL-3.0 - 2 layers239.3 × 121.3 mm

- 2 layers

- 2 layers122.6 × 52.7 mm

- 2 layers248 × 174.4 mm

- 2 layers228 × 149.8 mm

MIC19
ZeniteSolar/MIC19
Módulo de Interface do Controle da embarcação solar Guarapuvu II (Zênite Solar)
300 partsGPL-3.0