ME 333 Introduction to Mechatronics (Archive Winter 2013)
Winter Quarter 2013
First day of class is Tuesday Jan 8
- Section 20: Prof. Kevin Lynch, T Th, 11:00-12:20, Tech LR5
- Section 21: Prof. Nick Marchuk, T Th, 12:30-1:50, Tech LR5
- TAs: Alex Ansari, AlexanderAnsari2011 at u.northwestern.edu; Jian Shi, JianShi2011 at u.northwestern.edu
- C Peer Instruction Sessions:
- Final demo (in lieu of final exam): Monday March 18 3-5 PM (12:30-1:50 section) and Wed March 20 9-11 AM (11-12:20 section) in LR5
- Office Hours:
- Mon-Fri 3-5 PM: Prof. Marchuk, Mechatronics Lab, Ford B100
- Mon 11:30-1:30 PM: Alex Ansari, Willens Wing Atrium
- Tues 2-3 PM: Prof. Lynch, B290
- Wed 12:00-2:00 PM: Jian Shi, NxR Lab, B230
- Thurs 3-4 PM: Prof. Lynch, B290
Purpose of this Course
The purpose of this course is to provide tools that help you express your creativity. Maybe you want to build a robot, or a piece of kinetic art, or an automatic ball-throwing device to entertain your dog; maybe you've identified a market for a new smart product and you'd like to prototype the device. This course provides fundamentals of mechatronics to give you confidence to take on these projects. You are encouraged to take what you learn in this course and apply it in the project-based ME 433 Advanced Mechatronics course, Design Competition, or independent projects.
Approximate Syllabus
This course is for students that want to build microprocessor-controlled electromechanical devices.
To do this, ME 333 focuses on three topics: (1) general C programming; (2) Microchip PIC microcontroller architecture and C programming specific to the PIC (e.g., using the PIC's peripherals, such as analog inputs, digital I/O, counters/timers, comm ports, etc.); and (3) interfacing the PIC to sensors and actuators, some theory of sensor and actuator operation, and interface circuitry and signal processing.
You will do a lot of programming in this course! If you are certain you hate programming, then this is not the course for you. But knowing how to program is very useful for any modern engineer. The language we will use is C, a fairly low-level language that works well for microcontrollers, without being nearly as painful and low-level as assembly language. If you don't know C, that's not a problem, most students don't before taking ME 333; but you should plan to learn it, and rather quickly. You will have all the materials you need to start learning C before class starts, and the first assignment on C is due on the first day of class! The reason: even though we start out with C, that's not the main goal of this course. The main goal is to teach you about microcontrollers and mechatronics. Plus some students already have C background.
You will bring your laptop to each class. As the quarter progresses, we will be handing out other equipment that you will need to bring to class, such as the NU32 development board that breaks out the PIC32MX795F512L microcontroller.
It is essential you do the assigned reading in advance of class. Classes will begin with you turning in a short problem set related to the reading. (This includes the very first day of class!) Once a week we will have a short quiz. Most classes will be a combination of a brief review, Q&A, and working individually or in small groups on problems while the instructors help answer any questions.
Topics we will cover include:
- introduction to C programming
- introduction to the PIC32 hardware, and programming the PIC32 in C
- digital I/O
- counters/timers and interrupts
- analog input
- sensor smorgasbord
- digital signal processing: filters and FFTs
- analog output and pulse-width modulation
- brushed permanent magnet DC motors: theory and control
- stepper motors and RC servo motors
- communication by SPI, I2C, and RS-232
Checklist to Complete Before the First Day of Class
Attendance at the first day of class (Tuesday Jan 8) is mandatory. By the first day of class, you should:
- Complete the reading and assignment 1, which is due the first day of class! In fact, the first two weeks of assignments are already posted, so you are welcome to complete them all over the break and coast through the first two weeks of class. The first assignments are designed to get you up to speed on the C programming language, which we will use throughout the course.
- Have a laptop with at least 2 USB ports. Any operating system is fine. One port will be used to program and communicate with your PIC microcontroller, and the other will be used for your portable oscilloscope.
- Be prepared to buy your class kit, consisting of the portable NUscope oscilloscope, the NU32 PIC32 development board, and lots of other goodies. Price $125 if you are starting from scratch; $75 if you already have the NUscope.
Student Contract
By signing up for this course, you agree to complete the checklist above before the course starts. You understand that learning from classmates is encouraged, up to the stage of conceptualizing solutions. You understand that copying assignment solutions and program code plagiarism is not tolerated. You will report instances of code plagiarism you are aware of. Code plagiarism includes, but is not limited to:
- Allowing another student to copy your code.
- Copying another student's code, in whole or in part.
- Transforming copied sections of code to try to disguise their origin.
- Borrowing code from others not in the course, e.g., code found on the internet, without attribution. Borrowing code found on the internet is acceptable if the source is clearly indicated in your code comments, and if you understand how the code works.
On our part (faculty and TAs), we commit to do our best to provide you a curriculum and set of experimental materials to get you up to speed on sophisticated mechatronics integration as quickly and efficiently as possible, while giving you a foundation in concepts needed to go further in future projects and courses.
Prerequisite
ME 233 Electronics Design or similar (EECS 221, 225) is required. You will be expected to analyze circuits with resistors, capacitors, inductors, diodes, transistors, and op-amps. You can find refresher material and a sample quiz at this page.
Reading
Required:
- A Crash Course in C: A brief introduction to the C programming language. Sample code from this appendix can be found here.
(Essential C is also a very nice intro to C)
- handouts associated with individual classes
- wiki info on Microchip PICs
- PIC32 Data Sheet (256 pages, 5 MB pdf)
- PIC32 Family Reference Manual, by chapter, and an earlier version that conveniently has all chapters in one document. Lots of useful and detailed information on the PIC32 architecture and how the peripherals work, including detailed description of their SFRs. Only certain parts of certain chapters will be assigned. These chapters include quite a lot of example code. Be warned though, Microchip was not very careful when writing the sample code; some of it contains syntax errors, or values in registers that are incorrect. Even with this being the case, this is still a very useful document.
- PIC32MX Peripheral Library (included as a .chm file under "Program Files\Microchip\MPLAB C32\doc" with your C32 compiler installation)
Useful, but not required:
- Programming 32-bit Microcontrollers in C: Exploring the PIC32 by Lucio Di Jasio. This is an easy to read and informative exploration of the PIC32.
- MPLAB C32 Libraries Guide and MPLAB C32 User Guide, included under "doc" of your C32 compiler installation
- Other C resources, such as online as well as this pdf version of "The C Book," and the classic C Programming Language reference book by Kernighan and Ritchie
Grading
Grades will be approximately 40% quizzes and 60% assignments (including the final project). We will have short quizzes once a week at the beginning of class covering material on the previous assignment. Bring a sheet of paper you can turn in with your quiz answers. (Your lowest quiz score and homework score will be dropped.) We will have a final project and demo in lieu of a final exam.
All quizzes and assignments have equal weight, regardless of how many points they are graded out of. If one homework is graded out of 20 points, and the next out of 40, the formula for calculating your total grade for these two assignments would be 0.5*(score1/20) + 0.5*(score2/40).
Homework Submission
All homework will be submitted on Blackboard. All homeworks should be submitted by 11 AM on the day it is due (i.e., before the first section of the day). Late homeworks will not be accepted.
Here are a few guidelines/tips associated with homework submissions:
- We expect the required files for each assignment to be compressed together in a zip file (no rar files).
- When asked to submit C code for a given programming assignment, we are only concerned with receiving the relevant source files, i.e., all *.c and *.h files. We do not want entire IDE/MPLAB X projects or executables/object files. And put all your source files and your documents including your answers to all the questions IN ONE FOLDER with the name "Lastname_Firstname_a#"(# is the assignment index number).
- When writing your responses, please follow any instructions on how to write your response. For example, if we ask for a snippet of code, please do not submit your entire C program with header files and a main routine. We typically are only expecting a few lines of code that solves the problem.
- When submitting written responses, we prefer PDF files, but will accept word documents (.doc, .docx), .txt, and .rtf files.
- It helps both us and you if you format your code nicely. Clean looking code is easier for us to grade and easier for you to debug. Text editors with IDEs such as Netbeans and MPLAB X have tools for auto-formatting code. For example, highlighting a region and hitting Alt+Shift+f (Linux and Windows) will format that region according to your local formatting preferences.
- When you compile your code, pay attention to any compiler warnings. They are there for a reason! You should be able to eventually get your code to produce no warnings. Often if a piece of code is not working, the warnings will give a clue as to why.
Schedule
All tutorial C code from "A Crash Course in C," as well as sample PIC32 code, can be found at this page: Sample Code for ME 333. The draft notes from Winter Quarter 2013 are compiled into a single file here: ME 333 Winter 2013 Draft Notes.
Winter Break
- Reading due for first class: pages 1-10 of A Crash Course in C
- Assignment 1 due: problems 1-4, 6-8, 10-11, 14-15 of A Crash Course in C. Bring your laptop to class and demonstrate your HelloWorld.c program.
Class 1 (T 1/8)
- Assignment 1 due: Hand in paper versions of your solutions at the beginning of class. No blackboard today. Also, bring your laptop to class to demonstrate HelloWorld.c.
- Class Topic: Course overview and C programming
- Reading for next class: pages 10-15 of A Crash Course in C
- Assignment 2 out: problems 16-20, 23
Class 2 (Th 1/10)
- Assignment 2 due
- Class Topic: C programming continued
- Reading for next class: pages 19-34 of A Crash Course in C (most of this is reference; the real goal is to fully understand the program invest.c)
- Assignment 3 out: problems 24-26, 28-30, 32
Class 3 (T 1/15)
- Assignment 3 due
- Class Topic: C programming continued
- Reading for next class: make sure you fully understand invest.c
- Assignment 4 out: problem 33
Class 4 (Th 1/17)
- Assignment 4 due
- Class Topic: C programming conclusion. Thanks to Elliot Hevel, C newbie, for this C code he wrote in class today to solve problem 34 of a Crash Course in C. (The code seems to work fine, but we haven't tested exhaustively! No claims that it is the best or most efficient way to solve the problem, but definitely a nice job in the short time period. We removed an extraneous & seen in class today.)
- Reading for next class: make sure you fully understand invest.c and are ready for a quiz on related C topics
- Assignment 5 out: Purchase your ME 333 equipment here. If you have problems contact your instructor. Also, download the following (we will use them in Class 5):
Download and install: * the free Microchip XC32 compiler and Microchip MPLAB X IDE for your operating system * the FTDI virtual COM port (VCP) driver for your operating system * the Processing language for your operating system * a terminal emulator program like CoolTerm Also, download the PIC32 Data Sheet and the PIC32 Reference Manual.
Class 5 (T 1/22)
- Assignment 5 due
- Quiz 1: Solutions (average score: 16.2/20) On C programming (data types, pointers) and syntax similar to invest.c. As with all quizzes, no notes, computers, calculators, etc. are allowed.
- Class Topic: our first programs for the PIC32, following chapter 1 and the quickstart
- Reading for next class: Chapters 1 and 2 of the class notes
- Assignment 6 out: problems 1-7 of Chapter 2
Class 6 (Th 1/24)
- Assignment 6 due
- Class Topic: PIC32 and NU32 hardware
- Reading for next class: finish Chapter 2 of the notes
- Assignment 7 out: problems 8-16 of Chapter 2
Class 7 (T 1/29)
- Assignment 7 due
- Class Topic: PIC32 software
- Reading for next class: Chapter 3 of the notes through Chapter 3.6
- Software update: Change your NU32.h file to include "#include <plib.h>" (without the quotes) as the first line
- Assignment 8 out: problems 1-6 of Chapter 3. Problem 6: makefile (save as "makefile") Demo next class: If you succeeded in using the makefile in problem 6, demo the makefile. If not, demo the compiling from problem 5 (no need to load the code).
Class 8 (Th 1/31)
- Assignment 8 due
- Quiz 2: Solutions PIC32 and NU32 hardware (know things like the clock speed of the PIC32, amount of RAM and flash, what the physical memory map is [no need to memorize address numbers], what the modules/peripherals in Sec 2.1.2 do)
- Class Topic: PIC32 software
- Reading for next class: finish Chapter 3 of the notes
- Assignment 9 out: problems 7-12 of Chapter 3. Demo next class: Problem 8
Class 9 (T 2/5)
- Assignment 9 due
- Class Topic: using libraries and header files
- Reading for next class: Chapters 4 and 5 of the class notes; only Chapter 4 for next class
- Assignment 10 out: problems 2, 3(a), and 5 of Chapter 4. Demo next class: Problem 3(a).
Class 10 (Th 2/7)
- Assignment 10 due
- Quiz 3: Solutions On Chapter 3
- Class Topic: disassembly and map files
- Reading for next class: Chapter 5 of the class notes
- Assignment 11 out: Problem 3(b) of Chapter 4, Problem 4 of Chapter 5. Demo next class: Problem 3(b) of Chapter 4.
Class 11 (T 2/12)
- Assignment 11 due
- Class Topic: interrupts
- Reading for next class: Chapter 6 of the class notes
- Assignment 12 out: Problems 8, 9, 10 of Chapter 5. No demo next class
Class 12 (Th 2/14)
- Assignment 12 due
- Quiz 4: Solutions On Chapter 4
- Class Topic: programming assignment, problems 16 and 17 of Chapter 6
- Assignment 13 out: Problems 1, 2, 4, 5, 6, 12, 15, 16, 17 of Chapter 6. Turn in your code for Problem 17. Demo next class: Problem 17.
Class 13 (T 2/19)
- Assignment 13 due
- Reference reading: Chapter 7 to Chapter 10 (v2) of the class notes
- Class Topic: timers, PWM, analog output by RC filtering
- Assignment 14 out: Problem 2 of Chapter 9. Due Tues 2/26. Demo with your NUscope on 2/26.
Class 14 (Th 2/21)
- No assignment due
- Quiz 5: Solutions On Chapters 5 and 6
- Class Topic: analog input, sensors, interfacing, control loops
- No assignment out
Class 15 (T 2/26)
- Assignment 14 due
- Class Topic: DC motor theory
- Reading for next class: Chapter 11 on Brushed Permanent Magnet DC Motors from Chapters 11-14 of the class notes
- No assignment out
Class 16 (Th 2/28)
- Quiz 6: PWM and RC filtering for analog output
- Class Topic: experiments with a DC motor
- Assignment 15 out: Problems 1, 2, 3(a), and 3(b) of Chapter 11, due by 11 AM Tues 3/5 (No demo next class)
Class 17 (T 3/5)
- Assignment 15 due
- Class Topic: H-bridge, current control, and motion control for a DC motor; final project overview
- Reading for next class: Chapter 13 on DC motor control
- Final project out: ME333 2013 Final Project
Class 18 (Th 3/7)
- Quiz 7: DC motor basics from Chapter 11
- Class Topic: H-bridge, current control, and motion control for a DC motor; final project overview (continued)
- Reference reading for next class: Chapter 12 on motor gearing
Class 19 (T 3/12)
- Class Topic: motor sizing and gearing
- Reference reading for next class: Chapter 14 on RC servos and steppers, Chapter 15, for MAF extra credit
- Demo of Final Project Part 5 due next class
Programming Party (W 3/13 6-9pm)
- Come to L361 for pizza and extra help from 6-9pm
Class 20 (Th 3/14)
- Final Project Part 5 demo
- No quiz
- Class Topic: RC servo motors and stepper motors
Final Demo: Monday 3/18, 3-5 PM or Wednesday 3/20, 9-11 AM. Electronic submission by Wednesday 3/20, 11 AM.
NUScope
(v3-3 for the board that says 'NUScope')
FAQ
Q: Do I need to know the C language to take this course?
A: No. But if you already know C, there is still plenty else in this course for you. If you already know C, know how to use microcontrollers for real-time control, and have a good understanding how common sensors and actuators work and how to interface to them, this course may not be for you. Consider taking ME 433 Advanced Mechatronics in the spring quarter.
Q: Is there an independent project?
A: There is no large independent project. There will be a two-week project at the end of the course, but there will be no machining. For a significant project, do a quarter-long project in ME 433 Advanced Mechatronics, offered in the spring quarter. ME 333 is good preparation for ME 433.
Q: What kind of laptop do I need?
A: You need a laptop with at least 2 USB ports. Any operating system is fine.