Project Proposal. Underwater Fish 02/16/2007 Nathan Smith,

Similar documents
Mechatronics Laboratory Assignment 3 Introduction to I/O with the F28335 Motor Control Processor

High Current DC Motor Driver Manual

BEYOND TOYS. Wireless sensor extension pack. Tom Frissen s

FABO ACADEMY X ELECTRONIC DESIGN

Advanced Mechatronics 1 st Mini Project. Remote Control Car. Jose Antonio De Gracia Gómez, Amartya Barua March, 25 th 2014

HAW-Arduino. Sensors and Arduino F. Schubert HAW - Arduino 1

EE-110 Introduction to Engineering & Laboratory Experience Saeid Rahimi, Ph.D. Labs Introduction to Arduino

Lesson 3: Arduino. Goals

Total Hours Registration through Website or for further details please visit (Refer Upcoming Events Section)

EE 451 FINAL SENIOR PROJECT PROPOSAL. Microcontroller-Based Remote Locator Using Asynchronous Serial Communication

Lab 2: Blinkie Lab. Objectives. Materials. Theory

ECE 511: FINAL PROJECT REPORT GROUP 7 MSP430 TANK

Attribution Thank you to Arduino and SparkFun for open source access to reference materials.

Training Schedule. Robotic System Design using Arduino Platform

EE 314 Spring 2003 Microprocessor Systems

EEL5666C IMDL Spring 2006 Student: Andrew Joseph. *Alarm-o-bot*

Project Final Report: Directional Remote Control

University of Florida Department of Electrical and Computer Engineering EEL 5666 Intelligent Machines Design Laboratory GetMAD Final Report

DR-TRC105-EV Evaluation Kit. User s Guide

Module: Arduino as Signal Generator

CATALOG. ANALOG COMMUNICATION SYSTEMS DIGITAL COMMUNICATION SYSTEMS Microcontroller kits Arm controller kits PLC Trainer KITS Regulated Power supplies

TRC EV DR TRC EV DR TRC EV

ILR #1: Sensors and Motor Control Lab. Zihao (Theo) Zhang- Team A October 14, 2016 Teammates: Amit Agarwal, Harry Golash, Yihao Qian, Menghan Zhang

BASIC-Tiger Application Note No. 059 Rev Motor control with H bridges. Gunther Zielosko. 1. Introduction

ARDUINO / GENUINO. start as professional. short course in a book. faculty of engineering technology

Enhanced SmartDrive40 MDS40B

Standard single-purpose processors: Peripherals

Understanding the Arduino to LabVIEW Interface

ENGR 1110: Introduction to Engineering Lab 7 Pulse Width Modulation (PWM)

EEL4914 Senior Design. Final Design Report

RF4432 wireless transceiver module

ZX Distance and Gesture Sensor Hookup Guide

ME 461 Laboratory #5 Characterization and Control of PMDC Motors

Voltage Dividers a learn.sparkfun.com tutorial

Digital Multifunctional RC-Soundmodule TBS Mini V2

the Board of Education

Electronics Merit Badge Kit Theory of Operation

LDOR: Laser Directed Object Retrieving Robot. Final Report

DESIGN OF AN EMBEDDED BATTERY MANAGEMENT SYSTEM WITH PASSIVE BALANCING

Embedded Robotics. Software Development & Education Center

2.0 Discussion: 2.1 Approach:

Today s Menu. Near Infrared Sensors

GE423 Laboratory Assignment 6 Robot Sensors and Wall-Following

Lab 1.2 Joystick Interface

Welcome to Arduino Day 2016

The plan... CSE 6324 From control to actuators Michael Jenkin Office Hours: Sherman 1028 Wed 3-4. From the bottom up...

Lab #10: Analog to Digital Converter (ADC) Week of 15 April 2019

EMBEDDED SYSTEM DESIGN FOR A DIGITAL MULTIMETER USING MOTOROLA HCS12 MICROCONTROLLER

Rochester Institute of Technology Real Time and Embedded Systems: Project 2a

