Resume - Long

Contact Information

Objective

I develop software/firmware and electronic hardware for embedded electronic equipment.

Education

College

Minnesota State University, Mankato (Mankato State University)

Level: Bachelor of Science

Major: Electronic Engineering Technology, ABET Accredited

Minor: Computer Science

Cumulative GPA: 3.24

Major GPA: 3.21

Mankato State University Scholarship

Mankato State University Presidential Scholarship

Four times on Honors List

Member of the Engineering Club

High School

Manitowoc Lincoln High School; Manitowoc, WI (Grades 10-12)

Played on Jr. Varsity basketball team.

Lettered in Academics

Academic Award

Honor Roll

Washington Jr. High School; Manitowoc, WI (Grade 9)

Played on Varsity basketball team

Lettered in Academics

Honor Roll

Grade School

First German Evangelical Lutheran School; Manitowoc, WI (Grades K-8)

Work History

Major Projects

Medtronic Navigation AxiEM

The AxiEM product uses electromagnetic induction to track instruments used during a medical surgery. AC signals are driven on transmitter coils which induce a voltage on coils attached to the surgical instrument. A Xilinx FPGA drives the AC signals and acquires the voltages from the instrument coils. A TI 6713 DSP is used to process the data, and the results are sent through a USB connection to a Linux PC. Code Composer Studio was used for the DSP code development, and GCC was used for the Linux application that retrieves and further processes the data to determine the x, y, z location of the instrument coils relative to the transmitter's magnetic field.

Link to Medtronic Navigation's product information

Medtronic Navigation CAN Adapter

The MNAV platforms interface to Leica microscopes using a Controller Area Network adapter. I designed both the hardware and firmware for a new RS232-CAN adapter to replace the original off-the-shelf project that was no longer available. The new adapter uses the Microchip PIC32 so that we could update the design to use either/both Ethernet/USB in the future. Microchip's MPLAB was used for development with the XC32 compiler.

Cognitive Code Ranger Bluetooth

This project added a Bluetooth interface to the existing Code Ranger portable label printer. I was the sole person on this project so I did the project management, hardware design, and firmware design. I started off the project by researching design options, and then I created feasibility reports. A design approach was agreed upon by management based upon my recommendations, and within 8 weeks the first prototypes were delivered. During that time I had to learn how to use the Mentor Graphics PADS CAD software tool to create a schematic and PCB layout. The design consisted of a daughterboard that includes a BlueRadios Bluetooth module and an Atmel AVR microcontroller. The AVR processor acts as a protocol bridge between the Bluetooth module (RS232-TTL interface) and the Code Ranger's mainboard processor (using I2C).

Link to Cognitive's product information

Cognitive C-series Label Printer

I assisted 3 other firmware engineers in the firmware development of the Genesis desktop label printer. I was responsible for media indexing, memory integrity, paper out detection, label taken detection, and the parallel port interface. IAR's Embedded Workbench for the ARM processor (EWARM) was used for development on the Atmel AT91 platform.

Link to Cognitive's product information

Cognitive Code Ranger Sustaining

During the product life of the Code Ranger, I was responsible for fixing issues and adding new features to the Code Ranger label printer. Activities included finding and correcting issues with overheating and throughput. Also, new security methods were added. The firmware was developed using Toshiba's C compiler for the 91xx processor. Seapine's TestTrack was used to track issues and Microsoft's Visual Source Safe was used for version control.

Link to Cognitive's product information

Cognitive Advantage Sustaining

This project involved customizing the Cognitive AdvantageLX label printer for a specific customer. The “features” were present in an older model of printer, so the differences between the printer models had to be discovered. Toshiba's C compiler for the 91xx processor was used.

Link to Cognitive's product information

Cognitive Code Ranger

