0% found this document useful (0 votes)
14 views71 pages

Fused

Uploaded by

Kali Das
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views71 pages

Fused

Uploaded by

Kali Das
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 71

CHAPTER I

INTRODUCTION

OVERVIEW

BLDC motors are widely used in space, automotive and medical industries due to their
high power density and much lower maintenance needs as they have no mechanical brushes
. The main disadvantage of the BLDC motor compared to traditional DC brushed motors is
that they usually require complex control algorithms for efficient commutation. BLDC
motor control can usually be separated into two parts. The inner part takes care of
the commutation using feedback signals such as outputs from Hall effect sensors,
position encoders, B-EMF voltage sensors and phase currents depending on the
commutation method. In the outer part, motor speed and position are controlled. In
this part, the feedback signal is usually the position output from encoders, tachometers and
resolvers . In recent years, applications that require high performance aircraft, space vehicles
and electric vehicles come to the fore as the most important usage areas of electrical
machines. BLDC motors are widely used in high-performance applications because they
can be produced in small sizes, light weight and they can produce higher torque then
asyncronous motors in the same sizes . With the advantages of BLDC motors given above
there are disadvantages as well as current commutation requests in high-speed and high
costs. Classical control methods in commutation in high speeds can be weak and as a
result of incorrect switching system may cause unnecessary power expenditure. Because
of especially charge problems, unnecessary power shortages are undesirable in electrical
vehicles. In this context, researchers have begun to apply different control methods to
control BLDC motors in recent years.
The development of high performance motor drives is very important in industrial
applications. Generally, a high performance motor drive system must have good dynamic
speed command tracking and load regulating response.

D.C motors have long been the primary means of electric traction. D.C motor is considered a
SISO system having torque/speed characteristics compatible with most mechanical loads.
This makes a D.C motor controllable over a wide range of speeds by proper adjustment of
its terminal voltage. Recently, brushless D.C motors, induction motors, and synchronous
motors have gained widespread use in electric traction. However, there is a persistent effort
towards making them behave like dc motors through innovative design and control
strategies. Hence dc motors are always a good proving ground for advanced control
algorithm because the theory is extendable to other types of motors.

Many practical control issues (motor control problems):

Variable and unpredictable inputs

Noise propagation along a series of unit processes

Unknown parameter

Changes in load dynamic

Under these conditions, the conventional constant gain feedback controller fails to maintain
the performance of the system at acceptable levels. The incorporation of feed forward in
artificial neural networks is important for several reasons the dynamical properties of the
system, and in practice it may improve the performance. They are generally present in most
non-linear dynamical system and can be used to implement specific structures.

Advantages of using NNs: Learning ability

Massive parallelism
Fast adaptation

Inherent approximation capability High degree of tolerance

Speed control techniques in separately excited dc motor:

Varying the armature voltage in the constant torque region.

In the constant power region, field flux should be reduced to achieve speed above the
rated speed.

Methods of speed control:

Traditionally rheostat armature control method was used for low power dc motors.
Use of conventional PID controllers.

Neural network controllers (NNC).

Constant power field weakening controller based on load-adaptive multi-input multi-


output linearization technique (in high speed regimes).

A single phase uniform PWM ac-dc buck-boost converter with only one switching
device used for armature voltage control.

Use of NARMA-L2 (Non-linear Auto-regressive Moving Average) controller in the


constant torque region.

Through experience gained in designing trajectory controllers based on self-tuning and PID
control, it is seen that the neural network controller gives comparable performance in speed
tracking. In addition to those mentioned above, a unique advantage of the neural network

controller is its ability to cope with bad measurement data that occur during training and
testing. However, a key drawback is the inadequate integral gain in the feedback loop,
resulting in steady-state errors of the shaft position. Direct position tracking can alleviate
this problem.
The traditional means adapted by the motion control industry with motor drives has been the
approach of linearizing the system dynamics and designing a linear feedback controller.
However, in high-performance motor drives such an approach is seldom satisfactory, as it
results in poor speed and position tracking when sudden changes in load result in continuous
acceleration or deceleration of the motor/load system. Adaptation is necessary to ensure
optimal performance.

1.1 PROBLEM STATEMENT

Brushless DC motors have some significant advantages over their competitors, such as
brushed motors, largely because of the electronic commutation. It allows the controller to
switch the current promptly and thus regulate the motor’s characteristics effectively. We
have used an artificial neuron-based controller to overcome these aspects and to provide a
better dynamic and quick response, in order to control the speed of a BLDC motor as well as
the reduction in torque ripples.

1.2 OBJECTIVE

This paper's main goal is to use an artificial neural network (ANN) controller to control the
brushless DC motor's speed. Based on the simulation results, an analysis is carried out.
Reference control models are created to verify the output of the given ideal values of control
parameters when the control system reacts to the command signal. The simulation results
using ANNs are shown to be more accurate than those using PIDs in terms of capturing the
optimum reference control model response.

1.3 PROJECT INTRODUCTION


Due to their ease of control, DC motors were the most widely used industrial drive systems
up until the nineteenth century. Since sparks were a serious drawback. Due to its enhanced
torque, significant speed, high precision control, and simpler connected connections, the
BLDC or permanent magnetic DC synchronous motor has become one of the most popular
machines in autonomous power systems, allowing it to be employed in applications that
demand a long life service. It is the best choice to apply this application in Electrical vehicle,
household appliances and industrial appliances. BLDC motors have properties such as
torque- speed characteristics and smooth speed control. The control of DC motor does not
require complex Hardware and it is comparatively simple. As computers continue to
advance, artificial intelligence is becoming more widely used in simulation data for
electrical and electronic engineering. A computational model known as a neural network
emulates the human brain's multiple simultaneous processing centres and lack of a single
control hub. The neural network learns new information mostly through updating the
weights. This study simulates BLDC motor speed regulation using MATLAB/Simulink. The
simulation data is gathered and supplied into the artificial neural network model. The data in
ANNs is trained using the Tensor Flow library. For the best outcomes, many ANN
topologies are proposed for various simulation data. This paper shows that the method of
speed control of BLDC motor operation. This method shows the sensor control of BLDC
motor operation from rated speed and rated current. The output result is proposed in this
paper.
CHAPTER II

LITERATURE REVIEW

2.1 PROJECT BACKGROUND

1. Md Mahmud* Department of Electrical and Computer Engineering International Islamic


University Malaysia (IIUM) Kuala Lumpur, Malaysia [email protected]

Inference:

The highlights can be met by adaptive PID controllers, which are really simple to sign up
for. The list of items checks whether any adaptive PID controller has favoured both the PI
controller and the traditional Tahitian PID controller. An adaptive PID controller depends on
the extra error of a turn-around control signal to understand non-linearity, parameter
varieties, and burden travel issues that occur in the BLDC motor drive framework.

Summary:

For speed control, this controller uses a three-phase BLDC motor. As a result, an adaptive
PID controller produces outstanding Simulation results. In order to operate BLDC motors,
adaptive PID controller technology has progressed.

However, it is important to note that when a motor operates at up-and-down speeds, the
motor speed must remain constant as the load changes in order for the motor to be
responsive. The purpose of this project is to construct a prototype of an adaptive PID
controller for controlling BLDC motors. It aids in the development of BLDC motor speed
and efficiency.

2. Dimas Arifiyan, Department of Electrical Engineering, Soegijapranata Catholic


University, Semarang, Indonesia. [email protected]

Inference:
Back-EMF signal can be freely altered to account for the inaccuracy caused by the LPF
(Low Pass Filter), resulting in the suitable commutation angle that can operate BLDC
motors across a wide speed range.Back-EMF faults frequently result from phase changes
brought on by LPF installation. This change in the back-EMF can impair commutation
angles and reduce the speed range of BLDC motors. The LPF causes a shift that is
significant enough to have a negative impact on the performance of BLDC motors at both
low and high speeds.

Summary:

It has the ability to run BLDC motors at a variety of speeds. It is possible to freely modify
the commutation angle to provide the proper excitation angle. It is possible to fix the back-
EMF fault detection brought on by the LPF. The ability of the BLDC motor speed range is
significantly impacted by improvements in the shifting of the commutation angle. In order to
achieve the correct commutation angle, this approach employs the input capture function on
the dsPIC30F4012 to fix inaccuracies at the commutation angle. The motor rotates at
varying speeds, as shown in the result and discussion section. BLDC motors run at speeds
ranging from 600 RPM to 3500 RPM.

3. Jongnam Bae, Dept. of Mechatronics Engineering, Kyungsung University, Busan, South


Korea
e-mail: [email protected]

Inference:

Two in-wheel brushless DC motors that are used to power the construction and operation of
a self-driving surveillance robot. The sensor less speed estimation is used for the actual
speed detection to improve the performance of speed and motion control. Due to the hall
sensors actual feedback's incredibly sluggish response time in the low-speed area, the
continuous estimated speed can enhance speed control performance. Two internal wheel
motors' rotational locations are used to calculate the robot's direction of motion. The
direction is then changed in accordance with the IMU sensor's estimated direction. The
robot's heading angle inaccuracy can be corrected using a combination of the compensating
term of moving angle based on the actual rotating positions of each in-wheel BLDC motor
and the compensating Make updated speed references in terms of angle error to correct the
mistake.

Summary:

A sensor- and Sensor less -controlled in-wheel BLDC with integrated driving speed and
direction control robot's self-driving surveillance motors sensor less estimation based on the
current model reference adaptive system is offered for continuous speed feedback. The
instantaneous rotating angle of the motor is calculated using the 2-axis estimated back EMFs
in the suggested approach. The position of the hall sensor is then used to adjust the spinning
angle. Instead of using the predicted back EMF, the updated rotating angle estimates the real
motor speed. Additionally, the balanced control by the compensated speed reference to alter
the moving direction can lessen the driving error in the practical system.

2.2 PROJECT MOTIVATION

1. Djamel Eddine Beladjine, LREA Laboratory, Departement of Electrical Engineering


