Security

Token

There is no security token.

Firewall

main Name
Security enabled
Stateless

Configuration

Key Value
provider security.user.provider.concrete.app_user_provider
context main
entry_point App\Security\KbinAuthenticator
user_checker App\Security\UserChecker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "two_factor"
  "remember_me"
  "App\Security\KbinAuthenticator"
  "App\Security\FacebookAuthenticator"
  "App\Security\GoogleAuthenticator"
  "App\Security\GithubAuthenticator"
  "App\Security\KeycloakAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#723
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
  -logger: Monolog\Logger {#783 …}
  -httpPort: 80
  -httpsPort: 443
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\ContextListener {#706
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage {#1017 …}
  -sessionKey: "_security_main"
  -logger: Monolog\Logger {#783 …}
  -userProviders: Symfony\Component\DependencyInjection\Argument\RewindableGenerator {#705 …}
  -dispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
  -registered: false
  -trustResolver: Scheb\TwoFactorBundle\Security\Authentication\AuthenticationTrustResolver {#780 …}
  -sessionTrackerEnabler: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage::enableUsageTracking(): void {#703 …}
}
0.93 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#584
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#595 …}
}
0.00 ms (none)
Scheb\TwoFactorBundle\Security\Http\Firewall\TwoFactorAccessListener {#582
  -twoFactorFirewallConfig: Scheb\TwoFactorBundle\Security\TwoFactor\TwoFactorFirewallConfig {#842 …}
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -twoFactorAccessDecider: Scheb\TwoFactorBundle\Security\Authorization\TwoFactorAccessDecider {#581 …}
}
0.04 ms (none)
Symfony\Component\Security\Http\Firewall\AccessListener {#579
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#937 …}
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\LogoutListener {#786
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -options: [
    "csrf_parameter" => "_csrf_token"
    "csrf_token_id" => "logout"
    "logout_path" => "app_logout"
  ]
  -httpUtils: Symfony\Component\Security\Http\HttpUtils {#841 …}
  -csrfTokenManager: Symfony\Component\Security\Csrf\CsrfTokenManager {#1015 …}
  -eventDispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
}
0.00 ms (none)

Authenticators

No authenticators have been recorded. Check previous profiles on your authentication endpoint.

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter"
2
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
3
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
4
"Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter"
5
"App\Security\Voter\EntryCommentVoter"
6
"App\Security\Voter\EntryVoter"
7
"App\Security\Voter\MagazineVoter"
8
"App\Security\Voter\MessageThreadVoter"
9
"App\Security\Voter\MessageVoter"
10
"App\Security\Voter\NotificationVoter"
11
"App\Security\Voter\OAuth2UserConsentVoter"
12
"App\Security\Voter\PostCommentVoter"
13
"App\Security\Voter\PostVoter"
14
"App\Security\Voter\UserVoter"

Access decision log

# Result Attributes Object
1 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
2 DENIED moderate
App\Entity\Entry {#2412
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +magazine: App\Entity\Magazine {#266
    +icon: Proxies\__CG__\App\Entity\Image {#247 …}
    +name: "askelectronics@discuss.tchncs.de"
    +title: "askelectronics"
    +description: """
      **For questions about component-level electronic circuits, tools and equipment.**\n
      \n
      Rules\n
      -----\n
      \n
      1: Be nice.\n
      \n
      2: Be on-topic (eg: *Electronic*, not *electrical*).\n
      \n
      3: No commercial stuff, buying, selling or valuations.\n
      \n
      4: Be safe.\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 154
    +entryCommentCount: 1230
    +postCount: 1
    +postCommentCount: 4
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729413608 {#276
      date: 2024-10-20 10:40:08.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#238 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
    +entries: Doctrine\ORM\PersistentCollection {#181 …}
    +posts: Doctrine\ORM\PersistentCollection {#139 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
    +bans: Doctrine\ORM\PersistentCollection {#118 …}
    +reports: Doctrine\ORM\PersistentCollection {#104 …}
    +badges: Doctrine\ORM\PersistentCollection {#82 …}
    +logs: Doctrine\ORM\PersistentCollection {#72 …}
    +awards: Doctrine\ORM\PersistentCollection {#61 …}
    +categories: Doctrine\ORM\PersistentCollection {#1820 …}
    -id: 11
    +apId: "askelectronics@discuss.tchncs.de"
    +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
    +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
    +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
    +apInboxUrl: "https://discuss.tchncs.de/inbox"
    +apDomain: "discuss.tchncs.de"
    +apPreferredUsername: "askelectronics"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1727247714 {#270
      date: 2024-09-25 09:01:54.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1687144409 {#272
      date: 2023-06-19 05:13:29.0 +02:00
    }
  }
  +image: null
  +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
  +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
  +title: "PCB Design Review Request: ESP32 Smart Relay Board"
  +url: null
  +body: """
    Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
    \n
    This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
    \n
    It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
    \n
    The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
    \n
    At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
    \n
    Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
    \n
    The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
    \n
    Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
    \n
    `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
    \n
    There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
    \n
    Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
    \n
    While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
    \n
    In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
    \n
    3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
    \n
    Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
    \n
    Schematic:\n
    \n
    ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
    \n
    PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
    \n
    PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
    \n
    PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
    """
  +type: "article"
  +lang: "en"
  +isOc: false
  +hasEmbed: false
  +commentCount: 6
  +favouriteCount: 18
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1695038978 {#2410
    date: 2023-09-18 14:09:38.0 +02:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1884 …}
  +votes: Doctrine\ORM\PersistentCollection {#1973 …}
  +reports: Doctrine\ORM\PersistentCollection {#1959 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
  +badges: Doctrine\ORM\PersistentCollection {#2440 …}
  +children: []
  -id: 2246
  -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
  -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1695047280
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/post/3401691"
  +editedAt: DateTimeImmutable @1695031518 {#1850
    date: 2023-09-18 12:05:18.0 +02:00
  }
  +createdAt: DateTimeImmutable @1694982780 {#2420
    date: 2023-09-17 22:33:00.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
3 DENIED edit
App\Entity\Entry {#2412
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +magazine: App\Entity\Magazine {#266
    +icon: Proxies\__CG__\App\Entity\Image {#247 …}
    +name: "askelectronics@discuss.tchncs.de"
    +title: "askelectronics"
    +description: """
      **For questions about component-level electronic circuits, tools and equipment.**\n
      \n
      Rules\n
      -----\n
      \n
      1: Be nice.\n
      \n
      2: Be on-topic (eg: *Electronic*, not *electrical*).\n
      \n
      3: No commercial stuff, buying, selling or valuations.\n
      \n
      4: Be safe.\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 154
    +entryCommentCount: 1230
    +postCount: 1
    +postCommentCount: 4
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729413608 {#276
      date: 2024-10-20 10:40:08.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#238 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
    +entries: Doctrine\ORM\PersistentCollection {#181 …}
    +posts: Doctrine\ORM\PersistentCollection {#139 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
    +bans: Doctrine\ORM\PersistentCollection {#118 …}
    +reports: Doctrine\ORM\PersistentCollection {#104 …}
    +badges: Doctrine\ORM\PersistentCollection {#82 …}
    +logs: Doctrine\ORM\PersistentCollection {#72 …}
    +awards: Doctrine\ORM\PersistentCollection {#61 …}
    +categories: Doctrine\ORM\PersistentCollection {#1820 …}
    -id: 11
    +apId: "askelectronics@discuss.tchncs.de"
    +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
    +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
    +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
    +apInboxUrl: "https://discuss.tchncs.de/inbox"
    +apDomain: "discuss.tchncs.de"
    +apPreferredUsername: "askelectronics"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1727247714 {#270
      date: 2024-09-25 09:01:54.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1687144409 {#272
      date: 2023-06-19 05:13:29.0 +02:00
    }
  }
  +image: null
  +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
  +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
  +title: "PCB Design Review Request: ESP32 Smart Relay Board"
  +url: null
  +body: """
    Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
    \n
    This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
    \n
    It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
    \n
    The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
    \n
    At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
    \n
    Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
    \n
    The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
    \n
    Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
    \n
    `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
    \n
    There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
    \n
    Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
    \n
    While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
    \n
    In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
    \n
    3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
    \n
    Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
    \n
    Schematic:\n
    \n
    ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
    \n
    PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
    \n
    PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
    \n
    PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
    """
  +type: "article"
  +lang: "en"
  +isOc: false
  +hasEmbed: false
  +commentCount: 6
  +favouriteCount: 18
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1695038978 {#2410
    date: 2023-09-18 14:09:38.0 +02:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1884 …}
  +votes: Doctrine\ORM\PersistentCollection {#1973 …}
  +reports: Doctrine\ORM\PersistentCollection {#1959 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
  +badges: Doctrine\ORM\PersistentCollection {#2440 …}
  +children: []
  -id: 2246
  -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
  -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1695047280
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/post/3401691"
  +editedAt: DateTimeImmutable @1695031518 {#1850
    date: 2023-09-18 12:05:18.0 +02:00
  }
  +createdAt: DateTimeImmutable @1694982780 {#2420
    date: 2023-09-17 22:33:00.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
4 DENIED moderate
App\Entity\Entry {#2412
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +magazine: App\Entity\Magazine {#266
    +icon: Proxies\__CG__\App\Entity\Image {#247 …}
    +name: "askelectronics@discuss.tchncs.de"
    +title: "askelectronics"
    +description: """
      **For questions about component-level electronic circuits, tools and equipment.**\n
      \n
      Rules\n
      -----\n
      \n
      1: Be nice.\n
      \n
      2: Be on-topic (eg: *Electronic*, not *electrical*).\n
      \n
      3: No commercial stuff, buying, selling or valuations.\n
      \n
      4: Be safe.\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 154
    +entryCommentCount: 1230
    +postCount: 1
    +postCommentCount: 4
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729413608 {#276
      date: 2024-10-20 10:40:08.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#238 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
    +entries: Doctrine\ORM\PersistentCollection {#181 …}
    +posts: Doctrine\ORM\PersistentCollection {#139 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
    +bans: Doctrine\ORM\PersistentCollection {#118 …}
    +reports: Doctrine\ORM\PersistentCollection {#104 …}
    +badges: Doctrine\ORM\PersistentCollection {#82 …}
    +logs: Doctrine\ORM\PersistentCollection {#72 …}
    +awards: Doctrine\ORM\PersistentCollection {#61 …}
    +categories: Doctrine\ORM\PersistentCollection {#1820 …}
    -id: 11
    +apId: "askelectronics@discuss.tchncs.de"
    +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
    +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
    +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
    +apInboxUrl: "https://discuss.tchncs.de/inbox"
    +apDomain: "discuss.tchncs.de"
    +apPreferredUsername: "askelectronics"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1727247714 {#270
      date: 2024-09-25 09:01:54.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1687144409 {#272
      date: 2023-06-19 05:13:29.0 +02:00
    }
  }
  +image: null
  +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
  +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
  +title: "PCB Design Review Request: ESP32 Smart Relay Board"
  +url: null
  +body: """
    Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
    \n
    This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
    \n
    It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
    \n
    The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
    \n
    At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
    \n
    Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
    \n
    The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
    \n
    Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
    \n
    `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
    \n
    There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
    \n
    Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
    \n
    While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
    \n
    In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
    \n
    3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
    \n
    Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
    \n
    Schematic:\n
    \n
    ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
    \n
    PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
    \n
    PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
    \n
    PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
    """
  +type: "article"
  +lang: "en"
  +isOc: false
  +hasEmbed: false
  +commentCount: 6
  +favouriteCount: 18
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1695038978 {#2410
    date: 2023-09-18 14:09:38.0 +02:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1884 …}
  +votes: Doctrine\ORM\PersistentCollection {#1973 …}
  +reports: Doctrine\ORM\PersistentCollection {#1959 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
  +badges: Doctrine\ORM\PersistentCollection {#2440 …}
  +children: []
  -id: 2246
  -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
  -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1695047280
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/post/3401691"
  +editedAt: DateTimeImmutable @1695031518 {#1850
    date: 2023-09-18 12:05:18.0 +02:00
  }
  +createdAt: DateTimeImmutable @1694982780 {#2420
    date: 2023-09-17 22:33:00.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
5 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
6 DENIED moderate
App\Entity\EntryComment {#4172
  +user: App\Entity\User {#4120 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: null
  +root: null
  +body: """
    I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
    \n
    The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
    \n
    I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
    \n
    And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
    \n
    (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695038979 {#4182
    date: 2023-09-18 14:09:39.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4170 …}
  +nested: Doctrine\ORM\PersistentCollection {#4168 …}
  +votes: Doctrine\ORM\PersistentCollection {#4166 …}
  +reports: Doctrine\ORM\PersistentCollection {#4164 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
  -id: 29295
  -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3051524"
  +editedAt: DateTimeImmutable @1695034180 {#4118
    date: 2023-09-18 12:49:40.0 +02:00
  }
  +createdAt: DateTimeImmutable @1695031894 {#4181
    date: 2023-09-18 12:11:34.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
7 DENIED edit
App\Entity\EntryComment {#4172
  +user: App\Entity\User {#4120 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: null
  +root: null
  +body: """
    I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
    \n
    The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
    \n
    I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
    \n
    And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
    \n
    (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695038979 {#4182
    date: 2023-09-18 14:09:39.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4170 …}
  +nested: Doctrine\ORM\PersistentCollection {#4168 …}
  +votes: Doctrine\ORM\PersistentCollection {#4166 …}
  +reports: Doctrine\ORM\PersistentCollection {#4164 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
  -id: 29295
  -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3051524"
  +editedAt: DateTimeImmutable @1695034180 {#4118
    date: 2023-09-18 12:49:40.0 +02:00
  }
  +createdAt: DateTimeImmutable @1695031894 {#4181
    date: 2023-09-18 12:11:34.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
8 DENIED moderate
App\Entity\EntryComment {#4172
  +user: App\Entity\User {#4120 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: null
  +root: null
  +body: """
    I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
    \n
    The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
    \n
    I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
    \n
    And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
    \n
    (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695038979 {#4182
    date: 2023-09-18 14:09:39.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4170 …}
  +nested: Doctrine\ORM\PersistentCollection {#4168 …}
  +votes: Doctrine\ORM\PersistentCollection {#4166 …}
  +reports: Doctrine\ORM\PersistentCollection {#4164 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
  -id: 29295
  -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3051524"
  +editedAt: DateTimeImmutable @1695034180 {#4118
    date: 2023-09-18 12:49:40.0 +02:00
  }
  +createdAt: DateTimeImmutable @1695031894 {#4181
    date: 2023-09-18 12:11:34.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
9 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
10 DENIED moderate
App\Entity\EntryComment {#4316
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4172
    +user: App\Entity\User {#4120 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: null
    +root: null
    +body: """
      I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
      \n
      The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
      \n
      I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
      \n
      And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
      \n
      (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 1
    +score: 0
    +lastActive: DateTime @1695038979 {#4182
      date: 2023-09-18 14:09:39.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4170 …}
    +nested: Doctrine\ORM\PersistentCollection {#4168 …}
    +votes: Doctrine\ORM\PersistentCollection {#4166 …}
    +reports: Doctrine\ORM\PersistentCollection {#4164 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
    -id: 29295
    -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3051524"
    +editedAt: DateTimeImmutable @1695034180 {#4118
      date: 2023-09-18 12:49:40.0 +02:00
    }
    +createdAt: DateTimeImmutable @1695031894 {#4181
      date: 2023-09-18 12:11:34.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4172}
  +body: """
    The main reason for splitting up the relays into two sets is that with 10A traces the connector pins would violate minimum separation distances. I would have to get even larger connectors. The ones in the design have 5 mm pitch.\n
    \n
    I’m assuming the original board also did this for the same reason although their board is set up for 8 motors split into sets of 4.\n
    \n
    I’ve also had some trouble sourcing a 10A fuse suited for inductive loads but I’m sure I could find one with some more time.\n
    \n
    The whole board is on its own house circuit fused with a 16A breaker.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695034605 {#4314
    date: 2023-09-18 12:56:45.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@rufus@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4317 …}
  +nested: Doctrine\ORM\PersistentCollection {#4319 …}
  +votes: Doctrine\ORM\PersistentCollection {#4321 …}
  +reports: Doctrine\ORM\PersistentCollection {#4323 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4325 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4327 …}
  -id: 29296
  -bodyTs: "'10a':15,77 '16a':107 '4':68 '5':39 '8':62 'also':48,71 'although':55 'assum':44 'board':47,57,97 'breaker':108 'circuit':103 'connector':18,32 'could':88 'design':37 'distanc':24 'even':30 'find':89 'fuse':78,104 'get':29 'hous':102 'induct':81 'larger':31 'load':82 'm':43,85 'main':2 'minimum':22 'mm':40 'motor':63 'one':34,90 'origin':46 'pin':19 'pitch':41 'reason':3,54 'relay':8 'separ':23 'set':11,59,66 'sourc':75 'split':5,64 'suit':79 'sure':86 'time':94 'trace':16 'troubl':74 'two':10 've':70 'violat':21 'whole':96 'would':20,26"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3052226"
  +editedAt: null
  +createdAt: DateTimeImmutable @1695034605 {#4315
    date: 2023-09-18 12:56:45.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
11 DENIED edit
App\Entity\EntryComment {#4316
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4172
    +user: App\Entity\User {#4120 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: null
    +root: null
    +body: """
      I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
      \n
      The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
      \n
      I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
      \n
      And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
      \n
      (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 1
    +score: 0
    +lastActive: DateTime @1695038979 {#4182
      date: 2023-09-18 14:09:39.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4170 …}
    +nested: Doctrine\ORM\PersistentCollection {#4168 …}
    +votes: Doctrine\ORM\PersistentCollection {#4166 …}
    +reports: Doctrine\ORM\PersistentCollection {#4164 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
    -id: 29295
    -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3051524"
    +editedAt: DateTimeImmutable @1695034180 {#4118
      date: 2023-09-18 12:49:40.0 +02:00
    }
    +createdAt: DateTimeImmutable @1695031894 {#4181
      date: 2023-09-18 12:11:34.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4172}
  +body: """
    The main reason for splitting up the relays into two sets is that with 10A traces the connector pins would violate minimum separation distances. I would have to get even larger connectors. The ones in the design have 5 mm pitch.\n
    \n
    I’m assuming the original board also did this for the same reason although their board is set up for 8 motors split into sets of 4.\n
    \n
    I’ve also had some trouble sourcing a 10A fuse suited for inductive loads but I’m sure I could find one with some more time.\n
    \n
    The whole board is on its own house circuit fused with a 16A breaker.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695034605 {#4314
    date: 2023-09-18 12:56:45.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@rufus@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4317 …}
  +nested: Doctrine\ORM\PersistentCollection {#4319 …}
  +votes: Doctrine\ORM\PersistentCollection {#4321 …}
  +reports: Doctrine\ORM\PersistentCollection {#4323 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4325 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4327 …}
  -id: 29296
  -bodyTs: "'10a':15,77 '16a':107 '4':68 '5':39 '8':62 'also':48,71 'although':55 'assum':44 'board':47,57,97 'breaker':108 'circuit':103 'connector':18,32 'could':88 'design':37 'distanc':24 'even':30 'find':89 'fuse':78,104 'get':29 'hous':102 'induct':81 'larger':31 'load':82 'm':43,85 'main':2 'minimum':22 'mm':40 'motor':63 'one':34,90 'origin':46 'pin':19 'pitch':41 'reason':3,54 'relay':8 'separ':23 'set':11,59,66 'sourc':75 'split':5,64 'suit':79 'sure':86 'time':94 'trace':16 'troubl':74 'two':10 've':70 'violat':21 'whole':96 'would':20,26"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3052226"
  +editedAt: null
  +createdAt: DateTimeImmutable @1695034605 {#4315
    date: 2023-09-18 12:56:45.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
12 DENIED moderate
App\Entity\EntryComment {#4316
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4172
    +user: App\Entity\User {#4120 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: null
    +root: null
    +body: """
      I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
      \n
      The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
      \n
      I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
      \n
      And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
      \n
      (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 1
    +score: 0
    +lastActive: DateTime @1695038979 {#4182
      date: 2023-09-18 14:09:39.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4170 …}
    +nested: Doctrine\ORM\PersistentCollection {#4168 …}
    +votes: Doctrine\ORM\PersistentCollection {#4166 …}
    +reports: Doctrine\ORM\PersistentCollection {#4164 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
    -id: 29295
    -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3051524"
    +editedAt: DateTimeImmutable @1695034180 {#4118
      date: 2023-09-18 12:49:40.0 +02:00
    }
    +createdAt: DateTimeImmutable @1695031894 {#4181
      date: 2023-09-18 12:11:34.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4172}
  +body: """
    The main reason for splitting up the relays into two sets is that with 10A traces the connector pins would violate minimum separation distances. I would have to get even larger connectors. The ones in the design have 5 mm pitch.\n
    \n
    I’m assuming the original board also did this for the same reason although their board is set up for 8 motors split into sets of 4.\n
    \n
    I’ve also had some trouble sourcing a 10A fuse suited for inductive loads but I’m sure I could find one with some more time.\n
    \n
    The whole board is on its own house circuit fused with a 16A breaker.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695034605 {#4314
    date: 2023-09-18 12:56:45.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@rufus@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4317 …}
  +nested: Doctrine\ORM\PersistentCollection {#4319 …}
  +votes: Doctrine\ORM\PersistentCollection {#4321 …}
  +reports: Doctrine\ORM\PersistentCollection {#4323 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4325 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4327 …}
  -id: 29296
  -bodyTs: "'10a':15,77 '16a':107 '4':68 '5':39 '8':62 'also':48,71 'although':55 'assum':44 'board':47,57,97 'breaker':108 'circuit':103 'connector':18,32 'could':88 'design':37 'distanc':24 'even':30 'find':89 'fuse':78,104 'get':29 'hous':102 'induct':81 'larger':31 'load':82 'm':43,85 'main':2 'minimum':22 'mm':40 'motor':63 'one':34,90 'origin':46 'pin':19 'pitch':41 'reason':3,54 'relay':8 'separ':23 'set':11,59,66 'sourc':75 'split':5,64 'suit':79 'sure':86 'time':94 'trace':16 'troubl':74 'two':10 've':70 'violat':21 'whole':96 'would':20,26"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3052226"
  +editedAt: null
  +createdAt: DateTimeImmutable @1695034605 {#4315
    date: 2023-09-18 12:56:45.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
13 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
14 DENIED moderate
App\Entity\EntryComment {#4354
  +user: App\Entity\User {#4120 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4316
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: App\Entity\EntryComment {#4172
      +user: App\Entity\User {#4120 …}
      +entry: App\Entity\Entry {#2412}
      +magazine: App\Entity\Magazine {#266}
      +image: null
      +parent: null
      +root: null
      +body: """
        I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
        \n
        The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
        \n
        I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
        \n
        And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
        \n
        (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1695038979 {#4182
        date: 2023-09-18 14:09:39.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@Starfighter@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4170 …}
      +nested: Doctrine\ORM\PersistentCollection {#4168 …}
      +votes: Doctrine\ORM\PersistentCollection {#4166 …}
      +reports: Doctrine\ORM\PersistentCollection {#4164 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
      -id: 29295
      -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://discuss.tchncs.de/comment/3051524"
      +editedAt: DateTimeImmutable @1695034180 {#4118
        date: 2023-09-18 12:49:40.0 +02:00
      }
      +createdAt: DateTimeImmutable @1695031894 {#4181
        date: 2023-09-18 12:11:34.0 +02:00
      }
    }
    +root: App\Entity\EntryComment {#4172}
    +body: """
      The main reason for splitting up the relays into two sets is that with 10A traces the connector pins would violate minimum separation distances. I would have to get even larger connectors. The ones in the design have 5 mm pitch.\n
      \n
      I’m assuming the original board also did this for the same reason although their board is set up for 8 motors split into sets of 4.\n
      \n
      I’ve also had some trouble sourcing a 10A fuse suited for inductive loads but I’m sure I could find one with some more time.\n
      \n
      The whole board is on its own house circuit fused with a 16A breaker.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 1
    +score: 0
    +lastActive: DateTime @1695034605 {#4314
      date: 2023-09-18 12:56:45.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
      "@rufus@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4317 …}
    +nested: Doctrine\ORM\PersistentCollection {#4319 …}
    +votes: Doctrine\ORM\PersistentCollection {#4321 …}
    +reports: Doctrine\ORM\PersistentCollection {#4323 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4325 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4327 …}
    -id: 29296
    -bodyTs: "'10a':15,77 '16a':107 '4':68 '5':39 '8':62 'also':48,71 'although':55 'assum':44 'board':47,57,97 'breaker':108 'circuit':103 'connector':18,32 'could':88 'design':37 'distanc':24 'even':30 'find':89 'fuse':78,104 'get':29 'hous':102 'induct':81 'larger':31 'load':82 'm':43,85 'main':2 'minimum':22 'mm':40 'motor':63 'one':34,90 'origin':46 'pin':19 'pitch':41 'reason':3,54 'relay':8 'separ':23 'set':11,59,66 'sourc':75 'split':5,64 'suit':79 'sure':86 'time':94 'trace':16 'troubl':74 'two':10 've':70 'violat':21 'whole':96 'would':20,26"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3052226"
    +editedAt: null
    +createdAt: DateTimeImmutable @1695034605 {#4315
      date: 2023-09-18 12:56:45.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4172}
  +body: """
    Thanks for explaining. Yeah, I’m sure it’s pretty much alright with your circuit breaker. I suppose your main concern for having the fuses is so that those relais can’t start a fire once the current is between 10A and 16A for too long. I was just thinking about failure modes. And having something fail, the fuse blow and then half the board still has 230V feels a bit strange. But I guess it’s alright. I’m not an expert anyways.\n
    \n
    I saw those PCB mounted 5V power supplies coming up in ESP32-projects before. I always thought they were some cheap chinese stuff and you shouldn’t trust them. But if they have a proper fuse inside and do proper 5V… Maybe I need to change my mind and start digging deeper.\n
    \n
    Idk about mixing 10A relais and 5A traces and connectors. Everytime I buy some shelly stuff, I just have a look at the print on the relais before I wire something up. That’d be wrong in case someone had made the traces smaller. But I guess you can just write 5A MAX on the pcb and everyone can see that, even if one day somebody else does some maintenance. In this case you obviously need a 5A fuse.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695038978 {#4351
    date: 2023-09-18 14:09:38.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@rufus@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4355 …}
  +nested: Doctrine\ORM\PersistentCollection {#4357 …}
  +votes: Doctrine\ORM\PersistentCollection {#4359 …}
  +reports: Doctrine\ORM\PersistentCollection {#4361 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4363 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4365 …}
  -id: 29297
  -bodyTs: "'10a':41,141 '16a':43 '230v':68 '5a':144,189,215 '5v':90,126 'alright':12,78 'alway':101 'anyway':84 'bit':71 'blow':60 'board':65 'breaker':16 'buy':150 'case':175,210 'chang':131 'cheap':106 'chines':107 'circuit':15 'come':93 'concern':21 'connector':147 'current':38 'd':171 'day':202 'deeper':137 'dig':136 'els':204 'esp32':97 'esp32-projects':96 'even':199 'everyon':195 'everytim':148 'expert':83 'explain':3 'fail':57 'failur':52 'feel':69 'fire':35 'fuse':25,59,121,216 'guess':75,184 'half':63 'idk':138 'insid':122 'long':46 'look':158 'm':6,80 'made':178 'main':20 'mainten':207 'max':190 'mayb':127 'mind':133 'mix':140 'mode':53 'mount':89 'much':11 'need':129,213 'obvious':212 'one':201 'pcb':88,193 'power':91 'pretti':10 'print':161 'project':98 'proper':120,125 'relai':30,142,164 'saw':86 'see':197 'shelli':152 'shouldn':111 'smaller':181 'somebodi':203 'someon':176 'someth':56,168 'start':33,135 'still':66 'strang':72 'stuff':108,153 'suppli':92 'suppos':18 'sure':7 'thank':1 'think':50 'thought':102 'trace':145,180 'trust':113 'wire':167 'write':188 'wrong':173 'yeah':4"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3053560"
  +editedAt: DateTimeImmutable @1695040026 {#4352
    date: 2023-09-18 14:27:06.0 +02:00
  }
  +createdAt: DateTimeImmutable @1695038978 {#4353
    date: 2023-09-18 14:09:38.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
15 DENIED edit
App\Entity\EntryComment {#4354
  +user: App\Entity\User {#4120 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4316
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: App\Entity\EntryComment {#4172
      +user: App\Entity\User {#4120 …}
      +entry: App\Entity\Entry {#2412}
      +magazine: App\Entity\Magazine {#266}
      +image: null
      +parent: null
      +root: null
      +body: """
        I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
        \n
        The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
        \n
        I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
        \n
        And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
        \n
        (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1695038979 {#4182
        date: 2023-09-18 14:09:39.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@Starfighter@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4170 …}
      +nested: Doctrine\ORM\PersistentCollection {#4168 …}
      +votes: Doctrine\ORM\PersistentCollection {#4166 …}
      +reports: Doctrine\ORM\PersistentCollection {#4164 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
      -id: 29295
      -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://discuss.tchncs.de/comment/3051524"
      +editedAt: DateTimeImmutable @1695034180 {#4118
        date: 2023-09-18 12:49:40.0 +02:00
      }
      +createdAt: DateTimeImmutable @1695031894 {#4181
        date: 2023-09-18 12:11:34.0 +02:00
      }
    }
    +root: App\Entity\EntryComment {#4172}
    +body: """
      The main reason for splitting up the relays into two sets is that with 10A traces the connector pins would violate minimum separation distances. I would have to get even larger connectors. The ones in the design have 5 mm pitch.\n
      \n
      I’m assuming the original board also did this for the same reason although their board is set up for 8 motors split into sets of 4.\n
      \n
      I’ve also had some trouble sourcing a 10A fuse suited for inductive loads but I’m sure I could find one with some more time.\n
      \n
      The whole board is on its own house circuit fused with a 16A breaker.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 1
    +score: 0
    +lastActive: DateTime @1695034605 {#4314
      date: 2023-09-18 12:56:45.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
      "@rufus@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4317 …}
    +nested: Doctrine\ORM\PersistentCollection {#4319 …}
    +votes: Doctrine\ORM\PersistentCollection {#4321 …}
    +reports: Doctrine\ORM\PersistentCollection {#4323 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4325 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4327 …}
    -id: 29296
    -bodyTs: "'10a':15,77 '16a':107 '4':68 '5':39 '8':62 'also':48,71 'although':55 'assum':44 'board':47,57,97 'breaker':108 'circuit':103 'connector':18,32 'could':88 'design':37 'distanc':24 'even':30 'find':89 'fuse':78,104 'get':29 'hous':102 'induct':81 'larger':31 'load':82 'm':43,85 'main':2 'minimum':22 'mm':40 'motor':63 'one':34,90 'origin':46 'pin':19 'pitch':41 'reason':3,54 'relay':8 'separ':23 'set':11,59,66 'sourc':75 'split':5,64 'suit':79 'sure':86 'time':94 'trace':16 'troubl':74 'two':10 've':70 'violat':21 'whole':96 'would':20,26"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3052226"
    +editedAt: null
    +createdAt: DateTimeImmutable @1695034605 {#4315
      date: 2023-09-18 12:56:45.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4172}
  +body: """
    Thanks for explaining. Yeah, I’m sure it’s pretty much alright with your circuit breaker. I suppose your main concern for having the fuses is so that those relais can’t start a fire once the current is between 10A and 16A for too long. I was just thinking about failure modes. And having something fail, the fuse blow and then half the board still has 230V feels a bit strange. But I guess it’s alright. I’m not an expert anyways.\n
    \n
    I saw those PCB mounted 5V power supplies coming up in ESP32-projects before. I always thought they were some cheap chinese stuff and you shouldn’t trust them. But if they have a proper fuse inside and do proper 5V… Maybe I need to change my mind and start digging deeper.\n
    \n
    Idk about mixing 10A relais and 5A traces and connectors. Everytime I buy some shelly stuff, I just have a look at the print on the relais before I wire something up. That’d be wrong in case someone had made the traces smaller. But I guess you can just write 5A MAX on the pcb and everyone can see that, even if one day somebody else does some maintenance. In this case you obviously need a 5A fuse.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695038978 {#4351
    date: 2023-09-18 14:09:38.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@rufus@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4355 …}
  +nested: Doctrine\ORM\PersistentCollection {#4357 …}
  +votes: Doctrine\ORM\PersistentCollection {#4359 …}
  +reports: Doctrine\ORM\PersistentCollection {#4361 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4363 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4365 …}
  -id: 29297
  -bodyTs: "'10a':41,141 '16a':43 '230v':68 '5a':144,189,215 '5v':90,126 'alright':12,78 'alway':101 'anyway':84 'bit':71 'blow':60 'board':65 'breaker':16 'buy':150 'case':175,210 'chang':131 'cheap':106 'chines':107 'circuit':15 'come':93 'concern':21 'connector':147 'current':38 'd':171 'day':202 'deeper':137 'dig':136 'els':204 'esp32':97 'esp32-projects':96 'even':199 'everyon':195 'everytim':148 'expert':83 'explain':3 'fail':57 'failur':52 'feel':69 'fire':35 'fuse':25,59,121,216 'guess':75,184 'half':63 'idk':138 'insid':122 'long':46 'look':158 'm':6,80 'made':178 'main':20 'mainten':207 'max':190 'mayb':127 'mind':133 'mix':140 'mode':53 'mount':89 'much':11 'need':129,213 'obvious':212 'one':201 'pcb':88,193 'power':91 'pretti':10 'print':161 'project':98 'proper':120,125 'relai':30,142,164 'saw':86 'see':197 'shelli':152 'shouldn':111 'smaller':181 'somebodi':203 'someon':176 'someth':56,168 'start':33,135 'still':66 'strang':72 'stuff':108,153 'suppli':92 'suppos':18 'sure':7 'thank':1 'think':50 'thought':102 'trace':145,180 'trust':113 'wire':167 'write':188 'wrong':173 'yeah':4"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3053560"
  +editedAt: DateTimeImmutable @1695040026 {#4352
    date: 2023-09-18 14:27:06.0 +02:00
  }
  +createdAt: DateTimeImmutable @1695038978 {#4353
    date: 2023-09-18 14:09:38.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
16 DENIED moderate
App\Entity\EntryComment {#4354
  +user: App\Entity\User {#4120 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4316
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: App\Entity\EntryComment {#4172
      +user: App\Entity\User {#4120 …}
      +entry: App\Entity\Entry {#2412}
      +magazine: App\Entity\Magazine {#266}
      +image: null
      +parent: null
      +root: null
      +body: """
        I’d agree with the tip of that ground plane is close to the high voltage part. And there’s still space left on the right.\n
        \n
        The ULN2003A claims to have the flyback diodes and they’re connected. So you don’t need another set.\n
        \n
        I’m not an electronic expert myself. But I don’t get why the fuses are the way they are. Most of the times I see boards having one fuse and when it’s blown, the whole board is separated from electricity. You’re kind of splitting it up 3 ways.\n
        \n
        And the 5A of the fuses doesn’t match with the 10A rating of the relais or the 400W you wrote for the connectors. But I get that you have maybe 6 motors moving simultaneously.\n
        \n
        (And why do you have the N trace to the connectors split in the middle and a whole other trace going all the way around? Is that to balance things when there’s much current going over that single trace? Or to match the 2 fuse design?)
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1695038979 {#4182
        date: 2023-09-18 14:09:39.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@Starfighter@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4170 …}
      +nested: Doctrine\ORM\PersistentCollection {#4168 …}
      +votes: Doctrine\ORM\PersistentCollection {#4166 …}
      +reports: Doctrine\ORM\PersistentCollection {#4164 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4132 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4136 …}
      -id: 29295
      -bodyTs: "'10a':108 '2':176 '3':95 '400w':115 '5a':99 '6':128 'agre':3 'anoth':44 'around':156 'balanc':160 'blown':80 'board':72,83 'claim':29 'close':12 'connect':38 'connector':120,142 'current':166 'd':2 'design':178 'diod':34 'doesn':103 'electr':87 'electron':50 'expert':51 'flyback':33 'fuse':60,75,102,177 'get':57,123 'go':152,167 'ground':9 'high':15 'kind':90 'left':23 'm':47 'match':105,174 'mayb':127 'middl':146 'motor':129 'move':130 'much':165 'n':138 'need':43 'one':74 'part':17 'plane':10 'rate':109 're':37,89 'relai':112 'right':26 'see':71 'separ':85 'set':45 'simultan':131 'singl':170 'space':22 'split':92,143 'still':21 'thing':161 'time':69 'tip':6 'trace':139,151,171 'uln2003a':28 'voltag':16 'way':63,96,155 'whole':82,149 'wrote':117"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://discuss.tchncs.de/comment/3051524"
      +editedAt: DateTimeImmutable @1695034180 {#4118
        date: 2023-09-18 12:49:40.0 +02:00
      }
      +createdAt: DateTimeImmutable @1695031894 {#4181
        date: 2023-09-18 12:11:34.0 +02:00
      }
    }
    +root: App\Entity\EntryComment {#4172}
    +body: """
      The main reason for splitting up the relays into two sets is that with 10A traces the connector pins would violate minimum separation distances. I would have to get even larger connectors. The ones in the design have 5 mm pitch.\n
      \n
      I’m assuming the original board also did this for the same reason although their board is set up for 8 motors split into sets of 4.\n
      \n
      I’ve also had some trouble sourcing a 10A fuse suited for inductive loads but I’m sure I could find one with some more time.\n
      \n
      The whole board is on its own house circuit fused with a 16A breaker.
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 1
    +score: 0
    +lastActive: DateTime @1695034605 {#4314
      date: 2023-09-18 12:56:45.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
      "@rufus@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4317 …}
    +nested: Doctrine\ORM\PersistentCollection {#4319 …}
    +votes: Doctrine\ORM\PersistentCollection {#4321 …}
    +reports: Doctrine\ORM\PersistentCollection {#4323 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4325 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4327 …}
    -id: 29296
    -bodyTs: "'10a':15,77 '16a':107 '4':68 '5':39 '8':62 'also':48,71 'although':55 'assum':44 'board':47,57,97 'breaker':108 'circuit':103 'connector':18,32 'could':88 'design':37 'distanc':24 'even':30 'find':89 'fuse':78,104 'get':29 'hous':102 'induct':81 'larger':31 'load':82 'm':43,85 'main':2 'minimum':22 'mm':40 'motor':63 'one':34,90 'origin':46 'pin':19 'pitch':41 'reason':3,54 'relay':8 'separ':23 'set':11,59,66 'sourc':75 'split':5,64 'suit':79 'sure':86 'time':94 'trace':16 'troubl':74 'two':10 've':70 'violat':21 'whole':96 'would':20,26"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3052226"
    +editedAt: null
    +createdAt: DateTimeImmutable @1695034605 {#4315
      date: 2023-09-18 12:56:45.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4172}
  +body: """
    Thanks for explaining. Yeah, I’m sure it’s pretty much alright with your circuit breaker. I suppose your main concern for having the fuses is so that those relais can’t start a fire once the current is between 10A and 16A for too long. I was just thinking about failure modes. And having something fail, the fuse blow and then half the board still has 230V feels a bit strange. But I guess it’s alright. I’m not an expert anyways.\n
    \n
    I saw those PCB mounted 5V power supplies coming up in ESP32-projects before. I always thought they were some cheap chinese stuff and you shouldn’t trust them. But if they have a proper fuse inside and do proper 5V… Maybe I need to change my mind and start digging deeper.\n
    \n
    Idk about mixing 10A relais and 5A traces and connectors. Everytime I buy some shelly stuff, I just have a look at the print on the relais before I wire something up. That’d be wrong in case someone had made the traces smaller. But I guess you can just write 5A MAX on the pcb and everyone can see that, even if one day somebody else does some maintenance. In this case you obviously need a 5A fuse.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695038978 {#4351
    date: 2023-09-18 14:09:38.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@rufus@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4355 …}
  +nested: Doctrine\ORM\PersistentCollection {#4357 …}
  +votes: Doctrine\ORM\PersistentCollection {#4359 …}
  +reports: Doctrine\ORM\PersistentCollection {#4361 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4363 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4365 …}
  -id: 29297
  -bodyTs: "'10a':41,141 '16a':43 '230v':68 '5a':144,189,215 '5v':90,126 'alright':12,78 'alway':101 'anyway':84 'bit':71 'blow':60 'board':65 'breaker':16 'buy':150 'case':175,210 'chang':131 'cheap':106 'chines':107 'circuit':15 'come':93 'concern':21 'connector':147 'current':38 'd':171 'day':202 'deeper':137 'dig':136 'els':204 'esp32':97 'esp32-projects':96 'even':199 'everyon':195 'everytim':148 'expert':83 'explain':3 'fail':57 'failur':52 'feel':69 'fire':35 'fuse':25,59,121,216 'guess':75,184 'half':63 'idk':138 'insid':122 'long':46 'look':158 'm':6,80 'made':178 'main':20 'mainten':207 'max':190 'mayb':127 'mind':133 'mix':140 'mode':53 'mount':89 'much':11 'need':129,213 'obvious':212 'one':201 'pcb':88,193 'power':91 'pretti':10 'print':161 'project':98 'proper':120,125 'relai':30,142,164 'saw':86 'see':197 'shelli':152 'shouldn':111 'smaller':181 'somebodi':203 'someon':176 'someth':56,168 'start':33,135 'still':66 'strang':72 'stuff':108,153 'suppli':92 'suppos':18 'sure':7 'thank':1 'think':50 'thought':102 'trace':145,180 'trust':113 'wire':167 'write':188 'wrong':173 'yeah':4"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3053560"
  +editedAt: DateTimeImmutable @1695040026 {#4352
    date: 2023-09-18 14:27:06.0 +02:00
  }
  +createdAt: DateTimeImmutable @1695038978 {#4353
    date: 2023-09-18 14:09:38.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
17 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
18 DENIED moderate
App\Entity\EntryComment {#4210
  +user: App\Entity\User {#4193 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: null
  +root: null
  +body: """
    I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
    \n
    Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
    \n
    Other than that, I’d happily welcome more PCB and/or personal project discussions!
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1695019134 {#4216
    date: 2023-09-18 08:38:54.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4208 …}
  +nested: Doctrine\ORM\PersistentCollection {#4206 …}
  +votes: Doctrine\ORM\PersistentCollection {#4204 …}
  +reports: Doctrine\ORM\PersistentCollection {#4201 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
  -id: 29287
  -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://compuverse.uk/comment/2036921"
  +editedAt: null
  +createdAt: DateTimeImmutable @1694983728 {#4214
    date: 2023-09-17 22:48:48.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
19 DENIED edit
App\Entity\EntryComment {#4210
  +user: App\Entity\User {#4193 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: null
  +root: null
  +body: """
    I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
    \n
    Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
    \n
    Other than that, I’d happily welcome more PCB and/or personal project discussions!
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1695019134 {#4216
    date: 2023-09-18 08:38:54.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4208 …}
  +nested: Doctrine\ORM\PersistentCollection {#4206 …}
  +votes: Doctrine\ORM\PersistentCollection {#4204 …}
  +reports: Doctrine\ORM\PersistentCollection {#4201 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
  -id: 29287
  -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://compuverse.uk/comment/2036921"
  +editedAt: null
  +createdAt: DateTimeImmutable @1694983728 {#4214
    date: 2023-09-17 22:48:48.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
20 DENIED moderate
App\Entity\EntryComment {#4210
  +user: App\Entity\User {#4193 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: null
  +root: null
  +body: """
    I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
    \n
    Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
    \n
    Other than that, I’d happily welcome more PCB and/or personal project discussions!
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1695019134 {#4216
    date: 2023-09-18 08:38:54.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4208 …}
  +nested: Doctrine\ORM\PersistentCollection {#4206 …}
  +votes: Doctrine\ORM\PersistentCollection {#4204 …}
  +reports: Doctrine\ORM\PersistentCollection {#4201 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
  -id: 29287
  -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://compuverse.uk/comment/2036921"
  +editedAt: null
  +createdAt: DateTimeImmutable @1694983728 {#4214
    date: 2023-09-17 22:48:48.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
21 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
22 DENIED moderate
App\Entity\EntryComment {#4293
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4210
    +user: App\Entity\User {#4193 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: null
    +root: null
    +body: """
      I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
      \n
      Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
      \n
      Other than that, I’d happily welcome more PCB and/or personal project discussions!
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1695019134 {#4216
      date: 2023-09-18 08:38:54.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4208 …}
    +nested: Doctrine\ORM\PersistentCollection {#4206 …}
    +votes: Doctrine\ORM\PersistentCollection {#4204 …}
    +reports: Doctrine\ORM\PersistentCollection {#4201 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
    -id: 29287
    -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://compuverse.uk/comment/2036921"
    +editedAt: null
    +createdAt: DateTimeImmutable @1694983728 {#4214
      date: 2023-09-17 22:48:48.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4210}
  +body: """
    It is my understanding that the ULN2003A (`U4` and `U5`) has integrated flyback diodes. From the datasheet:\n
    \n
    > Each consists of seven NPN Darlington pairs that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads.\n
    \n
    Good call on that ground plane. I’ll scoot the relays a little bit to the right. That should resolve the issue.\n
    \n
    Thanks for your feedback! :)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1694984775 {#4298
    date: 2023-09-17 23:06:15.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@joulethief@compuverse.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4301 …}
  +nested: Doctrine\ORM\PersistentCollection {#4305 …}
  +votes: Doctrine\ORM\PersistentCollection {#4307 …}
  +reports: Doctrine\ORM\PersistentCollection {#4308 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4310 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4312 …}
  -id: 29288
  -bodyTs: "'bit':54 'call':42 'cathod':34 'clamp':35 'common':33 'common-cathod':32 'consist':19 'darlington':23 'datasheet':17 'diod':14,36 'featur':26 'feedback':66 'flyback':13 'good':41 'ground':45 'high':28 'high-voltag':27 'induct':39 'integr':12 'issu':62 'littl':53 'll':48 'load':40 'npn':22 'output':30 'pair':24 'plane':46 'relay':51 'resolv':60 'right':57 'scoot':49 'seven':21 'switch':38 'thank':63 'u4':8 'u5':10 'uln2003a':7 'understand':4 'voltag':29"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3039118"
  +editedAt: null
  +createdAt: DateTimeImmutable @1694984775 {#4295
    date: 2023-09-17 23:06:15.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
23 DENIED edit
App\Entity\EntryComment {#4293
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4210
    +user: App\Entity\User {#4193 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: null
    +root: null
    +body: """
      I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
      \n
      Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
      \n
      Other than that, I’d happily welcome more PCB and/or personal project discussions!
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1695019134 {#4216
      date: 2023-09-18 08:38:54.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4208 …}
    +nested: Doctrine\ORM\PersistentCollection {#4206 …}
    +votes: Doctrine\ORM\PersistentCollection {#4204 …}
    +reports: Doctrine\ORM\PersistentCollection {#4201 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
    -id: 29287
    -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://compuverse.uk/comment/2036921"
    +editedAt: null
    +createdAt: DateTimeImmutable @1694983728 {#4214
      date: 2023-09-17 22:48:48.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4210}
  +body: """
    It is my understanding that the ULN2003A (`U4` and `U5`) has integrated flyback diodes. From the datasheet:\n
    \n
    > Each consists of seven NPN Darlington pairs that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads.\n
    \n
    Good call on that ground plane. I’ll scoot the relays a little bit to the right. That should resolve the issue.\n
    \n
    Thanks for your feedback! :)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1694984775 {#4298
    date: 2023-09-17 23:06:15.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@joulethief@compuverse.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4301 …}
  +nested: Doctrine\ORM\PersistentCollection {#4305 …}
  +votes: Doctrine\ORM\PersistentCollection {#4307 …}
  +reports: Doctrine\ORM\PersistentCollection {#4308 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4310 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4312 …}
  -id: 29288
  -bodyTs: "'bit':54 'call':42 'cathod':34 'clamp':35 'common':33 'common-cathod':32 'consist':19 'darlington':23 'datasheet':17 'diod':14,36 'featur':26 'feedback':66 'flyback':13 'good':41 'ground':45 'high':28 'high-voltag':27 'induct':39 'integr':12 'issu':62 'littl':53 'll':48 'load':40 'npn':22 'output':30 'pair':24 'plane':46 'relay':51 'resolv':60 'right':57 'scoot':49 'seven':21 'switch':38 'thank':63 'u4':8 'u5':10 'uln2003a':7 'understand':4 'voltag':29"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3039118"
  +editedAt: null
  +createdAt: DateTimeImmutable @1694984775 {#4295
    date: 2023-09-17 23:06:15.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
24 DENIED moderate
App\Entity\EntryComment {#4293
  +user: Proxies\__CG__\App\Entity\User {#1970 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4210
    +user: App\Entity\User {#4193 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: null
    +root: null
    +body: """
      I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
      \n
      Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
      \n
      Other than that, I’d happily welcome more PCB and/or personal project discussions!
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1695019134 {#4216
      date: 2023-09-18 08:38:54.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4208 …}
    +nested: Doctrine\ORM\PersistentCollection {#4206 …}
    +votes: Doctrine\ORM\PersistentCollection {#4204 …}
    +reports: Doctrine\ORM\PersistentCollection {#4201 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
    -id: 29287
    -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://compuverse.uk/comment/2036921"
    +editedAt: null
    +createdAt: DateTimeImmutable @1694983728 {#4214
      date: 2023-09-17 22:48:48.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4210}
  +body: """
    It is my understanding that the ULN2003A (`U4` and `U5`) has integrated flyback diodes. From the datasheet:\n
    \n
    > Each consists of seven NPN Darlington pairs that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads.\n
    \n
    Good call on that ground plane. I’ll scoot the relays a little bit to the right. That should resolve the issue.\n
    \n
    Thanks for your feedback! :)
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 4
  +score: 0
  +lastActive: DateTime @1694984775 {#4298
    date: 2023-09-17 23:06:15.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@joulethief@compuverse.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4301 …}
  +nested: Doctrine\ORM\PersistentCollection {#4305 …}
  +votes: Doctrine\ORM\PersistentCollection {#4307 …}
  +reports: Doctrine\ORM\PersistentCollection {#4308 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4310 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4312 …}
  -id: 29288
  -bodyTs: "'bit':54 'call':42 'cathod':34 'clamp':35 'common':33 'common-cathod':32 'consist':19 'darlington':23 'datasheet':17 'diod':14,36 'featur':26 'feedback':66 'flyback':13 'good':41 'ground':45 'high':28 'high-voltag':27 'induct':39 'integr':12 'issu':62 'littl':53 'll':48 'load':40 'npn':22 'output':30 'pair':24 'plane':46 'relay':51 'resolv':60 'right':57 'scoot':49 'seven':21 'switch':38 'thank':63 'u4':8 'u5':10 'uln2003a':7 'understand':4 'voltag':29"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://discuss.tchncs.de/comment/3039118"
  +editedAt: null
  +createdAt: DateTimeImmutable @1694984775 {#4295
    date: 2023-09-17 23:06:15.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
25 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
26 DENIED moderate
App\Entity\EntryComment {#4330
  +user: App\Entity\User {#4193 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4293
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: App\Entity\EntryComment {#4210
      +user: App\Entity\User {#4193 …}
      +entry: App\Entity\Entry {#2412}
      +magazine: App\Entity\Magazine {#266}
      +image: null
      +parent: null
      +root: null
      +body: """
        I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
        \n
        Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
        \n
        Other than that, I’d happily welcome more PCB and/or personal project discussions!
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1695019134 {#4216
        date: 2023-09-18 08:38:54.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@Starfighter@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4208 …}
      +nested: Doctrine\ORM\PersistentCollection {#4206 …}
      +votes: Doctrine\ORM\PersistentCollection {#4204 …}
      +reports: Doctrine\ORM\PersistentCollection {#4201 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
      -id: 29287
      -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://compuverse.uk/comment/2036921"
      +editedAt: null
      +createdAt: DateTimeImmutable @1694983728 {#4214
        date: 2023-09-17 22:48:48.0 +02:00
      }
    }
    +root: App\Entity\EntryComment {#4210}
    +body: """
      It is my understanding that the ULN2003A (`U4` and `U5`) has integrated flyback diodes. From the datasheet:\n
      \n
      > Each consists of seven NPN Darlington pairs that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads.\n
      \n
      Good call on that ground plane. I’ll scoot the relays a little bit to the right. That should resolve the issue.\n
      \n
      Thanks for your feedback! :)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1694984775 {#4298
      date: 2023-09-17 23:06:15.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
      "@joulethief@compuverse.uk"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4301 …}
    +nested: Doctrine\ORM\PersistentCollection {#4305 …}
    +votes: Doctrine\ORM\PersistentCollection {#4307 …}
    +reports: Doctrine\ORM\PersistentCollection {#4308 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4310 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4312 …}
    -id: 29288
    -bodyTs: "'bit':54 'call':42 'cathod':34 'clamp':35 'common':33 'common-cathod':32 'consist':19 'darlington':23 'datasheet':17 'diod':14,36 'featur':26 'feedback':66 'flyback':13 'good':41 'ground':45 'high':28 'high-voltag':27 'induct':39 'integr':12 'issu':62 'littl':53 'll':48 'load':40 'npn':22 'output':30 'pair':24 'plane':46 'relay':51 'resolv':60 'right':57 'scoot':49 'seven':21 'switch':38 'thank':63 'u4':8 'u5':10 'uln2003a':7 'understand':4 'voltag':29"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3039118"
    +editedAt: null
    +createdAt: DateTimeImmutable @1694984775 {#4295
      date: 2023-09-17 23:06:15.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4210}
  +body: "You’re welcome!"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695019132 {#4335
    date: 2023-09-18 08:38:52.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@joulethief@compuverse.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4338 …}
  +nested: Doctrine\ORM\PersistentCollection {#4342 …}
  +votes: Doctrine\ORM\PersistentCollection {#4344 …}
  +reports: Doctrine\ORM\PersistentCollection {#4345 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4347 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4349 …}
  -id: 29292
  -bodyTs: "'re':2 'welcom':3"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://compuverse.uk/comment/2043893"
  +editedAt: null
  +createdAt: DateTimeImmutable @1695019132 {#4332
    date: 2023-09-18 08:38:52.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
27 DENIED edit
App\Entity\EntryComment {#4330
  +user: App\Entity\User {#4193 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4293
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: App\Entity\EntryComment {#4210
      +user: App\Entity\User {#4193 …}
      +entry: App\Entity\Entry {#2412}
      +magazine: App\Entity\Magazine {#266}
      +image: null
      +parent: null
      +root: null
      +body: """
        I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
        \n
        Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
        \n
        Other than that, I’d happily welcome more PCB and/or personal project discussions!
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1695019134 {#4216
        date: 2023-09-18 08:38:54.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@Starfighter@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4208 …}
      +nested: Doctrine\ORM\PersistentCollection {#4206 …}
      +votes: Doctrine\ORM\PersistentCollection {#4204 …}
      +reports: Doctrine\ORM\PersistentCollection {#4201 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
      -id: 29287
      -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://compuverse.uk/comment/2036921"
      +editedAt: null
      +createdAt: DateTimeImmutable @1694983728 {#4214
        date: 2023-09-17 22:48:48.0 +02:00
      }
    }
    +root: App\Entity\EntryComment {#4210}
    +body: """
      It is my understanding that the ULN2003A (`U4` and `U5`) has integrated flyback diodes. From the datasheet:\n
      \n
      > Each consists of seven NPN Darlington pairs that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads.\n
      \n
      Good call on that ground plane. I’ll scoot the relays a little bit to the right. That should resolve the issue.\n
      \n
      Thanks for your feedback! :)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1694984775 {#4298
      date: 2023-09-17 23:06:15.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
      "@joulethief@compuverse.uk"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4301 …}
    +nested: Doctrine\ORM\PersistentCollection {#4305 …}
    +votes: Doctrine\ORM\PersistentCollection {#4307 …}
    +reports: Doctrine\ORM\PersistentCollection {#4308 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4310 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4312 …}
    -id: 29288
    -bodyTs: "'bit':54 'call':42 'cathod':34 'clamp':35 'common':33 'common-cathod':32 'consist':19 'darlington':23 'datasheet':17 'diod':14,36 'featur':26 'feedback':66 'flyback':13 'good':41 'ground':45 'high':28 'high-voltag':27 'induct':39 'integr':12 'issu':62 'littl':53 'll':48 'load':40 'npn':22 'output':30 'pair':24 'plane':46 'relay':51 'resolv':60 'right':57 'scoot':49 'seven':21 'switch':38 'thank':63 'u4':8 'u5':10 'uln2003a':7 'understand':4 'voltag':29"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3039118"
    +editedAt: null
    +createdAt: DateTimeImmutable @1694984775 {#4295
      date: 2023-09-17 23:06:15.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4210}
  +body: "You’re welcome!"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695019132 {#4335
    date: 2023-09-18 08:38:52.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@joulethief@compuverse.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4338 …}
  +nested: Doctrine\ORM\PersistentCollection {#4342 …}
  +votes: Doctrine\ORM\PersistentCollection {#4344 …}
  +reports: Doctrine\ORM\PersistentCollection {#4345 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4347 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4349 …}
  -id: 29292
  -bodyTs: "'re':2 'welcom':3"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://compuverse.uk/comment/2043893"
  +editedAt: null
  +createdAt: DateTimeImmutable @1695019132 {#4332
    date: 2023-09-18 08:38:52.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
28 DENIED moderate
App\Entity\EntryComment {#4330
  +user: App\Entity\User {#4193 …}
  +entry: App\Entity\Entry {#2412
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +magazine: App\Entity\Magazine {#266
      +icon: Proxies\__CG__\App\Entity\Image {#247 …}
      +name: "askelectronics@discuss.tchncs.de"
      +title: "askelectronics"
      +description: """
        **For questions about component-level electronic circuits, tools and equipment.**\n
        \n
        Rules\n
        -----\n
        \n
        1: Be nice.\n
        \n
        2: Be on-topic (eg: *Electronic*, not *electrical*).\n
        \n
        3: No commercial stuff, buying, selling or valuations.\n
        \n
        4: Be safe.\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 154
      +entryCommentCount: 1230
      +postCount: 1
      +postCommentCount: 4
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729413608 {#276
        date: 2024-10-20 10:40:08.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#238 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
      +entries: Doctrine\ORM\PersistentCollection {#181 …}
      +posts: Doctrine\ORM\PersistentCollection {#139 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
      +bans: Doctrine\ORM\PersistentCollection {#118 …}
      +reports: Doctrine\ORM\PersistentCollection {#104 …}
      +badges: Doctrine\ORM\PersistentCollection {#82 …}
      +logs: Doctrine\ORM\PersistentCollection {#72 …}
      +awards: Doctrine\ORM\PersistentCollection {#61 …}
      +categories: Doctrine\ORM\PersistentCollection {#1820 …}
      -id: 11
      +apId: "askelectronics@discuss.tchncs.de"
      +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
      +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
      +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
      +apInboxUrl: "https://discuss.tchncs.de/inbox"
      +apDomain: "discuss.tchncs.de"
      +apPreferredUsername: "askelectronics"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1727247714 {#270
        date: 2024-09-25 09:01:54.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1687144409 {#272
        date: 2023-06-19 05:13:29.0 +02:00
      }
    }
    +image: null
    +domain: Proxies\__CG__\App\Entity\Domain {#1915 …}
    +slug: "PCB-Design-Review-Request-ESP32-Smart-Relay-Board"
    +title: "PCB Design Review Request: ESP32 Smart Relay Board"
    +url: null
    +body: """
      Hi, this post is structured similarly to r/PrintedCircuitBoard 's review request format. Since we don’t have any PCB communities over here yet, I thought that this might fit in here and can maybe spark some friendly discussion.\n
      \n
      This is a relay board controlling electrically driven windows and blinds. For this purpose it has some additional connectors to a weather station, interior sensors and an LCD screen.\n
      \n
      It is replacing a ~20 year old board that has started to develop some annoying quirks. I’ve mostly copied what the original board did and adjusted it for the ESP32. This is not a production board and if all goes well, I will only ever assemble a single one of these.\n
      \n
      The primary usage scenario is that the MCU will monitor the weather station and then actuate the motor groups (M1 - M6 connected on `J3` - `J8`) to keep the indoors temperature and humidity in check.\n
      \n
      At least during summer time the board will likely run 24/7 and will hopefully be used for a number of years. For maintenance reasons I’ve tried to keep it simple and the component count low.\n
      \n
      Mains power is supplied from `J1` and being fed to the motors via the relays. `PS1` converts the line voltage to +5V DC for the relay coils and some auxiliary components. The switching regulator `U2` steps that down to +3.3V for the MCU `U1` and IO Expander `U3`.\n
      \n
      The board size is mostly constrained by the preexisting mounting holes which gives me plenty of space to work with even with just a 2 layer board. The enclosure containing the mounts is installed indoors and is finger-pokey-tight.\n
      \n
      Jumper `JP1` allows me to supply the MCU devkit daughter board with +5V, should I ever replace it with a different one. Similarly `J11` exists for future expansion.\n
      \n
      `J10` mounts another daughter board (not included in review) facilitating communications with the weather station. Should the station ever need to be replaced I can swap in a new, matching board.\n
      \n
      There aren’t any high-speed connections on the board. The fastest one is likely the SPI connection to the LCD controller but I can slow it down in firmware if necessary.\n
      \n
      Regarding the DNP components: There are only 5 motors installed at the moment so I will cover the sixth slot with a piece of plastic for now. `R1` and `R2` will only be populated if the 10k pullup resistors integrated into the MCU are insufficient for typical baud rates.\n
      \n
      While it is not the first board I’ve designed, it is the first one carrying mains power (European grid 230V@50Hz). I’m using 2 oz copper to accommodate the motor currents within reasonably wide traces.\n
      \n
      In case anyone is interested, it will be running the ESPHome firmware to easily integrate with the Home-Assistant smart home solution. This also pushes firmware maintenance from me onto the ESPHome devs.\n
      \n
      3D render from front (no 3D model for relays `K**` and MCU board; 3D model for `J1` and `J2` is a stand-in of same outer dimensions): ![3D Front](https://discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)\n
      \n
      Orthographic view from front: ![Orthographic Front](https://discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)\n
      \n
      Schematic:\n
      \n
      ![Schematic](https://discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)\n
      \n
      PCB All layers (For reference: thickest traces are 2.5 mm / ~98.4 mils; thinnest traces are 0.25 mm / ~9.84 mils): ![All layers](https://discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)\n
      \n
      PCB Front layers excluding Silkscreen: ![Front layers](https://discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)\n
      \n
      PCB Back layers + Front Fab layer: ![Back layers](https://discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)
      """
    +type: "article"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 6
    +favouriteCount: 18
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1695038978 {#2410
      date: 2023-09-18 14:09:38.0 +02:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1884 …}
    +votes: Doctrine\ORM\PersistentCollection {#1973 …}
    +reports: Doctrine\ORM\PersistentCollection {#1959 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1927 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2442 …}
    +badges: Doctrine\ORM\PersistentCollection {#2440 …}
    +children: []
    -id: 2246
    -titleTs: "'board':8 'design':2 'esp32':5 'pcb':1 'relay':7 'request':4 'review':3 'smart':6"
    -bodyTs: "'+3.3':230 '+5':211,293 '/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':535 '/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':585 '/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':574 '/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':540 '/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':564 '/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':526 '0.25':556 '10k':410 '2':264,448 '2.5':549 '20':72 '230v':443 '24/7':164 '3d':494,499,507,522 '5':381 '50hz':444 '9.84':558 '98.4':551 'accommod':452 'actuat':135 'addit':56 'adjust':94 'allow':283 'also':484 'annoy':82 'anoth':312 'anyon':462 'aren':342 'assembl':114 'assist':479 'auxiliari':220 'back':576,581 'baud':421 'blind':49 'board':43,75,91,104,160,241,266,291,314,340,351,429,506 'carri':438 'case':461 'check':153 'coil':217 'communic':320 'communiti':20 'compon':187,221,377 'connect':141,348,359 'connector':57 'constrain':245 'contain':269 'control':44,363 'convert':206 'copi':87 'copper':450 'count':188 'cover':390 'current':455 'daughter':290,313 'dc':213 'design':432 'dev':493 'develop':80 'devkit':289 'differ':302 'dimens':521 'discuss':38 'discuss.tchncs.de':525,534,539,563,573,584 'discuss.tchncs.de/pictrs/image/1bc119bd-4eca-49d1-9985-72491ed37276.png)':533 'discuss.tchncs.de/pictrs/image/45aad0ae-f5a7-48d9-b4ec-ed2e70903c00.png)':583 'discuss.tchncs.de/pictrs/image/59d2d309-567c-4827-bc0d-56cccf5e37d1.png)':572 'discuss.tchncs.de/pictrs/image/9ae85da3-3d33-4e58-b616-47c427a9dadb.png)':538 'discuss.tchncs.de/pictrs/image/acbcd718-af07-499b-a7c6-af473b2bb7d1.png)':562 'discuss.tchncs.de/pictrs/image/e10e7dc8-b4af-4500-8892-b720fc872521.png)':524 'dnp':376 'driven':46 'easili':473 'electr':45 'enclosur':268 'esp32':98 'esphom':470,492 'european':441 'even':260 'ever':113,297,328 'exclud':568 'exist':306 'expand':238 'expans':309 'fab':579 'facilit':319 'fastest':353 'fed':198 'finger':278 'finger-pokey-tight':277 'firmwar':371,471,486 'first':428,436 'fit':29 'format':12 'friend':37 'front':497,523,530,532,566,570,578 'futur':308 'give':252 'goe':108 'grid':442 'group':138 'hi':1 'high':346 'high-spe':345 'hole':250 'home':478,481 'home-assist':477 'hope':167 'humid':151 'includ':316 'indoor':148,274 'instal':273,383 'insuffici':418 'integr':413,474 'interest':464 'interior':62 'io':237 'j1':195,510 'j10':310 'j11':305 'j2':512 'j3':143 'j8':144 'jp1':282 'jumper':281 'k':503 'keep':146,182 'layer':265,543,561,567,571,577,580,582 'lcd':66,362 'least':155 'like':162,356 'line':208 'low':189 'm':446 'm1':139 'm6':140 'main':190,439 'mainten':176,487 'match':339 'mayb':34 'mcu':127,234,288,416,505 'might':28 'mil':552,559 'mm':550,557 'model':500,508 'moment':386 'monitor':129 'most':86,244 'motor':137,201,382,454 'mount':249,271,311 'necessari':373 'need':329 'new':338 'number':172 'old':74 'one':117,303,354,437 'onto':490 'origin':90 'orthograph':527,531 'outer':520 'oz':449 'pcb':19,541,565,575 'piec':396 'plastic':398 'plenti':254 'pokey':279 'popul':407 'post':3 'power':191,440 'preexist':248 'primari':121 'product':103 'ps1':205 'pullup':411 'purpos':52 'push':485 'quirk':83 'r/printedcircuitboard':8 'r1':401 'r2':403 'rate':422 'reason':177,457 'refer':545 'regard':374 'regul':224 'relay':42,204,216,502 'render':495 'replac':70,298,332 'request':11 'resistor':412 'review':10,318 'run':163,468 'scenario':123 'schemat':536,537 'screen':67 'sensor':63 'silkscreen':569 'similar':6,304 'simpl':184 'sinc':13 'singl':116 'sixth':392 'size':242 'slot':393 'slow':367 'smart':480 'solut':482 'space':256 'spark':35 'speed':347 'spi':358 'stand':516 'stand-in':515 'start':78 'station':61,132,324,327 'step':226 'structur':5 'summer':157 'suppli':193,286 'swap':335 'switch':223 'temperatur':149 'thickest':546 'thinnest':553 'thought':25 'tight':280 'time':158 'trace':459,547,554 'tri':180 'typic':420 'u1':235 'u2':225 'u3':239 'usag':122 'use':169,447 'v':212,231,294 've':85,179,431 'via':202 'view':528 'voltag':209 'weather':60,131,323 'well':109 'wide':458 'window':47 'within':456 'work':258 'year':73,174 'yet':23"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1695047280
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/post/3401691"
    +editedAt: DateTimeImmutable @1695031518 {#1850
      date: 2023-09-18 12:05:18.0 +02:00
    }
    +createdAt: DateTimeImmutable @1694982780 {#2420
      date: 2023-09-17 22:33:00.0 +02:00
    }
  }
  +magazine: App\Entity\Magazine {#266}
  +image: null
  +parent: App\Entity\EntryComment {#4293
    +user: Proxies\__CG__\App\Entity\User {#1970 …}
    +entry: App\Entity\Entry {#2412}
    +magazine: App\Entity\Magazine {#266}
    +image: null
    +parent: App\Entity\EntryComment {#4210
      +user: App\Entity\User {#4193 …}
      +entry: App\Entity\Entry {#2412}
      +magazine: App\Entity\Magazine {#266}
      +image: null
      +parent: null
      +root: null
      +body: """
        I haven’t got enough time on my hands right now to review the whole desingn, but one thing that jumps to mind is that you’ll want to use an antiparallel diode on each relay coil to suppress the negative voltage spikes when switching it off.\n
        \n
        Be sure to keep adequate distance between high and low voltage traces. The ground plane seems awfully close to the N trace.\n
        \n
        Other than that, I’d happily welcome more PCB and/or personal project discussions!
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 4
      +score: 0
      +lastActive: DateTime @1695019134 {#4216
        date: 2023-09-18 08:38:54.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@Starfighter@discuss.tchncs.de"
      ]
      +children: Doctrine\ORM\PersistentCollection {#4208 …}
      +nested: Doctrine\ORM\PersistentCollection {#4206 …}
      +votes: Doctrine\ORM\PersistentCollection {#4204 …}
      +reports: Doctrine\ORM\PersistentCollection {#4201 …}
      +favourites: Doctrine\ORM\PersistentCollection {#4197 …}
      +notifications: Doctrine\ORM\PersistentCollection {#4195 …}
      -id: 29287
      -bodyTs: "'adequ':52 'and/or':79 'antiparallel':32 'aw':64 'close':65 'coil':37 'd':74 'desingn':16 'diod':33 'discuss':82 'distanc':53 'enough':5 'got':4 'ground':61 'hand':9 'happili':75 'haven':2 'high':55 'jump':21 'keep':51 'll':27 'low':57 'mind':23 'n':68 'negat':41 'one':18 'pcb':78 'person':80 'plane':62 'project':81 'relay':36 'review':13 'right':10 'seem':63 'spike':43 'suppress':39 'sure':49 'switch':45 'thing':19 'time':6 'trace':59,69 'use':30 'voltag':42,58 'want':28 'welcom':76 'whole':15"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://compuverse.uk/comment/2036921"
      +editedAt: null
      +createdAt: DateTimeImmutable @1694983728 {#4214
        date: 2023-09-17 22:48:48.0 +02:00
      }
    }
    +root: App\Entity\EntryComment {#4210}
    +body: """
      It is my understanding that the ULN2003A (`U4` and `U5`) has integrated flyback diodes. From the datasheet:\n
      \n
      > Each consists of seven NPN Darlington pairs that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads.\n
      \n
      Good call on that ground plane. I’ll scoot the relays a little bit to the right. That should resolve the issue.\n
      \n
      Thanks for your feedback! :)
      """
    +lang: "en"
    +isAdult: false
    +favouriteCount: 4
    +score: 0
    +lastActive: DateTime @1694984775 {#4298
      date: 2023-09-17 23:06:15.0 +02:00
    }
    +ip: null
    +tags: null
    +mentions: [
      "@Starfighter@discuss.tchncs.de"
      "@joulethief@compuverse.uk"
    ]
    +children: Doctrine\ORM\PersistentCollection {#4301 …}
    +nested: Doctrine\ORM\PersistentCollection {#4305 …}
    +votes: Doctrine\ORM\PersistentCollection {#4307 …}
    +reports: Doctrine\ORM\PersistentCollection {#4308 …}
    +favourites: Doctrine\ORM\PersistentCollection {#4310 …}
    +notifications: Doctrine\ORM\PersistentCollection {#4312 …}
    -id: 29288
    -bodyTs: "'bit':54 'call':42 'cathod':34 'clamp':35 'common':33 'common-cathod':32 'consist':19 'darlington':23 'datasheet':17 'diod':14,36 'featur':26 'feedback':66 'flyback':13 'good':41 'ground':45 'high':28 'high-voltag':27 'induct':39 'integr':12 'issu':62 'littl':53 'll':48 'load':40 'npn':22 'output':30 'pair':24 'plane':46 'relay':51 'resolv':60 'right':57 'scoot':49 'seven':21 'switch':38 'thank':63 'u4':8 'u5':10 'uln2003a':7 'understand':4 'voltag':29"
    +ranking: 0
    +commentCount: 0
    +upVotes: 0
    +downVotes: 0
    +visibility: "visible             "
    +apId: "https://discuss.tchncs.de/comment/3039118"
    +editedAt: null
    +createdAt: DateTimeImmutable @1694984775 {#4295
      date: 2023-09-17 23:06:15.0 +02:00
    }
  }
  +root: App\Entity\EntryComment {#4210}
  +body: "You’re welcome!"
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1695019132 {#4335
    date: 2023-09-18 08:38:52.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Starfighter@discuss.tchncs.de"
    "@joulethief@compuverse.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#4338 …}
  +nested: Doctrine\ORM\PersistentCollection {#4342 …}
  +votes: Doctrine\ORM\PersistentCollection {#4344 …}
  +reports: Doctrine\ORM\PersistentCollection {#4345 …}
  +favourites: Doctrine\ORM\PersistentCollection {#4347 …}
  +notifications: Doctrine\ORM\PersistentCollection {#4349 …}
  -id: 29292
  -bodyTs: "'re':2 'welcom':3"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://compuverse.uk/comment/2043893"
  +editedAt: null
  +createdAt: DateTimeImmutable @1695019132 {#4332
    date: 2023-09-18 08:38:52.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
29 DENIED edit
App\Entity\Magazine {#266
  +icon: Proxies\__CG__\App\Entity\Image {#247 …}
  +name: "askelectronics@discuss.tchncs.de"
  +title: "askelectronics"
  +description: """
    **For questions about component-level electronic circuits, tools and equipment.**\n
    \n
    Rules\n
    -----\n
    \n
    1: Be nice.\n
    \n
    2: Be on-topic (eg: *Electronic*, not *electrical*).\n
    \n
    3: No commercial stuff, buying, selling or valuations.\n
    \n
    4: Be safe.\n
    \n
    ---
    """
  +rules: null
  +subscriptionsCount: 1
  +entryCount: 154
  +entryCommentCount: 1230
  +postCount: 1
  +postCommentCount: 4
  +isAdult: false
  +customCss: null
  +lastActive: DateTime @1729413608 {#276
    date: 2024-10-20 10:40:08.0 +02:00
  }
  +markedForDeletionAt: null
  +tags: null
  +moderators: Doctrine\ORM\PersistentCollection {#238 …}
  +ownershipRequests: Doctrine\ORM\PersistentCollection {#234 …}
  +moderatorRequests: Doctrine\ORM\PersistentCollection {#223 …}
  +entries: Doctrine\ORM\PersistentCollection {#181 …}
  +posts: Doctrine\ORM\PersistentCollection {#139 …}
  +subscriptions: Doctrine\ORM\PersistentCollection {#201 …}
  +bans: Doctrine\ORM\PersistentCollection {#118 …}
  +reports: Doctrine\ORM\PersistentCollection {#104 …}
  +badges: Doctrine\ORM\PersistentCollection {#82 …}
  +logs: Doctrine\ORM\PersistentCollection {#72 …}
  +awards: Doctrine\ORM\PersistentCollection {#61 …}
  +categories: Doctrine\ORM\PersistentCollection {#1820 …}
  -id: 11
  +apId: "askelectronics@discuss.tchncs.de"
  +apProfileId: "https://discuss.tchncs.de/c/askelectronics"
  +apPublicUrl: "https://discuss.tchncs.de/c/askelectronics"
  +apFollowersUrl: "https://discuss.tchncs.de/c/askelectronics/followers"
  +apInboxUrl: "https://discuss.tchncs.de/inbox"
  +apDomain: "discuss.tchncs.de"
  +apPreferredUsername: "askelectronics"
  +apDiscoverable: true
  +apManuallyApprovesFollowers: null
  +privateKey: null
  +publicKey: null
  +apFetchedAt: DateTime @1727247714 {#270
    date: 2024-09-25 09:01:54.0 +02:00
  }
  +apDeletedAt: null
  +apTimeoutAt: null
  +visibility: "visible             "
  +createdAt: DateTimeImmutable @1687144409 {#272
    date: 2023-06-19 05:13:29.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS DENIED
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details