EECS 373 On Operational Amplifiers and Other Means of Manipulating Voltage and Current
Once you’ve done your topic talk… Send me your slides Pdf is fine, but I’d prefer power point (and both is better yet).
Other Administrivia? And yes, Merriam-Webster accepts that as an English word.
Analog—the bane of the computer engineer In embedded systems, you often need to deal with voltages and currents. Often the outputs you have don’t match the inputs you need. Generally the current or voltage is too small Sometimes the voltage is too big. Sometimes the values are in the wrong range. Today we’ll touch on some ways of manipulating these values. This is intended to give you some idea what options are out there Often the details are tricky and/or annoying. We expect you may need to ask for help…
Examples of where you might have problems. You have 5V for power, but some devices need 3.3V for power. You are using a device that generates too little current for your ADC, you may want to amplify the current but hold the voltage constant. You may be using a UART or other serial bus where one device wants 3.3V or 1.7V and the other wants 5V. You may be driving a motor that needs 12V@1A but you can only drive 5V@5mA, what do you do?
What are DC converters? DC converters convert one DC voltage level to another. Very commonly on PCBs Often have USB or battery power But might need 1.8V, 3.3V, 5V, 12V and -12V all on the same board. On-PCB converters allow us to do that Images from http://itpedia.nyu.edu/wiki/File:V_reg_7805.jpg, http://www.electronics-lab.com/blog/wp-content/uploads/2007/10/p1000255.JPG
DC converters Probably the most common problem is dropping power from 5V to 3.3V. Often because we’ve got a device that wants 3.3V as Vcc and everything else wants 5V. The generic term for a device used to change voltages is “DC converter” But when dropping it is sometimes called a “voltage regulator”. Specific types are called “linear regulator”, “Low Dropout (LDO)”, and “Switching regulator”
Different types of DC converters Linear converters Switching converters Simpler to design Low-noise output for noise-sensitive applications Can only drop voltage And in fact must drop it by some minimum amount The larger the voltage drop the less power efficient the converter is (All voltage dropped is converted to heat). Can be significantly more complex to design **Don’t use for project** Can drop voltage or increase voltage “buck” and “boost” respectively Generally very power efficient 75% to 98% is normal
Linear regulator 1 2 3 Input Ground Output
Linear regulators and capacitors Specification for regulators almost always include required capacitors If you don’t have them, your output may get noisy and cause all kinds of problems including reseting your chips. Too big is better than too small. May have required capacitor types (ceramic, etc.) Be sure to check (most linear regulators don’t…)
Op-amps We’ll briefly talk about using op-amps to do a few basic things. Current buffering Threshold detection Etc. I’m not going to talk much about single supply vs. dual supply. https://www.researchgate.net/post/what_is_the_difference_between_single_supply_opamp_and_dual_supply_opamp is helpful though.
Very idealized basics http://www.electronics-tutorials.ws/opamp/opamp1.gif?81223b
Voltage comparator Can change the ground input to any voltage. Often just goes down to ground rather than –Vcc.
Voltage follower How does this work?
And a bunch of others
Current to voltage and back. Where would we have used a current-to-voltage device?
Additional reading http://research.cs.tamu.edu/prism/lectures/iss/iss_l5.pdf Used for the last 4 slides.
N64 controller Slides taken from a presentation by Aaron Ridenour, Ryan Wooster and Alex Jaeckel
Controller Inputs: A, B, L, R, Z, start, C-up C-down, C-left, C-right, http://conker.wikia.com/wiki/Nintendo_64_Controller http://electronics.howstuffworks.com/n643.htm Inputs: A, B, L, R, Z, start, C-up C-down, C-left, C-right, D-Pad(up, down, left, right), Joystick Options: Rumble Pak, Memory Pak
Joystick http://electronics.howstuffworks.com/n643.htm http://electronics.howstuffworks.com/n643.htm Two wheels positioned at right angles to each other, one for the x-axis, one for the y-axis.
OPEN Collector Pull-up resistor keeps the line high while idle. To send 0, the output line is pulled low and connected to ground. To send 1, nothing should be sent. Do not drive the line high. http://www-inst.eecs.berkeley.edu/~cs150/fa04/Lab/Checkpoint1.PDF
OPEN Collector 1 Sending a logical 0: 1 http://www-inst.eecs.berkeley.edu/~cs150/fa04/Lab/Checkpoint1.PDF
OPEN Collector Sending a logical 1: 1 1 1 Sending a logical 1: 1 1 1 http://www-inst.eecs.berkeley.edu/~cs150/fa04/Lab/Checkpoint1.PDF
Controller Encoding Each bit is sent in 4 𝜇𝑠 Logical 0: Low for 3 𝜇𝑠, followed by high for 1 𝜇𝑠 http://www.pieter-jan.com/node/10 Logical 1: Low for 1 𝜇𝑠, followed by high for 3 𝜇𝑠 http://www.pieter-jan.com/node/10
On a scope. Pieter-Jan.com
Controller Encoding http://inst.eecs.berkeley.edu/~cs150/sp01/Labs/lablecckpt1.ppt
Communication protocol When a Command byte is sent to the controller, it sends a response depending on which command was sent. Check Controller Command: 0x00 The controller responds with 3 bytes. The first two bytes are always 0x0500 Last byte is determined by: 0x01: If a controller pack is connected. 0x02: If no controller pack is connected. 0x04: If a previous command resulted in an error.
Communication protocol Reset Controller Command: 0xFF First resets the controller, including resetting the joystick calibration Controller then responds as in the Check Controller Command
Communication protocol Input Polling Command: 0x01 The controller responds with 4 bytes, encoding the button and joystick values Byte Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] 1 A B Z Start D-Up D-Down D-Left D-Right 2 Joystick Reset L R C-Up C-Down C-Left C-Right 3 Signed joystick x-axis coordinate 4 Signed joystick y-axis coordinate The joystick values range between -128 and 127, but the controller physically can only use from -81 to 81.
Example data waveform |----Command (console) 0x01-----| start bit stop bit A B Z St reset L R |----Command (console) 0x01-----| |----Data1 (controller) 0x00----| |-----Data2 (controller) 0x00----| stop bit Joystick x-coordinate Joystick y-coordinate |--------Data3 (controller) 0x00----------| |---------Data4 (controller) 0x01---------| Images taken from: http://afermiano.com/index.php/n64-controller-protocol
Communication protocol Controller Pack Read: 0x02 Used to read from the controller pack. The command is followed by 2 bytes which indicate the address being read from and a CRC to verify the address. The controller responds with 32 bytes of data from that address, followed by the data CRC.
References http://www.pieter-jan.com/node/10 http://afermiano.com/index.php/n64-controller-protocol https://code.google.com/p/micro-64-controller/wiki/Protocol http://www-inst.eecs.berkeley.edu/~cs150/fa04/Lab/Checkpoint1.PDF http://www.mixdown.ca/n64dev/ http://svn.navi.cx/misc/trunk/wasabi/devices/cube64/firmware/n64gc_comm.inc