University of Medea, Medea, Algeria. beladjine.djamel@univ-medea.

Inference:

A comparison of brushless DC motor control using artificial neural networks (ANN) with
traditional PI control. Because these motors are non-linear systems that need reliable control,
BLDC is advised for drives that call for a lot of load torque. We used an artificial neuron-
based controller to overcome these issues and to provide a better dynamic and quick
response, in order to control the speed of a BLDC motor and the reduction in torque ripples.
This was done due to the saturation characteristic presented by the conventional PI regulator,
which results in the instability of the system. The artificial neuron network controller
performance evaluation is superior to that of the conventional PI controller, according to
simulation data produced using MATLAB/SIMULINK.

Summary:

The supervised learning strategy has been proposed to improve response time from 0.0523
seconds in proportional integrator controller down to 0.0447 seconds in ANN controller, it
might be a small difference but it's needed especially in sensitive applications that require
precision and quick response, the reason why BLDC is the most used. We replace the PI
controller with the ANN regulator, according to the study of the fundamental concepts of
neural network, the PI controller is replaced with the ANN regulator.

In comparison to the traditional PI controller, the findings obtained demonstrate improved


dynamic and static speed response performance as well as torque performance.

2.Dr.B.Venkata Prasanth,M.Tech., Ph.D., #1, V.Venkata Swathi #2, N.Niranjan #3,


N.Vamsi #4, M.Vidya Rani #5, CH.Sai Ganesh #6 #1 Professor, #2,3,4,5,6 B.Tech.,
Scholars Department of Electrical and Electronics Engineering,

Inference:

Many different technologies are available in the motor industry nowadays.

Adjusting the motor's speed in accordance with the uses that were planned. For instance, in
order to maintain, using an Arduino Board and PWM Technique, speed can be achieved for
BLDC motor applications. Control of BLDC motor utilising many methods, including
mobile applications, Blue 100th.But for such technologies, BMS is dependent on mobile
phones, etc. There are various mythology platform, etc. The economic cost of the product
will rise as a result of their technology and the poor cannot be used any further.

Summary:

Brushless DC motor speed is controlled by adjusting the duty cycles of PWM pulses, which
supply the desired output to the BLDC motor. Due to performance benefits like decreased
size and cost, decreased torque ripples, increased torque-current ratio, low noises, high
efficiency, decreased maintenance, and good control characteristics over a broad range in
torque-speed plan generally, permanent magnet excited brushless DC motors are becoming
more and more popular in a variety of applications.

2.3 RESULT PARAMETERS

1.Mr. Nileshkumar J. Kumbhar* 2, Mr. Irshad Mahmmad Sanade* 3, Mr. Akshay Shamrao
Kapare* 4 *1Assistant professor, Department of Electrical, Ashokrao Mane Group of
Institutions, India. *2,*3UG Scholar, Department of Electrical, Ashokrao Mane Group of
Institutions, India.

Inference:

In all technological fields, the Brushless DC motor is more effective to employ. This
solution is made possible by the Android integration, which links the IP address at a certain
web domain with the motor's speed control and tracking functions. When this does, Ethernet
Shield enters the picture in order to transport or direct the current signals or to receive.

Summary:

We presented a new architecture for the control system that makes use of an adaptable
industrial-based Android smartphone that is well employed in case of web domain for
system control setup and is implemented by Ethernetshield and IBOARD Arduino. Due to
the measured results of controlled temperature to improve the proper functioning of the
device and to protect it from unintended destruction like overheating due to increased
temperature, the Ethernet shield connection is the support built acted over here, to normalise
the working of the motor. Thus, the Brushless Direct Current motor speed is effectively
regulated via IOT with correct controlling phenomena, and in this case, the parameters are
also monitored on an LCD display in case of expected output for the portable controlling
applications.

2. Porselvi T is with the Department of Electrical and Electronics Engineering, Sri Sairam
Engineering College, Chennai, 600044 India (Phone: +91 94457 82722; e-mail:
[email protected]).

Inference:

A simple network comprising input, output, and hidden layers and a number of nodes is
called an artificial neural network (ANN).Since ANN algorithms handle binary data more
correctly than other methods, their implementation in electrical and electronic engineering
consistently produces the desired results. The brushless direct current motor (BLDC motor)
generates magnetic fields by switching DC current to the motor windings using electronic
closed-loop controllers. Due to its high speed, low maintenance requirements, and sufficient
torque capacity, the BLDC motor finds numerous uses.

Summary:

A PI controller is used to get the motor's speed control after modelling it in


MATLAB/Simulink. Simulations of EMF signals are achieved along with rotor speed,
electromagnetic torque, Hall Effect signals, PWM, and EMF signals. Artificial neural
networks (ANNs) are used to forecast the corresponding parameters, and they are fed with
the gathered data to produce results that are reasonably close to those of simulations. Both
the simulation based on math and the forecast based on data provide outcomes that are
satisfying.

2.4 RESEARCH GAP

1.isha C. G Department of Electrical and Electronics Engineering, Sree Buddha College of


Engineering, Alapuzha, Kerala, India

inference:
Permanent magnet brushless DC motors (PMBLDC) have a wide range of industrial
applications because of their high power density, high torque, minimal to no torque ripple,
compact size, and accurate position control.

Precision position measurement, however, was necessary for ripple-free precision control of
brushless motors. For precise position control, a sensor less arrangement would not be
acceptable because it can be challenging to connect encoders directly to the shafts of these
motors. We suggest a technique for determining rotor position that makes use of analogue
Hall Effect sensors to gauge the rotor magnets' magnetic field in order to develop a
computationally straightforward motor control strategy. The power devices are successively
commutated every 60 degrees according to the rotor position. PM motors require a PI-speed
controller in order to perform at the necessary level.

Summary:

The suggested method of monitoring rotor position using an analogue hall effect sensor
provides the piece of information required to synchronise the motor excitation with the rotor
position in order to provide constant torque. It recognizes when the magnetic field changes.
The hall sensors are activated by the rotor magnets. The simulation of a PI controller using
MATLAB/SIMULINK to control the speed of a flexible BLDC motor demonstrates that the
target speed is obtained with less response time. Analysis of the motor's characteristics
shows that it can control the motor drive over a wide speed range.

2.Han-Chen Wu, Min-Yi Wen, and Ching-Chang Wong Dept. Electrical Engineering,
Tamkang University, New Taipei City, 25137, Taiwan [email protected],
[email protected], [email protected]

Inference:

Nowadays, the majority of electrical systems need to operate more efficiently and with less
carbon dioxide use. Because they have a higher efficiency than conventional AC induction
motors and are entirely supplied by electricity, brushless DC (BLDC) motors can meet these
requirements. It is suggested in this paper to use Hall effect sensors to control the speed of
BLDC. In order to power the motor, hall effect sensors measure the rotor position.
Trapezoidal PWM wave, often known as trapezoidal control, is the driving method. The
proportional-integral (PI) controller is used to regulate the rotation speed. A few examples
are given to show how PI control results in a more accurate and stable motor speed control
than control without PI control.

CHAPTER III

METHODOLOGY

EXSISITNG SYSTEM:

BLDC Motors are among the many possible solutions employed in electric vehicle
applications. Brushless DC motor are featured in 2-wheeler segment and light load vehicles
catering to majority of courier industry and ride hailing providers. This research paper
focuses on such solutions based on BLDC motors specifically. In the paper presented, PWM
and current control techniques are implemented for speed control of Brushless DC motor
using MATLAB Simulink environment. The performance in both the cases are compared in
terms of drive response, stator current, electromagnetic torque. Further, the stator current
ripples and electromagnetic torque ripples are elaborately discussed and results analyzed for
further improvements.

PROPOSED SYSTEM:

The control and automation has been accelerated to its next generation with the introduction
of machine learning algorithms and advanced computing capability of modern processors, in
control systems for various applications. Many researches are undergoing in the field of
controller design and tuning using the deep learning algorithms. This Project addresses a
comparison study on effectiveness and performance between a proportional integral.
Initially, the proportional integral derivative controller was tuned for a BLDC motor model
with a balance between robustness and faster response. Later, the neural network controller
was trained for the same model followed by optimization of the controller. Then both
Convertors Sepic and CUK were experimented using the same model of BLDC motor by
simulation in python Followed to this, another experimentation was done by changing the
values for moment of inertia of rotor followed by simulating the controller response without
re-tuning the controller for newer model.

BLOCK DIAGRAM:

CONCEPTUAL BLOCK

SIMPLIFIED BLOCK
DESIGN:

SEPIC CONVERTOR:

The single-ended primary-inductor converter (SEPIC) is a DC/DC converter topology that


allows the electrical potential (voltage) at its output to be greater than, less than, or equal to
that at its input. The output of the SEPIC is controlled by the duty cycle of the control
switch.
The SEPIC converter is able to either increase or decrease an input voltage by controlling
the Duty Cycle of a pulse to the MOSFET. One way to do that is to directly control the Duty
cycle using a potentiometer.

SEPIC converter circuit consists of input voltage source Vg, coupling capacitor C1, and
output capacitor C2, two inductors L1 and L2, diode D, and load resistance. SEPIC
converter circuits share the common ground between the input and output circuits. This
converter exchanges energy between the inductor L1, capacitor C1, and inductor L2 to
convert input DC voltage to require output voltage level. Typically, a power transistor
switch (S1) such as a MOSFET is used to control the amount of energy exchanged.

Instead of using discrete inductors (L1 & L2), the SEPIC converter can also be designed
using the coupling inductors which will improve the efficiency and reduce PCB area.
Coupling inductors mean that two windings (L1 & L2) are connected in a single core.

 When compared with a conventional buck-boost converter, the SEPIC converter


offers benefits such as providing non-inverting output voltage, superior input current
purity, and higher efficiency.
 When compared with a flyback converter (isolated buck-boost) that uses a transformer
for isolation, the SEPIC converter offers benefits such as lower switching losses, low
output voltage noise, higher efficiency, and allows the high frequency of operation.

