Rasberry Pi Analog Input Using Only Passive Components

The Raspberry Pi is a very capable device whose hardware has been pushed to the limit in all sorts of interesting ways. But even the most ingenious of experimenters have to agree on one point; it doesn’t possess an analog-to-digital converter. If you want analog inputs you will have to buy or build them.

[Mincepi] has done just that, but not as you might expect by adding an integrated circuit on one of the Pi’s interfaces. Instead the circuit [Mincepi] is using consists only of passive components, measuring the time taken to discharge the parasitic capacitance of one of the Pi’s inputs from logic 1 voltage to logic 0 voltage through a resistor into the voltage to be measured. This is a long-established approach to A to D conversion, one that was achieved back in the day with purpose-designed timers as microprocessor ancillaries.

The problem is that the Pi does not have a timer peripheral, so [Mincepi] has used the shift registers that form part of the Pi’s SPI and PCM inputs to perform this task on two channels. A sample rate of 100kHz and 6-bit resolution is claimed, with enough voltage range for a 1V peak-to-peak audio signal to be sampled.

Of course, simplicity does not guarantee a good ADC, and this circuit does not perform very well. It is noisy, non-linear, and as [Mincepi] puts it, probably sensitive to temperature. And though [Mincepi] talks in detail about the software to drive it, none is forthcoming. To quote: “It doesn’t include code since I’m in the process of writing a proper sound device module. My previous code was a simple character device, but it worked just fine, and served to prove the concept.

We really want this to work, even if it’s not the best ADC ever. So we eagerly await the sound device module, and look forward to more news from the project.

This may be the simplest of simple ADCs we’ve yet featured here on Hackaday, but it’s not the first we’ve seen. There is this one using a comparator for example, or this one using a flip-flop. It is the essence of creative electronics to eke a function from a component that was never meant to be, please keep them coming!

Aquire Awesome Audio For BeagleBone

[Henrik Langer] put his powerful audio acquisition and output board up on Hackaday.io, and we thought we’d point it out to you. It’s one of those projects that used to be pro audio just a few years back, but is doable (and affordable) DIY today: dual stereo inputs and four(!) stereo outputs, all sampled at 24 bits and up to 192 kHz. It’s configured as a BeagleBone cape, and comes with a customized Linux distribution for the ‘Bone.

What would you do with such a thing? It’s essentially a recording studio in your pocket, with a computer attached. The video (linked below the break) demonstrates using the device as a real-time stereo delay effect unit, but that’s only making use of one channel. Between effects, recording, and then all sorts of much-better-than-CD quality sound synthesis and playback possibilities, it’s an open-ended audio playground.

And all that from what is essentially a (very well-done) breakout board for a fancy DAC/ADC chip from Analog Devices: the AD1938. We’d love to have one of these on our desktop. Check out [Henrik]’s GitHub for the PCB and build instructions and BOM and everything else you’d need to get started. Very nice job!

Continue reading “Aquire Awesome Audio For BeagleBone”

Touch Piano Hits All The Right Notes

We love a good musical build, and this one is no exception. For their ECE4760 final project, [Wendian Jiang], [Hanchen Jin], and [Lin Wang] of Cornell built the nicest-looking touch piano we’ve seen in a while. It has five 4051 multiplexers that take input from 37 capacitive touch keys fashioned from aluminium foil and copper tape. Thanks to good debounce code, the sounds are clean even though the keyboard is capable of four-note polyphony.

A PIC32 and a Charge Time Measurement Unit (CTMU) module generate a small, steady current that charges up the keys. The PIC scans the pins continuously waiting for touch input. When human capacitance is detected, the value is compared with the base capacitance using the ADC and the sound is generated with the Karplus-Strong algorithm.

The group’s original plans for the project included a TFT screen to show the notes on a staff as they are played. While that would have been awesome, there was just too much going on already to be able to accurately capture the notes as well as their duration. Check it out after the break.

Continue reading “Touch Piano Hits All The Right Notes”

SRF01 Ultrasonic Sensor Teardown