I was part of a 3-person team who wrote the firmware for the Code Ranger portable label printer. This product uses the Toshiba 91CW12 microcontroller, and we used a Toshiba C compiler and emulator for development. I designed the functionality for media indexing, label taken detection, door open detection, and paper out detection. I also developed a Windows program using Visual C++ 6 which graphically displayed the sensor reading from the photosensor used for indexing. The program included the ability to run different algorithms in order to determine which algorithm would most accurately detect index marks. The best algorithm was then implemented into the Code Ranger firmware. Microsoft's Visual Source Safe was used for version control and Seapine's TestTrack was used for issue tracking.

Link to Cognitive's product information

Cognitive Code Ranger RF

The Code Ranger RF is a standard Code Ranger motherboard with a daughterboard that supports the Symbol Technologies 802.11 and 802.11b PCMCIA cards (OEM versions). I designed the firmware that ran on the daughterboard's Toshiba 91CW12 processor. It acted as a protocol bridge between the 802.11 card (parallel interface) and the mainbaord processor (proprietary protocol on an I2C bus).

Link to Cognitive's product information

AirCell Aircraft Bulkhead Handset

Led the firmware development for the Aircraft Bulkhead Handset, a pay-phone for commercial and business-class aircraft. Major components of the design include the user interface, AirCell handset driver, credit card reader interface, and transceiver (Iridium satellite & AMPS cellular) drivers. The Metrowerks CodeWarrior Development environment was used to develop firmware in C for the Motorola 68HC908SR12 microcontroller. Other tools included CVS for version control and Mantis for issue tracking.

Link to AirCell's product information

AirCell Cordless Handset

Assisted two other software engineers with the firmware development for a 900MHz cordless handset for use on aircraft. Used Metrowerks CodeWarrior C for the HC08 for development (Motorola HCS08 microcontroller). My responsibilities included porting the base station code to a different HC08 processor, and I created the code for a peripheral microcontroller that bridged the Motorola proprietary three-wire-bus to an SPI bus. I also designed the power management firmware in the handset, and I assisted with the development of the base station to handset data protocol. During the design, I created a test platform where DTMF was used to send data between the base station and handset (see “DTMF Test” below). Also, for testing the cordless handset on the aircraft, I created an iPAQ PDA application which interfaced to Dallas Semiconductor's 1-wire A/D and temperature sensors (see “m1wire” below}.

Link to AirCell's product information

Monitor Labs Modbus-to-LonWorks Gateway

This device was used as an interface between generic PLC's and the Monitor Lab's ML-560 Lighthawk system (which has a LonWorks interface). As the sole developer, I used the Echelon NodeBuilder to develop and test the code which was then run on Logisync's IG-1 serial gateway. LonMaker was used to bind network variables. I developed a Windows graphical program using Visual C++ and InGear's Modbus ActiveX control to test the device. This program allowed for monitoring and setting of the LonWorks network variables using Modbus commands through the gateway.

Honeywell Fuel-Air Controller

I was part of a 4-person team who wrote the software for this product. This product uses the Motorola 68HC908AZ60 microcontroller and includes an ASIC, relays, A/D converter, and an interface to an UPPA device (see below). I designed the following software modules using Cosmic's HC08 C compiler:

States - The functionality performed while in a specific program mode.

Low Voltage - Shuts down the device if low voltage at power supply.

Reset Button - Interface to hardware button used for resetting the device and prompt to flash fault codes.

Operating System - I took the original operating system and "cleaned it up".

UPPA Interface - Functions to bring the UPPA devices (see below) online.

Internal EEPROM - Functions for writing to the microcontroller's internal EEPROM for storage of configuration.

External EEPROM - Functions for writing to the external serial EEPROM.

Inputs - Determines the digital state of the AC inputs.

Safety Relay - State machine used to turn on and off a relay.

I also modified several other modules which were originally written by other members of the team. The code was designed and certified "safety critical". Microsoft's Visual SourceSafe was used for version control.

Link to Honwell's product information

Honeywell Universal Parallel Positioning Actuator (UPPA)

I designed the complete firmware for this device using a C compiler from Archimedes. It includes a Motorola HC05 processor interfaced to DC motor control circuitry. An interface to a host controller allows the UPPA to respond to online & offline commands and motor movement signals (PWM).