CUK CONVERTOR

Cuk converter is used for the voltage regulation for the Dc application systems. ➢ Cuk
converter is used in hybrid solar-wind energy system as a regulator where input voltage
depends on speed of wind and sun, inorder to make the output voltage as a constant source
Cuk converter is used.

The CUK is a negative output converter, while the SEPIC is a positive output converter.
While comparing the SEPIC-CUK configuration it is observed that both converters have the
same voltage conversion ratio with opposite polarity. Bipolar DC link has two wires one
with positive polarity and one with negative polarity.
CHAPTER 4

HARDWARE DESCRIPTION:

NODEMCU (ESP8266)

The Atmel AVR® core combines a rich instruction set with 32 general purpose working
registers. All the 32 registers are directly connected to the Arithmetic Logic Unit (ALU),
allowing two independent registers to be accessed in a single instruction executed in one
clock cycle. The resulting architecture is more code efficient while achieving throughputs up
to ten times faster than conventional CISC microcontrollers. The ATmega328/P provides the
following features: 32Kbytes of In-System Programmable Flash with Read-While-Write
capabilities, 1Kbytes EEPROM, 2Kbytes SRAM, 23 general purpose I/O lines, 32 general
purpose working registers, Real Time Counter (RTC), three flexible Timer/Counters with
compare modes and PWM, 1 serial programmable USARTs , 1 byte-oriented 2-wire Serial
Interface (I2C), a 6- channel 10- bit ADC (8 channels in TQFP and QFN/MLF packages) , a
programmable Watchdog Timer with internal Oscillator, an SPI serial port, and six software
selectable power saving modes.

This allows very fast start-up combined with low power consumption. In Extended Standby
mode, both the main oscillator and the asynchronous timer continue to run. Atmel offers the
QTouch® library for embedding capacitive touch buttons, sliders and wheels functionality
into AVR microcontrollers. The patented charge-transfer signal acquisition offers robust
sensing and includes fully debounced reporting of touch keys and includes Adjacent Key
Suppression® (AKS™) technology for unambiguous detection of key events. The easy-to-
use Q Touch Suite toolchain allows you to explore, develop and debug your own touch
applications. The device is manufactured using Atmel’s high density non-volatile memory
technology. The On-chip ISP Flash allows the program memory to be reprogrammed In-
System through an SPI serial interface, by a conventional non-volatile memory programmer,
or by an On-chip Boot program running on the AVR core.

Pin diagram of ATMEGA328

The ATmega328/P is supported with a full suite of program and system development tools
including: C Compilers, Macro Assemblers, and Program Debugger/Simulators, In-Circuit
Emulators, and Evaluation kits. Below figure 3.2.1 pin diagram of ATMEGA328.
FEATURES OF ATMEGA328

28-pin AVR Microcontroller

Flash Program Memory: 32 kilo bytes

EEPROM Data Memory: 1 kilo bytes

SRAM Data Memory: 2 kilo bytes

I/O Pins: 23

Timers: Two 8-bit / One 16-bit

A/D Converter: 10-bit Six Channel

PWM: Six Channels

RTC: Yes with Separate Oscillator


MSSP: SPI and I²C Master and Slave Support

USART: Yes

External Oscillator: up to 20MHz

ADVANTAGES/ IMPROVEMENTS IN ATMEGA328

Still runs on 5 V, so legacy 5 V stuff interfaces cleaner

Even though it's 5 V capable, newer parts can run to 1.8 V. This wide range is very rare.

Nice instruction set, very good instruction throughput compared to other processors
(HCS08, PIC12/16/18).

High quality GCC port (no proprietary crappy compilers!)

"PA" variants have good sleep mode capabilities, in micro-amperes.

Well rounded peripheral set

Q Touch capability

Pin Descriptions table

VCC

Digital supply voltage.

GND

Ground.

Port B (PB [7:0]) XTAL1/XTAL2/TOSC1/TOSC2

Port B is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).
The Port B output buffers have symmetrical drive characteristics with both high sink and
source capability. As inputs, Port B pins that are externally pulled low will source current if
the pull-up
resistors are activated. The Port B pins are tri-stated when a reset condition becomes active,
even if the clock is not running.
Depending on the clock selection fuse settings, PB6 can be used as input to the inverting
Oscillator amplifier and input to the internal clock operating circuit.

Depending on the clock selection fuse settings, PB7 can be used as output from the inverting
Oscillator amplifier.

If the Internal Calibrated RC Oscillator is used as chip clock source, PB [7:6] is used as
TOSC [2:1] input for the Asynchronous Timer/Counter2 if the AS2 bit in ASSR is set.

Port C (PC [5:0])

Port C is a 7-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).
The PC [5:0] output buffers have symmetrical drive characteristics with both high sink and
source capability. As inputs, Port C pins that are externally pulled low will source current if
the pull-up resistors are activated. The Port C pins are tri-stated when a reset condition
becomes active, even if the clock is not running.

PC6/RESET

If the RSTDISBL Fuse is programmed, PC6 is used as an I/O pin. Note that the electrical
characteristics of PC6 differ from those of the other pins of Port C.

If the RSTDISBL Fuse is unprogrammed, PC6 is used as a Reset input. A low level on this
pin for longer than the minimum pulse length will generate a Reset, even if the clock is not
running. Shorter pulses are not guaranteed to generate a Reset.

The various special features of Port ‘C’ are elaborated in the Alternate Functions of Port C

section.

Port D (PD [7:0])

Port D is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).
The Port D output buffers have symmetrical drive characteristics with both high sink and
source capability. As inputs Port D pins that are externally pulled low will source current if
the pull-up resistors are activated. The Port D pins are tri-stated when a reset condition
becomes active, even if the clock is not running.

AVCC

AVCC is the supply voltage pin for the A/D Converter, PC [3:0], and PE [3:2]. It should be
externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be
connected to VCC through a low-pass filter. Note that PC [6:4] use digital supply voltage,
VCC.

NODEMCU Uno Board Description

We will learn about the different components on the NODEMCU board. We will study the
NODEMCU UNO board because it is the most popular board in the NODEMCU board
family. In addition, it is the best board to get started with electronics and coding. Some
boards look a bit different from the one given below figure 3.2.2, but most NODEMCUs
have majority of these components in common.

NODEMCU board can be powered by using the USB cable from computer. All we need to
do is connect the USB cable to the USB connection (1).

Power (Barrel Jack)


NODEMCU boards can be powered directly from the AC mains power supply by
connecting it to the Barrel Jack.

Voltage Regulator

The function of the voltage regulator is to control the voltage given to the NODEMCU
board and stabilize the DC voltages used by the processor and other elements.

Crystal Oscillator

The crystal oscillator helps NODEMCU in dealing with time issues. How does NODEMCU
calculate time? The answer is, by using the crystal oscillator. The number printed on top of
the NODEMCU crystal is 16.000H9H. It tells us that the frequency is 16,000,000 Hertz or
16 MHz.

NODEMCU Reset

We can reset wer NODEMCU board, i.e., start wer program from the beginning. We can
reset the UNO board in two ways. First, by using the reset button (17) on the board. Second,
we can connect an external reset button to the NODEMCU pin labelled RESET (5).

Pins (3.3, 5, GND, Vin)

3.3V (6) − Supply 3.3 output volt

5V (7) − Supply 5 output volt

Most of the components used with NODEMCU board works fine with 3.3 volt and 5 volt.

GND (8) (Ground) − There are several GND pins on the NODEMCU, any of which can be
used to ground wer circuit.

Vin (9) − This pin also can be used to power the NODEMCU board from an external power
source, like AC mains power supply.
Analog pins

The NODEMCU UNO board has five analog input pins A0 through A5. These pins can read
the signal from an analog sensor like the humidity sensor or temperature sensor and convert
it into a digital value that can be read by the microprocessor.

ESC:

Figure 1: 30A BLDC ESC

Introduction

This is fully programmable 30A BLDC ESC with 5V, 3A BEC. Can drive motors with
continuous 30Amp load current. It has sturdy construction with 2 separate PCBs for
Controller and ESC power MOSFETs. It can be powered with 2-4 lithium Polymer
batteries or 5-12 NiMH / NiCd batteries. It has separate voltage regulator for the
microcontroller for providing good anti-jamming capability. It is most suitable for
UAVs, Aircrafts and Helicopters.

Specifications
 Output: 30A continuous; 40Amps for 10 seconds
 Input voltage: 2-4 cells Lithium Polymer / Lithium Ion battery or 5-12 cells
NiMH / NiCd

 BEC: 5V, 3Amp for external receiver and servos

 Max Speed: 2 Pole: 210,000rpm; 6 Pole: 70,000rpm; 12 Pole: 35,000rpm

 Weight: 32gms

 Size: 55mm x 26mm x 13mm

Features:
 High quality MOSFETs for BLDC motor drive

 High performance microcontroller for best compatibility with all types of motors
at greater efficiency

 Fully programmable with any standard RC remote control

 Heat sink with high performance heat transmission membrane for better thermal
management

 3 start modes: Normal / Soft / Super-Soft, compatible with fixed wing aircrafts
and helicopters

 Throttle range can be configured to be compatible with any remote control


available in the market

 Smooth, Linear and Precise throttle response

 Low-Voltage cut-off protection

 Over-heat protection

 Separate voltage regulator IC for the microcontroller to provide anti-jamming


capability
 Supported Motor Speed (Maximum): 210000RPM (2 poles), 70000RPM (6poles),
35000RPM (12 poles)

Package contains: One 30A BLDC Motor

Connections:
BLDC ESC has three Blue wires coming out from the one end which are to be
connected to the BLDC motor. On the other end, it has red and black wires which are to
be connected to the battery. It also has a 3 pin servo connector which is used for
receiving the throttle command and for giving out regulated 5V, 3Amp supply for the
remote receiver and the servo motors.

Connection type Wire Colour Function


Power Red 7.4 to 14.8V
Black Ground

BLDC Motor Three Blue BLDC ESC connections


