Skip to the content
PCBKitNew board
2 layers56.9 × 45 mmTempLoggerNG, the printed circuit board in 3D

Four channel pt-100 temperature logging device using an ADS1248 and an ATMEGA328p with V-USB

Size
56.9 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
36
Pads
169
Tracks, vias
552, 23
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
30 Jun 2016
Updated
11 Oct 2026

Overview

TempLoggerNG is an open-source printed circuit board by miree, from the miree/tempLoggerNG repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 56.9 × 45 mm with 29 parts on 36 nets, routed with 552 tracks and 23 vias.

It is built around the ATMEGA328-PU and ADS1248IPW. Its parts include 9 capacitors, 6 resistors, 6 connectors, 4 transistors and 3 ICs. It belongs with the sensors and measurement boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

tempLoggerNG

A four-channel PT-100 temperature logging device built around a Texas Instruments ADS1248 precision delta-sigma ADC and an ATmega328p microcontroller with V-USB (software-only USB, no dedicated USB controller chip). The device connects directly to a PC over USB and is controlled by a small command-line tool that triggers measurements and logs resistance/temperature readings to a file.

https://emsyfs.blogspot.com/2017/07/pt-100-temperature-logger.html

Features

  • 4 independent PT-100 RTD input channels, read via a single ADS1248 24-bit ADC using its internal multiplexer and a programmable current source (IDAC) to excite each sensor.
  • Full 4-wire measurement on all 4 channels, eliminating lead resistance errors for accurate readings even with long sensor cables.
  • On-board diode temperature sensor, used to compensate for temperature drift of the measurement electronics themselves.
  • Linear temperature-compensation coefficients (a, b) stored in the ATmega's EEPROM, so each device can be individually calibrated and keeps its calibration across power cycles.
  • USB connectivity without a dedicated USB interface chip, using the V-USB software USB implementation on the ATmega328p.
  • A command-line host tool (templogger) that:
    • reads out the 4 channels at a configurable sample rate,
    • converts raw resistance to temperature using the Callendar-Van Dusen equation for PT-100 sensors,
    • logs readings (time, diode voltage, and temperature or resistance per channel) to a plain-text data file,
    • optionally applies/updates the temperature-compensation calibration,
    • can read/write individual ADS1248 configuration registers for debugging, and
    • includes a USB round-trip echo self-test.
  • Full KiCad hardware design (schematic, PCB layout, custom footprints, Specctra autorouter export, and a rendered schematic PDF) for building the device yourself.

Repository layout

text
firmware/     ATmega328p firmware (C), including the V-USB driver and
              the ADS1248 driver
commandline/  Host-side command-line tool ("templogger") using libusb
hardware/     KiCad schematic/PCB project, footprints, and a PDF of
              the schematic

Hardware

The design files live in hardware/ as a KiCad project (tempLoggerNG.pro, tempLoggerNG.sch, tempLoggerNG.kicad_pcb). A rendered PDF of the schematic is included as tempLoggerNG-schematic.pdf if you just want to look at the circuit without opening KiCad.

Note: This project was originally designed in an older version of KiCad (legacy schematic/library format). Opening it in a modern KiCad release will likely trigger the automatic "symbol rescue" feature, which copies any symbols it can't resolve against current libraries into local rescue files. This is expected and does not modify the original schematic; if KiCad has already run through this once in your checkout, you may need to clean up before committing anything.

Firmware

The firmware lives in firmware/ and is built with avr-gcc for the ATmega328p.

Requirements

  • avr-gcc / avr-libc (AVR toolchain)
  • avrdude
  • An AVR ISP programmer, such as a USBasp (the Makefile defaults to avrdude -c usbasp -p m328p — edit firmware/Makefile if you use a different programmer)

Build and flash

sh
cd firmware
make          # builds main.hex
make flash    # flashes main.hex to the ATmega328p via avrdude/usbasp

The ATmega328p is clocked at 12 MHz (F_CPU, set in main.c and the Makefile) and must be fused accordingly (external crystal, no clock-divide) before flashing application code — the fuse bytes are not set by this Makefile and must be programmed separately with avrdude, matching whatever oscillator is fitted on your board.

Other useful targets:

sh
make disasm   # disassemble main.bin with avr-objdump
make clean    # remove build artifacts

The firmware never leave debug output enabled in a flashed device — the comment in the Makefile is explicit that debug builds distort the timing the USB stack depends on.

Command-line tool

The host tool lives in commandline/ and talks to the device over USB using libusb (the classic 0.1 API, via libusb-config).

Requirements

  • gcc
  • libusb (0.1, providing libusb-config)

Build

sh
cd commandline
make

This produces a templogger binary. The device identifies itself over USB using obdev's free shared VID/PID (0x16C0/0x05DC) with manufacturer string www.obdev.at and product string Temp-Logger, so no special udev rule beyond generic USB access permissions is normally required — just make sure your user can access the USB device (e.g. via a udev rule granting access for that VID/PID, or by running as root).

Usage

text
usage: ./templogger [ch1] [ch2] [ch3] [ch4] [all] [options]

Specify which channel(s) to log with one or more of ch1, ch2, ch3, ch4, or all.

Options:

