Skip to main content

Arduino interface for TFA9842AJ Power Amplifier

TFA9842AJ is quiet old 7.5W audio power amplifier introduced by NXP. This amplifier IC is no longer produced by NXP, but still, it's available to purchase in many places, which including eBay, AliExpress, Amazon, etc.

NXP TFA9842AJ Power amplifier IC.

I tested a couple of TFA9842AJ based amplifiers in the last couple of years. The main reason I liked TFA9842AJ is its simple, clean design, wide operating voltage, and high-quality bass-rich audio output.

Thanks to it's built-in DC volume control circuit this audio amplifier can easily interface with MCU. In this article, we provide a generic TFA9842AJ module which works with most of Arduino boards, MCUs and SOCs.

Schematic of the TFA9842AJ module.

As illustrated above, this system consists of LM321 operational amplifier and TFA9842AJ IC. To support both 5V and 3.3V logic inputs we introduce logical level selection jumper (J2) into this design. To control the volume PWM input must apply to the J1.

In this system volume of the power-amplifier is proportional to the duty cycle of the PWM input. In 0% duty cycle the amplifier is in standby mode. At 100% duty cycle it performs with its maximum gain.

This module is designed to work with 12V 3A DC power source. At the testing stages, we share this power source with the Arduino board.

We successfully test this module with the following development boards and MCUs:
  • Arduino UNO
  • Arduino MEGA 2560
  • Arduino Due
  • Orange Pi 3
  • ATmega8
  • ATmega328
  • ATmega640
In Arduino platforms, we produce PWM output using analogWrite() function. In other platforms and ICs, we generate PWM output using inbuilt hardware PWM generators.

In this design, we use SMD components to miniaturize this module. If you plan to build this using through-hole type components, use LM358 as an operational amplifier (U1).

This module is released under the terms of CC BY 4.0. The KiCad design files of this module are available to download in here.


Popular posts from this blog

Enable WebRTC on QtWebEngine for Raspberry Pi 3

WebRTC is a web technology to enable peer to peer communication in real-time. It mainly uses to create video conferencing and chat applications using web browsers. In this post, we describe how to enable this technology in QtWebEngine on Raspberry Pi 3 platform.

QtWebEngine is an embedded browser component which comes with the Qt framework. This component is based on Google Chromium browser and it supports most of the Chromium features including WebRTC. In PC, WebRTC applications run smoothly on QtWebEngine component. But in Raspberry Pi platform situation is different and none of the WebRTC application is work with the QtWebEngine. The only thing which we can see is a black box in an HTML5 video tag area. At the time of writing this problem exists in Qt version 5.6, 5.7 and 5.8.

BMP180 based USB atmospheric pressure monitor

We initially developed this USB atmospheric pressure monitor to study some operating characteristics of Bosch BMP180 sensor. BMP180 is a low-cost sensor for measuring barometric pressure and temperature. According to the datasheet this sensor can use to measure pressure ranging between 300hPa to 1100hPa. This sensor is introduced a couple of years back but still, it is popular due to lower cost and simplicity of its interface.

We did this unit to test the BMP180 sensor more accurately and to study its behaviors. This unit is based on PIC18F2550 microcontroller and the main reason to select this MCU is because of its built-in USB 2.0 interface.

To display sensor calibration data and it’s readings we did small windows application. This application display and plot temperature and pressure readings captured from the BMP180 sensor.

This unit is programmed to work as a USB HID device and no special device driver is required to use this device. We test this unit in Windows 10 environment.

Programmable light controller

The main objective of this project is to design a maintenance free and low-cost light which automatically turns on and off at the predetermined time of the day.

To meet the above requirement I designed this controller using ATmega8 MCU and DS1307 RTC. The driver stage of this light controller is intended to work with commonly available 7W LED modules.

The core component of this programmable light is ATmega8 low power CMOS microcontroller. The main reason to select this microcontroller is it’s lower cost and higher availability. Except for the above two reasons this microcontroller also bundled with a rich set of peripherals which including 23 GPIOs, 3 independent timers, Two-wire serial interface, EEPROM, etc.

Apart from ATmega8 microcontroller, this system uses DS1307 real time clock to maintain system time. Like ATmega8, DS1307 is also a very popular RTC in the market.

This controller is designed to work with a 24V DC power supply. The main reason to select 24V is that most of the…