Connections Wires

Servo Connector White Throttle Input


Red 5V, 2Amp Out
Black Ground
Table 1: BLDC ESC Connections

Control Signal:

30A BLDC ESC requires standard 50-60Hz PWM signal from any remote control as
throttle input. You can also generate similar input signal from the microcontroller for
making your own customized flying platform. Throttle speed is proportional to the width
of the pulse. Maximum throttle position is user programmable. In general throttle is set
at zero for 1mS pulse width and full at the 2mS pulse width.

Notes:
Different brands of remote controls use slightly different signal range. Say 0.5ms to
2.5ms at 50 to 60Hz instead of 1ms to 2ms at 60Hz. You can program the throttle of the
BLDC ESC corresponding to the new remote control. For more information on this,
refer to section Throttle Range Setting.

In all the subsequent text, you will encounter sentences like “ESC will emit special tone
like “123”. For information regarding these tones refer to subsection 2 of the ESC
Programming and Table 2.
Interfacing BLDC ESC with the remote control
1. Connect BLDC ESC with the BLDC motor

2. Move remote’s throttle stick to zero and switch on the transmitter

3. Connect the battery pack to the BLDC ESC. It will begin self test process and

emit special tone “123” which means battery pack voltage is in normal range.
After this it will emit number of Beeps corresponding to the number of batteries in
the battery pack. Finally, a long Beep will appear which means that now it is
ready to fly.

Important:
Instead of tone sequence as mentioned in the section 3 if you hear special tones like
“56712” after 2 Beep tones, it means that ESC has entered in the program mode and
your remote’s throttle is in full instead of zero. In this case switch off the ESC, move
throttle to the opposite direction (correct zero throttle position for the remote control)
and repeat steps 1, 2 and 3.
If you hear rapid Beep-Beep tones then it means that supply voltage is too low or too
high. Check your battery’s voltage. You can also refer to the Troubleshooting section.

Throttle Range Setting


Different remote controls have servo control signals in different ranges. They can be in
the range of 1mS to 2mS or 0.5mS to 2.5mS at 50 to 60Hz. Whenever you connect this
ESC to a new remote control or microcontroller then you need to teach the ESC about
the control signal range corresponding to the zero and full throttle. To do this, follow
these instructions.

1. Switch on the transmitter and move throttle position to the maximum.

2. Connect the battery to the ESC. (BLDC motor should be connected to the ESC)

ESC will do the self test. Emit special tone like “123”. After this it will emit
number of Beeps corresponding to number of batteries in your battery pack.

3. Wait for 2 more seconds. ESC will emit Beep twice which means ESC has latched

the maximum throttle position.

4. Now within next 5 seconds move throttle stick to zero position and wait for 1

second. ESC will emit a long Beep indicating that it has latched the zero position
of the throttle.

This throttle setting is permanently recorded in the ESC. Always change this setting
when you are using new remote control.

As mention in the step 4 if you don’t move throttle to zero position within 5 seconds,
then ESC will enter in the programming mode. If this happens then switch off the ESC
and remote control and repeat steps 1 to 4.

Alert Tones:

Abnormal Input Voltage


ESC checks for the battery voltage at the start-up. If the battery voltage is not in the
acceptable range then ESC starts giving alert signal such as Beep-Beep with the interval
of 1 second.

Abnormal throttle signal:


When ESC does not detect throttle signal or it detects abnormality in the throttle signal
then it gives Beep sound with the interval of 1 second.

Throttle stick is not in the zero position:


When throttle stick is not in the zero position at start-up then it will give rapid Beeps
with the intervals of 0.25 seconds.

Protection Functions:

Abnormal Start Protection:


If motor fails to start within 2 seconds of throttle application then ESC will cut-off the
output power. Throttle stick should be brought to zero position again to resume operations.
Such case may arise if connection between ESC and motor is not reliable, propeller or
motor is blocked or gearbox (if installed) is damaged etc.

Over Temperature Protection:


If ESC gets heated above 1100C then it reduces the output power.
Throttle signal loss protection:
ESC will reduce the output power to the motor if throttle signal is lost for 1 second. If
signal is lost for further 2 seconds then it will kill the throttle and stop the motor.

Programmable Settings

1. Brake Setting:

Enabled / Disabled (Default is disabled)

2. Battery type:

Li-ion / Li-poly or NiMh / NiCd (Default is Li-ion / Li-poly)

3. Low voltage protection mode (Cut-off Mode):

Soft Cut-off (Gradually reduce the output power) / Hard Cut-off (Immediately
stop the output power) (Default is Soft Cut-off)

4. Low Voltage Protection Threshold:

Low / Medium / High (default is medium)


A. Lithium batteries:

Number of batteries is calculated automatically. Low / Medium / High cut-


off level per cell of the battery pack is 2.6V / 2.85V / 3.1V respectively. To
get cut-off value for the battery pack, multiply this value with the number
of cells in the battery pack.
B. Nickel based Batteries:

Low / Medium / High cut-off voltages are 0% / 45% / 60% of the start-up
voltage. Start-up voltage is the initial voltage of the battery pack. 0% means
voltage cut-off is disabled.
5. Start-up Mode:

Normal / Soft / Super Soft (Default is normal)


Normal mode is preferred for the fixed wing aircrafts or small UAVs. The initial
acceleration of the Soft and Super Soft modes are slower in comparison. Usually
it takes 1 second for Soft start-up or 2 seconds for Super Soft start-up from initial
throttle advance to full throttle. If throttle is set to 0 and moved to full throttle
again within 3 seconds of the initial start-up, then restart-up will be temporarily
changed to normal mode to get rid of chances of a crash caused by slow throttle
response. This special design is very suitable for aerobatic flight where quick
throttle response is needed.

6. Timing:

Low / Medium / High (Default is Low)


Usually, low timing value can be used for the most of the motors. We recommend
low timing value for 2 poles motor and medium timing value for motors with
more than 6 poles to get high efficiency. For higher speed, high timing value can
be chosen.

Note:
High KV outrunner BLDC motors have large space between magnet and many BLDC
ESCs can’t drive these motors. This ESC is capable of driving these motors. For high
KV motors it is recommended to have high or medium timing.

ESC Programming:

1. Entering programming mode

A. Switch on Transmitter, Move throttle to full, Connect battery to the ESC

B. Wait for 2 seconds. ESC will emit tone like “Beep-Beep”


C. Wait for another 5 seconds, ESC will emit tone “56712”. Now ESC is

entered in the programming mode.

2. Select programmable items

BLDC ESC emits different types of tones to communicate with you when BLDC
motor is connected to it. It actually uses BLDC motor to generate these tones. Table
below lists these tones. We will identify these tones by number allocated to them as
mentioned in the table below. In the below table “Beep” stands for the short tone.
“Beeeep” stands for the long tone. Here One long “Beeeep” = 5 short “Beep”

Right most column in the table shows the function which is valid only for this step 2.
Number and tone corresponding to it is used in this product manual.

Numbe Tone Function in Program


r mode
1 Beep Brake
2 Beep-Beep Battery Type
3 Beep-Beep-Beep Cut-off mode
4 Beep-Beep-Beep- Cut-off Threshold
Beep
5 Beeeep- Start-up mode
6 Beeeep-Beep Timing
7 Beeeep-Beep- Set all functions to factory
Beep defaults
8 Beeeep-Beeeep Exit
Table 2: Special tones

After entering in the programming mode as mentioned in step 1 you will here these 8
sequences with the interval of 3 seconds. After hearing tone of your interest move
throttle to zero to enter in particular item’s setting type. Follow step 3 to change the
setting in the particular item.

3. Set Item Value (programmable value)

Now you will hear several tones in loop. Set the value matching to the tone by
moving throttle stick to full position. If new setting is saved successfully then you
will hear special tone “1515” which indicates that value is successfully set and saved.
Now if you still keep the throttle stick to top then you will be reverted back to step 2
to go to other items. Moving throttle stick to the zero within 2 seconds will result in
program mode exit.

Items Beep Beep- Beep-Beep-


Beep Beep
Tones
Brake Off On N.A.
Battery Type Li-ion / Li- NiMh / N.A.
poly NiCd
Cut-off Mode Soft-cut Cut-off N.A.
Cut-off Low Medium High
Threshold
Start Mode Normal Soft Super Soft
Timing Low Medium High
Table 3: Item settings

4. Exiting the Program Mode

There are 2 ways to exit program modes


A. In step 3 after hearing special tone “1515”move throttle stick to zero

position with in 2 seconds.


B. In step 2 after hearing tone Beeeep-Beeeep (Item no. 8) move throttle stick

to bottom within 8 seconds.

Program Example
Setting the “Start” mode to “Super Soft” setting

1. Enter Program mode:

Switch on Transmitter, Move throttle stick to full position, connect battery to the
BLDC ESC, wait for 2 seconds, “Beep-Beep’ sound will be emitted. Now wait
again for 5 seconds, special tone “56712” should be emitted, which means you
have entered program mode.

2. Select Programmable Items:

Now you will here 8 tones in loop as mentioned in the Table 2. At Item 5 (Start
Mode), tone corresponding to long Beeeep will be heard. Now move throttle stick
to zero to enter in the “Start Mode”.

3. Set Item vale (Programmable value):

Refer to the Table 3. You will hear Beep followed by 3 seconds delay, Beep-Beep
followed by 3 seconds delay and Beep-Beep-Beep. After hearing Beep for 3 times
move throttle position to full. Now special tone like “1515” will be emitted. Now
in the Start Mode, Super Soft Mode is set.

4. Exit Program Mode:

After the special tone “1515” move throttle stick to zero within 2 seconds. Or
follow step 4 as mentioned in the section 4 of the ESC ProgrammingTrouble
Shooting
Sr. Probl Possible Reason Acti
No. em on

1 After power on, The connection Check the power

. motor does not work, between battery and connection, Replace


