Section 3 Board Experiments

Similar documents
Copyright 2004 Oregon State University School of Electrical Engineering & Computer Science

SPIRIT. Phase 5 Analog Board Computer and Electronics Engineering

Figure 18: Basic input port drawing.

logic table of contents: squarebot logic subsystem 7.1 parts & assembly concepts to understand 7 subsystems interfaces 7 logic subsystem inventory 7

Instruction Manual for BE-SP3 Circuit. 10/21/07

Installing PRO/DGX or Pro Soloist MIDI interface. R Grieb 9/08/2017

IME-100 ECE. Lab 4. Electrical and Computer Engineering Department Kettering University. G. Tewolde, IME100-ECE,

Make your own secret locking mechanism to keep unwanted guests out of your space!

DEFAULT SCREEN. Button and Screen Layout DRILLING WIDTH TARGET RATE HOPPER NUMBER CROP NAME DRILLING ACTION CROP NUMBER. HOPPER selection POWER On/Off

PP-BOB2-V2.0 PARALLEL PORT BREAKOUT BOARD

SMM501/501-H (Surveillance Mode Module) Ford Police Interceptors (Sedan and SUV)

Lab-3: LCDs Serial Communication Analog Inputs Temperature Measurement System

PP-BOB2-V1.0 PARALLEL PORT BREAKOUT BOARD

Lab 2.2 Ohm s Law and Introduction to Arduinos

HUB-ee BMD-S Arduino Proto Shield V1.1

ME 3210: Mechatronics Signal Conditioning Circuit for IR Sensors March 27, 2003

Robotics/Electronics Review for the Final Exam

Cheap Control Systems. Cheap Six Channel (C6C) Servo Controller Version 2.3 OVERVIEW

Prototyping & Engineering Electronics Kits Basic Kit Guide

Alesis MMT8 16x Memory Expansion Modification (Black model MMT8 s) Equipment. Components required. Other bits:

User manual DinaSys DTC/DTS and DTC/DTZ

IME-100 ECE. Lab 3. Electrical and Computer Engineering Department Kettering University. G. Tewolde, IME100-ECE,

TA0139 USER MANUAL ARDUINO 2 WHEEL DRIVE WIRELESS BLUETOOTH ROBOT KIT

Silverpak 17C/CE INTEGRATED STEP MOTOR, DRIVER AND CONTROLLER

AXE Stack 18. BASIC-Programmable Microcontroller Kit. An inexpensive introduction to microcontroller technology for all ability levels

Programmable Control. Name Class Teacher. Ellon Academy Technical Faculty

DT-ROBOT Line Follower

Arduino 05: Digital I/O. Jeffrey A. Meunier University of Connecticut

Getting started with your DGH module:

Innovation First, Inc Full-Size Robot Controller Reference Guide

Table of Contents 1 ABOUT THIS GUIDE CONTACT INFORMATION ANTENNA INSTALLATION... 4

Button Code Kit. Assembly Instructions and User Guide. Single Button Code Entry System

Manual 601: : USB/RS232. Specifications. Contents. Options

Floppy Disk To USB. Converter Installation and. Operation Manual

BLD04A Brushless DC Motor Driver

Supplement for module D061 incl. ATMega128 Prozessor

ME456: Mechatronics. Prof. Clark Radcliffe. Do you have the knack? Joonho Lee, TA. What s Mechatronics? Mechatronics

ROBOTLINKING THE POWER SUPPLY LEARNING KIT TUTORIAL

Adafruit USB Power Gauge Mini-Kit

Lab 5: LCD and A/D: Digital Voltmeter

Arduino Robotic Car. The result is a low cost and effective project for the Union Pacific Railroad grant.

mi:node User Manual Element14 element14.com/minode 1 User Manual V3.1

Another Forking Robot

ONE AVR D EVELOPMENT SECTION I NTRODUCTION TO NTRODUCTION TO AVR EVELOPMENT TOOLS. Section One: Introduction to AVR Development Tools

DIY KIT 121. ATMEL 89Cx051 PROGRAMMER

How2Use DT-AVR ATMEGA168 BMS. By: IE Team. Picture 1 The layout of DT-AVR ATMEGA168 BMS

ROBOT LINE TRACKING MOUSE KIT C-9801

Alesis MMT8 16x Memory Expansion Modification (all grey model MMT8 s)

Explorer V1.20. Features

