1 / 29

Micromouse Lecture 1

Encoders, Motors, Power, Mini Project #1. Micromouse Lecture 1. 10/24/2014. Power Regulation: A Problem. We cannot use a simple voltage divider to provide a consistent voltage source. As the voltage from the battery decreases during discharge, the output voltage will decrease!.

Download Presentation

Micromouse Lecture 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Encoders, Motors, Power, Mini Project #1 Micromouse Lecture 1 10/24/2014

  2. Power Regulation: A Problem • We cannot use a simple voltage divider to provide a consistent voltage source. • As the voltage from the battery decreases during discharge, the output voltage will decrease!

  3. Power Regulation: The Solution • In order to provide a consistent source of potential difference, we need to use voltage regulators. • We will provide you with a 5V regulator to connect to your LiPo battery pack for Mini Project #1.

  4. Power Regulation: Capacitors • Use capacitors to smooth out noise in your signal

  5. Motors • Brushed and Brushless

  6. Motors: Brushed • Brushed motors take a DC signal. • Powers an inductor to rotate a magnet. • Increase the voltage and/or current -> Increase the rotation speed. • Reverse the polarity of the input voltage -> Reverse the rotation. • Most digital microcontrollers do not have an analog signal output. • MCU’s output digital signals – either high or low. • So how do we control brushed motors?

  7. Pulse Width Modulation (PWM) • Mimics an analog voltage signal • Square wave with a certain frequency • This can be used to control the speed of a motor

  8. Pulse Width Modulation (PWM) • Speed is controlled by rapidly turning the motor on and off • Turn the motor on for a greater fraction of the time to make it rotate faster • The percent of time the PWM signal is on is the duty cycle • 0% duty cycle is same as off all the time; 100% duty is same as on all the time

  9. Motor Driver: A Problem • We cannot connect the MCU to the motor. • MCUs don’t provide enough current to power motors. • Microcontrollers cannot invert the PWM signal to rotate the motor in the other direction.

  10. Motor Driver: A Solution • Have the PWM control a H-bridge • PWM controls transistors (think of them as switches) that allows the battery to pour all its current to the motor • Easy to control direction

  11. Motor Driver: The H-bridge • Simplified diagram Turn Left Turn Right

  12. Motor Driver: The H-bridge • Actual implementation for two motors void turnLeft() { digitalWrite(1A, HIGH); //Right wheel digitalWrite(2A, LOW); //Right wheel digitalWrite(3A, LOW); //Left wheel digitalWrite(4A, HIGH); //Left wheel analogWrite(motorPwrR, 100); analogWrite(motorPwrL, 100); } void turnRight() { digitalWrite(1A, LOW); digitalWrite(2A, HIGH); digitalWrite(3A, HIGH); digitalWrite(4A, LOW); analogWrite(motorPwrR, 100); analogWrite(motorPwrL, 100); }

  13. Motors: Brushless • Goal is the same as brushed motors: rotate something • Mechanics is different • Multiple inductors attract and repel the magnet • Has more control than DC motors • Controlling brushless motors are more complicated • But fairly easy to do with IC chips/software libraries

  14. Encoders • Helps you determine how far you have travelled in the maze. • Rotary Encoders attached to wheels • Optical • Magnetic with Hall Effect Sensor

  15. Rotary Encoder: Optical • Light reflects off alternating bright or dark areas. The detector determines when the light was shone on it. (Mini Project #1 uses this). • Another method: LED shines through a teeth in a disc to detector on other side.

  16. Rotary Encoder: Magnetic • Attach magnets to a disc • Use Hall effect sensors to detect the changing magnetic field

  17. Now How Does the Code Work? • Count the ticks to see how far the wheels have turned

  18. How do we put an encoder to use? • Encoders are constantly outputting data • Your MCU needs to read the values all the time! • If your MCU is reading values 100% of the time it can’t do anything useful! • Otherwise you are losing data, or must litter your code with checks every few lines! • Not a good solution 

  19. Interrupts to the rescue! • Interrupts allow you to process data and then go back to what you were doing

  20. Interrupts to the rescue! • Interrupts allow you to process data and then go back to what you were doing • “Yoimma let you finish, but this is some of the most important data of ALL TIME”

  21. Interrupts • An interrupt handler is a short function that runs when an external event happens • Rest of the program pauses, and continues after interrupt is done • From the perspective of each, the other doesn’t exist* • *If your interrupt handler runs for too long (and too often) it can choke your entire program!

  22. Using interrupts • Types of interrupts: • RISING • FALLING • CHANGE • LOW • HIGH • Arduino boards: only two interrupt pins • Teensy: all pins!

  23. Sample Interrupt program

  24. Programming with interrupts • The volatile keyword: • Tells the compiler “this value can change at any time!” • MCU will look up value in memory each time and not an old value in a register • Anything your interrupt handler modifies should be volatile, or you may get bugs!

  25. Programming with interrupts • Increment a counter and return (be fast)! • Don’t want to use this counter directly • If you accidentally overwrite it, you might not be able to know how far you went! • Using good coding style you can prevent mistakes! • But I’m too good to make such silly mistakes! • Nonsense, we are all human, mistakes happen!

  26. Programming with interrupts • The static keyword: • Means “this variable/function can only be used in this file only!” • Return value of counter with a function! • Now nobody from the outside can mess with it directly!

  27. How to choose interrupt type • Depends on how fast your encoders are • On super high resolution encoders, it may be sufficient to track a single pin per encoder • On lower resolution encoders its better to track both pins changing • Tracking a pin change gives you even “more” resolution • If a wheel is on the edge between ticks, its possible to get “false positives”

  28. Mini Project #1: Encoders • Demonstrate basic understanding of motor control and encoders. • DUE DATE: 11/7/2014 SIGN UP EARLY • Parts (abridged) • Teensy 3.1 • Motor • H-bridge • Encoders

  29. So What Do I Need to Do? • Keep your eyes peeled for an email for when the spec sheet for Mini Project #1 is up. • Do not hesitate joining a group you don’t know to complete the Mini Projects. Make friends! • Start early!

More Related