Link to Honeywell's product information

Honeywell SBC (XL15 Controller)

I was part of a 5-person team who wrote the software for this product. It includes both a Neuron/LonWorks processor and an 8051 processor in a host-slave configuration (MIP). I designed the following software modules using Keil's 8051 C compiler:

Real-Time-Clock - Date & time functions along with interface to backup clock IC.

Bypass Input Arbitration - Determines occupancy based on schedule and bypass inputs.

Trending - Records data at a periodic rate or by amount changed.

Logging - Records mode information, the time an object is active, and energy usage.

Scheduler - Performs certain actions based on configured time/data schedules.

Dialing - Automatic control of a modem for communicating data (I helped debug & test this code).

Alarm - Performs actions based on alarm conditions, manages an alarm log.

Logics - Performs AND, OR, XOR, NOT, NAND, minimum, maximum, and averaging.

Link to Honeywell's product information

Control Solutions LFM-400 Modules

I designed the hardware for the switching power supply and for the analog and digital interface circuitry. Components were carefully chosen based on specifications, availability, and price. This product is LonWorks based. Firmware was developed using Neuron C and the LonBuilder tool.

Link to CSI's product information

Control Solutions Maxpoint/Valuepoint

The hardware for this product was based on my hardware designs in the LFM-400 product line. I also wrote the standard software which could be used as-is or could be used as a base by the customer. Software features included interfaces to the digital I/O, A/D converter, and D/A converter. Also included was algorithms for linearizing thermistor inputs. Software was written using Neuron C for the Neuron/LonWorks processor and was developed using the NodeBuilder System.

Link to CSI's product information

Control Solutions Modbus-to-Lonworks Gateway Software

This software was written for the CSI MMI-402 RS-232 to LonWorks device. It was written using Neuron C and supports most of the Modbus commands. Both ASCII and RTU modes are supported.

Link to CSI's product information

Control Solutions MMI-200

I designed the hardware for this product. It includes a Neuron/LonWorks processor with interfaces to Flash and SRAM, a character LCD with software-controllable LED backlighting, keypad, RS-232 port, and indicator LEDs.

Link to CSI's product information

Control Solutions BAS Modules

Portions of the hardware for this product line are based on my hardware designs in the LFM-400 product line. I wrote driver software for several of the modules and I created functioning systems (several modules connected together) for use by customers. A typical system would include one control module -Neuron/LonWorks based- and one or more analog or digital interface modules.

Link to CSI's product information

Control Solutions BASFlex 56 LonMark Software

I wrote the software for this product according to the specification of LonMark. This system is certified to be LonMark compliant. This system uses the CSI BAS Modules described above.

Link to CSI's product information

Busware Direct LonWorks Modules

The hardware for this product line is based on my designs in the LFM-400 product line. I was involved in updating the design to try and reduce component cost and improve performance. I wrote LonMark compatible software for each of the modules.

Weigh-Tronix WI-110 & WI-120 Custom Firmware

These two products were once the main indicators for Weigh-Tronix, until Texas Instruments decided to obsolete the 9000 processor. Various plug-in boards allowed for analog and digital control points and communications methods. I added custom software functionality in order to perform operations required by a customer's application. Applications included batching, serial port communication protocols, and special tare operations. The polyFORTH programming language was used for the Motorola HC11 processor.

Weigh-Tronix WI-125 Custom Firmware

I designed software features which were added to the base software in order to perform a function specific to a customer's request. This product used the Motorola 68HC11 with the polyFORTH programming language. Custom applications included serial port protocols, tare operations, and changes in the user interface.

Link to Weigh-Tronix product information

Weigh-Tronix WI-150 Custom Firmware

I designed software features which were added to the base software in order to perform a function specific to a customer's request. This product used the Motorola 68HC11 with the polyFORTH programming language. Custom applications included serial port protocols, tare operations, changes in the user interface, interfaces to the plug-in boards, and interfaces to the SCI-150.