The SRF01 is a popular ultrasonic sensor used primarily for range finding applications. [Jaanus] discovered that they had a few flaws, including not working after being dropped. The faulty ones began to pile up, so he decided sensor_01to tear one apart and put his engineering skills to use.

The SRF01 is unique in that it only uses a single transducer, unlike the SRF04, which uses two. Using only one transducer presents a problem when measuring very close distances. The transducer emits a pulse of sound and then must listen for the echo. The smaller the distance, the smaller the time interval between the pulse and when the echo returns. There is a fundamental limit to this time as the transducer has to recover from what is known as ringing. [Jaanus] discovered that the SRF01 solves the ringing problem with the use of a PIC24’s ADC and its 500 ksps (kilosamples per second) rate. This allows it to measure very close distances.

Be sure to check out the teardown for more details on how the SRF01 works.

Low Power And Pin-Constrained

We’ve all been there. You’re building up a microcontroller project and you wish that you could just add “one more feature” but you’re limited by the hardware. Time to start thinking. (Or, arguably, buy the next model up.)

[Sam Feller] found himself in this position, adding a knob to set the time and a button to arm the alarm for his Analog Voltmeter Clock, and he came up with a way to implement an on-off switch, and poll a button and a potentiometer with only two pins of a microcontroller.

The problem with potentiometers in low-power designs is that they’re always leaking power. That is, unless you switch them off when you’re not using them. So the ideal solution is to power the potentiometer from one GPIO pin on the microcontroller, and read its value with another. That’s two GPIO pins just for the potentiometer. But [Sam] needed to read input from a button too, and he was out of pins.

His clever solution is to switch two resistors in or out of the circuit depending on the status of the pushbutton, so that the voltage range at the potentiometer is between either VCC and VCC/2 when the switch is pressed, or between VCC/2 and GND when the switch is not pressed.

If the ADC reads something higher than VCC/2, the microcontroller knows that the button is pressed, and vice-versa. The potentiometer’s setting determines exactly where the voltage lies within either range.

Done and done. If you find yourself in the similar situation of needing to read in values from a whole bunch of buttons instead of a potentiometer, then you can try using an R-2R DAC wired up to the pushbuttons and reading the (analog) value to figure out which buttons are pressed. (If you squint your eyes just right, this solution is the same as the R-2R DAC one with the potentiometer replacing all but the most-significant bit of the R-2R DAC.)

Another tool for the toolbox. Thanks [Sam].

Video FPGA With No External A/D

You have an old PC with a nonstandard RGB video out and you need to bring it to a modern PAL TV set. That’s the problem [svofski] had, so he decided to use an Altera-based DE1 board to do the conversion. Normally, you’d expect reading an RGB video signal would take an analog to digital converter, which is not typically present on an FPGA. Instead of adding an external device, [svofski] used a trick to hijack the FPGA’s LVDS receivers and use them as comparators.

Continue reading “Video FPGA With No External A/D”

RaspiDrums Uses Expensive Sensors

Piezoelectric sensors are great for monitoring mechanical impacts with a microcontroller. Whether you’re monitoring knocks on a door or watching a heartbeat, they are a cheap way to get the job done. They do have their downsides, though, so when [Jeremy] wanted to build an electronic drum set, he decided to use more expensive accelerometers to measure the percussive impacts instead.

Even though piezo sensors are cheap, they require a lot of work to get them working properly. The ADXL377 3-axis accelerometer that [Jeremy] found requires much less work, plus provides more reliable data due to a 1kHz low-pass filter at the output. In his setup, a Raspberry Pi handles all of the heavy lifting. An ADC on each drum sends data about each impact of the drum, and the Raspberry Pi outputs sound via the native Alsa driver and a USB sound card.

This project goes a long way to show how much simpler a project like this is once you find the right hardware for the job. [Jeremy]’s new electronic drums are very well documented as well if you are curious about using accelerometers on your newest project rather than piezo sensors. And, if you’re into drums be sure to see how you can have drums anywhere, or how you can build your own logic drums.

Continue reading “RaspiDrums Uses Expensive Sensors”