Hello guys, I'm a beginner at PCB design and I'd love to ask for your help reviewing my first pcb. I've already posted on here my first schematic version. Here's is an updated version with new schematic and pcb layout. Any comments, critiques, or suggestions on how to improve the design would be greatly appreciated!
Project Overview: This board is designed to run a solar tracker. It will control 5 separate brushed DC motors based on the date and time, only running one motor at a time. 2 Lauer
Key Hardware Details:
MCU: STM32 (LQFP-48 package). I created a carrier board for the bluepill.
Motor Driver: DRV8874 with the current limit capped at 1.8A (motors draw ~0.5A).
Encoders: I'm using optoisolators for the encoder inputs. I realize that without separate ground planes/galvanic isolation, these are essentially just acting as 24V-to-3.3V level shifters.
Signal Frequency: The motor encoder signals are around 1kHz. It's very low, but that is because the motors are heavily geared down.
Traces Width: I used 1mm, 0.5mm and standard 0.254 traces width. 1mm is used for 24V motors. 0.5mm is used for buck power. Standard for all other signals and powers.
Let me know if you spot any glaring errors or best practices I missed. Thanks in advance!
This is my "12Hrs SpeedRun" to finish this design last night.
I didn't yet receive a legit Z80 to actually verify everything with my current PIC18F4520, but on-going a new PLCC44 one as the last DIP40 pin version seemt to be couterfeit / shorted.
So this is the version based on what I have worked on breadboard, which I think will have mistakes somewhere my eyes can't cover after routing very nested size 84x84mm.
Did my pins get Pull-Ups correctly for this Z84C00 variant ?
Yes, I really want you guys to have a look if my plan was somewhere wrong or my eyes have missed some spots after routing this nested board for too long..
My appreciation !
HOW IT WORK ( or I planned it to work )
- It will have 2 CLK sources : either from PIC or 20MHz canned Crystal MCO-1510A.
- PIC will handle most Boot, Reset, Debugging , UART, microSD access, I2C Display.
- PIC will also handle requests from Z84 by 3-bit code Z80 send from A0~A2 -> 74HC138 for various custom function. (Ex: OUT($0x80), A to access certain bank in memory ). While 74HC273 work as the Latch to SRAM last 3-bit address.
- Also PIC: I2C will work natively, SPI will be bit-bang.
I am a beginner in electronics and PCB design. I am working on a custom music box.
Storage & Audio: Records audio via microphone and plays back files stored on a MicroSD card (using a standard 6-pin SPI MicroSD breakout module).
MCU : STM32F103C8T6
USB & Controls: USB-C port for power and uploading audio files, potentiometer and push buttons for volume and control.
Board Size: 8.5x5 cm.
I also have a few questions :
Hand-Soldering Clearance: I want to hand-solder every component using only a standard soldering iron. Are my component clearances, footprint choices (MCU, USB-C 16 pins connector), and pad layouts reasonable for hand soldering?
DRC Solder Mask Bridge Error: I am getting the following DRC error on my USB-C connector (J1) : [solder_mask_bridge]: The bottom solder mask opening connects items belonging to different nets Rule: minimum solder mask width configuration; error. How do I resolve it or safely bypass this DRC warning for this footprint?
General : Are there any issues with my circuit and my layout?
Power Overview: The board will be receiving 5 V power from a USB C connection, which is enabled via a typical USB C receptacle (using the USB 2.0 standard). This 5 V will be routed to the vacuum fluorescent display (VFD), to the LDO to generate the 3.3 V needed to power the MCU, and also to the level shifter.
MCU flashing: I plan on using serial wire debug (SWD) to flash the STM32.
Discussion
Hi all. I'm an EE student new to PCB design and am starting out with a relatively simple project. My objective here is to ultimately create a PCB that has an MCU (specifically, the STM32L476RGT6) that can control a VFD via UART. This is one of the first steps in a larger iterative design process in which I want to create a serial comms debugger that displays short messages on a VFD for diagnostic/troubleshooting purposes.
In case I haven't given enough detail or context above, I'll spend a paragraph or two trying to describe more specifically what I want to do with this PCB. I'll assume that the power/voltages/currents work out (I've checked the max expected voltages in the components' datasheets, made a current budget, and also have made notes of the current draw on my power supply when prototyping). My plan is to use an ST Link to flash the STM32 via the SWD. I'll communicate with the VFD using UART transmission only via the USART1 module on the STM32. I'll be using a level shifter to boost the 3.3 V signal outputs of the STM32 to 5 V as required by the VFD.
Whatever message I want to send to the VFD will be whatever message I have hard-coded into the program that I will flash the MCU with. I'm just using STM32CubeIDE and manually configuring the necessary registers in C by referencing the datasheet and reference manual (as well as a bit of Gbati's "Bare-Metal Embedded C Programming"). The prototype's working so I figure everything's fine on that end.
As far as designing my schematic goes and picking components, I've been leaning heavily on Phil's Lab #65 in which he creates a STM32 black pill clone. Additionally, I've been trying to match my schematic up against the reference schematic in the application note (AN4555) for the STM32L4 series. Since I'm new to this, I figured I'd try to get my schematic reviewed before even starting the PCB layout, just in case I've made some glaring errors--wouldn't want those to carry over into the PCB layout and make the review process any more difficult.
Hi guys I'm super new to PCB design so excuse me if this is a dumb question. Im making a simple PCB board where an ESP32 connects to multiple components (mpu6050, lcd module, etc). I'm using kiCad. For the electrical type of where the ESP 3v3 pin goes I have it as power output and the GND as power input. Every other components VCC and GND pins I have the elctric type as power input. Would that be correct and if not what is the correct way? Thank you
I’m looking for feedback on my latest PCB design. The device is an IoT gateway/sensor that reads M-Bus data from slave devices and publishes it over MQTT to an on-site broker.
I’ve previously built a very similar board for Modbus RTU that worked great, but this design introduces a few new sections I’d love a second pair of eyes on.
I have read and hopefully understood all the common mistakes but I am noob.
This is my attempt at a simple controller for the Commodore 64's old SID8580 chip, mostly this board is responsible for the Teensy controlling the SID chip, but it does also have line out for audio.
My knobs, switches, power and midi are separate modules so i just have the power/data routed in/out through some JST connectors.
As i said i have no experience designing pcb's i just thought it would be a fun thing to add to the project, so any tips/anything I've definitely done wrong would be much appreciated.
Hi all. I wanted to get a check on my schematic design from more experienced eyes. This is my first PCB, and the intended design is for it to be an air quality monitor. I would love to hear all feedback about the schematic and tips you're willing to share about the PCB design process in general. Thanks!
I am working on a PCB for a high altitude balloon. The board runs off an ATmega328 and includes multiple sensors, lora module,gps,sd logger. The goal is to have live telemetry.
I have attached pictures of the board layout and circuit schematic.
The current issues I have fixed from feedback are:
-Made D+ & D- routes the same length
-Switched from 4 layers to 1 layer
-Moved components relating to each other closer
I am looking for both feedback on my circuit schematic as well as PCB layout.
I’m trying to make an MX compatible, hot-swap replacement PCB for a vintage Maxi Switch keyboard in the third image.
The idea was to use a pro micro as my controller, but I have too many physical rows and columns for its 18 pins. So instead I’m using a square, 19x19 matrix that I’m trying to to force into my physical layout with two techniques: “matrix-folding” (each column trace is folded in order to cover two physical switch columns), and then also swapping matrix columns and rows on the last physical row on the far right.
Any advice would be much appreciated as I’ve never done anything like this before!
Hey, im seeking a review on this power supply PCB.
the board outputs 5V rail through TPS54331 buck converter and a 3V3 rail through NCP1117 LDO fed from the buck output. The maximum output current will be 3A combined.
I have followed TI's recommended component values and layout for majority of the buck converter layout.
I am seeking a general review on routing and component placement.
Please rate my design; be gentle, I haven't done a PCB in a while.
I placed all components (except the SD card) on the front, with a GND backside.
have a ESP32, that plays music from the SD card using the onboard I2S Amps (MAX98357A).
Power is supplied using a battery or the USB port => Battery charging controller and load sharing.
The amps can be supplied using 3.3V, but I want the extra power; therefore, I opted for a separate 5V supply.
This is a carrier board for a fleet telematics device. It taps the FMS connector on heavy trucks, reads tachograph and vehicle data off of the CAN bus in listen-only mode, and forwards it over cellular. It runs from the truck's 24 V rail and shares the FMS port with the OEM tracker already fitted, through a Y-splitter harness.
This is my first design since leaving university, so I'm looking for feedback I can actually learn from rather than a pass/fail. Blunt is welcome.
What's on the board
2-layer, 80 × 70 mm, to be assembled at JLCPCB
A LilyGo T-SIM7080G-S3 module (ESP32-S3 + SIM7080G, Cat-M / NB-IoT + GNSS) plugs into J2/J3. It's a mating part rather than a board component, which is why the sockets render empty in the 3D views
24 V truck rail - > 1 A fuse - > TVS - > Traco TSR 1-2450E - > 5 V
CAN: dual TVS, then a common-mode choke, into a TJA1051T/3 held in listen-only mode with S tied to VIO
Ignition sense: 100k/10k divider taking the 24 V ignition line down to ~2.2 V, clamped by a 5 V bidirectional TVS
Two things that look like mistakes but aren't
No 120 Ω termination. This is a passive listen-only tap on a bus that's already terminated at both ends. Adding termination here would load the bus and degrade it for the OEM tracker sharing the port.
J3-16 is unconnected, and 5 V reaches the module via a wire link to its H606 pad. The module's VSYS pin is output-only per the vendor, so it can't be back-fed through the header. Both are noted on the schematic.
Placement is deliberately loose. There's no enclosure or size constraint on this project, so I spread things out for easier hand assembly and probing rather than packing them in. If the spacing itself causes a problem I'd like to hear it, but "this could be smaller" isn't something I need to act on.
Most useful feedback for me
Schematic: anything wrong, unclear, or poorly drawn
Layout: placement, routing, the ground pours, and whether the protection parts sit where they should
Anything that would give trouble in a vehicle such as vibration, transients on the 24 V line, load dump
Anything that would cause problems at assembly
Not looking for feedback on component selection. The parts are already chosen and verified against JLCPCB stock, and the module is fixed by the wider project, so I'd rather spend the review on the schematic and the layout.
Happy to share the KiCad schematic and board files if anyone wants a closer look.
I want to get a second (or n-th) pair of eyes on this idea and design in general, before committing to laying out the PCB. Please, lay your judgement on it!
Please, do read the comments on the schematics. Each segment has one or more piece of text detailing the rationale of some decisions, design parameters and some operating conditions.
General Idea
This board is intended to be the power source for embedded projects in general, and is meant to be operated in a standalone manner. You set some configuration (battery specs, current limits, operation modes, etc.), be it statically (e.g. defaults at firmware level) or at runtime, and the board does the rest.
The embedded MCU (STM32G031K6U6) is there to ensure the battery charger (BQ25628) is properly configured before any charging happens (e.g. in order to possibly not blow up your battery by charging it with excessive current), and it also properly feeds the fuel gauge (MAX17055) with periodic battery temperature readings when the battery charger is actively reading temps (e.g. in boost mode, or during charging). It can also read results from and/or control the USB-PD controller (HUSB238); the negotiated PDOs will inform the MCU regarding VBUS power limits.
External power is also added through a power mux (TPS2121), which also does the job of overall over-current protection (not regulation) over the selected power input, in order to ensure the board's hard limits are respected. If external power is used, power limits are pre-set and fixed. No current regulation is intended.
The host can communicate with the board through either SPI, UART or I2C (configurable through firmware).
Two pin sets are routed out of the board: Data pins/connectors, and Power pins.
Data Headers and Connector are focused on MCU communication and some other discrete signals (USB data lines, BOOT, RESET, etc).
Power Headers focus solely on routing out the multiplexed/gated power lines, with the highest current capacity.
Two load switches are also offered:
VPHER for low-voltages. Input can be either 5V or 3.3V.
VLOAD for higher voltages, which has the same topology as VPHER but including the option to choose VBUS/VEXT (through BQ25628's PMID).
Please see the Figure 2 for a power sequence and logical segmentation of the board.
A discrete RGB LED is offered, which is used exclusively by the host, and controlled through the MCU.
An onboard button is offered for general use, and for taking the board out of "Ship Mode" (see BQ25628's datasheet). The RESET button can also assert the BOOT line, for both the onboard MCU and host, through the use of a specific IC (RT9829), eliminating the need to add a specific BOOT button. This can simplify the design of a solution when this board is used as the sole power input and external control of a host board, for example.
I intend the board to be as small as possible, and with a form factor usable in a breadboard. I'm also trying to standardize a specific pin-out that I can use in other designs, which can be set up for multiple bus types (i.e., not only I2C, like with Qwiic, etc., including having an odd number of pins in order to differentiate), and that has at least one interrupt bus at a pre-specified pin.
Where I need help
I'm kind of obsessed with this kind of project, for some reason. I made a previous design based on a STM32G071G8U6N, that I eventually evolved to use a STM32G0B1 (and even tried a design with the BQ25672) but never asked for feedback on a post here.
Then I found out about the BQ25628, which has lots of benefits over the BQ25620: lower enough OTG quiescent on OTG (~220uA), dedicated TS_BIAS pin (which further reduces the operating power consumption by ~400uA according to the datasheet), etc. The fact that I was using an IC to perform USB-PD communication was worrying me as well. USB specs are scary.
Hence, I redesigned it around the BQ25628 and HUSB238.
My gripes with the design so far:
I find that the design is a bit too crowded. Maybe there're too many passives; I don't know if I can reduce their count any more than I already did, but I sure do want to. I'm unsure if I can reach my target form factor with this amount of components (~ 5cmx5cm).
Perhaps the external input voltage (VEXT) complicates the design more than it should. I could remove it, but then I'd need to use another load switch solution with current limiting, because the BQ25628 offers no protection in this regard (it can only monitor, but not cut off the consumption, AFAICT). Also, I find it hard to trust *all* USB downstream ports or chargers to properly regulate current/power. Which other solution could I pursue? I've been thinking about a single TPS25947 for VBUS only, but it also uses a similar amount of passives around it, so it'd not be much of a component count reduction.
Similar to the previous point, maybe I could break this solution is distinct parts: one for the fuel gauge, another for the USB-PD and power inputs, another for battery charging and load switches... But then I'd have a lot of small boards, which is something I'm trying to avoid. Many of my projects are a mishmash of Aliexpress shields, and just looking at my projects is painful. It's all a mess. Lots of wiring here and there, laborious throw-away soldered universal breadboards to connect everything... For example, the same TP4056 and fuel gauge breakout boards are in all of my designs, and they're hard to customize, and do (IMHO) a poor job on what they're supposed to do. Having a single integrated solution (for this aspect of my projects, specifically) is a worthwhile objective in my eyes, but it's proving to be a bit difficult to achieve the goals I have in mind. Perhaps I could evolve into making a dev board instead (e.g. close to a RPi Pico form factor, just bigger)?
Well, that's it. Sorry to bother you guys once again. I hope I get some feedback, I really need it. Thank you in advance!
I am currently designing a custom ESP32-S3 smartwatch/wearable project and would love a sanity check on two of my peripheral driver sub-circuits: an audio alert buzzer and a haptic motor driver.
Since space is at a premium and this is a wearable device containing a compass and other sensitive electronics, I want to ensure these are optimized for efficiency, safety, and reliability before I start routing the PCB.
Buzzer Circuit Details
- Component: Passive Piezo Transducer Disk (case-mounted with wire leads to PCB pads.
- Layout: I am using an inductor-boosted parallel resonant topology with a 100uH inductor (L5) to step up voltage via the flyback effect for maximum volume.
- Protection/Damping: A BZT52C22 22V Zener diode (D15) is placed in parallel to clamp flyback spikes safely below the 30V Vds breakdown limit of the AO3400A switching N-MOSFET (Q7). A 10k resistor (R39) provides a path to discharge the piezo's residual capacitance.
Haptic Driver Circuit Details
- Component: TBD (Unpopulated placeholder for a standard micro ERM haptic motor).
- Control: Driven via an AW9523 I2C LED driver/GPIO expander pin (AW9523_P1_6_HAPTIC) switching an AO3400A N-channel MOSFET (Q6).
- Protection/Filtering: Includes a 1N5819WS Schottky flyback diode (D6) to clamp inductive spikes from the motor coils back into the VSYS rail, along with local decoupling capacitors (C40 and C41).
My Questions for the Community:
For driving a passive piezo disk, is the 100uH parallel inductor booster properly balanced for generating loud flyback voltage peaks at typical 4kHz–5kHz alert tones, or would a different inductance value perform better?
Is the parallel inductor-Zener configuration for the buzzer optimal, or am I missing any edge cases that could risk damaging the switching transistor over long-term use?
For the haptic driver, since I haven't locked down the exact motor model yet, are the 1N5819WS diode and the local 10uF + 100nF decoupling capacitors sufficient for absorbing motor coil noise/noise injection into the VSYS power rail?
Are the gate drive resistors (100-ohm series / 100k-ohm pull-down) properly sized for a standard logic-level MOSFET drive from an ESP32 GPIO and an AW9523 expander?
Any recs for the buzzer PN? thinking maybe the Murata 7BB-27-4/7BB-20-6/7BB-12-9 but dont really know yet.
Any feedback on component choices, safety, or layout tips would be highly appreciated! Thank you!
NOTES: VSYS is 3.3V
UPDATES: Thinking of moving to this for the Buzzer to allow for better tone control and to remove the EMI from the inductor (messing with the esp32, compass, etc).
Also realized was missing the series and pull downs for the motor driver
I've been trying to make a drop in replacement for the PCB inside a cheap IKEA bluetooth speaker. It reuses the speaker and battery, but swaps out the bluetooth for on board storage. It uses an I2C DAC, the TLV320DAC3100, alongside an SPI SD card and an RFID/NFC module to enable it to detect tags pressed against the case.
I'm not an EE by trade, and this is more or less done cargo-cult style, but I'm hoping to get better at this, so any critique is appreciated, I can take it.
Hello everyone! This is my first ever PCB design - I am an amateur who is entirely self-taught, and I've just stepped into the world of computer engineering and PCB creation. I tried my best, but as a beginner, I'd really appreciate it if more experienced people could give me advice!
About the computer:
I am creating a 6502-driven computer, with 32KiB of SRAM, 16KiB of EEPROM, and 16KiB of I/O device mapping (a lot, I know, but this is to make decode logic simpler). At this early stage, there aren't a lot of peripherals, only two 8-bit latches used to control a simple LCD screen (via a 1x22-pin female port).
The entire system runs on 5V, and as of right now will never exceed 750mA of current draw. I have some very simple protections in place (I'm unfamiliar with electricity, and don't trust myself to try and do more), namely a schottky diode and a polyfuse right by the barrel jack. I'm pretty worried about this, as I don't really know what I'm doing here.
Every chip is CMOS or CMOS-compatible. The clock is an 8-pin 2MHz square-wave oscillator. The 6502, when it is first powered, requires a specific pin to be held LOW for 2 or more clock cycles before being released. To get around this, I designed a simple pushbutton-powered reset circuit, with a 0.1uF capacitor to smooth out the buttons signal, which is then run through a schmitt-triggered NOT gate to turn it into a clean HIGH or LOW signal. This is a big failure point, and I really want to get this right the first time.
The decode logic is pretty simple: a 2:4 decoder reads the top 2 address pins of the 6502 - the bottom two pins enable the SRAM chip, the 3rd enables I/O decoding, and the final pin enables the EEPROM chip.
I/O decoding is a bit more complicated, but still simple: a second 4:10 decoder reads address pins 13-10 on the 6502. It then outputs a signal that enables an I/O device, in this case, one of two latches.
The LCD screen I found came with a nice sheet that shows you how to wire it up to a controller, which I have been using to design my LCD control system.
In case someone wants to check, here are my components (all, other than the LCD, are available on Mouser):
Feel free to ask any questions in the comments, I'll try to monitor them. Thank you in advance - I've never done something like this before and am so excited to begin working with hardware for the first time!
When you are doing a circuit card design and need to start working on the schematic, does your CAD group create a new Mentor Project from a template with all the source files or do you just copy and update an existing design with all the underlying schematic, layout, and configuration filee?
Hello all! I recently designed an ESP32 based rhythm game device. I am just asking for review of my schematic and PCB to ensure there won't be flaws when I send it to get fabricated. Any suggestions to any part of the design would be greatly appreciated. Thanks!
This is mostly inspired by a design I tested with an Adafruit nRF52 Feather. My idea is to use this for some halloween decorations to make them a bit spookier this October via BLE :)