no sound is emitted ESC is not correct the connector
After power on, motor
2 does not work. Beep- Abnormal input Check the
. Beep alert tone is voltage. It is too voltage of the
emitted with the time high or too low. battery pack.
interval of
1 second

After power on, Check the receiver


3 motor does not work; Throttle signal is and the transmitter
. Beep tone with the abnormal Check the cable to the

interval of 2 second is throttle

emitted. channel

After power on,


4 motor does not work; Throttle stick is not Move the throttle
. fast Beep tones with in the zero position. stick to the bottom
the interval of 0.25 position
seconds are emitted.
Direction of the
After power on, throttle channel is Switch off the ESC.
5 motor does not work; reversed. Hence Set the throttle
. a special tone throttle is in full condition to the
“56712” is emitted position instead of correct direction.
after two Beep-Beep zero position and Restart the ESC
tones. hence ESC has
entered in the
programming mode.

Motor runs in the Connection between Swap any two wires


6 opposite direction ESC and the BLDC between motor and
. motor needs to be the ESC to reverse
changed the direction
Check the receiver
Throttle signal is lost and the transmitter
Check the cable of the
throttle
Motor stops
7 channel
working while
. ESC has entered in Replace the battery
running
the low voltage as soon as possible
protection mode
Check all the
Some connections:
connections are Battery pack
not reliable connection,
Throttle signal
cable, motor
connections etc.
Reset the ESC to
Random stop or There is strong resume normal
8 restart or electromagnetic operation. If issue
. irregular working interference in the is not resolved then
state field. check the radio
link, your system,
shielding etc.
Table 4: Trouble Shooting

Interfacing BLDC ESC with a microcontroller:

Connect signal of the BLDC ESC to the microcontroller. Make sure that you make the
ground common between microcontroller board and the BLDC ESC. You can also set
the throttle range as mentioned in the section Throttle Range Setting. Now you are ready
to drive BLDC motor using this BLDC ESC with microcontroller. This specification
describes the technological parameters and testing standard for the lithium ion
rechargeable cell manufactured and supplied by EEMB Co. Ltd.

1. Products specified

1.1Name Cylindrical Lithium Ion Rechargeable Cell

1.2Type LIR18650-2600mAh

1. References

In this specification reference is made to: GB/T182847-2000, UL1642 and IEC61960-


1:2000.

2. Caution:

4.1. Please read these specifications carefully before testing or using the cell as
improper handling of a Li-ion cell may result in lose of efficiency, heating,
ignition, electrolyte leakage or even explosion.
4.2 While testing the cell by charging and discharging, please use test-equipment
especially designed for Li-ion cell. Do not use ordinary constant current and
constant voltage (CC/CV) power supplies. These do not protect the cell from
being overcharged and over-discharged, resulting in possible loss of
functionality or danger.
4.3 When charging and discharging cells or packing them into equipment,
reversing the positive and negative terminals will result in overcharging and
over-discharging of the cell(s). This could lead to serious loss of efficiency
and even explosions.

4.4 Do not solder directly on the cell. Do not resolve the cell.

4.5 Do not put cell(s) in pockets or bags together with metal products such as
necklaces, hairpins, coins, screws, etc. Neither stores them together without
proper isolation. Do not connect the positive and negative electrode directly
with each other through conductive materials. This can result in a short
circuit of the cell.

4.6 Do not beat, throw or trample the cell, do not put the cell into washing
machines or high-pressure containers.

4.7 Keep the cell away from heat sources such as fires, heaters, etc. Do not use

or store cell(s) at locations where the temperature can exceed 60℃, such
as in direct sunlight. This may

lead to the generation of excessive heat, ignition and lose of efficiency.

4.8 Do not get cells wet or throw them into water. When not in use, place the
cells in a dry environment at low temperatures.

4.9 While during use, testing or storing cells, cells become hot, distribute a
smell, change color, deform or show any other abnormalities, please stop
using or testing immediately. Attempt to isolate the cell and keep it away
from other cells.

4.10Should electrolyte get into the eyes, do not rub the eyes, rinse the eyes with
clean water and seek medical attention if problems remain. If electrolyte gets
onto the skin or clothing, wash with clean water immediately.
CURRENT SENSOR:

The ACS712 Module uses the famous ACS712 IC to measure current using the Hall
Effect principle. The module gets its name from the IC (ACS712) used in the module, so for
you final products use the IC directly instead of the module.

These ACS712 module can measure current AC or DC current ranging from +5A to -5A,
+20A to -20A and +30A to -30A. You have to select the right range for your project since
you have to trade off accuracy for higher range modules. This modules outputs Analog
voltage (0-5V) based on the current flowing through the wire; hence it is very easy to
interface this module with any microcontroller. So if you are looking for a module to
measure current using a microcontroller for you project, then this module might be the right
choice for you.

As told earlier it is very simple to interface the ACS712 Module with Microcontrollers.
The below diagram would be more illustrative
The ACS712 module has two phoenix terminal connectors (green colour ones) with
mounting screws as shown above. These are the terminals through which the wire has to be
passed. In our case I am measuring the current drawn by the motor so the wires that is going
to the load (motor) is passed through the ACS 712 Module. Make sure the module is
connected in series with the load and be extra cautious to avoid shorts.

On the other side we have three pins. The Vcc is connected to +5V to power the module and
the ground is connected to the ground of the MCU (system). Then the analog voltage given
out by the ACS712 module is read using any analog pin on the Microcontroller.

Programming for ACS712 Module

There are few things to know before we could program our Microcontrollers to read current
from ACS712 Module. By default when no current is flowing through the module terminals
the output voltage will be +2.5V (Vcc/2), when the current flows in one direction the value
will increase from 2.5V and when it flows in other direction the values will decrease from
2.5V. This way the module enables us to measure both AC current and DC current.

Let us assume that the microcontroller you are using has a 10-bit ADC and operates at 5V
with a reference voltage of 5V for ADC conversion in that case the microcontroller will read
the values of ADC from 0 to 1024. Then you can use the formulae below to calculate the
Output Voltage from ADC values.

Vout (mV) = (ADC Value/ 1023)*5000

After calculating the output voltage we can, calculate the value of current from the voltage
using the below formulae
Current Through the Wire (A) = (Vout(mv)-2500)/Scale factor

Note that the value of scale factor changes for every module based on its range. The values
of scale factor for all three modules are given in the specifications above.

BLDC MOTOR

One of the ongoing catastrophes, along with global warming brought on by greenhouse gas
emissions from our environment's technologies, is the change in the climate. To lessen its
impact on global warming, several steps are being done, particularly in the area of
transportation technology. A whopping 29% of the world's greenhouse gas emissions come
from transportation alone. In terms of the fight against global warming and the preservation
of fossil fuels, electric and autonomous vehicles are important technologies. The most
common types of motors used in electric cars are brushless DC motors. Usually, there are
more than two motors used to propel electric vehicles. A synchronous motor using direct
current is what a BLDC motor is essentially. With the electronic servo system used in BLDC
motors instead of the mechanical commutator, it is reliable to determine the rotor's angle and
to operate the switches and to switch Direct Current to the motor windings to create
magnetic fields, electronic closed loop controllers are used. The controller alters the DC
pulses' amplitude and phase in order to regulate the motors' torque and speed. Four active
switching components are used in a bridge configuration across a power transformer to
create the basic DC-to-DC converter topology known as a "bridge converter."

In addition to providing isolation and stepping up or down the input voltage, a complete
bridge converter is a common arrangement. Changing the polarity and offering several
Bridge converters also offer simultaneous output voltages as a function. In contemporary
control systems, speed management of BLDC motors is crucial. The two main categories of
control systems are open-loop and closed-loop techniques. A common phrase is "dual
closed-loop control," where the voltage or speed loop functions as the outside control loop
and the torque or current loop as the inner control loop. The motor's input voltage is changed
using the pulse width modulation approach when it runs at less than its rated speed. The flux
is diminished when the motor runs faster than its rated speed because exciting current or
auxiliary flux is advanced. The speed-control control of BLDC motors is proposed using a
variety of approaches.As it has been one of the most widely used techniques for many years
and is still used in many situations, PID control is frequently favoured. PID controllers are
also widely used because of their trustworthy and durable characteristics. The requirements
of speed regulation are typically met using PID controllers. Due to the non-linear nature of
BLDC motors' multivariable system, there are numerous problems that need to be taken into
account. Almost all BLDC motors currently used for speed control are controlled and
analysed using artificial neural networks. Utilize a PID controller while using PWM.

3.2. WORKING OF BLDC MOTOR

The speed, torque, and ability to start, stop, and reverse the motor's spin are all controlled by
a BLDC motor controller. Let's first look at how a brushless motor is built in order to
comprehend the controller's operating principles. One of its principal parts is:

A stator with windings that produce a magnetic field when powered; a rotor made of
permanent magnets, often neodymium; and an armature made of permanent magnets.

The magnets on the rotor and the stator's windings make the motor rotate. By using the same
poles to repel one another and the opposing poles to attract one another. A brushed DC
motor goes through a similar process. The key distinction is in how the current provided to
the wire windings is switched. This happens mechanically in a BDC motor and is started by
a commutator with brushes. It takes place electronically in a BLDC motor with the aid of
transistor switches
The position of the rotor is determined by a BLDC motor controller either sensor less or
utilising sensors (such as a Hall-effect sensor). The sensors send out data after measuring the
rotor's position. The controller receives the data and instructs the transistors to switch the
current and turn on the necessary stator winding at the appropriate moment.

3.3 BLDC MOTOR CONTROLLER CIRCUIT DESIGN

The circuit of a typical BLDC motor controller is a half-bridge or half-H bridge. One high-
side transistor and one low-side transistor make up the only switches in this circuit, unlike H
Bridge. Two- or three-phase power systems are used by the majority of brushless motors.
This will appear as two or three half-bridges with a pair of switches each in a BLDC motor
controller circuit diagram, depending on the number of phases. Let's examine a three-phase
brushless DC motor controller with Hall-effect sensors in more detail to see how its circuit is
designed.

