Allen E. Paulson College of Engineering
Senior Project II Comprehensive Report
Adaptive Cruise Control Adrian Meghoo Sarah Miley Fall 2015
Adaptive Cruise Control
1|Page
Contents Index of Figures: ............................................................................ 3 Abstract: ........................................................................................ 4 Introduction: ................................................................................. 5 Background: .................................................................................. 7 Theoretical Description: ............................................................... 15 Technical description: .................................................................. 18 Design: ......................................................................................... 23 Project implementation: ............................................................... 26 Additional Equipment, Software, And Materials Used: ................ 32 Conclusion: .................................................................................. 38 Professionalism: ........................................................................... 39 1. Environmental Impact............................................................. 39 2. Social Impact ......................................................................... 39 3. Environmental Issues .............................................................. 43 4. Ethical Issues ......................................................................... 45 5. Legal Issues ........................................................................... 47 -Gantt Chart ................................................................................ 49 -Budget/Parts List ....................................................................... 50 -Code ......................................................................................... 51 1. Trinket Code ......................................................................... 51 2. Arduino Mega Code .............................................................. 52 References: .................................................................................. 58
Adaptive Cruise Control
2|Page
Index of Figures:
Figure 1: Cruise Control Diagram ................................................. 8 Figure 2: Adaptive Cruise Control Explanation ........................... 10 Figure 3: PWM Duty Cycle .......................................................... 12 Figure 4: PWM Data .................................................................... 12 Figure 5: PWM Signal Information .............................................. 13 Figure 6: The Effects of increasing a parameter independently.. 14 Figure 7: Distance Sensor ........................................................... 18 Figure 8: Function of distance sensor ......................................... 19 Figure 9: Speed Sensor .............................................................. 21 Figure 10: Indicator Panel ........................................................... 22 Figure 11: Project Block Diagram ............................................... 23 Figure 12: Program Flow Diagram .............................................. 24 Figure 13: Trinket Flow Diagram ................................................. 25 Figure 14: Photoresistor Speed Sensor Response ..................... 28 Figure 15: Phototransistor Speed Sensor Response .................. 29 Figure 16: Indicator Panel ........................................................... 31 Figure 17: Infrared Emitter and Detector ..................................... 32 Figure 18: ProtoBoard ................................................................. 32 Figure 19: LEDs .......................................................................... 33 Figure 20:RC Car ........................................................................ 33 Figure 21: 3-Channel Transmitter ............................................... 34 Figure 22: Digital Soldering Iron .................................................. 34 Figure 23: White Tape ................................................................. 35 Figure 24: Oscilloscope ............................................................... 35 Figure 25: Multimeter .................................................................. 36 Figure 26: Jumper Wire ............................................................... 36 Figure 27: Arduino IDE ................................................................ 37 Figure 28: Codebender.cc Web-based Arduino Programing ...... 37
Adaptive Cruise Control
3|Page
Abstract: The main objective of this project is to design an Arduino-based adaptive cruise control system. The system will feature the basic functionally of an ordinary cruise control system, such as maintaining a set speed regardless of load, coupled with an adaptive layer. While in cruise control mode, this adaptive layer will dynamically reduce the vehicle’s speed to maintain a safe distance between it and the slower moving vehicle in front. The system will also feature an emergency braking feature which will automatically stop the vehicle if it senses a collision is imminent. An LED panel will indicate the status of the system to the user. The entire project will be modeled on a hobby remote controlled car.
Adaptive Cruise Control
4|Page
Introduction: A cruise control system has become a standard system in most modern vehicles. The system enables the driver to set a constant speed for the vehicle to maintain. This allows the driver to relax more as they do not have to constantly manipulate the throttle. The limitation of most of these modern systems is they do not adaptively adjust to a slower vehicle in front. This forces the driver to intervene and adjust their vehicle’s speed manually. With an adaptive cruise control system, the system would compensate for a slower vehicle in front of it and automatically adjust its speed accordingly. For our project, an Arduino-based adaptive cruise control will be designed and implemented on a radio controlled car. The system will consist of a standard cruise control system with the addition of a distance sensor necessary for the adaptive portion. The basic concept should be scalable to larger applications such as a real car with some modifications. While there are a few adaptive cruise control systems available on consumer vehicles, it is still not a standard or even common feature in vehicles. The objective of this project is to design a system to solve the fundamental concept of an adaptive cruise control system. While a commercial system will be a lot more complex due necessary redundancies and fail safes for safety, our design will still cover the basics at the least. Due to the nature of modeling the system on a hobby remote controlled car, the entire system, including the standard cruise control will have to be built from the ground up. This means first developing a cruise control system which can interface with the RC car components then modifying said system to add the additional adaptive layer.
Adaptive Cruise Control
5|Page
This project will call on the collective knowledge and skills attained throughout our Electrical Engineering studies at Georgia Southern University. Things such as critical thinking and problem solving, along with circuit and signal understanding will all come into play throughout the design and implementation of the project. Since the system will be implemented on a RC car, the first thing will be getting an understanding of the RC components and how they function. After gaining this understanding it will be possible to come up with ways to interface with the system. The next thing will be gaining an understanding of the Arduino platform. This determines the limitations and approach necessary for designing and implementing the system.
Adaptive Cruise Control
6|Page
Background: Cruise control is invaluable and common in almost every modern day American vehicle. Its implementation by use of governors dates back as far as the 1700s in steam engines and in a few early automobiles. The modern day cruise control system has had varying designs with all accomplishing essentially the same basic function.
A cruise control system's basic function is to maintain a constant speed set by the driver. This allows the driver to drive without need out directly controlling the vehicle's throttle. This is especially useful on long highway trips as it reduces driver fatigue by eliminating something the driver has to focus on. Additionally cruise control can be useful with reducing fuel consumption by maintaining a constant speed and smooth throttle control essentially eliminating spikes in throttle input caused by a typical driver. This can be equally beneficial to passengers if the driver is constantly tapping on the gas creating a jerky and uncomfortable ride. Cruise control is also commonly used to avoid subconsciously violating speed limits as once a speed is set by the driver, that speed is maintained and not surpassed by the system.
A typical cruise control works by manipulating the throttle position of a car. This is done with the throttle valve, the same device the gas pedal is connected to. Since the throttle valve is what controls the power output of the engine, by manipulating it the cruise control system can increase or decrease the speed of the car. A typical cruise control system has a few inputs which are processed to produce its controlling output. The main
Adaptive Cruise Control
7|Page
inputs are the steering wheel controls, vehicle speed signal, throttle position sensor, and brake pedal switch as seen in Figure 1: Cruise Control Diagram.
Figure 1: Cruise Control Diagram
The steering wheel controls are used to set and adjust the system while the brake pedal switch serves as a trigger to disengage the system if the brake pedal is pressed. The vehicle speed signal is one of the most critical of all the inputs. The system takes this signal and compares it with the desired speed and adjusts the throttle position accordingly. For example it the car starts slowing down from going up a hill, the system Adaptive Cruise Control
8|Page
will automatically increase engine power to increase its speed back to the desired set speed. Cruise control systems typically use a proportional-integral-derivative (PID) controller for its processing. This results in a specific response of the system which can also be fine-tuned to have certain characteristics such as aggressive acceleration without overshooting the desired speed.
A conventional system does have a limitation and that is vehicles in front moving slower than the set speed. In this event the driver would have to manually disengage the system to avoid collision and then either set a new speed or wait for the slower vehicle to move out of the way before manually reengaging the system. The solution to this is to incorporate a distance sensor into the cruise control system to account for these slower vehicles. An adaptive cruise control system takes the conventional system and adds another dynamic layer dependent on distance. With this new input, the system can account for vehicles moving at a slowing speed in front the driver’s vehicle. As seen in Figure 2: Adaptive Cruise Control Explanation, while cruise control is engaged, if our
vehicle comes up on a slower vehicle, the distance sensor would relay this information to the control unit which would then dynamically reduce speed to prevent collision and maintain a safe distance. After the slower vehicle moves out of the way, the system would automatically increase speed back to the previously set speed.
Adaptive Cruise Control
9|Page
Figure 2: Adaptive Cruise Control Explanation
Adaptive Cruise Control
10 | P a g e
This enables the driver to only have to focus on steering the vehicle and not worry at all about the throttle. In addition to slowing the vehicle if there is a slower one it front, the system can also have the ability to emergency brake if it finds that’s the only way to avoid collision. An example of this would be if the vehicle in front slams on their brakes. The system, being able to react much faster than a human, would reduce the possibility of colliding with the other vehicle or object. This feature would extremely helpful to drivers, especially on long drives when fatigue sets in and a driver isn’t as focused or at night when visibility is limited.
Another major topic of the project specific to using an RC car is Pulse Width Modulation (PWM). A specialized form of PWM is used in RC systems to control the components. PWM is common in almost all modern day electronics in one form or another. PWM functions by varying how long a pulse is high in a given period. The signal is either fully on or fully off in a PWM system. The longer the pulse is on in a given period, the higher the average delivered power will be. For example if the pulse is on for 5ms in a 20ms period, the average power delivered will be 25% of the fully on value since the pulse was on for 25% of the entire period. So if the high value of the circuit was 5V, the average voltage delivered in this example during that period would be 1.25V. Figure 3: PWM Duty Cycle gives a good visual representation of this.
Adaptive Cruise Control
11 | P a g e
Figure 3: PWM Duty Cycle
PWM is very useful in power control as you can use a digital system to vary how much power is sent to a component by adjusting how long the pulse is high in each period. In RC circuits PWM is used a little differently however. Instead of using PWM to vary average voltage and in turn average power delivered, PWM is to send controls signals instead. In most RC circuits a PWM with a period of 20ms is most commonly used. Within this 20ms period, how long the pulse is high relays a certain message as shown in Figure 4: PWM Data.
Figure 4: PWM Data
Adaptive Cruise Control
12 | P a g e
In regards to the car used in this project, as seen in Figure 5: PWM Signal Information, a pulse of 1.5ms long in the 20ms period is neutral for the car and will tell the electronic speed control (ESC) in the car to send no power to the motor. A pulse of 1ms in the 20ms period signifies full reverse while a pulse of 2ms signifies full forward. These signals received by the ESC tells it how much power to send to the motor accordingly. With this in mind, controlling the speed of the RC car revolves around varying the length of a pulse in a 20ms period between 1-2ms.
Figure 5: PWM Signal Information
A PID controller is the main component which determines the response of the control system which will maintain the speed and distance of our vehicle. A PID controller is a control loop feedback mechanism which consists of a proportional (P), integral (I), and Adaptive Cruise Control
13 | P a g e
derivative (D) component, hence PID. The controller functions by calculating an error value which is the difference between the desired setpoint and the measured process variable. The controller then aims to minimize this error by manipulating a control value, in our cause throttle input. The adjustment of this control value is determined by the proportional, integral, and derivative components of the controller. The P value accounts for present values of the error (e.g. if the error is large and positive, the control variable will be large and negative). The I value accounts for past values of the error (e.g. if the output is not sufficient to reduce the size of the error, the control variable will accumulate over time, causing the controller to apply a stronger action). While the D value accounts for possible future values of the error, based on its current rate of change. Figure 6: The Effects of increasing a parameter independently gives a breakdown of how each of these
values affect the response of the system.
Figure 6: The Effects of increasing a parameter independently
Knowing how each parameter affects the system, one can effectively tune the system to have a desired response.
Adaptive Cruise Control
14 | P a g e
Theoretical Description: An adaptive cruise control system main components are a speed sensor, a distance sensor, power management for the motor or engine, user input, and a controller. For this project, selection or creation of these components will be done in a way to produce a cost effective and seamless implementation. The controller will read the signals coming from the speed sensor, the distance sensor, and the user input and then do the necessary processing then outputting to the motor controller. The controller will be designed around reading the PWM signal from the receiver, interpreting this signal and then creating and outputting its own PWM signal containing the desired information needed by the ESC. A user interface with indicating lights will be attached to the car while a button on the remote control will toggle cruise control on and off.
In most cars, the speed sensor is a part of the driveshaft. It essentially counts the revolutions over time and then through a few calculations, determine the actual speed the vehicle is traveling. For the car in this project, as custom speed sensor will have to be fabricated. The sensor will be designed count the number of rotations the wheel has in a given period of time. From this the controller will be able to calculate the car’s relative speed. This relative speed will be used in the processing of having the car maintain a set speed when the cruise control system is active. When cruise control is set, a snapshot of the current speed will be taken and stored as the desired speed. If the car finds itself in a situation where it starts to deviate from the desired speed, the system will compensate for this deviation by either decreasing or increasing power being sent to the motor. For
Adaptive Cruise Control
15 | P a g e
example, if the car starts to travel uphill, it will start to slow down due to there being a higher load on the motor but with no additional power sent to the motor. The controller would recognize the car is losing speed and slowing down and in turn would increase power to the motor to regain the desired speed. The project will not go as far as to calculate the speed of the car in a known unit, but instead a unit specific to the car. For example, if the car is traveling at a speed of 20 wheel revolutions per 100ms, this is the actual unit of speed the system will try to maintain. The system will not be designed to maintain a certain mile per hour for instance.
Next is the distance sensor which enable the adaptive layer of the adaptive cruise control. The basic concept of most distance sensors is to send a signal through a transmitter and then time how long it takes to be reflected back into the receiver. Taking this time and running it through a simple calculation will provide how far away the object the signal bounced off of is from our sensor. There is quite a selection of distance sensors on the market in different price ranges or applications ranging from infrared detectors to laser or radar detectors. The effective range of the sensor depends on the type of technology being used. For example, an infrared distance sensor is only good up to a few centimeters while a radar detector can be good up to a few miles. For this project, an ultrasonic distance sensor was selected. The sensor was both cost efficient and also provided an acceptable range of 5 meters for the project. Applying this system to a full size vehicle would call for a sensor with a much better range such as laser or radar which can have ranges of over 100 meters. This kind of range would be important as the vehicle would be
Adaptive Cruise Control
16 | P a g e
traveling much farther and in turn would need a greater distance to detect. For our implementation, the system would take the value from the distance and then do the necessary processing. The system would have a threshold distance to maintain between our vehicle and the vehicle or object in front. This threshold distance would be a function of the speed our vehicle is traveling. The faster the speed, the greater the distance will be to give the system enough time to safely react. If the measured distance falls below this threshold distance, the system will slow the car down until the measured distance is back to being greater than or equal to the threshold distance. Once the vehicle in front either moves out of the way or speeds up, the system will increase the speed of the car until regains the desired speed set by the cruise control all while not allowing the measured distance to not fall below the threshold distance. There will be some slight over and under shoot present in the system but this will be minimized as best as possible.
Adaptive Cruise Control
17 | P a g e
Technical description: To construct a suitable system using an Arduino as our controller, it was necessary to understand how the Arduino functions, features it has available, and also its limitations. After gaining this understanding, it was possible come up with a design to meet our needs.
The Arduino will have to give a pulse to distance sensor to send a signal and then measure that time it takes for the signal to be reflected back into the receiver. A picture of the distance sensor used is seen below in Figure 7: Distance Sensor. The Vcc pin provides 5 volts to the sensor while Gnd provides a return path for the current. The Trig pin is what tells the sensor to transmit an ultrasonic sound while the Echo pin is what receives the reflected signal.
Figure 7: Distance Sensor
Adaptive Cruise Control
18 | P a g e
As soon as the Arduino activates the Trig pin, it stats counting the time. Once the signal bounces off the object and is received by the echo sensor, the Arduino stops counting and records the time. Figure 8: Function of distance sensor, gives a good visual representation of this.
Figure 8: Function of distance sensor
With this time recorded, known as propagation delay dependent on distance, it is possible to calculate the distance.
Adaptive Cruise Control
19 | P a g e
Next is the speed sensor. The speed sensor will consist of an infrared led and an infrared receiver. These will be mounted inside a wheel which will have 6 white stickers equally placed inside. As the wheel rotates, it will transition between the dark area of the wheel and the white strips. As it passes over each white strip the sensor will go high producing a pulse. Each time a pulse is received by the Arduino, it triggers and interrupt in the program which is linked to a function which increments a variable by one. To determine a speed, the number of pulses will be counted by the Arduino in a period of time. For example, 15 pulses per 100ms. This produces a relative speed for the Arduino to work with in its processing. Figure 9: Speed Sensor below show our implementation of the speed sensor.
Adaptive Cruise Control
20 | P a g e
Figure 9: Speed Sensor
The Arduino is the main controller of the system, it takes the input signals, processes them accordingly, and then produces a certain output. Other than the speed and distance sensors, the Arduino has to process the signals coming from the receiver. These signals are specific PWM signals as described previously. To process these signals, the Arduino must measure that time the pulse is high during their 20ms period to extract the data they are carrying. This done by using the pulsein function in Arduino, specifically the one which starts counting when the signal transitions from low to high. When the signal transitions back from high to low the time is recorded. From this time, the Arduino can know what data was being sent by the transmitter. For example, if the pulse was 2ms long, the user is wanting the car to go full forward and previously explained. After the Arduino has done its processing, it has to send information to the ESC telling it how much power to send to the motor. The ESC however requires a PWM signal. So to interface with the ESC, the Arduino has to produce a PWM signal of its own. Due to the tight timing of this signal and all the other processing the Arduino is doing, it was necessary to introduce another microcontroller know as an Adafruit Trinket. The trinket will receive how long the pulse in the 20ms period should be and then effectively reproduce this signal which it then sends to the ESC.
Another component which was designed was an indicator panel. This was done to give the user a visual system status of the system. The blue led indicates the system is on and
Adaptive Cruise Control
21 | P a g e
receiving power. The white led comes on whenever cruise control is engaged. The yellow led illuminates when the system has slowed the car down during cruise control due to a slower moving vehicle in front. The red led signifies the emergency braking feature has been activated due to an obstacle. The pushbutton serves to toggle between easy mode and regular mode with the green led serving to indicate when is mode is activated. Easy mode should be selected for notice drivers as it caps the maximum speed of the car. Figure 10: Indicator Panel below shows the design of the panel.
Figure 10: Indicator Panel
Adaptive Cruise Control
22 | P a g e
Design: The design of the project was done in multiple stages, starting with each component and then combining them into one system. Figure 11: Project Block Diagram below shows the block diagram of our entire design Figure 12: Program Flow Diagram shows the flow diagram of the Arduino Mega program and Figure 13: Trinket Flow Diagram shows the flow Diagram for the Adafruit Trinket Program. The programs and design will be discussed in more detail in the project implementation section.
Figure 11: Project Block Diagram
Adaptive Cruise Control
23 | P a g e
Figure 12: Program Flow Diagram
Adaptive Cruise Control
24 | P a g e
Figure 13: Trinket Flow Diagram
Adaptive Cruise Control
25 | P a g e
Project implementation: To start the project, the first thing was seeing how the PWM signal looked coming from the receiver and how it changed with changing the throttle. To do this, the output out the receiver was connected to an oscilloscope which allowed us to see the actual waveform of the signal. Next was figuring out how to read the width of the pulse with the Arduino to decode the information within the signal. It was found the pulsein function was perfect for this. It starts counting when the signal goes from low to high and stops when the signal goes from high to low. The value it returns is how long the pulse was in microseconds. This now allowed us to know the throttle position of the controller, with neutral producing a pulse width of 1500 microseconds (1.5 milliseconds) and full forward producing a pulse of 2000 microseconds (2 milliseconds).
After this was completed, finding a way to reproduce this pulse was necessary since the Arduino would need to do this to be able to communicate with the electronic speed control (ESC). First we tried using the Servo Library for the Arduino and its writeMicroseonds functions. This worked for the most part but at times would produce and inconsistent pulse width leading to an unwanted surge in speed on the car. This was attributed to the Arduino doing many other causing slight timing inconsistencies. As you can imagine, a pulse ranging from 1 to 2 milliseconds is a very small amount of time. Any, even slight, delay could alter the timing of the pulse leading to an incorrect signal being sent to the ESC. To rectify this, a second microcontroller, known as the Adafruit
Adaptive Cruise Control
26 | P a g e
Trinket, was introduced with its sole purpose being to accurately and consistently create the desired pulse.
The Arduino Mega sends how long the pulse should be to the Trinket which then receives that value and produces a PWM signal with the desired pulse width. To do this, the Servo Library was no longer used, instead a simple loop was created. The loop takes the width value it received and sets the output pin going to the ESC high for that amount out time. Then it sets the pin low for the remaining amount of time within the 20ms period. While the pin is set to high, interrupts are turned off to ensure the pulse width is not affected by anything and is exactly as long as it's supposed to be. Interrupts are turned back on during the low part of the signal as they are needed by the Arduino for other things such as receiving data from the Mega. Another limitation is how the Arduino sends information between another Arduinos. This is typically done using bytes which can only represent a value of up to 255. The issue with this however is the highest number needed is 2000 as this is the number of microseconds long the pulse should be to signify full forward. To solve this while not making things too complicated, this value is divided by 10 (equaling 200) before being sent to the Trinket. Once received by the trinket, the value is then multiplied by 10 (equaling the original 2000). The downside of this is some resolution is lost by doing this, specifically the ones place, 1755 to 175 back to 1750 for example. This is insignificant for this project however.
Adaptive Cruise Control
27 | P a g e
Next was setting up the distance sensor. This was fairly straightforward due to the many write ups online. Our implementation consisted of using interrupts to determine distance. When the ultrasonic signal is sent (trigger pin gets activated), an interrupt is triggered. Within this interrupt the current time is recorded. When the signal is received by the Echo pin, the interrupt is triggered again however this time it subtracts the previously recorded time from the current time. This difference in time is how long it took the signal to leave the sensor and return. With this time we are then able to calculate the distance of the object which will then be used later in the program.
Currently the speed sensor uses an infrared led and infrared receiver. The original design actually consisted of a yellow led and photoresistor which was found to be insufficient. This was due to a capacitance effect with the photoresistor causing it to produce a usable signal. The signal does not fully transition high to low, but instead stays somewhat constant. This can be seen in Figure 14: Photoresistor Speed Sensor Response. This led to inconsistent interrupts on the Arduino.
Figure 14: Photoresistor Speed Sensor Response
Adaptive Cruise Control
28 | P a g e
Using the infrared led and infrared receiver solved this as the receiver is actually a transistor which allows a faster and cleaner transition. This improvement can be seen in Figure 15: Phototransistor Speed Sensor Response below. This then allowed the
interrupts to consistently trigger each time the receiver passed over a white strip.
Figure 15: Phototransistor Speed Sensor Response
Next are the PID controllers, one for distance and one for speed. For the speed PID controller, it uses the speed recorded when cruise control was set as its setpoint and the current speed as its process variable. The output of the controller is with width of the PWM signal which tells the ESC how much power to send to the motor. The speed PID controller serves to maintain the desired cruise control speed regardless of load and uses negative feedback. It will increase power going to the motor if the car isn’t going fast enough and will decrease power going to the motor if the car is going faster than the set
Adaptive Cruise Control
29 | P a g e
speed. The turning of the PID controller was manually done by trial and error until an acceptable response was achieved.
The distance PID controller comes into play when the car is within a certain range of another vehicle known as the safe distance threshold, 200cm for example. While within this threshold, the speed PID is disabled and instead distance PID serves to maintain a specific distance between itself and the vehicle in front, 100cm for example. To do this, the controller takes 100cm as its setpoint and the current distance from the distance sensor as the process variable but uses positive feedback unlike the speed PID. Like the speed PID, output of the controller is with width of the PWM signal which tells the ESC how much power to send to the motor. The maximum value of this output is capped to be the maximum value previously generated by the speed PID. This ensures the vehicle’s speed does not exceed the speed set by the cruise control while attempting to maintain to 100cm with the vehicle in front. So for example, if the current distance is below 100cm, the controller will reduce power to the motor all the way down to sending no power at all and essentially stopping the vehicle until the distance is greater than or equal to 100cm. If the distance is greater than 100cm, the controller will increase power until either the distance is less than or equal to 100cm, or the power cap set by the speed PID is reached, whichever occurs first. If the distance becomes greater than the safe distance threshold of 200cm for this example, the distance PID is disabled and control is switched back over to the speed PID.
Adaptive Cruise Control
30 | P a g e
If at any point while cruise control is activated, the measured distance falls below the collision threshold distance, the system will automatically brake the car to prevent collision with the vehicle of object in front. This is done by activating reverse on the ESC for a specific amount of time. The brake will stay activated until the car both comes to a stop and the throttle trigger is in the neutral position. If triggered, this will also automatically deactivate the cruise control system requiring the user to manually reactivate cruise control. Alternatively, if the user applies the brake while the cruise control system is active, this action will also deactivate cruise control. The indicator panel, seen again in Figure 16: Indicator Panel serves to indicate the current status of the system.
Figure 16: Indicator Panel
Adaptive Cruise Control
31 | P a g e
Additional Equipment, Software, And Materials Used:
Figure 17: Infrared Emitter and Detector
Figure 18: ProtoBoard
Adaptive Cruise Control
32 | P a g e
Figure 19: LEDs
Figure 20:RC Car
Adaptive Cruise Control
33 | P a g e
Figure 21: 3-Channel Transmitter
Figure 22: Digital Soldering Iron
Adaptive Cruise Control
34 | P a g e
Figure 23: White Tape
Figure 24: Oscilloscope
Adaptive Cruise Control
35 | P a g e
Figure 25: Multimeter
Figure 26: Jumper Wire
Adaptive Cruise Control
36 | P a g e
Figure 27: Arduino IDE
Figure 28: Codebender.cc Web-based Arduino Programing
Adaptive Cruise Control
37 | P a g e
Conclusion: The main object of this project was to create an adaptive cruise control system and model it on a hobby remote controlled car. This project pulled on many concepts learned throughout our courses such as microelectronics, control systems, digital design, and circuit analysis to name a few. The system had to be designed from the ground up. First starting with a standard cruise control system and then building on top of that with the adaptive layer. One of the biggest challenges was using trial and error to tune the PID controllers. Although this was very time consuming, eventually a sufficient response was achieved.
While the project works as intended, it could use 2 main improvements to become more polished. The first improvement being creating a more precise speed sensor. The current iteration suffers from some variability in speed readings. This is attributed to the white strips not being precisely cut or evenly spaced apart. This leads to a very slight inconsistency in speed readings as the wheel rotates which in turn throws off the response of the PID Controller as it thinks the speed of the car has changed when it reality it has not. Also, decreasing the width of each white strip would allow additional strips to be added resulting in a higher speed resolution. This higher speed resolution would improve the performance of the PID controller as the input speed would be even more precise leading to an even more controlled respond. The second improvement would be spending more time tuning the PID controller to achieve an even more ideal response. Both of these items combined together should enable a more consistent response of the system.
Adaptive Cruise Control
38 | P a g e
Professionalism: 1. Environmental Impact a. Energy & Pollution In the United States 34% of the polluting energy sources are as a result of motor vehicles. As more cars become equipped with the ACC system there will be less traffic congestion. As a result, energy and pollution will decrease. Fuel efficiency will increase by 4-10% when the vehicle is operated in the autonomous mode, acceleration and deceleration with be a smoother process.
2. Social Impact a. Driver Behavior in an Emergency Drivers may become distracted and lose reaction time as a result of too much trust in the automated system. The Adaptive Cruise System (ACC) is designed to maintain a desired speed, so long as the distance and time intervals encoded in the system coincide. We as humans cannot expect autonomous machines/equipment to be totally reliable. Whereas one cannot be too relaxed, there is a slim margin of error in all systems. In the case where this happens drivers need be prepared to activate the override system. Humans must rely on commonsense and remember that these are machines and they are subject to defect. It is important to remain aware and cautious of oncoming obstructions the ACC system may omit.
b. Reduction in Insurance Premiums
Adaptive Cruise Control
39 | P a g e
Not much information is known about the effects on insurance premiums on cars with adaptive cruise control. There is a strong possibility insurance premiums will decrease. Research shows that cars with autonomous features are safer; there are fewer property, liability, and other claims. If there are fewer accidents, insurance companies will paying out fewer claims out. Inadvertent effect of this will be a reduction in insurance premiums. Buyers that know there is a guaranteed reduction in insurance cost will be encouraged to purchase vehicle with ACC and take advantage in the cut down on their month to month bills.
c. Driving Conditions In congested traffic the ACC may not operate efficiently. It runs more efficiently with large distance interval between impedances. ACC may have a helpful symptom, emerging from the way that another impact of moderate human response times is to create car influxes on evidently open streets.
Traffic jams begin when an auto eases back all of a sudden to permit, for instance, another vehicle to enter the movement stream. Moderate response times imply that as opposed to reacting easily, the drivers behind such a vehicle regularly wind up pummeling on the brakes. That pummeling spreads in reverse, and after a short time the movement is at a stop. So it bodes well that ACC would diminish impacts, as well as clog.
Adaptive Cruise Control
40 | P a g e
d. Driving Behavior The cars of tomorrow will progressively be furnished with ACC to bolster the driver in the driving undertaking to enhance movement security, throughput, and/or the earth. The ACC could be characterized as an augmentation of the CC and keeps up, other than a certain set speed, a sure set separation as for the lead vehicle. To keep this set separation, the ACC can quicken what's more, decelerate the vehicle. The increasing speed and deceleration of the framework are constrained due to solace and lawful reasons. This implies the driver needs to mediate if the framework is not ready to accomplish the required needs. The ACC is fundamentally a solace framework that assumes control over the auto taking after assignment. The driver stays in charge of controlling and crash shirking. In the event that the deceleration of the ACC is not adequate to maintain a strategic distance from a crash, then the ACC cautions the driver with a notice sound.
Considering the ACC just as an emotionally supportive network for the individual driver's solace, it could likewise be useful at a totaled level, i.e., movement wellbeing, throughput, and environment. Since the quantity of ACCs in genuine activity is constrained and hard to decide, activity reproduction models are frequently utilized to examine the effect of the ACC on movement conduct. Activity reproductions have demonstrated that the ACC could make strides activity security in light of better separation keeping. This could bring about less auto collisions and may in this way moreover be a change of the activity throughput. Full infiltration of the ACC may diminish backside crashes by up to 17%. Moreover, it is normal that the ACC will
Adaptive Cruise Control
41 | P a g e
diminish the ecological contamination as a result of smoother increasing speeds. Be that as it may, huge numbers of these ACC models in current activity reenactments just give knowledge on the impact of the ACC framework for distinctive entrance levels under the presumption that the ACC framework stays dynamic under just about all circumstances. Specifically, as indicated by, the circumstances in which the driver needs to assume control, i.e., exchanging in the middle of computerization and manual, could have a vast impact on activity security and movement thro
ACC is a comfort framework and in that capacity, drivers must avoid getting to be subject to the framework for braking reaction. For ACC to be successful, drivers need to comprehend the capabilities of ACC, which rely on upon both braking and sensor constraints. In view of this understanding, they must have the capacity to intercede when the circumstance surpasses ACC abilities. In any case, drivers experience issues in seeing how ACC capacities (Stanton and Marsden, 1996). Thus, they improperly depend on the framework. For example, Nilsson (1995) found that when drawing closer a line of vehicles, drivers neglected to intercede in light of the fact that they trusted that ACC could viably react to the circumstance.
Dependence on ACC, combined with straightforward drives (i.e., straight-street), will lead drivers to withdraw from the driving undertaking and defer reactions to changes in lead vehicle (LV) speed. The affectability of the framework's braking reaction to
Adaptive Cruise Control
42 | P a g e
impeding vehicle’s deceleration is required to moderate the increment in brake reaction time, prompting a net security advantage of utilizing ACC over manual control.
e. Human-Machine Interface I issues Driver stress levels may increase with use of the ACC. Studies show that drivers become fatigue from lack of simulation.
Humans need their brains to be simulated to perform at
their best. Under challenging driving conditions drivers are forced to be attentive, if they become too relaxed fatigue sets in. They call this task under-load rather than task overload. Implemented in a real car (instead of the modulated vehicle) it is suggested to make the car systems intentionally demanding. However, this research counters the benefits of installing an AAC to begin with, because it would not reduce the workload of the driver. Driving in congested traffic will increases stress, which has been linked to road traffic offences. Based on my interpretation of the data, using an ACC will reduce citations and respectively reduce stress.
3. Environmental Issues a. Impacts of ACC on network efficiency Researcher conducted of ACC operation has generally been on a three-lane motorway. The testing has generally been set at or just above capacity to determine whether ACC has a positive impact on capacity. The comparison test used assisted driving along side of unassisted driving vehicles set with the ACC system. The driving time interval is minuet;
Adaptive Cruise Control
43 | P a g e
In the case where the ACC car lag behind, use of the system lost approximately 1.2 second in the average journey-time tested. The three lanes of the road way had adverse effects on the testing: The Slow lane: 15% of the traffic flow; Did not make use of the ACC so the speed remains relatively constant The middle lane: slight drop in average speed but those effects were not statistically significant until 70% of vehicles were equipped with a system target headway of 1.5s. The fast lane: is where the majority of the delay occurs.
The majority of the delay in the fast lane was as a result of other vehicles cutting each other off the ACC vehicle. The driver was seen to resume control over the system when the deceleration response of the system is inadequate. This in turn results in mini shockwaves propagating down the outside lane until the gap between vehicles is large enough to adapt to the deceleration. 69 The impacts of ACC, irrespective of headway were not found to be significant until greater than 20% of the vehicle fleet was equipped. This highlights the relationship between the existing headway distributions; the target headway for the ACC equipped vehicles and capacity. Less than 20% of vehicles equipped, not all of which will be using the system at any one time, does not have a significant impact on the overall headway distribution and therefore capacity. Above this value and the effects become more significant, particularly as the difference between mean headway and ACC target headway grows. One of the principal benefits that have been shown from ACC has been the improvement in longitudinal control that the system Adaptive Cruise Control
44 | P a g e
offers over manual driving. Marsden et al. (1999a) report reductions in the standard deviation of acceleration of between 46 and 52% for following events where the ACC system is suitable for use. This implies reductions in fuel consumption and harmful emissions as the engine can operate in a much more controlled manner with less severe variations in combustion between cycles in the engine chamber. It seems likely that this benefit will be achieved primarily outside of the peak hours when the system can be operational for longer periods of time.
4. Ethical Issues Each time an auto heads out onto the street, drivers are compelled to settle on good and moral choices that effect their wellbeing, as well as the security of others. Does the driver go speedier than as far as possible to stay with the stream of activity? Will the driver take her eyes off the street for a brief instant to modify the radio? Might the driver velocity up as he methodologies a yellow light at a convergence, with a specific end goal to abstain from holding back when the light turns red?
These choices have both a down to earth and good segment to them, which is the reason the issue of permitting driverless autos—which utilize a blend of sensors and premodified rationale to evaluate and respond to different circumstances—to impart the street to different vehicles, walkers, and cyclists, has made extensive shock among engineers and ethicists. ACC will have more prominent insightful capacities, better response times, and won't experience the ill effects of diversions (from eating or
Adaptive Cruise Control
45 | P a g e
messaging, sleepiness, or physical crises, for example, a driver showing at least a bit of kindness assault or a stroke).
So 90% of accidents are brought on, in any event to a limited extent, by human mistake," says Bryant Walker Smith, partner teacher in the School of Law and seat of the Emerging Technology Law Committee of the Transportation Research Board of the National Academies. "As perilous as driving seems to be, the trillions of vehicle miles that we travel each year implies that crashes are in any case an uncommon occasion for most drivers," Smith notes, posting speeding, driving inebriated, driving forcefully for conditions, being languid, and being occupied as key supporters to mishaps. "The trust— however right now it is a trust—is that robotization can fundamentally lessen these sorts of accidents without presenting huge new wellsprings of mistakes."
In that capacity, it shows up there is the ideal opportunity for makers to work through the moral issues included with ACC. Moreover, expecting the innovative arrangements can give upgraded mindfulness and wellbeing, the quantity of circumstances that require an ethical choice to be made will turn out to be progressively rare.
Adaptive Cruise Control
46 | P a g e
5. Legal Issues Numerous autos are as of now furnished with semi-mechanized elements, for example, path keeping help, vehicle motion control, crisis braking and versatile journey control. The innovation accessible makes it feasible for driver-less vehicles today to handle motorways, given that these are long extends of continuous streets. In urban areas like Singapore, be that as it may, this turns out to be practically incomprehensible. The streets would be thick with diverse partners and contending street clients, including driver-less autos, ordinary autos, bikes and people on foot.
An extremely useful record of obligation and protection suggestions of such driver help frameworks is given by Syverud. He first quickly examines the current United States enactment for car crashes and the resulting claims. With momentum example of mishaps, the carelessness trials against proprietors or drivers of vehicles dwarf those against producer’s on the other hand interstate proprietors. The potential lawful risk and cost of obligation protection for the makers may debilitate the quick advancement and broad arrangement of help frameworks.
Understanding lawful impacts of driver help frameworks unquestionably requires more research. Subsequent national administrative will and bolster regarding authoritative measures can ease a large portion of the ebb and flow entanglements of such an "endeavor." The accessible distributed exploration reports that examine the legitimate and
Adaptive Cruise Control
47 | P a g e
institutional challenges of driver help frameworks are not very many. The vast majority of the risk expenses of the mischances are paid via auto proprietors, through their own particular obligation protection. Syverud clarifies how diverse driver help cautioning or data frameworks may move the obligation dissemination toward the maker or parkway proprietors (for canny interstate frameworks). For driver data/cautioning frameworks, he proposes methods that makers can use to diminish the risk costs without monstrous tort law changes: 1. giving item notices 2. recording and reporting the execution of help frameworks 3. purchasing obligation protection covering the notice framework 4. having a free maker/installer with less resources produce/introduce the framework after the auto is acquired by the shopper 5. convincing the state governing bodies to sanction laws that disappointment of a notice framework cannot be utilized as a guard as a part of a carelessness suit 6. participating with government organizations in actualizing driver cautioning frameworks as per rules proclaimed by government The case is somewhat more entangled for vehicle control frameworks that mechanize some driving errands. While such frameworks can for the most part enhance the wellbeing, framework disappointment in such cases can have disastrous results. Framework makers also, thruway proprietors will probably be the respondents in a tort suit. For controlled roadways exceptionally, a disappointment can include numerous vehicles bringing about various claims against producers and thruway proprietors. Adaptive Cruise Control
48 | P a g e
Appendix: -Gantt Chart
Adaptive Cruise Control
49 | P a g e
-Budget/Parts List
Component RC Car Arduino Mega Adafruit Trinket Wiring IR Emitter and Detector Distance Sensor Protoboard for indicator panel LEDs Resistors 9V Battery Holder Zip ties White Label Strips Chase Car Batteries
Adaptive Cruise Control
Price 110 45 7 4 2 10 2 5 3 4 2 2 30 10 Total 236
50 | P a g e
-Code 1. Trinket Code #include
#define pwm 1 int pwmamount = 1500; int pwmamountbyte = 150; unsigned long prevmicros; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(pwm, OUTPUT); TinyWireS.begin(4); noInterrupts(); } // the loop routine runs over and over again forever: void loop() { if(TinyWireS.available() > 0) {pwmamountbyte = TinyWireS.receive(); pwmamount = pwmamountbyte * 10;} if((micros()-prevmicros) > 20000) {noInterrupts(); prevmicros = micros(); digitalWrite(pwm, HIGH); delayMicroseconds(pwmamount);} digitalWrite(pwm, LOW); interrupts(); }
Adaptive Cruise Control
51 | P a g e
2. Arduino Mega Code #include #include #include #define #define #define #define #define #define #define #define #define #define #define #define
pwm 12 throttlepin 5 setpin 6 led 13 trig 11 echo 10 onled 22 cruiseled 23 distancewarnled 24 ebrakeled 25 easymodeled 26 easymodepbutton 27
double Kp = 0.1; double Ki = 0.1; double Kd = 0.0; double dKp = 1; double dKi = .1; double dKd = 0.1; double min = 1500; double max = 2000; volatile int prev_time = 0; volatile int prev_distime = 0; int rxsig; int setsig; int cruisesig; int temprxsig; int tempsetsig; int tempdistance; int ebrakedistance = 75; int distancewarn; int easymodelimit = 1630; int easymodereverselimit = 1300; double cruisespeed; double pwmamount; unsigned long rawdistance; double distance = 500; double safedistance = 150; int cruisespeedwdist; double cruisespeedwspeed; int wheelspeed; int wheelspeedsum; byte setbutton; byte setbuttonold; byte cruiseset;
Adaptive Cruise Control
52 | P a g e
byte ebrake; byte speedcount; byte speedcounttemp; byte avgcount; byte easymodeon = 1; double avgwheelspeed; byte direction; unsigned long prevmillis; unsigned long speedcycle; unsigned long easymodemillis; unsigned long looptime; unsigned long safedismillis; byte sregRestore; PID speedPID(&avgwheelspeed, &pwmamount, &cruisespeed,Kp,Ki,Kd, DIRECT); PID distancePID(&distance, &pwmamount, &safedistance,dKp,dKi,dKd, REVERSE); void setup() { Serial.begin(9600); Wire.begin(); pinMode(throttlepin, INPUT); pinMode(setpin, INPUT); //pinMode(18, INPUT); pinMode(led, OUTPUT); pinMode(echo, INPUT); pinMode(trig, OUTPUT); //pinMode(easymodepbutton, INPUT); pinMode(easymodeled, OUTPUT); pinMode(onled, OUTPUT); pinMode(cruiseled, OUTPUT); pinMode(distancewarnled, OUTPUT); pinMode(ebrakeled, OUTPUT); digitalWrite(onled, HIGH); speedPID.SetMode(AUTOMATIC); speedPID.SetOutputLimits(min, max); speedPID.SetSampleTime(200); distancePID.SetMode(AUTOMATIC); distancePID.SetOutputLimits(min, max); distancePID.SetSampleTime(50); setsig = pulseIn(setpin, HIGH); if(setsig > 1900) {setbuttonold = 1;} if(setsig < 1100) {setbuttonold = 0;} distancewarn = safedistance + 100; //attachInterrupt(4, distanceread, CHANGE); attachInterrupt(5, speedcal, CHANGE); attachInterrupt(4, easymode, FALLING); } void loop() { //For When the Sensor Glitches and return 0 if(distance == 0)
Adaptive Cruise Control
53 | P a g e
{distance = 500;} Serial.print("distance:"); Serial.println(distance); if((millis() - speedcycle) > 25) { wheelspeed = speedcount; speedcount = 0; speedcycle = millis(); avgcount += 1; wheelspeedsum = wheelspeed + wheelspeedsum; } if (avgcount == 5) {avgwheelspeed = (wheelspeedsum/5); wheelspeedsum = 0; avgcount = 0; } Serial.print("avgwheelspeed:"); Serial.print(avgwheelspeed); double gap = abs(cruisespeed-avgwheelspeed); //distance away from setpoint if(gap<4) { //we're close to setpoint, use conservative tuning parameters speedPID.SetTunings(Kp, Ki, Kd); } else if ((gap>4) && (gap<8)) { //we're far from setpoint, use aggressive tuning parameters speedPID.SetTunings(.5, 0.5, 0); } else { //we're far from setpoint, use aggressive tuning parameters speedPID.SetTunings(2, 1, 0); } if(avgwheelspeed < 3) {speedPID.SetTunings(4, 1, 0);}
//Determines Cruise control behaviour if(cruiseset == 1) { digitalWrite(cruiseled, HIGH); if(rxsig < 1400) //Turns off cruise control if brake applied { cruiseset = 0; digitalWrite(distancewarnled, LOW); } else if(rxsig > pwmamount) //Allows car to accelerate even when cruise control is set
Adaptive Cruise Control
54 | P a g e
{ pwmamount = rxsig; digitalWrite(distancewarnled, LOW); } else if(distance < distancewarn) //Switches to Distance PID to maintain distance { digitalWrite(distancewarnled, HIGH); safedismillis = millis(); distancePID.Compute(); } else //Sets speed to cruise speed { if((millis()-safedismillis) <2000) {speedPID.SetTunings(0.1, 0.1, 0);} speedPID.Compute(); cruisespeedwdist = pwmamount; digitalWrite(distancewarnled, LOW); distancePID.SetOutputLimits(min, cruisespeedwdist); //Max speed in Distance PID mode } } else { digitalWrite(cruiseled, LOW); digitalWrite(distancewarnled, LOW); cruisespeedwdist = 0; pwmamount = rxsig; }
setsig = pulseIn(setpin, HIGH); //Read Signal of The Cruiseset button rxsig = pulseIn(throttlepin, HIGH); //Reads Signal of Throttle Trigger //Button Toggle for setting cruise control if(setsig > 1900) {setbutton = 1;} if(setsig < 1100) {setbutton = 0;} if(setbutton != setbuttonold) { if(cruiseset == 0) { cruiseset = 1; cruisespeed = avgwheelspeed; cruisespeedwdist = rxsig; cruisespeedwspeed = rxsig; pwmamount = rxsig; } else if (rxsig > pwmamount) { cruiseset = 1;
Adaptive Cruise Control
55 | P a g e
cruisespeed = avgwheelspeed; cruisespeedwdist = rxsig; cruisespeedwspeed = rxsig; pwmamount = rxsig; } else {cruiseset = 0;} } setbuttonold = setbutton; Serial.print("cruisespeed:"); Serial.print(cruisespeed);
//Emergency Braking if(ebrake == 1) {if ((rxsig < 1525) && (avgwheelspeed < 3)) {ebrake = 0; digitalWrite(ebrakeled, LOW);} else {pwmamount = 1500;} } else if((distance < ebrakedistance) && (avgwheelspeed > 4)) if(pwmamount > 1470) {cruiseset = 0; ebrake = 1; avgwheelspeed = 0; Wire.beginTransmission(4); // transmit to device #4 Wire.write(165); // sends pwmamountbyte Wire.endTransmission(); delay(60); Wire.beginTransmission(4); // transmit to device #4 Wire.write(100); // sends pwmamountbyte Wire.endTransmission(); // stop transmitting digitalWrite(ebrakeled, HIGH); delay(1000); } //Easy Mode Limits max speed of Car if(easymodeon == 1) {digitalWrite(easymodeled, HIGH); max = easymodelimit; if(pwmamount >easymodelimit) {pwmamount = easymodelimit;} else if (pwmamount < easymodereverselimit) {pwmamount = easymodereverselimit;} } else {digitalWrite(easymodeled, LOW); max = 2000;}
//Send PWM info to trinker to create signal Wire.beginTransmission(4); // transmit to device #4
Adaptive Cruise Control
56 | P a g e
Wire.write(int(pwmamount / 10)); // sends divides by 10 to fit in byte Wire.endTransmission(); // stop transmitting //Generate pulse for Distance Sensor if((millis() - prevmillis) > 25) { digitalWrite(trig, HIGH); delayMicroseconds(20); digitalWrite(trig, LOW); rawdistance = pulseIn(echo, HIGH, 30000); //Measesures distance time distance = abs(rawdistance/ 58); //To prevent negative values when sensor glitches prevmillis = millis(); } } void speedcal() {speedcount = speedcount + 1;} void easymode() {if((millis()-easymodemillis) > 2000) {easymodemillis = millis(); if(easymodeon == 1) {easymodeon = 0;} else {easymodeon = 1;}} }
Adaptive Cruise Control
57 | P a g e
References: [1] Bageshwar, V. L. Garrard, W. L. and Rajamani, R. ”Model Predictive Control of Transitional Maneuvers for Adaptive Cruise Control Vehicles” IEEE Trans.Tech. vol 53., Sep 2004, pp.15731585 [4] Daniel, C & Johan, S. ”Adaptive Cruise Control for Heavy Vehicles Hybrid Control and MPC”, (Master research Linkping University, Department of Electrical Engineering, 2003) Sweden Linkping University. [1] S. Shladover, “Review of the state of development of advanced vehicle control systems (AVCS),” Vehicle Syst. Dyn., vol. 24, pp. 551–595, July 1995. [2] R. French, Y. Noguchi, and K. Sakamoto, “International competitiveness in IVHS: Europe, Japan, and the United States,” in Proc. 1994 Vehicle Navigation and Information Systems Conf., Yokohama, Japan, July 1994, pp. 525–530. [3] Review of National Automated Highway Research Program, 1998. [7] P. Varaiya, “Smart cars on smart roads: Problems of control,” IEEE Trans. Automat. Control, vol. 38, pp. 195–207, Feb. 1993. [8] D. Swaroop and R. Huandra, “Intelligent cruise control design based on a traffic flow specification,” Vehicle Syst. Dyn., vol. 30, pp. 319–344, Nov. 1998. [9] D. Swaropp and K. Rajagopal, “Intelligent cruise control systems and traffic flow stability,” Transport. Res., pt. C, vol. 7, pp. 329–352, Dec. 1999. [13] H. Winner, S. Witte, W. Uhler, and B. Lichtenberg, “Adaptive Cruise Control System: Aspects and Development Trends,”, SAE Paper 961010, 1996. [15] M. Persson, F. Botling, E. Hesslow, and R. Johansson, “Stop and go controller for adaptive cruise control,” in Proc. 1999 IEEE Int. Conf. Control Applications and IEEE Int. Symp. ComputerAided Control System Design, Kohala Coast, HI, 1999, pp. 1692–1697.
Adaptive Cruise Control
58 | P a g e
[16] P. Venhovens, K. Naab, and B. Adiprastito, “Stop and go cruise control,” Int. J. Automotive Technol., vol. 1, pp. 61–69, Dec. 2000. [19] R. Deering and D. Viano, “Critical Success Factors for Crash Avoidance Countermeasure Implementation,”, SAE Paper 94CO25, 1994. [20] J. Woll, “Radar Based Adaptive Cruise Control for Truck Applications,”, SAE Paper 973 184, 1997. [21] P. Barber and N. Clarke, “Advanced collision warning systems,” in Proc. 1998 Inst. Elect. Eng. Colloquium Industrial Automation and Control: Application in the Automotive Industry, London, U.K., 1998, pp. 2/1–2/9. [22] J. Woll, “Radar Based Collision Warning System,”, SAE Paper 94CO36, 1994. [23] P. Ioannou and H. Raza, “Vehicle following control design for automated highway systems,” in Proc. 1997 IEEE Vehicular Technology Conf., Phoenix, AZ, 1997, pp. 904–908. [24] , “Vehicle following control design for automated highway systems,” IEEE Control Syst. Mag., vol. 6, pp. 43–60, Dec. 1996. [25] (2012, November 11). HC-SR04 Ultrasonic Sensor [Online] Available: http://arduinobasics.blogspot.com/2012/11/arduinobasics-hc-sr04-ultrasonic-sensor.html [26] Sean OBryan. (2012, June 10). Arduino - Control ESC/Motor Tutorial [Online] Available: http://techvalleyprojects.blogspot.com/2012/06/arduino-control-escmotor-tutorial.html [27] Jan. (2011, February 9). Servo control interface in detail [Online] Available: https://www.pololu.com/blog/17/servo-control-interface-in-detail [28] (2011, December 18). Traction Control Part 1.1 - Monitoring Wheel Speed [Online] Available: http://rcarduino.blogspot.com/2011/12/traction-control-part-11-monitoring.html [29] Giorgos Lazaridis. (2009, March 10). PWM Modulation [Online] Available: http://pcbheaven.com/wikipages/PWM_Modulation/ [30]PID for Dummies [Online] Available: http://www.csimn.com/CSI_pages/PIDforDummies.html [31] Bishop, R.H. ”Intelligent Vehicle Technology and Trends” Artech House Publishers 2005. [32] Bosch,R. ”Bosch Acc Adaptive Cruise Control”, Robert GmbH. 2003. [33] Nice, Karim. (2001, January 15). How Cruise Control Systems [Online] Available: http://auto.howstuffworks.com/cruise-control.htm
Adaptive Cruise Control
59 | P a g e
[34] Karvinen, Tero, and Kimmo Karvinen. Getting Started with Sensors. Sebastopol, CA: Maker Media, 2014. Print.
[35] (2012, January 20). How To Read an RC Receiver With A Microcontroller - Part 1 [Online] Available: http://rcarduino.blogspot.ae/2012/01/how-to-read-rc-receiver-with.html [36] Cornelam. I2C between Arduinos [Online] Available: http://www.instructables.com/id/I2Cbetween-Arduinos/ [37] Ben. (2014, June 6). Three Ways To Read A PWM Signal With Arduino [Online] Available: http://www.benripley.com/diy/arduino/three-ways-to-read-a-pwm-signal-with-arduino/ [38] Introducing Trinket [Online] Available: https://learn.adafruit.com/introducingtrinket/introduction [39] Banzi, Massimo. Getting Started with Arduino. Sebastopol, CA: O'Reilly, 2015. Print. [40] (2013, December 12). Adaptive Cruise Control [Online] Available: http://www.tc.gc.ca/eng/motorvehiclesafety/safevehicles-1175.htm
Adaptive Cruise Control
60 | P a g e