Link to Weigh-Tronix product information

Weigh-Tronix WI-150 Software for British Standards

I took the standard WI-150 software and added functionality to satisfy the requirements of the British Standards Organization. The work was performed with guidance from the Weigh-Tronix UK offices.

Weigh-Tronix FI-90 Custom Firmware

I designed software features which were added to the base software in order to perform a function specific to a customer's request. This product used the Motorola 68HC11 with the polyFORTH programming language. Applications included tare operations, serial port protocols, and operations related to force measurement (peak force, average force, etc...)

Link to Weigh-Tronix product information

Weigh-Tronix Dillon Testing Machine

I designed software features which were added to the base software in order to perform a customer specific function. This product used the WI-120 indicator to control & monitor motors and sensors. Applications included special test operations/procedures to test the tensile strength of materials.

Weigh-Tronix DWS - UPS Project

This weighing system was designed in cooperation with United Parcel Service. The main pieces of the system include an in-motion weighing conveyor, a WI-150 indicator, light curtains from Banner Engineering, two large barcode scanners from Accu-Sort, a photoeye, and a personal computer running an MSDOS program. Custom software was written for the WI-150 and a custom program was written for the PC, using Microsoft's Visual C++, for recording package information. I made several trips to the UPS hub in Louisville, KY to perform on-site testing and evaluation.

Personal Projects

• Time Server

Published as an article in Circuit Cellar Ink magazine, November 2008

Honorable Mention winner in Circuit Cellar Ink WIZnet iEthernet 2007 contest (link)

Link to project page on this web site

Gets time and date information from the WWVB radio signal and serves it over an Ethernet network using the Simple Network Time Protocol, DAYTIME protocol, and TIME protocol. Designed a first level prototype of the hardware using module boards for the main components of the system. The firmware was developed using the Metrowerks/Freescale CodeWarrior compiler tools.

• Internet Weather Display

Distinctive Excellence award in Circuit Cellar Ink "WIZnet iEthernet 2007" contest (link)

Link to project page on this web site

Gets weather data from WeatherBug using the WeatherBug Labs API, and displays the data on a graphics LCD. IAR's Embedded Workbench for the ARM processor was used for the development of firmware for the NXP LPC2106 microcontroller. The hardware design includes an Ethernet interface IC from WIZnet, and a 320x240 graphics LCD with the Toshiba T6963C controller was used to display both simple text and image icons for the forecast.

• MessageMinder

Distinctive Excellence award in Luminary Micro/Circuit Cellar Ink "Design Stellaris 2006" contest (link)

Link to project page on this web site

Shows important messages on a dedicated display so that you never miss a meeting reminder or email from a very important contact. An application on a Windows PC was created using Microsoft'sVisual Studio C#. This application monitors messages from Microsoft Outlook and relays certain messages through a USB connection to a small board that includes a Luminary Micro microcontroller and an OLED display.

• Simple Wireless Security System

Distinctive Excellence award in the Atmel AVR Design Contest 2006 (link)

A simple wireless door sensor using an 8-pin Atmel AVR microcontroller and a Zigbee transceiver.

• Aclock

3rd place winner in the 2003 Motorola/Circuit Cellar Ink Efield Design Contest (link)

Link to project page on this web site

An application running on the Palm PDA shows the time of day and allows an alarm to be set. When the alarm activates, a presence sensor detects whether the user is actually out of bed before disabling the alarm. The Palm application was developed using GCC for Palm under CYGWIN and the sensor hardware was Motorola's Efield (electromagnetic field) sensor + evaluation board.

• DisplayBuddy

Link to project page on this web site

A small screen that sits next to your PC monitor. When your monitor is in screensaver mode or switched to another computer, DisplayBuddy shows your important messages.

• jWeatherBug

Link to project page on this web site

A Java application that shows how to use the WeatherBug API to poll for weather information.

jNOAAForecast

Link to project page on this web site

A Java application that shows how to use XML & SOAP to get weather information from the National Weather Service.

