PWM
Your ultimate goal for this week’s lab is to use SysTick system timer to create a periodic
interrupt which will then be used to implement two separate PWM signals (variable duty
cycle digital outputs) to control the left/right and up/down position of a small robotic arm.
By varying the duty cycle between limits, the robotic arm’s left/right and up/down angles
will be changed.
Here are the requirements for this solution (given a breadboard, single variable resistor,
wires, and 2 axis microservo robotic arm):
1. Implement a “manual” mode which you will be able to change the position of the
left/right servo and the up/down servo one at a time.
2. There must be a method to adjust the PWM (duty cycle) of each servo axis (one at a
time) using a single analog input from the user in real-time.
3. You must also implement an “automatic” mode which will automatically change the
servo position for both the left/right and up/down servo from one extreme position (-
90 degrees from neutral to 90 degrees from neutral) continuously until manual mode
is entered.
4. You must have a display indicator that gives an alphabetic label for the servo axis you
are currently adjusting (or last adjusted), i.e. l/r, u/d, or bth for left/right, up/down or
both. This must work in both manual and automatic modes.
5. You must have a way to latch each servo’s position (in degrees) from neutral and
continuously display it after it is set. This must work in both manual and automatic.
6. There should be no way to make your PWM’ed servos, display of the duty cycle, or
software malfunction just by switching the switches, or adjusting the variable resistor
at any time.
7. There must be at least 50 levels of PWM resolution from -90 degrees from neutral to
90 degrees from neutral. The servos don’t have to move exactly 180 total degrees
(they don’t) but they do have to move as far as they can judging by an oscilloscope
measuring the duty cycles of digital outputs going to the servos at -90 and +90
degrees.
8. NOTE: You may only write in C and use no assembly files except for functions
SetSysClock(), gpio_c_init(), gpio_d_init(), seg7_init(), seg7_put(), adc_start(),
adc_done, and adc_init. I suggest using your last week’s lab main.c (and
makefile) and build on it from there.
We've got everything to become your favourite writing service
Online Classes & Labs
We handle entire coursework & labs for the whole semester. Read the 'About Us' Page for details on how we'll handle your Fall Semester coursework!
Confidentiality
We don’t share your private information with anyone. What happens on our website stays on our website.
Money-back guarantee
Your money guarantees you quality :) Scroll to the bottom to read our Money-back Guarantee.
Get a plagiarism-free paper
We check every paper with our plagiarism-detection software, so you get a unique paper written for your particular purposes.
We can help with Urgent Tasks
Need a paper tomorrow? We can write it even while you’re sleeping. Place an order now and get your paper in 4/8 hours.
Pay a fair price
Our prices depend on urgency. If you want a cheap essay, place your order in advance. Our prices start from $10 per page.