Skip to the content
2 layers100 × 50 mmBus sonar10, the printed circuit board in 3D

Connect 10 sonar modules to a bus.

Size
100 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
40
Nets
47
Pads
228
Tracks, vias
455, 29
Pours
2
Routed
Yes
KiCad
KiCad 4
Created
29 May 2015
Updated
14 Jun 2015

Overview

Bus sonar10 is an open-source printed circuit board by makerbus, from the makerbus/bus_sonar10 repository on GitHub. It is a 2-layer board of 100 × 50 mm with 40 parts on 47 nets, routed with 455 tracks and 29 vias.

It is built around the MCP2562-H/P, 74HCT08D and 74HCT32D, with the LM2940S-5.0, 302-S401 and MJTP1243 among its other parts. Its parts include 11 capacitors, 10 resistors, 5 ICs, 2 diodes and 1 connector. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

7

README

README.md

bus_sonar10

The Sonar10 board is used to drive up to 10 HC-SR04 sonar modules.

Currently, everything is located in the rev_a directory.

Revision A

The revision A schematic is available as either bus_sonar10.pdf or as bus_sonar10.svg.

Logic ground comes in on N1 (pins 3 and 4). Logic power comes in on N1 (pins 1 and 2.) The logic power is routed to C1, U2 (a LM2940-5.0), C4, C5, and R1. The C4/R1 series combination is used to bring the ESR of C5 to less than 1 ohm as required by the LM2940 spec. sheet. Capacitors C6, C7, C8, C9, and C11 provide filter capacitors for the various IC's.

The MCP2562 CAN bus transceiver (U3) is connected to CANH (N1 pin 5) and CANL (N1 pin 6). In addition, R6 and J1 can be used to enable a 120 ohm CAN bus termination resistor. VIO (U3 pin 5) is connected to 5V since all digital signals on this board are running at 5V.

The AND gate at U1A is used to or the signals from the MCP2562 TXD (U3 pin 1) with the TXD signal on the 3.3V FTDI USB serial cable (N2 pin 4). R4 is a 100K ohm pull resistor that pulls serial cable high if no serial cable is plugged in. (There should be a similar 100K pull-up resistor on the MCP2662 to pull it high if the MCP2562 CAN bus transceiver is not plugged in. It was accidently left out.) The output of the 74HCT08 and gate is directed to RXD (U4 pin 2) of the ATmega328P. The 74HCT08 is used to level shift from 3.3V on the serial cable up to 5V output on U1A. (Note: in Rev. A the TXD and RXD pins on U3 are accidentally swapped.) Lastly, the TXD output from the processor is sent to the R2/R3 voltage divider that takes the 0-5V signal down to 0-3V.

One other comment about the serial cable. If a 5V FTDI serial cable gets plugged into N2, nothing bad happens because U1 has 5V tolerant inputs.

The reset signal is derived from RTS on the serial cable (N2 pin 6.) Normally, RTS on the serial cable idles at 3.3V high, which is buffered through AND gate U1B to 5V. The othe end of C10 is pulled up to 5V through 10K resistor (R7). Since both ends of C10 are at 5V, C10 is discharged and has 0V across it. When RTS goes low, the output of U1B goes low. This immediately pulls the #RESET line low and that resets the processor on its #RESET line (U4 pin 1). Now R7 has 5V across it and it starts to charge C10 up to 5V. When downloading is done, The serial cable signal RTS goes back high again. This the causes the U1B AND output to go high (5V). This causes the other end of C10 to attempt to pull the #RESET line up to 10V (since C10 has 5V across it.) Luckily the Schottky diode D1 to clamp the voltage on the #RESET line to 5.2V and rapidly discharge C10 again. Lastly, the button SW1 can be used to trigger a reset as well.

(There was a theory that the AVR counter/timers could be used to time the width of a pulse. For this reason, all sonar echos were run into the input pins of 5 (OC2B), 11 (OC0B), 12 (OC0A), 15 (OC1A), 16 (OC1B), and 17 (OC2A). Alas, this theory turned out to be false.)

Order to support 10 sonars, pairs of echo return signals from the HC-SR04 modules are combined using the 74HCT32 quad OR gate U5. By using these 4 OR gates, the 10 sonar echos are directed to 6 input pins. This is good because 6 input pins are all that is available.

All the connections are summerized in the table below:

SonarTriggerEcho
PinArduinoPort-Bit Conn-PinPinArduinoCounterPort-BitPCINTConn-Pin
024A1PC1N3-515D9OC1APB1PCINT1N3-3
119D13PB5N3-13N3-11
223A0PC0N3-2112D6OC0APD6PCINT22N3-19
318D12PB4N3-2911D5OC0BPD5PCINT21N3-27
414D8PB0N3-37N3-35
526A3PC3N4-517D11OC2APB3PCINT3N4-3
625A2PC2N4-13N4-11
713D7PD7N4-2116D10OC1BPB2PCINT2N4-19
86D4PD4N4-295D3OC2BPD3PCINT19N4-27
94D2PD2N4-37N4-35

Issues

  • The TXD and RXD pins on the MCP2562 (U3 pins 1 and 4) are swapped. [x]

  • It would be nice to have an LED that can be blinked. [x]

  • Tie unused inputs of U1 to one rail or the other. [x]

  • Put a 100K pull up on U1A (pin 1) to deal with MCP2652 not being plugged in.. [x]

  • Think about finding an extra pin for STBY on the MCP2652 rather than just grounding it. [x]

  • References for D1 and R7 are transposed. [x]