Weather Station

Under development

Provides local weather conditions using the Oregon Scientific WM-918 weather station and Dallas Semiconductor's TINI as the data collector/server. The Java application gets data from the WM-918 weather data and serves the data to clients on the network.

avr_io

Link to project page on this web site

Allows a host computer to control an Atmel AVR microcontroller by allowing commands, sent through the serial port, to read and write the AVR's registers. It can be used to provide IO ports for a PC. The code was written using the GCC for the Atmel AVR microcontroller. A secondary project, javr_io, adds a GUI so that a user can control digital I/O using buttons on the PC screen.

LCD Demonstrator

Link to project page on this web site

Provides a method to develop driver code for LCD modules. Images are displayed on the graphics LCDs to evaluate the display's view properties. A Java application sends commands to an Atmel AVR microcontroller which is connected to the LCD module. Currently, the T6963, SED1330, and SED1520 LCD Controllers are supported.

Stepper

Link to project page on this web site

Provides and evaluation platform for small (low current) stepper motors. A Java program with a GUI sends commands to the avr_io (see above) which is interfaced to a stepper motor driver circuit.

DTMF Test

Link to project page on this web site

An evaluation platform for testing the use of the CMX860 DTMF/modem IC for data communications. Two CMX860 IC's are cross-connected (tx->rx and rx->tx), and each is interfaced to an HC08 microcontroller. A Java application allows the user to enter data to send. Upon clicking a button, commands are sent to the HC08 microcontrollers and data is tranferred by DTMF or 300-1200baud modem. Metrowerks CodeWarrior for the HC08 was used for the microcontroller code, and Borland's JBuilder was used for the Java application.

m1wire

Link to project page on this web site

A PocketPC 2002 application running on an iPAQ that displays and logs the data measured by a Dallas Semiconductor 1-wire A/D (4 channels) and up to four temperature sensors. Microsoft's eMbedded Visual Tools (C++) was used for development of the PDA application.

j1wire

Link to project page on this web site

A Java application that collects data from Maxim/Dallas 1-wire sensors and plots the data on a chart recorder GUI.

jdi194

Link to project page on this web site

A Java application that collects data from the DATAQ DI-194 and plots the data on a chart recorder GUI.

ftdi2232_i2c

Link to project page on this web site

This project demonstrates the use of the FTDI's FT2232 USB interface IC to communicate with I2C devices.

LEDStripe

Link to project page on this web site

16 LEDs that provide 11 different blink patterns for a hazard warning or to set off a store display. The original version was created in assembly language for the Microchip PICmicro. The second version used the Motorola HC08 with assembly language (for entry into a Motorola HC08 design contest).

rescalc

Link to project page on this web site

A Windows application, written using Microsoft Visual C++, which is used to easily determine total resistance of resistor networks.

avr_lcd1

Interface/driver code for a character LCD using the HD44780/KS0066 controller chip. Developed for the Atmel AVR microcontroller using assembly language.

avr_lcd2

Interface/driver code for a graphics LCD using the Toshiba T6963 controller chip. Developed for the Atmel AVR microcontroller using assembly language.

College Senior Design Project - PCDMM

My design included an A/D board, a PC plug-in interface card, and MSDOS software. The A/D board included two A/D converters. A cable connected this board to the PC plug-in board which included 24 I/O lines to read the A/D data and to control the hardware. The MSDOS program was written in Turbo C and included graphical displays of the A/D readings (in the form of a digital multimeter and oscilloscope).

References

Steve Schram

Senior Design Engineer, Astek

(former Electrical Design Engineer at AirCell)

sschram@astekcorp.com

Curt Lehman

Sr. Software Engineer, Polycom

(former Sr. Software Engineer, AirCell)

cdlehman@iname.com

Sam Linzell

(former Sr. Firmware Engineer, Cognitive)

s.linzell@comcast.net

Mike Dierks

(former Sr. Firmware Engineer, Cognitive)

mdierks@directmethodsllc.com