Programming a Servo. Servo. Red Wire. Black Wire. White Wire

Parts to be supplied by the student: Breadboard and wires IRLZ34N N-channel enhancement-mode power MOSFET transistor

Low cost underwater exploration vehicle

Magic Timers Tech Note 20.1

Introduction. Theory of Operation

1. Controlling the DC Motors

Unit level 5 Credit value 15. Introduction. Learning Outcomes

PID MOTOR CONTROLLER. Version 1.0. October Cytron Technologies Sdn. Bhd.

Mechatronics Engineering and Automation Faculty of Engineering, Ain Shams University MCT-151, Spring 2015 Lab-4: Electric Actuators

Analog-to-Digital Converter. Student's name & ID (1): Partner's name & ID (2): Your Section number & TA's name

VEX Robotics Platform and ROBOTC Software. Introduction

100UF CAPACITOR POTENTIOMETER SERVO MOTOR MOTOR ARM. MALE HEADER PIN (3 pins) INGREDIENTS

J. La Favre Using Arduino with Raspberry Pi February 7, 2018

In this activity, you will program the BASIC Stamp to control the rotation of each of the Parallax pre-modified servos on the Boe-Bot.

Coding with Arduino to operate the prosthetic arm

Lab 1: Testing and Measurement on the r-one

APDS-9960 RGB and Gesture Sensor Hookup Guide

SC16A SERVO CONTROLLER

Using Servos with an Arduino

TWEAK THE ARDUINO LOGO

Aztec Micro-grid Power System

νµθωερτψυιοπασδφγηϕκλζξχϖβνµθωερτ ψυιοπασδφγηϕκλζξχϖβνµθωερτψυιοπα σδφγηϕκλζξχϖβνµθωερτψυιοπασδφγηϕκ χϖβνµθωερτψυιοπασδφγηϕκλζξχϖβνµθ

TLE9879 EvalKit V1.2 Users Manual

MICROCONTROLLERS BASIC INPUTS and OUTPUTS (I/O)

BV4112. Serial Micro stepping Motor Controller. Product specification. Dec V0.a. ByVac Page 1 of 18

SV613 USB Interface Wireless Module SV613

JEPPIAAR SRR Engineering College Padur, Ch

Interfacing Sensors & Modules to Microcontrollers

UTILIZATION OF ROBOTICS AS CONTEMPORARY TECHNOLOGY AND AN EFFECTIVE TOOL IN TEACHING COMPUTER PROGRAMMING

Lab 7 Remotely Operated Vehicle v2.0

III. MATERIAL AND COMPONENTS USED

FINAL DESIGN REPORT. Dodge This! DODGERS: Cristobal Rivero Derek Fairbanks 4/21/2009

Part (A) Using the Potentiometer and the ADC* Part (B) LEDs and Stepper Motors with Interrupts* Part (D) Breadboard PIC Running a Stepper Motor

Portable Repeater Controller. Instruction Manual for firmware version 1.0

Special Sensor Report: CMUcam. David Winkler 12/10/02 Intelligent Machines Design Lab Dr. A. A. Arroyo TAs: Uriel Rodriguez Jason Plew

EQ-ROBO Programming : bomb Remover Robot

Introduction to the Arduino Kit

For this exercise, you will need a partner, an Arduino kit (in the plastic tub), and a laptop with the Arduino programming environment.

R PROFLAME Instruction Book Collection

EE 308 Lab Spring 2009

Debugging a Boundary-Scan I 2 C Script Test with the BusPro - I and I2C Exerciser Software: A Case Study

Autonomous Crash Avoidance System. Kristen Anderson Kat Kononov Fall 2010 Final Project Report

EE 109 Midterm Review

Controlling DC Brush Motor using MD10B or MD30B. Version 1.2. Aug Cytron Technologies Sdn. Bhd.

2.017 DESIGN OF ELECTROMECHANICAL ROBOTIC SYSTEMS Fall 2009 Lab 4: Motor Control. October 5, 2009 Dr. Harrison H. Chin

