Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations

Presentation on theme: "Encoders, Motors, Power, Mini Project #1 10/24/2014."— Presentation transcript:

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

2  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  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  Use capacitors to smooth out noise in your signal

5  Brushed and Brushless

6  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  Mimics an analog voltage signal  Square wave with a certain frequency  This can be used to control the speed of a motor

8  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  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  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  Simplified diagram Turn LeftTurn Right

12 void turnRight() { digitalWrite(1A, LOW); digitalWrite(2A, HIGH); digitalWrite(3A, HIGH); digitalWrite(4A, LOW); analogWrite(motorPwrR, 100); analogWrite(motorPwrL, 100); } 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); }  Actual implementation for two motors

13  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  Helps you determine how far you have travelled in the maze.  Rotary Encoders attached to wheels  Optical  Magnetic with Hall Effect Sensor

15  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  Attach magnets to a disc  Use Hall effect sensors to detect the changing magnetic field

17  Count the ticks to see how far the wheels have turned

18  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 allow you to process data and then go back to what you were doing

20  “Yo imma let you finish, but this is some of the most important data of ALL TIME”

21  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  Types of interrupts:  RISING  FALLING  CHANGE  LOW  HIGH  Arduino boards: only two interrupt pins  Teensy: all pins!


24  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  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  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  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  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  Keep your eyes peeled for an 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!

Download ppt "Encoders, Motors, Power, Mini Project #1 10/24/2014."

Similar presentations

Ads by Google