K10 Intrinsically Safe Electro-Pneumatic Positioner Operating Manual

Spooky Projects. Class 2. Introduction to Microcontrollers with Arduino. 14 Oct machineproject - Tod E. Kurt

Goal: We want to build an autonomous vehicle (robot)

Rotator Genius Instruction Manual v1.3.3

Manual Version March 2007

KNOCK LOCK MAKE YOUR OWN SECRET LOCKING MECHANISM TO KEEP UNWANTED GUESTS OUT OF YOUR SPACE! Discover: input with a piezo, writing your own functions

Signal Adapter. Signal Output. Power Input. Modell-Zug Elektronix Signal Adapter U.S.A. Momentary. Auxillary. Switch. Outputs

Lab 5: LCD and A/D: Digital Voltmeter

University of Hull Department of Computer Science C4DI Interfacing with Arduinos

REQUIRED MATERIALS Epiphany-DAQ board Wire Jumpers Switch LED Resistors Breadboard Multimeter (if needed)

Arduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S

How-To #7: Assemble an H-bridge Circuit Board

Control Box Setup - PRSalpha

Rear Distance Detection with Ultrasonic Sensors Project Report

OFP401P0189. Color Sensor. Operating Instructions

Phi-connect for Arduino (connector board V1.9)

K191 3 Channel RGB LED Controller

W205-N RVC NTV-KIT703

8051 Intermidiate Development Board. Product Manual. Contents. 1) Overview 2) Features 3) Using the board 4) Troubleshooting and getting help

BEST Generic Kit Notes GMKR00002 Revision 5; August 2010

How-To #3: Make and Use a Motor Controller Shield

Freeduino USB 1.0. Arduino Compatible Development Board Starter Guide. 1. Overview

BMC24. MIDI TO GATE CONVERTER DOCUMENTATION. This documentation is for use with the "Euro Style" bottom board.

keyestudio Keyestudio MEGA 2560 R3 Board

Cygnos360 V2 Installation Manual

Connecting LEDs to the ADB I/O

2010, 2013 Azatrax.com MRD2-S USB with Switch Control installation instructions pg. 1 of 6

Onwards and Upwards, Your near space guide. Figure 1. CheapBot Line Follower

970 Serials Lights. Multi-Function Lights System FEATURES SPECIFICATION

INTERFACING HARDWARE WITH MICROCONTROLLER

Chapter 7 Building robot with MicroCamp kit

COS 116 The Computational Universe Laboratory 7: Digital Logic I

Installing Sentor. Hardware Installation

Wiring Inside the card reader you will see a circuit board. The connections are as follows:

Rotator Genius Manual

CS4141 IDL Notes. I. Quick Overview of IDL Prototyping Unit

INSTALLATION INSTRUCTIONS

The SilverNugget is a servo controller/driver for NEMA 17 & 23 frame microstep motors.

Build Your Own Home Security System

Halloween Pumpkinusing. Wednesday, October 17, 12

Robotics Adventure Book Scouter manual STEM 1

Wall-Follower. Xiaodong Fang. EEL5666 Intelligent Machines Design Laboratory University of Florida School of Electrical and Computer Engineering

Weighing News From Sartorius. Introducing the New Sartorius Combics 2 Indicator with IS High Resolution Platform.

StenBOT Robot Kit. Stensat Group LLC, Copyright 2018

EE 354 August 1, 2017 Assembly of the AT89C51CC03 board

Digital Camera Controller

High Power (15W + 15W) Stereo Amplifier

PIC Dev 14 Surface Mount PCB Assembly and Test Lab 1

BLU- CIF Interface Board

User s Guide TURBO Pinewood Derby Finish Line and Timer Release /31/2011 NewBold Products, Atlanta GA

ROBOLAB Reference Guide

Transcription:

Section 3 Board Experiments