Three-phase windings on the stator are positioned 120 degrees apart from one another. The
voltage and current that are applied to the stator are represented as vectors on each winding.
The location of the rotor is determined by the Hall sensors in the BLDC motor controller.
The power MOSFETs switch the current and inject it into the right winding in response to
sensor data. IGBTs and GaN switches can take the role of MOSFETs in high power
brushless DC motor controllers. The transistors can be managed by integrated or discrete
gate drivers. The drivers of a brushless motor controller schematic serve as a bridge between
the switches and a microcontroller (MCU). Six steps are required to complete a full
switching cycle in the three-phase BLDC motor controller circuit (that is to energise all the
three windings of the stator). The current passes sequentially through the stator windings by
turning both the high-side and low-side transistors on and off. You can take into account
several current switching strategies while designing a BLDC motor controller, such as
sinusoidal and trapezoidal commutation. These techniques have names that refer to the
signal waveforms. Two out of three windings can remain electrified at once using the
trapezoidal commutation. The phase shift adheres to the law of sines in the sinusoidal
control approach. It allows for more seamless switching of current between phases.
Although simpler, the motor may vibrate at low speeds due to the trapezoidal commutation.
The use of sinusoidal current waveforms helps guarantee the smooth operation of your
motor. High speeds, however, make this kind of commuting difficult. A sinusoidal brushless
motor controller circuit often employs pulse-width modulation (PWM). It makes the
commutation process run more quickly and smoothly by regulating the current supplied into
the rotor's windings. This is particularly true for closed-loop controllers that modify the
input power by adjusting the duty cycle after receiving feedback on the output signal. For
various applications, PWM switching frequency can vary. Nevertheless, it must be high
enough to prevent power outages. The maximum frequency level is determined by the
physical restrictions of the stator. There are also the control unit's individual specifications,
though. Due to the DC brushless motor controller's limited capabilities, even if the stator
permits it, you will not be able to increase the PWM frequency.

Hysteresis can be used as an alternative to manage the performance of a BLDC motor. This
approach also has something to do with sinusoidal commutation. You can use it to set the
upper and lower bounds of the current that is provided to the motor.
The transistor switches turn off or on, respectively, as soon as the current reaches its
maximum or minimum value, and they adjust the average current according to the sine
wave.

A BLDC motor controller half-bridge can be implemented as either an integrated circuit (IC)
or as discrete parts. When attempting to develop a BLDC motor controller, this is one of the
most frequent problems you might run across. Given that the parts must be put together and
soldered onto the board separately, discrete circuits can be less dependable. Smaller in size,
with lower production costs, and making design easier is a brushless DC motor controller
IC. Nevertheless, power restrictions apply to integrated circuits.

3.4 CONTRL PARAMETERS

3.4.1 HALL EFFECT

In contrast to brushed motors, a BLDC motor's commutation is electronically controlled.


The stator windings must be activated sequentially in order to turn the motor. The situation
knowing which winding has to be activated also requires knowledge of position 3 of the
rotor. The location of the rotor is determined using Hall Effect sensors that are placed within
the stator. When the magnetic poles of the rotor move closer to the sensors, the sensors
respond with a high or low signal, indicating whether the North or South pole is crossing
them. As a result, the Hall sensor combination is used to calculate the commutation
sequence. The Hall Effect Theory states that when a current-carrying conductor is exposed
to a magnetic field, a transverse force is created on the charge carriers that pushes them to
one side of the conductor. In thin, flat conductors, this is easier to see. When the magnetic
influence is balanced by the build-up of charge at the conductor's sides, a voltage is created
between the two sides of the conductor. The Hall Effect is the name given to this occurrence.

3.4.2 TORQUE SPEED CHARACTERISTICS


When specifying a BLDC motor, two torque parameters are used: Rated Torque (TR) and
Peak Torque (TP). The motor can be loaded all the way up to its rated torque during
continuous use. And as was already said, the torque doesn't change until the speed hits the
Rated speed. The motor can be run at a maximum torque of 150% of its rated torque, but the
torque drops off after that. When there are many rotational reversals and frequent starts and
stops with a load on the motor, certain applications require more torque than the rated
torque. Such a scenario typically occurs at the motor's initial start-up and can also occur
during acceleration. As a result, additional torque is required to manage the effect of the
rotor's and load's inertia. Up until it conforms to the speed-torque curve, the motor's torque.

3.5 ARTIFICIAL NEURON NETWORK

Deep learning is powered by an artificial neural network, which was inspired by biological
neural networks. A neuron is a connected group of points that makes up an ANN. The way
that data is processed and transformed is remarkably similar to how information is
transferred and processed in the human brain, which uses synapses and neurons,
respectively. A group of hidden layers, which are more significant than the input and output
layers, make up the majority of the ANN structure. The input neuron accepts input (data)
and multiplies it with weights. By using an activation function, they are then added and
transferred to the following neuron. An endless cycle characterises this procedure. Through
this iterative process, the model is able to learn from the data and carry out challenging
tasks. As previously mentioned, the process begins by giving weights to data that is
transferred between neurons. The precise weight adjustments determine the neural network's
primary capacity to complete a task. The weights are modified during the neural network
training using training data. Each time the model is trained, the weights are adjusted to help
the model comprehend the data and find patterns more accurately. With training, the neural
network can forecast newly injected data. Various parameters affect the accuracy. The size
of the dataset, the size of the neural network, the activation function, and the kind of dataset
are the main determinants.
CHAPTER 5

SOFTWARE DESCRIPTION

Arduino Development Environment

The Arduino development environment contains a text editor for writing code, a
message area, a text console, a toolbar with buttons for common functions, and
a series of menus. It connects to the Arduino hardware to upload programs and
communicate with them.

Writing Sketches

Software written using Arduino are called sketches. These sketches are written
in the text editor. Sketches are saved with the file extension .ino. It has features
for cutting/pasting and for searching/replacing text. The message area gives
feedback while saving and exporting and also displays errors. The console
displays text output by the Arduino environment including complete error
messages and other information. The bottom righthand corner of the window
displays the current board and serial port. The toolbar buttons allow you to
verify and upload programs, create, open, and save sketches, and open the serial
monitor.

NB: Versions of the IDE prior to 1.0 saved sketches with the extension pde It is
possible to open these files with version 1.0, you will be prompted to save the
sketch with the .ino extension on save.

The Arduino environment uses the concept of a sketchbook: a standard place to


store your programs (or sketches). The sketches in your sketchbook can be
opened from the File Sketchbook menu or from the Open button on the toolbar.
The first time you run the Arduino software, it will automatically create a
directory for your sketchbook. You can view or change the location of the
sketchbook location from with the Preferences dialog.