Lab 06: Ohm s Law and Servo Motor Control

PROJECT DESCRIPTION DESIGN FEATURES. HARDWARE and SOFTWARE Used

1 Day Robot Building (MC40A + Aluminum Base) for Edubot 2.0

HAND GESTURE CONTROLLED ROBOT USING ARDUINO

Electric Bike BLDC Hub Motor Control Using the Z8FMC1600 MCU

The Torxis Linear Servo meets the following environmental conditions:

Transcription:

Project Proposal Underwater Fish 02/16/2007 Nathan Smith, rahteski@gwu.edu Abstract The purpose of this project is to build a mechanical, underwater fish that can be controlled by a joystick. The fish will initially be built and tested out of water, and later (possibly after this semester is over) be waterproofed by Dr. Simha s group, and will be tested underwater. The fish will be built by connecting two servos to two fins (the construction of the fish will be implemented by individuals under Dr. Simha.) A servo controller will be connected to the servos, and signals will be sent to the controller from the Z8 microcontroller. Potentiometers will be connected to the fins to read the fins rotation, and the Z8 will read voltages from them (through its analog to digital converter) to determine the actual angle of rotation that each fin has. The Z8 will send data to the servo controller to adjust the angle of rotation of the motors based on the readings it gets from the potentiometers. An LCD screen will be connected to the Z8 to show status reports. A joystick will be connected to the Z8 to control the movements of the motors (time permitting this data will be sent over an IR port.) Strategy Hardware Development I am using the Z8 microcontroller provided in class. I began work with the TINI microcontroller, but am now working with the Z8 after some thought. The TINI lacks some necessary components that make this project less complicated. The TINI does not have an analog to digital converter, and I could find much more documentation about Z8 clocks and interrupt handling than I could for the TINI. I ll be using two UARTs from the Z8 one for the the servo controller, and one for the LCD screen. I may be using an IR input to receive data from the joystick. In the event that I do not use an IR port to receive data from the joystick, I will be using up to six IO ports (four ports for the left, right, up, and down directions, and possibly two ports for two buttons.) I have connected the LCD and servo controller to the TINI, and this week I will connect them to the Z8. When I connected the LCD and servo controller to the TINI over serial4, there were some problems communicating with both devices. Both devices received data from the TINI, but the data they received was garbage. I plan to spend the first week of development hooking the servo controller and LCD screen to the Z8.

