Skip to content

Measuring Power Dissipation with Arduino

The general idea here is to place a very low resistance (with a high power dissipation rating) in series with our source. The very small voltage drop across the resistance is then fed into a 741 op-amp where it is amplifed so that its maximum output will approach 5v. This is the maximum input for Arduino’s analog to digital converter. A large amount of care must be used here to estimate carefully what the worst case current draw will be. (Current is what we are measuring because I = (V1-V2)/R.) as an extra precaution we will insure that the op-amp’s supply voltage is just at 5 volts to avoid any possibilty of cooking the Arduino. We will then select an amplification factor (via the resistors that connect the 741) that will avoid clipping. Multiplying the current obtained by voltage supplied should give a rough idea of power dissipated because P = I x V. Caution: improperly using this method may cause potential harm to components or persons especially when using higher voltages/currents.


Processing Language

Processing is an open source, high level programing language and environment that can be used to produce graphic images, animations, and interactions.  It supports both 2D and 3D rendering as well as OpenGL.  Processing is often used by artists and animators, but we will be using it as a leap-pad to conceptualize and create some “Robotic Art”.   The basic idea involves creating a grid in Processing that consists of M x N pixels (the amount of which can be controlled by how the code is written.)  We will then write some simple code that will illustrate the desired movement of our robot along that grid. Having more pixels will allow the robot to move in a more precise and smooth fashion. However, this increased resolution will come at the eventual cost of memory space and amount coding required.  The processing environment is very friendly to our cause. Because of its ease of coding and use it will quickly allow us to determine how we want our robot to move and what types of commands will be necessary to achieve this goal before we begin any in-depth coding in another language.

More info on Processing is available at:

The Atmel AVR

The Atmel AVR is a System On a Chip (SOC) microcontroller based on an 8-bit register, Reduced Instruction Set Computer (RISC) architecture.  The AVR was one of the first microcontrollers to use on chip flash memory for program storage in place of the more traditional EEPROM, EPROM, and ROM.  One of the key advantages of RISC systems is that they are far more efficient in carrying out simple instructions both in terms of speed and power draw making them ideal for mobile applications.  The AVR uses a modified Harvard architecture that allows the contents of the instruction memory to be accessed as if it were data.  It is important to note that almost all AVR products require that the entire program instructions reside in the on chip memory. However, data memory on most models can be expanded via serial interface. Newer versions of the chip now support a 32-bit register, like Arithmetically Reduced Machine (ARM) processors, and include SIMD and DSP instructions as well as enhanced audio video processing capabilities. For our class we will be using the Arduino Uno USB which is based on the Atmel ATmega328. The device has 14 digital input/outputs: six of which can be used for Pulse Width Modulation (PWM) and six analog inputs.

Week One -Part 2: Construction :D

We have already begun to build the 4wd platform our robots.   Today, with screwdrivers in hand, we eagerly broke into bags containing the various components and fasteners and sensor mounts for our kits.  In short order, we managed to get things put together with a minimum of fuss.  The platform seems pretty sturdy and has a plethora of sensor/board mounting options that could prove interesting in the future.  All that remains for the moment is to solder the wire connections for the DC motors…It’s good to have teammates that can help with the TINY screws….


Week One

During the course of the semester we will be constructing a 4WD robotic platform that will be controlled Via an ATMEL powered Arduino Microcontroller.  The end goal is to design a complete “life-size” chess game in which the pieces are made of and moved by the autonomous robots mentioned above.  The piece and desired move will be selected within an application on an android phone.  The Phone will then communicate via Bluetooth with stationary robot control towers at the four corners of the board.  The control towers then communicate with the mobile robots (and phones) in order to move the pieces in an organized fashion. Topics include Math, Science, Engineering, and Programming Fields.  The chess game will utilize a low-cost approach that will allow it to be used as a teaching tool for High School and Middle School students.

Although the idea seems relatively simple, implementation is faced with a number of challenges; a few of which include: algorithm development, position control and centering, cost considerations,  Power envelope and budgeting, wireless interference prevention,  collision prevention, and handing off control of pieces between control towers.   Rather than try to focus on all of the inherent challenges, we will begin with the problem of position control and centering.  After a few sets of moves, it is possible due to rounding or wheel slippage that pieces are no longer centered in their respective squares.  Because of this problem a periodic position check will need to be performed.  The methods that will be utilized will include an ultrasonic distance sensing method called cricket as well as fine positioning via wireless triangulation using the control towers. This will alleviate the issue of pieces drifting and will contribute to solving the challenge of collision avoidance.

Embedded Robotics – FAU Robotics