'''Beginning with version 1.0, files are saved with a .ino file extension. Previous
versions use the .pde extension. You may still open .pde named files in version
1.0 and later, the software will automatically rename the extension to .ino.

Tabs, Multiple Files, and Compilation

Allows you to manage sketches with more than one file (each of which appears
in its own tab). These can be normal Arduino code files (no extension), C files
(.c extension), C++ files (.cpp), or header files (.h).

Uploading

Before uploading your sketch, you need to select the correct items from
the Tools Board and Tools Serial Portmenus. The boards are described below.
On the Mac, the serial port is probably something
like /dev/tty.usbmodem241(for an Uno or Mega2560 or Leonardo)
or /dev/tty.usbserial-1B1 (for a Duemilanove or earlier USB board),
or/dev/tty.USA19QW1b1P1.1 (for a serial board connected with a Keyspan
USB-to-Serial adapter). On Windows, it's probably COM1 or COM2 (for a
serial board) or COM4, COM5, COM7, or higher (for a USB board) - to find
out, you look for USB serial device in the ports section of the Windows Device
Manager. On Linux, it should be /dev/ttyUSB0,/dev/ttyUSB1 or similar.

Once you've selected the correct serial port and board, press the upload button
in the toolbar or select the Upload item from the File menu. Current Arduino
boards will reset automatically and begin the upload. With older boards (pre-
Diecimila) that lack auto-reset, you'll need to press the reset button on the board
just before starting the upload. On most boards, you'll see the RX and
TX LEDs blink as the sketch is uploaded. The Arduino environment will
display a message when the upload is complete, or show an error.
When you upload a sketch, you're using the Arduino bootloader, a small
program that has been loaded on to the microcontroller on your board. It allows
you to upload code without using any additional hardware. The bootloader is
active for a few seconds when the board resets; then it starts whichever sketch
was most recently uploaded to the microcontroller. The bootloader will blink
the on-board (pin 13) LED when it starts (i.e. when the board resets).

Libraries

Libraries provide extra functionality for use in sketches, e.g. working with
hardware or manipulating data. To use a library in a sketch, select it from
the Sketch Import Library menu. This will insert one or more statements at the
top of the sketch and compile the library with your sketch. Because libraries are
uploaded to the board with your sketch, they increase the amount of space it
takes up. If a sketch no longer needs a library, simply delete it from the top of
your code.

There is a list of libraries in the reference. Some libraries are included with the
Arduino software. Others can be downloaded from a variety of sources. Starting
with version 1.0.5 of the IDE, you do can import a library from a zip file and
use it in an open sketch. See these instructions for installing a third-party
library.
PROGRAMMING

The Arduino Uno can be programmed with the Arduino software (download).
Select "Arduino Uno from the Tools Board menu (according to the
microcontroller on your board). For details, see the reference and tutorials.

The ATmega328 on the Arduino Uno comes preburned with a bootloader that
allows you to upload new code to it without the use of an external hardware
programmer. It communicates using the original STK500 protocol (reference, C
header files).

You can also bypass the bootloader and program the microcontroller through
the ICSP (In-Circuit Serial Programming) header; see these instructions for
details.

The ATmega16U2 (or 8U2 in the rev1 and rev2 boards) firmware source code
is available . The ATmega16U2/8U2 is loaded with a DFU bootloader, which
can be activated by:

• On Rev1 boards: connecting the solder jumper on the back of the board
(near the map of Italy) and then resetting the 8U2.

• On Rev2 or later boards: there is a resistor that pulling the 8U2/16U2 HWB
line to ground, making it easier to put into DFU mode.

You can then use Atmel's FLIP software (Windows) or the DFU
programmer (Mac OS X and Linux) to load a new firmware. Or you can use the
ISP header with an external programmer (overwriting the DFU bootloader).
See this user-contributed tutorial for more information.

Automatic (Software) Reset


Rather than requiring a physical press of the reset button before an upload, the
Arduino Uno is designed in a way that allows it to be reset by software running
on a connected computer. One of the hardware flow control lines (DTR) of
theATmega8U2/16U2 is connected to the reset line of the ATmega328 via a
100 nanofarad capacitor. When this line is asserted (taken low), the reset line
drops long enough to reset the chip. The Arduino software uses this capability
to allow you to upload code by simply pressing the upload button in the
Arduino environment. This means that the bootloader can have a shorter
timeout, as the lowering of DTR can be well-coordinated with the start of the
upload.

This setup has other implications. When the Uno is connected to either a
computer running Mac OS X or Linux, it resets each time a connection is made
to it from software (via USB). For the following half-second or so, the
bootloader is running on the Uno. While it is programmed to ignore malformed
data (i.e. anything besides an upload of new code), it will intercept the first few
bytes of data sent to the board after a connection is opened. If a sketch running
on the board receives one-time configuration or other data when it first starts,
make sure that the software with which it communicates waits a second after
opening the connection and before sending this data.

The Uno contains a trace that can be cut to disable the auto-reset. The pads on
either side of the trace can be soldered together to re-enable it. It's labeled
"RESET-EN". You may also be able to disable the auto-reset by connecting a
110 ohm resistor from 5V to the reset line; see this forum thread for details.
PYTHON:

PYTHON 3.7:

Python is an interpreter, high-level, general-


purpose programming language. Created by Guido van Rossum
and first released in 1991, Python's design philosophy emphasizes
code readability with its notable use of significant whitespace.

Python is an easy to learn, powerful programming language.


It has efficient high-level data structures and a simple but
effective approach to object- oriented programming. Python’s
elegant syntax and dynamic typing, together with its interpreted
nature, make it an ideal language for scripting and rapid
application development in manya reason most platforms and
may be freely distributed. The same site also contains
distributions of and pointers to many free third party Python
modules, programs and tools, and additional documentation. The
Python interpreter is easily extended with new functions and data
types implemented in C or C++ (or other languages callable from
C). Python is also suitable as an extension language for
customizable applications. This tutorial introduces the reader
informally to the basic concepts and features of the Python
language and system. It helps to have a Python interpreter handy
for hands-on experience, but all examples are self-contained, so
the tutorial can be read off- line as well. For a description of
standard objects and modules, see library-index. Reference-index
gives a more formal definition of the language. To write
extensions in C or C++, read extending-index and c-api-index.
There are also several books covering Python in depth. This
tutorial does not attempt to be comprehensive and cover every
single feature, or even every commonly used feature. Instead, it
introduces many of Python’s most notes worthy features, and will
give you a good idea of the language’s flavor and style. After
reading it, you will be able to read and write Python modules and
programs, and you will be ready to learn more about the various
Python library modules described in library-index. If you do
much work on computers, eventually you find that there’s some
task you’d like
to automate. For example, you may wish to perform a search-and-
replace over a large number of text files, or rename and rearrange a
bunch of photo files in a complicated way. Perhaps you’d like to write a
small custom database, or a specialized
GUI application or a simple game. If you’re a professional
software developer, you may have to work with several
C/C++/Java libraries but find the usual write/compile/test/re-
compile cycle is too slow. Perhaps you’re writing a test suite for
such a library and find writing the testing code a tedious task. Or
maybe you’ve written a program that could use an extension
language, and you don’t want to design and implement a whole
new language for your application.

Typing an end-of-file character (Control-D on Unix,


Control-Z on Windows) at the primary prompt causes the
interpreter to exit with a zero exit status. If that doesn’t work, you
can exit the interpreter by typing the following command: quit().
The interpreter’s line-editing features include interactive editing,
history substitution and code completion on systems that support
read line. Perhaps the quickest check to see whether command
line editing is supported is typing Control-P to the first Python
prompt you get. If it beeps, you have command line editing; see
Appendix Interactive Input Editing and History Substitution for
an introduction to the keys. Ifnothing appears to happen, or if ^P
is echoed, command line editing isn’t available; you’ll only be
able to use backspace to remove characters from the current line.
The interpreter operates somewhat like the Unix shell: when
called with standard input connected to a tty device, it reads and
executes commands interactively; when called with a file name
argument or with a file as standard input, it reads and executes a
script from that file. A second way of starting the interpreter is
python -c command [arg] ..., which executes the statement(s) in
command, analogous to the shell’s -c option. Since Python
statements often contain spaces or other characters that are
special to the shell, it is usually advised to quote commands in its
entirety with single quotes.Some Python modules are also useful
as scripts. These can be invoked using python-m module
[arg]...,which executes the source file for the module as if you
had spelled out its full name on the command line. When a script
file is used, it is sometimes useful to be able to run the script and
enter interactive mode afterwards. This can be done by passing -i
before the script.

There are tools which use doc strings to automatically produce


online or printed documentation or to let the user interactively
browse through code; it’s good practice to include doc strings in
code that you write, so make a habit of it. The execution of a
function introduces a new symbol table used for the local
variables of the function. More precisely, all variable assignments
in a functions to read the value in the local symbol table; whereas
variable references first look in the local symbol table, then in the
local symbol tables of enclosing functions, then in the global
symbol table, and finally in the table of built-in names. Thus,
global variables cannot be directly assigned a value within a
function (unless named in a global statement), although they may
be referenced. The actual parameters (arguments) to a function
call are introduced in the local symbol table of the called function
when it is called; thus, arguments are passed using call by value
(where the value is always an object reference, not the value of
the object).1 When a function calls another function, a new local
symbol table is created for that call. A function definition
introduces the function name in the current symbol table. The
value of the function name has a type that is recognized by the
interpreter as a user-defined function. This value can be assigned
to another name which can then also be used as a function.

Annotations are stored in the annotations attribute of the function


as a dictionary and haven o effect on any other part of the
function. Parameter annotations are defined by a colon after the
parameter name, followed by an expression evaluating to the
value of the annotation. Return annotationsare defined by a literal
->, followed by an expression, between the parameter list and the
colon denoting the end of the def statement.

The comparison operators in and not in check whether a value


occurs (does not occur) in a sequence. The operator is and does
not compare whether two objects are really the same object; this
only matters for mutable objects like lists. All comparison
operators have the same priority, which is lower than that of all
numerical operators. Comparisons can be chained. For
example,a<b==ctestswhetheraislessthanbandmoreoverbequalsc.
Comparisons may be combined using the Boolean operators and
the outcome of a comparison (or of any other Boolean
expression) may be negated with not. These have lower priorities
than comparison operators; between them, not has the highest
priority and or the lowest, so that A and not B or C is equivalent
to (A and (not B)) or C. As always, parentheses can be used to
express the desired composition. The Boolean operators and are
so-called short-circuit operators: their arguments are evaluated
from left to right, and evaluation stops as soon as the outcome is
determined. For example, if A and C are true but Bis false, A and
B and C does not evaluate the expression C. When used as a
general value and not as a Boolean, the return value of a short-
circuit operator is the last evaluated argument.
Classes provide a means of bundling data and functionality
together. Creating a new class creates a new type of object,
allowing new instances of that type to be made. Each class
instance can have attributes attached to it for maintaining its state.
Class instances can also have methods (defined by its class) for
modifying its state. Compared with other programming
languages, Python’s class mechanism adds classes with a
minimum of new syntax and semantics. It is a mixture of the
class mechanisms found in C++ and Modula-3. Python classes
provide all the standard features of Object Oriented
Programming: the class inheritance mechanism allows multiple
base classes, a derived class can override any methods of its base
class or classes, and a method can call the method of a base class
with the same name. Objects can contain arbitrary amounts and
kinds of data. As is true for modules, classes partake of the
dynamic nature of Python: they are created at runtime, and can be
modified further after creation. In C++ terminology, normally
class members (including the data members) are public (except
see below Private Variables), and all member functions are
virtual. A sin Modula-3, there are no short hands for referencing
the object’s members from its methods: the method function is
declared with an explicit first argument representing the object,
which is provided implicitly by the call. A sin Small talk, classes
themselves are objects. This providesSemantics for importing and
renaming. Unlike C++ and Modula-3, built-in types can be used
as base classes for extension by the user. Also, like in C++, most
built-in operators with special syntax (arithmetic operators, sub
scripting etc.) can be redefined for class instances.(Lacking
universally accepted terminology to talk about classes, I will
make occasional use of Smalltalk and C++ terms. I would use
Modula-3 terms, since its object- oriented semantics are closer to
those of Python than C++, but I expect that few readers have
heard of it.)

Objects have individuality, and multiple names (in multiple


scopes) can be bound to the same object. This is known as
aliasing in other languages. This is usually not appreciated on a
first glance at Python, and can be safely ignored when dealing
with immutable basic types (numbers, strings, tuples).However,
aliasing has a possibly surprising effect on these mantic of
Python code involving mutable objects such as lists, dictionaries,
and most other types. This is usually used to the benefit of the
program, since aliases behave like pointers in some respects. For
example, passing an object is cheap since only a pointer is passed
by the implementation; and if a function modifies an object
passed as an argument, the caller will see the change — this
eliminates the need for two different argument passing
mechanisms as in Pascal.
A namespace is a mapping from names to objects.
Most name spaces are currently implemented as Python
dictionaries, but that’s normally not noticeable in any way
(except for performance), and it may change in the future.
Examples of name spaces are: these to f built-in names
(containing functions such as abs(), and built-in exception
names); the global names in a module; and the local names in a
function invocation. In a sense the set of attributes of an object
also form a namespace. The important thing to know about
namespaces is that there is absolutely no relation between names
in different namespaces; for instance, two different modules may
both define a function maximize without confusion — users of
the modules must prefix it with the module name. By the way, I
use the word attribute for any name following a dot — for
example, in the expression z. real, real is an attribute of the object
z. Strictly speaking, references to names in modules are attribute
references: in the expression modname.funcname, modname is a
module object and funcname is an attribute of it. In this case there
happens to be a straight forward mapping between the module’s
attributes and the global names defined in the module: they share
the same namespace!1 Attributes may be read-only or writable. In
the latter case, assignment to attributes is
possible. Module attributes are writable: you can
write modname.the_answer = 42. Writable attributes may also be
deleted with the del statement. For example, del mod name .the_
answer will remove the attribute the_answer from the object
named by mod name. Namespaces are created at different
moments and have different lifetimes. The namespace containing
the built-in names is created when the Python interpreter starts
up, and is never deleted. The global namespace for a module is
created when the module definition is read in; normally, module
namespaces also last until the interpreter quits.The statements
executed by the top-level invocation of the interpreter, either read
from a script file or interactively, are considered part of a module
called main, so they have their own global namespace.(The
built-in names actually also live in a module; this is called built
ins.) The local namespace for a function is created when the
function is called, and deleted when the function returns or raises
an exception that is not handled within the function. (Actually,
forgetting would be a better way to describe what actually
happens.) Of course, recursive invocations each have their own
local namespace.

To speed uploading modules, Python caches the compiled version

of each module in the pycache directory under the


name

module.version.pyc, where the version encodes the format of the


compiled
file; it generally contains the Python version number. For
example, in CPython release 3.3 the compiled version of spam.py
would be cached as
pycache/spam.cpython-33.pyc. This naming

convention allows compiled modules from different releases and


different versions of Python to coexist. Python checks the
modification date of the source against the compiled version to
see if it’s out of date and needs to be recompiled. This is a
completely automatic process. Also, the compiled modules are
platform-independent, so the same library can be shared among
systems with different architectures. Python does not check the
cache in two circumstances. First, it always recompiles and does
not store the result for the module that’s loaded directly from the
command line. Second, it does not check the cache if there is no
source module. To support anon-source (compiled only)
distribution, the compiled module must be in the source
directory, and there must not be a source module. Some tips for
experts:

• You can use the -O or -OO switches on the Python


command to reduce the size of a compiled module. The -O switch
removes assert statements, the -OO switch removes both assert
statements and doc
strings. Since some programs may rely on having these available,
you should only use this option if you know what you’re doing.
“Optimized”
modules have an opt- tag and are usually smaller. Future releases
may change the effects of optimization.

• A program doesn’t run any faster when it is read from


a .pyc file than when it is read from a .py file; the only thing
that’s faster about .pyc files is the speed with which they are
loaded.
• The module compile all can create .pyc files for all
modules in a directory.
• There is more detail on this process, including a flow chart
of the decisions

THONNY IDE:

Thonny is as mall and light weight Integrated Development


Environment. It was developed to provide a small and fast IDE,
which has only a few dependencies from other packages. Another
goal was to be as independent as possible from a special Desktop
Environment like KDE or GNOME, so Thonny only requires
the GTK2 toolkit and therefore you only need the GTK2 runtime
libraries installd to run it.
For compiling Thonny yourself, you will need the GTK (>=
2.6.0) libraries and header files. You will also need the Pango,
Gliband ATK libraries and header files. All these files are
available at http://www.gtk.org. Furthermore you need, of course,
a C compiler and the Make tool; a C++ compiler is also required
for the included Scintilla library. The GNU versions of these
tools are recommended.
Compiling Thonny is quite easy. The following should do it:

% ./configure

% make

% make install

The configure script supports several common options, for a


detailed list, type

% ./configure --help

There are also some compile time options which can be found in
src/Thonny .h. Please see Appendix C for more information. In
the case that your system lacks dynamic linking loader support,
you probably want to pass the option --disable-vte to the
configure script. This prevents
compiling Thonny with dynamic linking loader support to
automatically load libvte.so.4 if available. Thonny has been
successfully compiled and tested under Debian 3.1 Sarge, Debian
4.0 Etch, Fedora Core 3/4/5, Linux From Scratch and FreeBSD
6.0. It also compiles under Microsoft Windows
At startup, Thonny loads all files from the last time Thonny
was launched. You can disable this feature in the preferences
dialog (see Figure 3-4). If you specify some files on the
command line, only these files will be opened, but you can find
the files from the last session in the file menu under the "Recent
files" item. By default this contains the last 10 recently opened
files. You can change the amount of recently opened files in the
preferences dialog. You can start several instances of Thonny ,
but only the first will load files from the last session. To run a
second instance of Thonny , do not specify any file names on the
command-line, or disable opening files in a running instance
using the appropriate command line option.

Thonny detects an already running instance of itself and opens


files from the command-line in the already running instance. So,
Thonny can be used to view and edit files by opening them from
other programs such as a file
manager. If you do not like this for some reason, you can disable
using the first instance by using the appropriate command line
option

If you have installed libvte.so in your system, it is loaded


automatically by Thonny , and you will have a terminal widget
in the notebook at the bottom. If Thonny cannot find libvte.so at
startup, the terminal widget will not be loaded. So there is no
need to install the package containing this file in order to run
Thonny . Additionally, you can disable the use of the terminal
widget by command line option, for more information see
Section3.2.You can use this terminal (from now on called VTE)
nearly as an usual terminal program like xterm. There is basic
clipboard support. You can paste the contents of the clipboard by
pressing the right mouse button to open the popup menu and
choosing Paste. To copy text from the VTE, just select the
desired text and then press the right mouse button and choose
Copy from the pop up menu. On systems running the X Window
System you can paste the last selected text by pressing the middle
mouse button in the VTE (on 2-button mice, the middle button
can often be simulated by pressing both mouse buttons together).

As long as a project is open, the Make and Run


commands will use the project’s settings, instead of the defaults.
These will be used whichever document is currently displayed.
The current project’s settings
are saved when it is closed, or when Thonny is shut down.
When restarting Thonny , the previously opened project file that
was in use at the end of the last session will be reopened.

Execute will run the corresponding executable file, shell script or


interpreted script in a terminal window. Note that the Terminal
tool path must be correctly set in the Tools tab of the Preferences
dialog - you can use any terminal program that runs a Bourne
compatible shell and accept the "-e" command line argument to
start a command. After your program or script has finished
executing, you will be prompted to press the return key. This
allows you to review any text output from the program before the
terminal window is closed.

By default the Compile and Build commands invoke the compiler


and linker with only the basic arguments needed by all programs.
Using Set Includes and Arguments you can add any include paths
and compile flags for the compiler, any library names and paths
for the linker, and any arguments you want to use when running
Execute.

Thonny has basic printing support. This means you can print a file by
passing the filename of the current file to a command which actually
prints the file.
However, the printed document contains no syntax highlighting.

CHAPTER 7

RESULTS
CHAPTER 8

CONCLUSION

In this project the practical technique for BLDC motor speed control is
suggested. The suggested approach is based on managing the bridge converter's
input DC voltage, which feeds the motor windings. An ANN network controller
is used to control the input. Data is fed into a binary artificial neural network for
the proposed system in order to get various simulation-derived parameters. The
outcomes of the simulation and the resulting predictions are identical. With
regard to the input data, the activation function and neuron for each layer are
modified and examined.
REFERENCES

[1] D. Maksimovic and S. Cuk, “Switching converter with wide de conversion

range”. IEEE Trans. Power Electron, Vol. 6, No.1, pp. 151-157, Jan. 1991.

[2] Q. Zhao and F. C. Lee, “High efficiency, high step-up dc–dc converters,”
IEEE Trans. Power Electronics., vol. 18, no. 1, pp. 65–73, Jan. 2003.
[3] H. Cheng and K. Smedley, “Wide input wide output (WIWO) dc-dc

converter,” in Proc. IEEE Appl. Power Electron. Conf. Expo., 2008, pp. 156-

1568.

[4] K. Yao, Y. Ren, J. Wei, M. Xu, and F. Lee, “A family of buck type dc–dc
converters with autotransformers,” in Proc. Appl. Power Electron. Conf. Expo.
(APEC 2003), pp. 114–120.
[5] K. Nishijima, K. Abe, D.Ishida, T. Nakano, T. Nabeshima, T. Sato and K.

Harada, “A novel tapped-inductor buck converter for divided power distribution

system”, in Proc. IEEE PESC Conf. (PESC 2006), Jun. 18—22, pp. 1-6.
[6] K.C. Tseng and T.J.Liang, “Novel high efficiency step-up converter”, Proc.

Inst. Electr. Eng. Electr. Power Appli., vol.151, No.2, pp. 180-190, Mar. 2004.

[7] K. Yao, M. Ye, M. Xu, and F.C. Lee, “Tapped-inductor buck converter for

high-step-down dc-dc conversion,” IEEE Trans. Power Electron., Vol.20, No.4,

pp.775-780, July.2005.

[8] Muhammad H. Rashid, “Power Electronics: Circuits, Devices and

Applications, 3rd ed.

[9] N. Mohan, T.M. Undeland, and W.P. Robbins, “Power Electronics:

Converters, Applications, and Design, 3rd ed. New York: Wiley 2002.

[10] N. Vazquez, L. Estrada, C. Hernandez, and E. Rodriquez, “The tapped

inductor boost converter” in Proc. IEEE Int. Symp. Ind. Electron, Jun, 4-7,

2007, pp. 538-543.

[11] Q. Zhao and F.C. Lee, “High efficiency, high step-up dc-dc converters,”

IEEE Trans. Power Electron, Vol.18, No.1, pp. 65-73, Jan. 2003.

[12] www.mathswork.com

[13] www.google.com

[14] www.powerelectronics.com

[15] www.educypedia.com

You might also like