Electronics notes / Inputs and outputs
- 1 High side versus low side switching/driving
- 2 Buffers
- 3 Transistor output stages
- 4 Transient voltage and ESD protection, snubbers
- 5 On ADCs and DACs
High side versus low side switching/driving
|This article/section is a stub — probably a pile of half-sorted notes, is not well-checked so may have incorrect bits. (Feel free to ignore, fix, or tell me)|
Some limits and choices
Transistor output stages
Open-drain / open-collector
Common collector / Common drain
Transient voltage and ESD protection, snubbers
Protection diodes (inputs and output pins)
RC and RCD snubbers
Gas Discharge Tubes
On ADCs and DACs
An Analog-Digital Converter (ADC) takes a (voltage) signal and turns it into numbers to be digitally consumed.
Well, most ADCs do voltage sensing. A few have extra circuitry to be current-input ADCs (which mostly just means a resistor setup, but probably better specced than you can easily make), many of them for specific applications.
Multiplying DAC (type)
On the cheap: Resistor ladder
Basic idea: If you can change many (e.g. often 8 on microcontrollers) digital pins at the same time, then putting a resistor ladder on them means each contributes a different voltage level, and you can make 2amt voltage levels (256 for 8 pins).
E.g. the Covox Speech Thing was basically just a bunch of resistors on a parallel port. adopted by some games and music trackers.
- you still need to write out new data with strict regularity
- which is what interrupts are good at, but it will occupy a bunch of CPU power
- The Disney Sound Source solved this by being buffered (but fixed the output rate to a relatively poor 7kHz)
- the resistors' voltage contribution won't be perfect to contribute exactly what they should.
- making equal steps (to produce undistorted signals) takes either precision resistors or a bunch of measuring and matching beforehand.
- the more bits you have, the harder it gets - 8 is quite doable, but it starts getting impractical around 12 bits
- more than 8 bit is rare
- it's often the max you can change at the same time (single uC port)
- using multiple ports is hard to get quite right, though may be acceptable at lower frequencies
On the cheap: Fast PWM
Basic idea: If we can PWM much faster than audible (by preferably two orders of magnitude - which basically asks "if we have dedicated PWM circuit in the IC"), then the duty cycle is controlled precisely enough that putting it through a lowpass means the result is stable enough (being an average of that duty cycle).
These work fine, though are limited frequency-wise. They're can work pretty decently in audible frequencies.
- the lowpass is fixed
- so it has a range where it works best, which is part of your design
- which is why this can't be a more general-purpose DDS
- without dedicated PWM circuitry the timing issues would make this a horribly task, particularly if you also want to do other things in the microcontroller
- even then we need to update the PWM with strict regularity
- this is what interrupts are good at. It just occupies the CPU.
- i.e. even when it's not CPU-intensive it's still timing-critical
- Expect everything else to be secondary to this.
- multiple channels may be possible (varies with IC) but may have to be related
- which is perfectly fine if you e.g. wanted different types of wave at the same rate
- Raspberry Pi's onboard sound is actually PWM pins, plus a filter and buffer (exact details vary)