It turned out doing software UART was a terrible idea. The processor is way too slow to support a reasonable baud rate. I did figure out how to use a comparator though: the key phrase I was missing was “rail-to-rail.” That means that inputs can be in the full voltage range from ground to Vcc. Another handy phrase is “push-pull,” which means that the comparator can output 0 and 1; in contrast, an “open collector” comparator can only output 0, and needs an external resistor to pull the output to 1.
I bought a rail-to-rail push-pull comparator, the MCP6541, and tried it with the receiver circuit, and sure enough it increased the maximum range significantly. Unfortunately it also increased the minimum range significantly.
I feel pretty dumb talking to nobody like this. My domain name doesn’t even work yet, but I guess logging is what engineers do. And I’m imaginative enough to see the utility of it: it’ll be nice down the line to have a log to review, writing stuff down helps flesh out ideas, and an open design process will make it a heck of a lot easier to produce open documentation. It will be tough to expose all my bad decisions and half-baked ignorance (and mixed metaphors), but I can suck it up.
My first project is to build an acoustic modem. This follows the principle of multiplying work: the modem doubles as my class project for ELEC 571: Underwater Acoustics. We’ve been using the Devantech SRF04 ultrasonic ranger in the mechatronics lab, and it strongly informs my design. The SRF04 actually uses an RS-232 chip to generate ±9 V levels, which actuate a piezoelectric transducer. I took a couple of the transducers from a broken SRF04 to use for my project.
I tried using an RS-232 chip that we had lying around in the lab, but those things have draconian current limits. There’s no way I can power a whole circuit off of one. I’m probably going to try it again soon though.
My solution: a DC/DC converter (AP34063N8L) to step up a 7.4 V lithium polymer battery up to 20 V. Taking half the output as the reference voltage will produce a ±10 V power supply. With that I can power pretty much anything I want. Continue reading →