I am using the Micro Serial Servo Controller, by Pololu (http://www.pololu.com/products/pololu/0207/) to control the servos. The servo controller removes the need to send PWM signals directly to the servos (it hides these details from the programmer) rather the data it requires are descriptions about where the motors should turn to. It can also handle multiple servos at once. I have applied power to the servo controller, and have verified that it powers on. I ve also verified that it receives signals from its RX port. Currently I am experimenting with a JR Z270 Standard Race Servo, but Dr. Simha will provide me with two servos to use instead this week. I m also using the SerLCD v1.1 screen from Spark Fun to display program status. The SerLCD does power on, and I ve verified that it receives signals from its RX port. Strategy Software Development Note: Moving the fish forward or backward, or turning the fish left or right, means utilizing the servos in a way that causes the fish to go in the specified direction. I first will write a C library that shows text on the LCD screen. The library will allow the programmer to send strings of data to the screen, to clear it, to set an arbitrary cursor position on the screen, and to turn it on/off. The purpose of this library will be for the main loop to display the program s status. The LCD screen will display one of six options: Idle Off Forward (and how fast) Backward (and how fast) Turning left (and how fast) Turning right (and how fast) Next I will write a C library that sends data to the servo controller to control the servos. The library will have various degrees of abstraction for example, there will be commands to move a motor (or fin) 16 degrees left or right, and there will also be commands to move the fish forward 2 feet, backwards 1 inch, etc. Depending on the complexity of the project, I may add capabilities to the software to make the fish turn left and right. The C library will try and hide as much lowlevel implementation detail from the programmer as possible. Finally I will write a C library that parses the data from the joystick (and time permitting, the data from the joystick will be read from IR port on the Z8.) The library will provide a direction, in degrees, to the programmer, which the joystick is pressed towards. It will also process buttons pushed on the joystick.

The main program will sit in an infinite loop and wait for signals from the joystick. After a signal is received from it, the program will parse the signal and move the motors accordingly. It will receive readings from the potentiometers connected to the fins, and will readjust the motors positions based on the readings. To use the program, the user will simply plug in the Z8, push an ON/OFF to turn the program on, and begin moving the joystick. When the user is done, he/she will push the ON/OFF switch again to turn the program off. The LCD screen will indicate whether the program is on or off.

Unknowns I have not yet experimented with an analog to digital converter on the Z8. I intend to use experience with ADCs from class labs to help me with the project. I have not yet created a converter to convert the joystick s game port signals to IO signals. I know that I will need to use an ADC to convert the left, right, up, and down signals from the joystick. Time permitting I will hook an IR transmitter to the joystick so that it can control the fish remotely. I have not used IR transmissions before, and to do so I must purchase an IR transmitter and learn its usage. I must also learn how the Z8 uses IR signals. I must build a harness that will let the fish dangle in the air, and I will have to research the best way to build it. I don't know yet if I will be able to test the fish underwater. This depends on both the completion of the main part of my project (getting the fish to work well out ofwater), and also the completion of a waterproofed design of the fish by Dr. Simha's group.

Implementation Plan Milestones Week 1 (02/18 02/24): Communicate with the LCD screen and servo controller Week 2 (02/25 03/01): Begin creating a C library to display characters on the LCD and to control the servo controller Week 3 (03/04 03/10): Continue creating a C library to display characters on the LCD and to control the servo controller Week 4 (03/11 03/17): Read data from the potentiometers Week 5 (03/18 03/24): Incorporate data read from the potentiometers into controlling the servo controller Week 6 (03/25 03/31): Begin installing a joystick Week 7 (04/01 04/07): Finish installing a joystick Week 8 (04/08 04/14): Create an IR interface for the joystick Week 9 and on: Debug and test, and possibly work on a waterproofed version of the fish. Implementation Plan I will implement my plan by first connecting the various hardware components to the Z8. I will then write software libraries to control those components. I will then perform various tests to ensure that the hardware components are operating as expected. Verifying that the motors turn in accordance to what they should be will test the hardware IE, if I send data to the servo controller to turn a motor to a 180 degree position, then I will verify that the motor is indeed at the 180 degree position. I will test the joystick by verifying that pushing the joystick in various directions has the intended output. When I push the joystick forward, I will verify that the motors turn in a direction that will push the fish forward. When I push the joystick backward, I will verify that the motors turn in a direction that will push the fish backward. Verifying that certain instructions produce the intended outcomes will test the software. For example, if I run a command: motorturnabsolute(0, 65); // turn motor 0 to 65 degrees then I will check that the motor did indeed turn to 65 degrees. I will verify that the LCD screen displays correct data, and that the software correctly interprets data from the potentiometers. I may use an oscilloscope with various components of the design. The oscilloscope may help in debugging output from the potentiometers, and also testing the signal levels from the joystick's game port.

Building a converter that converts game port signals to serial signals for the joystick may create some bottlenecks, and I need to make sure that I give myself ample time to procure the necessary parts and to debug it. I need to decide later how much control I want the joystick to have over the motors. If controlling the motors with the joystick is less complicated than I expect, then I will add the ability to turn the fish left and right. If Dr. Simha s group waterproofs the fish design, and I have time at the end of the project design and development, then I'll test my design out with the fish swimming underwater. Resources I am using the following university hardware: Z8 Development Kit Spark Fun Electronics SerLCD v1.1 Pololu Micro Serial Servo Controller Two servos and potentiometers that I will receive from Dr. Simha I am providing the following hardware: JR Racing Z270 Standard Race Servo Mac G5 Battery pack for the servo controller Soldering equipment Metex Multimeter Wires to connect various components together I am using the Z8 C development IDE to produce the software