text
 -v          : verbose
 -q          : quiet
 -o filename : name of data file. default is "temperature.dat"
 -N n        : stop measurement after n samples
 -t t        : stop measurement after t seconds
 -d delta    : take a sample every delta seconds. Default is 0.5, min is 0.15
 -r          : read registers (for debugging purposes)
 -h          : output this help

Example — log channels 1 and 2 to run1.dat, once per second, for 60 samples:

sh
./templogger ch1 ch2 -o run1.dat -d 1 -N 60

Calibration procedure

Each device's on-board diode-based temperature compensation uses two coefficients, a and b, such that:

text
R_comp = a - b * V_diode
R      = R_measured - R_comp

To determine and store them for a given device:

  1. Connect a fixed, known resistor (e.g. 100 Ω) in place of a sensor.
  2. Disable temperature compensation with -x and log resistance directly with -R.
  3. Heat up the device itself (not the resistor) and record data while it cools down.
  4. Plot V_diode against R_measured - 100 Ω and fit a straight line to obtain a and b.
  5. Write the coefficients to the device's EEPROM:
    sh
    ./templogger -c <a> <b>

Once written, the coefficients are read back from EEPROM automatically and applied during normal logging unless -x is given.

Self-test

sh
./templogger test

Sends 1000 random values to the device and checks that they are echoed back correctly, as a basic USB communication sanity check.

License

The firmware and command-line tool (firmware/, commandline/) are licensed under the GNU General Public License v2 (see LICENSE). The bundled V-USB driver (firmware/usbdrv/) is dual-licensed under GPLv2 or a commercial license from Objective Development — see firmware/usbdrv/License.txt and firmware/usbdrv/CommercialLicense.txt for details, and firmware/usbdrv/USB-ID-FAQ.txt / USB-IDs-for-free.txt regarding use of the shared VID/PID.

The hardware design (hardware/) is licensed under the CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S v2), see LICENSE-HARDWARE.

Parts

29
QtyValueFootprintReferences
5USB-MINI-Blocalfootprints:USB_Mini-BCON2, T-0, T-1, T-2, T-3
4100nCapacitors_SMD:C_0805_HandSolderingC1, C2, C7, C10
3MOS_Nlocalfootprints:SOT-23_GSD_HandsolderingQ1, Q2, Q3
210kResistors_SMD:R_0805_HandSolderingR1, R6
210uCapacitors_SMD:C_0805_HandSolderingC3, C4
215pCapacitors_SMD:C_0805_HandSolderingC5, C6
268Resistors_SMD:R_0805_HandSolderingR3, R4
112MHzCrystals:Crystal_HC49-SD_SMDX1
11k5Resistors_SMD:R_0805_HandSolderingR2
14k7Resistors_SMD:R_0805_HandSolderingR5
14u7Capacitors_SMD:C_0805_HandSolderingC8
1ADS1248Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mmU1
1ATMEGA328plibcms:TQFP32IC1
1MR-AVR-ISP-6Pin_Headers:Pin_Header_Straight_2x03CON1
1NCP1117-3v3SMD_Packages:SOT-223U2
1Q1-4: 2N7002localfootprints:SOT-23_GSD_HandsolderingQ4

Questions

How big is the TempLoggerNG PCB?

It measures 56.9 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TempLoggerNG use?

29 parts, built around the ATMEGA328-PU and ADS1248IPW. 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 TempLoggerNG KiCad files?

From the miree/tempLoggerNG repository on GitHub, at the commit this page was made from: the board is hardware/tempLoggerNG.kicad_pcb and its schematic hardware/tempLoggerNG.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the TempLoggerNG design in my own project?

Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers104.9 × 75.2 mmHandipi kb, the printed circuit board in 3D

    Handipi kb

    brickbots/HandiPi

    Handheld RPI4 based computer with keyboard and display

    95 parts814MIT
  • 2 layers228 × 98 mmPlaid, the printed circuit board in 3D

    Plaid

    hsgw/plaid

    12x4 ortholinear usb keyboard made by Through Hole components ONLY.

    139 parts779MIT
  • 2 layers94.6 × 46.1 mmHeaterMeterPI, the printed circuit board in 3D

    HeaterMeterPI

    CapnBry/HeaterMeter

    HeaterMeter and LinkMeter Arduino BBQ Controller

    66 parts557MIT
  • 2 layers50 × 50 mmAvrcraft poed, the printed circuit board in 3D

    Avrcraft poed

    cnlohr/avrcraft

    Minecraft server optimized for 8-bit devices.

    58 parts471
  • 2 layers284.7 × 94.2 mmLumberjack, the printed circuit board in 3D

    Lumberjack

    peej/lumberjack-keyboard

    5x12 ortholinear through-hole component keyboard PCB for standard 60% cases

    165 parts403MIT
  • 2 layers132.1 × 45.7 mmIPoS, the printed circuit board in 3D

    IPoS

    peterheinrich/InternetOverSpaghetti

    Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

    42 parts342
  • 2 layers63.3 × 57.2 mmRam Tester, the printed circuit board in 3D

    Ram Tester

    tops4u/Ram-Tester

    Ram Tester for vintage CBM Computer RAM Chips

    42 parts118
  • 2 layers285 × 117 mmTartan, the printed circuit board in 3D

    Tartan

    hsgw/tartan

    60% keyboard made by through-hole parts only

    171 parts98