Section Overview These experiments are intended to show some of the application possibilities of the Mechatronics board. The application examples are broken into groups based on which functionalities of the mx_ctlr.0 are used. The experiments progress from simple to more complex functionalities. All experiments will contain the required code, explanations, and hardware setup for each. The code for each experiment can be downloaded from mx_ctlr.0 website (Appendix B). Help on commands can also be found in the mech_lib documentation (Appendix B). Soldering the Motors and Switches Included in the kit is a length of CAT 5 cable that will be used to solder the motors and switches. Cut off a section of the blue insulation, being careful not to cut the wires inside (after 10" of the insulation has been cut, the rest of the wires can be removed by pulling them out of the insulation). Cut a desired length of wire for the motors and strip about ¼" of the insulation off both ends, leaving a bare section of copper wire. Attach the wires as shown in Figure 11; this will help prevent the leads from breaking off of the motors. Solder the leads to the terminals on the motor as shown in Figure 12. Figure 11: Stripping wires. Page 26 Oregon State University ME 101 Lab Book

Figure 12: Attaching wires to the motor. The switches can be hooked up as normally open or normally closed switches. This means that they can be connected so that when the switch is not activated, the two wires are shorted together (normally closed) or not shorted (normally open). To make a normally open switch, connect one wire to the center terminal and the other wire to the terminal that is not connected to the center when the switch is not pressed. To make a normally closed switch, attach the center wire and the terminal that is connected to the center when the switch is not pressed. Figure 13: Normally open switch (left), normally closed switch (right). Once the motor and switches have been wired, they can be inserted into the board using the terminal blocks as shown in Figure 14. Screw the tops down to make a snug connection. ME 101 Lab Book Oregon State University Page 27

Figure 14: Attaching devices to the mx_ctlr board. Page 28 Oregon State University ME 101 Lab Book

Power Supply, ISP Connector, Reset Button Basic Programming For this experiment, hook up two motors to motor terminals 1 and 2. Download the program for this experiment from the mx_ctlr website /*all text that appears between /* and */ and after (Appendix B) and the // are comments and are ignored by the program*/ refer to section 1 on how to program the board. This program turns the motors forward and then reverse; once it has completed the cycle, the reset button must delay(20); halt(); be pressed to start the sequence again. A program such as this is similar to what a VCR might do: once the tape has finished, the VCR would need to rewind it to play again. /******************************************************************** This program runs all four motor output forward, then reverses two of them then stops all four motors. Once all four motors are stopped, the reset button must be pressed, or the power must be removed before the program will run again ********************************************************************/ #include <mechlib.h> //This library contains the functions specific to the mechatronics board //this while loop is always true, it will continue forever forward(1); //this function turns the motor number inside the parentheses forward forward(2); forward(3); forward(4); delay(20); //this function delays the program from continuing for 2 seconds reverse(1); //this function puts the numbered motor in reverse reverse(3); //this function stops all actions of the program //reset must be pushed to start over Simple sequential control like this can create many different systems and unique devices. Most assembly lines and machines break down to this type of control. ME 101 Lab Book Oregon State University Page 29

Basic Inputs, Limit Switches, Motors Motor Control This section will introduce the basic input terminals and how to use them with the limit switches. Attach a motor to motor terminal 1 and 2, and switches on inputs 1 and 2. Download the program for this section onto the board. This program uses the inputs from the switches to turn the motors forward until the switch is released. Programs similar to this might be used in control system for a car, as long as you turn the steering wheel, the car continues to turn. Another option is to have a /******************************************************* This program turns on a motor while the corresponding switch is being pressed. *******************************************************/ #include <mechlib.h> while(poll_sensor(1)){ //as long as switch one is on forward(1); //turn on motor one if(poll_sensor(2)) //if switch 1 and 2 are on forward(2); //turn on motors 1 and 2 coast(1); //turns off the motors when the coast(2); //switch is not pressed while(poll_sensor(2)){ forward(2); if(poll_sensor(1)) forward(1); coast(1); coast(2); system where you press a switch once to start an event, and then press it again to stop it. Many different types of control systems used some type of feedback to double-check what is occurring. Even machines that run through a timed sequence of events will have built in fail-safes that are always monitored to prevent injury to people. Using limit switches is very important for many mechanical devices. As humans we have a lot of built in position control sensors, we know where all of the parts of our body are at all times; machines don t inherently have this ability, so it has to be designed in. Let s take a common computer printer for example. How does the printer know that the printer head is at the edge of the paper? In many printers there is a limit switch that the head presses when it is at the edge of the paper. Page 30 Oregon State University ME 101 Lab Book

State Control Logic The program in this section uses state logic to control the motors. Depending on what state the motors are in, activating the input switch will have different output combinations. For this section, attach the motors to terminals 1 and 2 and a switch to input 1. When the switch is depressed the motors will change state. Similar systems are used when a series of outputs are needed from a single unit, such as an assembly line where the task will vary from lifting to attaching to moving. A state controller like this one allows for a lot of different functionalities. Many different inputs could allow for lots of different outputs depending on what was going on with the machine at the time. For example, in a washing machine, it wouldn t make any sense to add the fabric softener during the wash cycle. Motor 1 Motor 2 Motor 1 Motor 2 Next Next State State Stop Stop Stop Forward Stop Forward Forward Stop Forward Stop Forward Forward Forward Forward Stop Stop /******************************************** This program turns on the motor outputs in a binary sequence when a switch is pressed ********************************************/ #include <mechlib.h> unsigned char state=0; if(poll_sensor(1)&&state==0){ brake(1); forward(2); state=1; if(poll_sensor(1)&&state==1){ forward(1); brake(2); state=2; if(poll_sensor(1)&&state==2){ forward(1); forward(2); state=3; if(poll_sensor(1)&&state==3){ brake(1); brake(2); state=0; ME 101 Lab Book Oregon State University Page 31

Digital Switches Elevator Service For this experiment, an LED will need to be hooked up in series with a 100Ω resistor (brown, black, brown) with two leads attached. Note: be careful to solder the shorter lead of the LED to the resistor; the LED has polarity and will not work if soldered on backward. Figure 15: Attaching a LED. /************************************************************************************* This program uses three switches to represent an elevator in use, as long as a switch is held down, it will turn that motor forward. When two of the switches are held down, a light will flash. If all three switches are held down, then the light will turn on, putting forth elevator into use. *************************************************************************************/ #include <mechlib.h> void run(void); //function prototype while(poll_sensor(1) poll_sensor(2) poll_sensor(3)){ run(); //calls the function while( (poll_sensor(1)&&poll_sensor(2)) (poll_sensor(2)&& poll_sensor(3)) (poll_sensor(1)&&poll_sensor(3)) ){ output_on(1); //turns LED on output_off(1); //turns LED off run(); while(poll_sensor(1)&&poll_sensor(2)&&poll_sensor(3)){ output_on(1); forward(4); run(); coast(4); Once the LED has been soldered, attach the lead on the LED without the resistor attached to Vcc on the alternate input port and the lead on the resistor not connected to the LED to digital switch 1. You will also need to attach three switches (inputs 1, 2 and 3). Motors are optional for this lab since the motor LEDs will indicate which motor is on and which direction it is going. In a building with four elevators, in order to conserve power and be more efficient, only three elevators will be on for normal use. Each switch will turn on a motor terminal that represents an elevator. When two of the run(); void run (void) //this function checks to see which switch is pressed { if(poll_sensor(1)) forward(1); else coast(1); if(poll_sensor(2)) forward(2); else coast(2); if(poll_sensor(3)) forward(3); else coast(3); Page 32 Oregon State University ME 101 Lab Book

elevators are being used an indicator light will start blinking. Once all three elevators are in use, the forth elevator will start automatically and the light will turn on, indicating that all four elevators are in use. The digital switch could be used for many different applications. It is not powerful enough to run an electromagnet or a motor, but it can easily trigger a relay that could run nearly any size device you would want even something like a light bulb in a house or a large siren. ME 101 Lab Book Oregon State University Page 33

Pulse Width Modulation Motor Speed Depending on the task at hand, you will need to have different operating speeds. This program allows you to step through four different motor speeds as well as reverse, by pressing the limit switches. You will need to attach one motor and two switches. This is similar to manual gears in a car: you press one button and the motor will speed up to a certain point, press the other switch and the motor will slow down to a stop. The precision command allows you to vary the speed of the motor in forward and reverse with 255 bits of accuracy. Pulse width modulation (PWM), is used to control many motors today. It works by rapidly turning the electricity off and on to the motor. The more often the electricity is off, the slower the motor will turn. This method is very efficient because little energy is wasted since all of the electricity goes through the motor. /******************************************************* This program is similar to a car engine, pressing one switch will make it go faster, and pressing the other one will make it go slower, it also has a reverse state ******************************************************/ #include <mechlib.h> unsigned char number=0; unsigned char speed[6]={0,20,40,100,255,60; //array if(poll_sensor(1)&&number<4){ precise(1,1,speed[number+=1]); delay(2); if(poll_sensor(2)&&number>0){ precise(1,1,speed[number-=1]); delay(2); if(poll_sensor(2)&&number==0){ precise(1,0,speed[5]); while(!poll_sensor(1)); coast(1); delay(2); Alternate Inputs, Analog to Digital Converter, Sensors Light detecting Motor Solder a photo resistor and a 470Ω resistor (yellow, violet, brown) in series. Connect a wire to each end and to the middle of the resistor/photo resistor pair, Figure 16. Connect the lead connected only to the resistor to Vcc on the alternate input port. Connect the lead only connected to the photo resistor to the GND on the alternate input. Connect the center lead to alternate input 1. Page 34 Oregon State University ME 101 Lab Book

Figure 16: Attaching a photo resistor. Autonomous devices, such as some robots, need to have the ability to detect objects around them. One possible solution is having a light detector that will find the brightest point or could detect when a light is behind an object. This program will start turning a motor once a switch has been pressed. When the switch is pressed again, usually after one rotation the motor will stop and go back to the brightest point. When the switch is pressed the third time, the motor will begin searching again. Simple Motor Positioning A Hall effect sensor can be used as a simple position sensor to measure the rotation of the motor. The Hall effect sensors supplied in the Mechatronics kit are omni polar sensors. This /*********************************************************************** This program uses a photoresistor to detect the brightest point in the surrounding area then points in that direction ***********************************************************************/ #include <mechlib.h> // Uses switch means they can detect both the north and south poles of a magnetic field. To use one, simply supply it with Vcc and GND and monitor the output. Figure 17 shows a diagram of the hall effect sensor. Connect Vcc and GND to Vcc and GND on the alternate input port. Connect the Output pin to input 1 on the alternate input port. You can use the poll_ir command to check the Hall effect sensor. unsigned char max_light=0, temp_value=0, count=0, position=0; while (!poll_sensor(1)) ; /*collects data on brightness*/ while (!poll_sensor(1)){ precise(1,1,60); delay(1); brake(1); temp_value=read_adc(0); count++; /*saves the location of brightest point*/ if(temp_value > max_light && count>3){ max_light=temp_value; position=count; /*returns to brightest point*/ if (count>3){ brake(1); temp_value=count-position; for(temp_value; temp_value--; temp_value>0){ precise(1,0,60); delay(1); brake(1); count=0; max_light=0; temp_value=0; position=0; ME 101 Lab Book Oregon State University Page 35

/*********************************************** This program will position a motor. The motor will go forward until the magnet triggers the hall effect sensor. Then the motor is stopped. If the sensor is moved the motor will go foward until triggered again. ***********************************************/ #include <mechlib.h> Figure 17: The hall effect sensor precise(2,1,20); if(poll_sensor(1)){ if(poll_sensor(1)){ brake(2); delay(1); //If the motor doesn't stop, just slows down and //goes forward again, make 20 a lower intensity. //goes forward again, make 20 a lower intensity. Tape a small magnet to the side of the disc on the motor. The sensor will need to be mounted such that the flat side of the sensor faces the magnet. The sensor must be placed fairly close to the magnet on the motor to work. The motor will turn until the magnet and the sensor are lined up together. If the sensor is then moved away, the motor will turn until the sensor is again located. Serial Communication Computer Board: Motor Control Nearly every electronic device today is controlled by some sort of a computer. The built in serial communication on the mx_ctlr.0 allows you to connect the computer to the board using any serial connection program. Download the program and connect the board to the computer using an extension male to male DB9 cable to either Com Port 1 or 2. On your computer click Start Programs Accessories Communication HyperTerminal. You will then be prompted to enter a name for the communication. Choose any name you like, select an icon, and press OK. Select the port that the board is connected to and press OK. Under bits per second select 9600, and under Stop bits choose 2, and then click OK. You are now ready to control your board. Page 36 Oregon State University ME 101 Lab Book

Table 4: Commands for Serial Program Forward Reverse Motor 1 1 5 Motor 2 2 6 Motor 3 3 7 Motor 4 4 8 The program will print anything you type on the keyboard back onto the screen for hyper terminal except for the numbers 1-8, which will turn the motors on forward or reverse as described in Table 4. You can add additional commands, such as stop, using other keys by finding their corresponding values in an ASCII table. This can also be expanded to other functions on the board besides the motor outputs. Board Computer: Simple Voltmeter The Mechatronics board can also be used to send data to the computer. This program uses the built-in ADCs on the mx_ctlr.0, allowing you to take voltage measurements up to 5V. To measure a higher voltage, make a voltage divider and change the program to accommodate for the difference. In the code shown, the positive input voltage will be taken from alternate input 0. For external voltage sources, connect GND on the alternate input port to the ground of the external source. /************************************************************************* This program takes an input from the keyboard and performs a corresponding function on the mechatronics board. All case number correspond to standard ascii values for keys, i.e. 0->48, a->97. *************************************************************************/ #include <mechlib.h> #include <stdio.h> #include <mega8535.h> void USART_Init( void ); int number=0; USART_Init(); number=getchar(); putchar(number); /*similar to multiple if statements*/ switch(number){ /*if number=48, then*/ case 48: coast(1); coast(2); coast(3); coast(4); case 49: forward(1); case 50: forward(2); case 51: forward(3); case 52: forward(4); case 53: reverse(1); case 54: reverse(2); case 55: reverse(3); case 56: reverse(4); default: delay(2); void USART_Init( void ) { /* Set baud rate to 9600*/ UBRRH=0x00; UBRRL=0x67; /* Enable receiver and transmitter */ UCSRB=0b00011000; UCSRC=0b10001110; /* Set frame format: 8data, 2stop bit */ Hyper terminal will also need to be set up the same way as the previous experiment. The voltmeter works by reading a value from the ADC, which is based on a reference voltage, in this case 5V. Some calculations are performed, giving a corresponding output voltage that can be sent to the computer. Because of the simplicity ME 101 Lab Book Oregon State University Page 37

of this setup, the voltage may off by as much as.05v in the 0-5V range. Innovative Projects Bumpbot The mx_ctlr.0 board can be used for many different things; one of these is as a robotic base. All that needs to be done is to mount motors to a /*********************************************** This program acts as a bumpbot, it will go until a sensor is activated, backup, turn away, and go on. Depending on how the motor are hooked up, the robot will behave differently. ***********************************************/ #include <mechlib.h> forward(1); forward(2); /*if sensor one is hit, it will backup, turn, and go on*/ if(poll_sensor(1)){ reverse(1); reverse(2); forward(1); forward(2); if(poll_sensor(2)){ reverse(1); reverse(2); forward(2); forward(1); /*************************************************************** This program uses the built in ADC on the chip to make a simple voltmeter. A voltage reading is taken every time a switch is pressed. ****************************************************************/ #include <mega8535.h> #include <mechlib.h> #include <stdio.h> void USART_Init( void ); void USART_Transmit( int data ); int ones=0, tenths=0, hund=0, count=0; float number=0; USART_Init(); if(poll_sensor(1)){ /*reads the adc 3 times for accuracy*/ for(count=0; count<3; count++) number=adc_precise(0); /*calculates the corresponding voltage*/ number=(number)*5/1023; /*converts the number to BCD*/ ones=number; tenths=(number-ones)*10; hund=number*10; hund=(number*10-hund)*10; /*sends the value to the computer putchar can also be used*/ USART_Transmit(ones+48); USART_Transmit(46); //decimal USART_Transmit(tenths+48); USART_Transmit(hund+48); USART_Transmit(10); //new line USART_Transmit(13); //carriage return delay(5); void USART_Init( void ){ /* Set baud rate */ UBRRH=0x00; UBRRL=0x67; /* Enable receiver and transmitter */ /* Set frame format: 8data, 2stop bit */ UCSRB=0b00011000; UCSRC=0b10001110; void USART_Transmit( int data ){ /* Wait for empty transmit buffer */ while (!( UCSRA & (1<<5)) ) ; /* Put data into buffer, sends the data */ UDR = data; Page 38 Oregon State University ME 101 Lab Book

flat piece of material and attach wheels. The mx_ctlr.0 then controls these motors to maneuver the robot around. This simple robotic base is similar to the TekBots base used in the School of EECS at Oregon State University, and can compete along side them in the annual TekBots Triathlon. For the bumpbot program to operate, two limit switches or other sensors will need to be mounted in front of the robot and connected to inputs 1 and 2. It will then roam around aimlessly until a sensor signals a hit, then back up, turn away, and continue forward. If motor 1 and sensor 1 are hooked up on the same side, the robot will backup and turn away from the object that hit the sensor. If the motors and switches are crossed, the robot will turn into the direction of the object. ME 101 Lab Book Oregon State University Page 39