App note: Fundamentals of operation and recent developments of class D amplifiers

an_maxim_AN3977

Good read about class D amplfiers from MAXIM Integrated. Link here (PDF)

A Class D amplifier’s high efficiency makes it ideal for portable and compact high-power applications. Traditional Class D amplifiers require an external lowpass filter to extract the audio signal from the pulse-width-modulated (PWM) output waveform. Many modern Class D amplifiers, however, utilize advanced modulation techniques that, in various applications, both eliminate the need for external filtering and reduce electromagnetic interference (EMI). Eliminating external filters not only reduces board-space requirements, but can also significantly reduce the cost of many portable/compact systems.

App note: Avoid overvoltage stresses by minimizing power supply pumping on single-ended output, class D audio amplifiers

an_maxim_AN4260

Here’s class D audio amplifier pumping remedy from MAXIM Integrated, power-supply pumping is a problem that occurs when playing low-frequency audio signals through a single-ended output. Link here (PDF)

This application note explains what power-supply pumping is and how it occurs in designs that employ a Class D audio amplifier with single-ended output loads. The article presents three design solutions that will reduce the problem. Mathematical equations show that use of power-supply capacitors greater than 1000µF greatly reduce the phenomenon.

Make a PCB from scratch using EasyEDA // Part 2 // Tutorial

This is the second part of my video on building a simple PCB using EasyEDA. This time we'll be taking a look at how to use a solder stencil, placing SMD components, soldering using kitchen equipment and how to fix up your mistakes. Continue reading Make a PCB from scratch using EasyEDA // Part 2 // Tutorial

The post Make a PCB from scratch using EasyEDA // Part 2 // Tutorial appeared first on MickMake.

Converting a Seeburg 3WA wallbox into a remote for a modern music player

p-seeburg_complete-600

Dr. Scott M. Baker wrote an article detailing how he converted a Seeburg 3WA wallbox into a media player for his homebuilt audio player:

A bit of background. These Wallboxes were used as remotes in diners and other locations back in the 1950s. You put your nickel, dime, or quarter into the Wallbox, which racks up some credits. Then you select the song you want and the Wallbox sends a signal to the Jukebox, which adds your selection to the queue. Soon thereafter your music is playing through the diner. I’m too young to have experienced these in person when they were state of the art, but I do have an appreciation for antique and retro projects.
A new fad is to convert these wallboxes into remotes for your home audio system, be it Sonos or something else. I have my own homebuilt audio system, basically an augmented Pandora player, so my goal was to use the wallbox to control that.

See the full post on his blog here.

Check out the video after the break.

Traktorino, an open source DIY MIDI controller

Traktorino

Here’s an Arduino based open source MIDI controller by Musico Nerd, the Traktorino:

The Traktorino is a powerful low-cost DIY MIDI Controller. It is based in the Arduino platform and it comes in DIY kit, or assembled. In its core, there’s a shield that connects to an Arduino Uno, which uses open-source code, making it totally hackable.
The Traktorino is a MIDI class compliant device, designed for controlling Traktor. It has several features and custom made mappings, so you can take the most of the software. However, it can do much more than that. The Traktorino can control any software that accepts MIDI, like Ableton Live, Serato, FL Studio, Logic, etc

More info at musiconerd.com and on GitHub.

Check out the video after the break.

ESP32 (35) – BLE, scan response

In the previous posts I explained how to receive and send advertising packets based on the Bluetooth LE standard.

The payload (that is the amount of “useful” data) of those packets is at most 31 bytes. It isn’t much: if – for example – you want to include the device name, little place remains for other data.

The BLE standard allows peripherals to send additional data using the scan request – scan response process.

When a device receives an advertising packet, it can contact the transmitter by sending a scan request packet to request further information. When receiving a scan request package, the peripheral can respond with a scan response packet:

scan-response-001

Advertising and scan request packets have the same format; it’s therefore possible to transfer, using scan response, additional 31 bytes of data.

esp32

The esp framework offers two modes for configuring the content of a scan response packet: using the esp_ble_adv_data_t struct or creating a byte array (raw mode). These modes are similar to the ones used to configure advertising packets you learned in previous articles (struct and raw mode).

In the first case, you have to declare a second struct, in addition to the one related to the advertising packet, to define the content of the scan response packet:

static uint8_t manufacturer_data[6] = {0xE5,0x02,0x01,0x01,0x01,0x01};
static esp_ble_adv_data_t scan_rsp_data = {
  .set_scan_rsp = true,
  .manufacturer_len = 6,
  .p_manufacturer_data = manufacturer_data,
};

Very important is set to true the set_scan_rsp parameter. It’s indeed this parameter what tells the driver that this struct is related to the scan response packet.

You can then pass the new struct to the driver, with the same function used previously:

esp_ble_gap_config_adv_data(&scan_rsp_data);

The driver will call the callback function twice: one to indicate the successful configuration of the advertising packet and one for the configuration of the scan response one. The two events are different:

case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT:
  [...]
case ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT:
  [...]

You have to wait until both the events have triggered before starting the advertising process. In my example program (you can download the source code from my Github repository) I use two boolean variables:

bool adv_data_set = false;
bool scan_rsp_data_set = false;
[...]
case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT:
  adv_data_set = true;
  if(scan_rsp_data_set) esp_ble_gap_start_advertising(&ble_adv_params); break;
 
case ESP_GAP_BLE_SCAN_RSP_DATA_SET_COMPLETE_EVT:
  scan_rsp_data_set = true;
  if(adv_data_set) esp_ble_gap_start_advertising(&ble_adv_params); break;

If you want to use the raw mode instead, you have to declare a byte array and fill it with the content of the payload of the packet. Then you can use a specific function of the framework to pass the array to the driver:

static uint8_t scan_rsp_raw_data[8] = {0x07,0xFF,0xE5,0x02,0x01,0x01,0x01,0x01};
[...]
esp_ble_gap_config_scan_rsp_data_raw(scan_rsp_raw_data, 8);

did you notice that the content of the scan response packet is the same in the two examples?

The driver will confirm the configuration of the packet with a dedicated event. Also in this case you have to wait for the end of both configurations (advertising and scan response):

case ESP_GAP_BLE_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT:
  scan_rsp_data_set = true;
  if(adv_data_set) esp_ble_gap_start_advertising(&ble_adv_params); break;
You can also mix the two modes in your program. For example you can configure the advertising packet using the struct and configure the scan response one using the raw mode.

Now with the nRF Connect app you can verify that your scan response packet is correctly received by your smartphone:

scan-response-002

In the following video I explain how I built the payload of the packet and how the program works:

Taito C-Chip: data by lobotomy

p-IMG_20170709_133450-600

CAPS0ff writes:

In a previous post we described some early attempts to analyze the Taito C-Chip. See Haze’s forum post for some background on the C-Chip itself.
In particular we’re interested in the EPROM. Previous efforts focused on less invasive techniques with the goal of keeping the C-Chip alive after dumping. Unfortunately, we’ve been unable to successfully send an unlock command and efforts to rebond the EPROM die have been difficult with the equipment we have on hand.
With this in mind, we took a break to regroup. If we remove the ASIC we can solder to PCB traces shared with the EPROM. Traces are documented in our wiring diagram

More details on his blog here.

App note: Performance of echo canceller of LC823450

an_on_AND9721-D

Audio application echo canceller LC823450 from ON Semiconductor. Link here (PDF)

This application note describes the performance of Echo canceller of LC823450 Series. The customer can improve the sound quality of hands free communication by using this canceller. Its function can be used for various products such as Wireless headset. Earbads or other voice communication products.