Skip to the content
PCBKitNew board
2 layers89.9 × 71 mmFunction generator, the printed circuit board in 3D

Function generator

AaronC81/bfg

Basic Function Generator - a simple function generator for embedded electronics

Size
89.9 × 71 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
39
Pads
99
Tracks, vias
160, 13
Pours
5
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
10 Jul 2020
Updated
26 Aug 2020

Overview

Function generator is an open-source printed circuit board by AaronC81, from the AaronC81/bfg repository on GitHub. It is a 2-layer board of 89.9 × 71 mm with 25 parts on 39 nets, routed with 160 tracks and 13 vias.

It is built around the ATMEGA328P-PU and AD8052M/TR. Its parts include 9 resistors, 5 ICs, 3 capacitors, 2 connectors and 1 switch. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

The BFG - Basic Function Generator

The BFG is a small, minimalistic function generator based around the AD9833, controlled by an ATmega328P with a lovely little OLED display and rotary encoder.

An assembled BFG, with an OLED display, rotary encoder, three generation ICs, and an ATmega328P microcontroller.

The BFG's display, showing frequency, wave type, power switch, and amplitude.

The oscilloscope output from the BFG, with the BFG and scope showing the same frequency to 3dp.

  • Sine, square and triangle waves
  • Powered over Micro USB
  • Output range of 0 to 5 volts
  • Theoretical maximum output frequency of 12.5MHz

At high frequencies (>2MHz) the range of voltages begins to narrow; for example, a sine wave at 5MHz set to an amplitude of 5V only actually oscillates between about 1.5V and 4V. These frequencies are a tad much for my poor USB oscilloscope to handle, so I can't accurately measure the practical limits.

I built this for two main reasons:

  • To have a basic function generator for embedded projects
  • To learn simple surface-mount soldering

How it Works

As the rather lovely silkscreen on the board suggests, functions are generated by three steps:

  1. Generate: The AD9833 generates a low-voltage signal, about 0.65V
  2. Amplify: The AD8052 op-amp amplifies the signal to 5V
  3. Scale: The MCP4131 digital potentiometer divides the signal down to the desired amplitude

Repo

cad contains KiCad files for the PCB.

firmware contains a platform.io project for the ATmega328P's firmware.

Parts

25
QtyValueFootprintReferences
44.7kResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR1, R2, R3, R12
34.7Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR9, R10, R11
222pFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC2, C3
110Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR8
110uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1
116MHzCrystal:Crystal_HC49-4H_VerticalY1
1680Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR7
1AD8052Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1AD9833_BreakoutConnector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalU4
1ATmega328P-PUPackage_DIP:DIP-28_W7.62mm_SocketU1
1Conn_01x02_FemaleConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ2
1MCP4131Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU3
1Rotary_Encoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC12E-Switch_Vertical_H20mmSW1
1SSD1306_128x32Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalU2
1USB_B_Micro_NoShieldConnector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_VerticalJ1

The 21 most common of 25 parts.

Questions

How big is the Function generator PCB?

It measures 89.9 × 71 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Function generator use?

25 parts, built around the ATMEGA328P-PU and AD8052M/TR. 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 Function generator KiCad files?

From the AaronC81/bfg repository on GitHub, at the commit this page was made from: the board is cad/function-generator.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Function generator design in my own project?

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

Similar boards

  • 2 layers98.8 × 97.4 mmNeOSensorV4 panel, the printed circuit board in 3D

    NeOSensorV4 panel

    fthiebolt/neOCampus-arduino

    neOCampus Arduino | home of the neOSensors end-devices

    278 parts5
  • 2 layers68.8 × 53.6 mmZArduino, the printed circuit board in 3D

    ZArduino

    zmaker/arduino_cookbook

    gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

    46 parts269
  • 2 layers76.3 × 122.8 mmDiscipad pcb, the printed circuit board in 3D

    Discipad pcb

    coseyfannitutti/discipad

    17-key numpad assembled with only through hole components, including usb type-c

    63 parts221GPL-3.0
  • 2 layers111.3 × 106.4 mmSuper Sixteen v1, the printed circuit board in 3D

    Super Sixteen v1

    matthewcieplak/super-sixteen

    Code and schematics for the Super Sixteen Eurorack sequencer

    141 parts171
  • 2 layers247.6 × 99.2 mmRomeo pcb, the printed circuit board in 3D

    Romeo pcb

    coseyfannitutti/romeo

    Staggered 40% keyboard pcb that can be assembled with only through hole components, including USB Type-C

    138 parts148GPL-3.0
  • 2 layers90 × 140 mmDrumkid, the printed circuit board in 3D

    Drumkid

    mattybrad/drumkid

    Version 4 was the first successful working design, with full code, schematics, Gerbers, etc available on GitHub.

    70 parts137
  • 2 layers238.1 × 375.5 mmFramework, the printed circuit board in 3D

    Framework

    stevennguyen/framework

    Ortholinear keyboard with a knob

    197 parts131
  • 2 layersLM80C R6, the printed circuit board in 3D

    LM80C R6

    leomil72/LM80C

    A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

    153 parts123GPL-3.0