Breaking News

RC Receiver Project: When & How to Access/Measure a Signal?

View Comments: Newest First | Oldest First | Threaded View
User Rank
antedeluvian   8/13/2014 11:13:12 AM

This general approach seems to be the simplest, but I have never used a comparator before. ... In concept, comparators appear to be simple, but are there any things that make them not as simple as they may seem?

Comparators are indeed simple to use. The only area of concern is when the signals are close in value (or you have a very slow rising/dropping waveform). You can get a chatter of the output in that region. A hysteresis technique is usually used to stop this. If the STM32 has internal comparators you could achieve this in software by driving the one comparator input with a D/A and when the switch occurs, modifying the D/A value up or down as necessary. Traditionally though the output is fed back through a network of resistors to shift the comparator input voltage slightly. Here is an Analog Devices app note on the subject. Google "comparator hysteresis" for more.

User Rank
antedeluvian   8/13/2014 11:02:38 AM

Option 1
The Si4704/05 has a digital audio output signal that I could take into my STM32 chip. The problem with this is that the max equivalent audio output rate from the FM audio chip is 48 kHz. I need to time a pulse that is 1 ms second long, so I will only have ~48 counts of resolution. This is just not enough. I could attempt to offset this by essentially curve fitting the output from the FM audio chip in the STM32 and then processing this signal

Forgive me if I am about to describe a technique that you have already described or have discounted. You could set up an internal counter with as fast a clock as you like. Then use the digital audio output signal to gate the counter so it only counts while the signal is high. You could get a much better resolution that way. With flip flops you could make it edge sensitive or counters for both the positive signal and the negative signal would allow you to measure between successive positive (and negative edges). I do hope the counters in the STM32 allow for this.

{Added after 5 minutes} I see arshs has provided the same solution while I was typing.

User Rank
Alternative solution
arshs   8/13/2014 10:55:22 AM


There is another alternative that I have implemented in the past for exactly the same situation.

You can use a Timer Input Capture function to capture the rising and falling edges of the digital pulse signal. Depending of the Timer time base, you can have a very fine resolution.

The Input Capture function from the timer "captures" the Timer count at the moment of the rising and/or falling edge. Usually, an interrupt is generated and the captured value is saved in an array for post processing.

After the message has finished transmitting, the array of counts (times) contains a series of times that is a representation of the 1's and 0's of the message. You would need a function to convert the times to bits (based on the bit rate or time per bit), and recover the message.


If the data output signal from the transceiver is square wave 0V to 3V amplitude, you don't need a comparator, because the signal can be connected directly to a MCU pin (a pin with input capture alternative function). Otherwise, the comparator is required to convert the transmitted signal to the right levels.


Max The Magnificent
User Rank
I'm thinking...
Max The Magnificent   8/13/2014 10:40:30 AM
I'm thinking the comparator is a good idea -- you could use transitions on the output to generate interrupts to start and stop a background timer in the MCU -- thereby freeing up the MCU for other tasks.

Most Recent Comments
joepaiii Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)
Like Us on Facebook
EE Times on Twitter
EE Times Twitter Feed