Rev. C

  • No ISP connector.

Software

The software is developed using the arduino-mk package. You may have to edit the Makefile if you are not using a standard Ubuntu configuration and/or an 3.3V FTDI USB to serial cable.

The software is in bus_sonar10.ino.

To build the code:

text
    make

To upload the code to bus_sonar10 over the FTDI serial cable:

text
    make upload

Parts

40
QtyValueFootprintReferences
6.1uFbus_sonar10:Capacitor3MMDiscRM2.5C4, C6, C7, C8, C9, C11
43MM_HOLEbus_sonar10:MountingHole_3mmH1, H2, H3, H4
3100Kbus_sonar10:Resistor_Horizontal_400R4, R5, R8
2.47bus_sonar10:Resistor_Horizontal_400R1, R6
218pFbus_sonar10:Capacitor3MMDiscRM2.5C1, C3
222uFbus_sonar10:Capacitor4x3RM2-5_RevBC2, C5
2302-S401bus_sonar10:Pin_Header_Straight_2x20_ShroudedN3, N4
1100Kbus_sonar10:Pin_Header_Straight_1x09R10
110Kbus_sonar10:Resistor_Horizontal_400R7
116MHzbus_sonar10:Crystal_HC49-U_VerticalX1
11uFbus_sonar10:Capacitor3MMDiscRM2.5C10
122Kbus_sonar10:Resistor_Horizontal_400R2
133Kbus_sonar10:Resistor_Horizontal_400R3
1470bus_sonar10:Resistor_Horizontal_400R9
174HCT08bus_sonar10:DIP-14__300U1
174HCT32bus_sonar10:DIP-14__300U5
1ATMEGA328_DIP28bus_sonar10:DIP-28__300U4
1BUS_SLAVE_HEADERbus_sonar10:Pin_Header_Straight_2x05_ShroudedN1
1FTDI_HEADERbus_sonar10:Pin_Header_Straight_1x06N2
1LEDbus_sonar10:T1_LEDD2
1LM2940bus_sonar10:TO-220_Neutral123_Horizontal_LargePadsU2
1MCP2562bus_sonar10:DIP-8__300U3
1MJTP1243bus_sonar10:Button_6.5MMSW1
1OSHW_LOGObus_sonar10:OSHW_LOGO_400milG1
1SD101C-TRbus_sonar10:Diode_DO-41_SOD81_Horizontal_RM10D1
1TERMINATE_JUMPERbus_sonar10:Pin_Header_Straight_1x03J1

More from makerbus/bus_sonar10

1
  • 2 layers100 × 50 mmBus sonar10, the printed circuit board in 3D

    Bus sonar10

    makerbus/bus_sonar10

    Connect 10 sonar modules to a bus.

    36 parts

Similar boards

  • 2 layers100 × 50 mmBus bridge encoders sonar, the printed circuit board in 3D

    Bus bridge encoders sonar

    makerbus/bus_bridge_encoders_sonar

    A PCB that connects a dual H-bridge, dual quadrature shaft encoders and some sonars to a bus.

    63 parts
  • 2 layers100 × 50 mmBus beaglebone, the printed circuit board in 3D

    Bus beaglebone

    makerbus/bus_beaglebone

    Beagle Bone Black with a Bus Connector

    49 parts
  • 2 layers100 × 50 mmBus raspberry pi, the printed circuit board in 3D

    Bus raspberry pi

    makerbus/bus_raspberry_pi

    Raspberry Pi that can be connected to a bus.

    47 parts
  • 2 layers100 × 100 mmBusino, the printed circuit board in 3D

    Busino

    waynegramlich/busino

    Arduino with a Bus

    65 parts
  • 4 layers70 × 50 mmStage0 5, the printed circuit board in 3D

    Stage0 5

    essen48183/MinAI

    A single-file C++ transformer built to be read — every mechanism of a modern LLM in ~780 lines, with a textbook companion.

    72 partsMIT
  • 2 layers60 × 34 mmMiniNDP, the printed circuit board in 3D

    MiniNDP

    bkw777/NODE_DATAPAC

    Reproduction & documentation of Node Systems DATAPAC

    21 parts7
  • 2 layers107 × 58 mmTfi board, the printed circuit board in 3D

    Tfi board

    via/tfi-board

    Schematics and PCB for tfi computer

    98 parts1MIT
  • 2 layers297.2 × 180.3 mm8bit computer, the printed circuit board in 3D

    8bit computer

    vascofazza/8bit-cpu

    Schematics & code for my 74LS-based 8-bit MK1 CPU

    377 parts317MIT

Questions

How big is the Bus sonar10 PCB?

It measures 100 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Bus sonar10 use?

40 parts, built around the MCP2562-H/P, 74HCT08D, 74HCT32D and LM2940S-5.0. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Bus sonar10 KiCad files?

From the makerbus/bus_sonar10 repository on GitHub, at the commit this page was made from: the board is rev_c/bus_sonar10.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bus sonar10 design in my own project?

Its repository states no licence, so its author keeps all rights: ask makerbus before reusing the design.