CH3

advertisement
3
ARDUINO BOARD
3.1 Specs and interface
The Arduino Uno is a microcontroller board based on the ATmega328 .It
has 14 digital input/output pins (of which 6 can be used as PWM
outputs), 6 analog inputs, a 16 MHz ceramic resonator, a USB
connection, a power jack, an ICSP header, and a reset button. It contains
everything needed to support the microcontroller; simply connect it to a
computer with a USB cable or power it with an AC-to-DC adapter or
battery to get started.
The Uno differs from all preceding boards in that it does not use the FTDI
USB-to-serial
driver
chip.
Instead,
it
features
the Atmega16U2 programmed as a USB-to-serial converter.
Specs:
- Microcontroller
ATmega328
- Operating Voltage
5V
- Input
Voltage
(recommended)
7-12V
- Input Voltage (limits)
6-20V
- Digital I/O Pins
14 (of which 6 provide PWM output)
Internet based smart home robot
Page 16
ch3 ARDUINO BOARD
- Analog Input Pins
6
- DC Current per I/O Pin
40 mA
- DC Current for 3.3V Pin
50 mA
- Flash Memory
32 KB (ATmega328) of which 0.5 KB used
by boot loader
- SRAM
2 KB (ATmega328)
- EEPROM
1 KB (ATmega328)
- Clock Speed
16 MHz
Power
The Arduino Uno can be powered via the USB connection or with an
external power supply. The power source is selected automatically.
External (non-USB) power can come either from an AC-to-DC adapter
(wall-wart) or battery. The adapter can be connected by plugging a
2.1mm center-positive plug into the board's power jack. Leads from a
battery can be inserted in the Gnd and Vin pin headers of the POWER
connector.
The board can operate on an external supply of 6 to 20 volts. If supplied
with less than 7V, however, the 5V pin may supply less than five volts
and the board may be unstable. If using more than 12V, the voltage
regulator may overheat and damage the board. The recommended range
is 7 to 12 volts.
The power pins are as follows:

VIN. The input voltage to the Arduino board when it's using an external
power source (as opposed to 5 volts from the USB connection or other
regulated power source). You can supply voltage through this pin, or, if
supplying voltage via the power jack, access it through this pin.

5V.This pin outputs a regulated 5V from the regulator on the board. The
board can be supplied with power either from the DC power jack (7 12V), the USB connector (5V), or the VIN pin of the board (7-12V).
Internet based smart home robot
Page 17
ch3 ARDUINO BOARD
Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and
can damage your board. We don't advise it.

3V3. A 3.3 volt supply generated by the on-board regulator. Maximum
current draw is 50 mA.

GND. Ground pins.

IOREF. This pin on the Arduino board provides the voltage reference
with which the microcontroller operates. A properly configured shield can
read the IOREF pin voltage and select the appropriate power source or
enable voltage translators on the outputs for working with the 5V or 3.3V.
Input and Output
Each of the 14 digital pins on the Uno can be used as an input or output,
using pin Mode (), digital Write (), and digital Read () functions. They
operate at 5 volts. Each pin can provide or receive a maximum of 40 mA
and has an internal pull-up resistor (disconnected by default) of 20-50
ohms. In addition, some pins have specialized functions:
Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL
serial data. These pins are connected to the corresponding pins of the
ATmega8U2 USB-to-TTL Serial chip.
External Interrupts: 2 and 3. These pins can be configured to trigger an
interrupt on a low value, a rising or falling edge, or a change in value.
See the attach Interrupt () function for details.
PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analog
Write () function.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI
communication using the SPI library.
LED: 13. There is a built-in LED connected to digital pin 13. When the
pin is HIGH value, the LED is on, when the pin is LOW, it's off.
The Uno has 6 analog inputs, labeled A0 through A5, each of which
provide 10 bits of resolution (i.e. 1024 different values). By default they
measure from ground to 5 volts, though is it possible to change the upper
end of their range using the AREF pin and the analog Reference ()
function. Additionally, some pins have specialized functionality:

TWI: A4 or SDA pin and A5 or SCL pin. Support TWI communication
using the Wire library.
There are a couple of other pins on the board:
Internet based smart home robot
Page 18
ch3 ARDUINO BOARD

AREF. Reference voltage for the analog inputs. Used with analog
Reference ().

Reset. Bring this line LOW to reset the microcontroller. Typically used to
add a reset button to shields which block the one on the board.
The Arduino Uno has a number of facilities for communicating with a
computer, another Arduino, or other microcontrollers. The ATmega328
provides UART TTL (5V) serial communication, which is available on
digital pins 0 (RX) and 1 (TX). An ATmega16U2 on the board channels
this serial communication over USB and appears as a virtual com port to
software on the computer. The '16U2 firmware uses the standard USB
COM drivers, and no external driver is needed. However, on Windows,
an .inf file is required. The Arduino software includes a serial monitor
which allows simple textual data to be sent to and from the Arduino
board. The RX and TX LEDs on the board will flash when data is being
transmitted via the USB-to-serial chip and USB connection to the
computer (but not for serial communication on pins 0 and 1).
A Software Serial library allows for serial communication on any of the
Uno's digital pins.
The ATmega328 also supports I2C (TWI) and SPI communication. The
Arduino software includes a Wire library to simplify use of the I2C bus;
see the documentation for details. For SPI communication, use the SPI
library.
FIGURE 3.1 SHOWS THE ARDUINO UNO BOARD
Internet based smart home robot
Page 19
ch3 ARDUINO BOARD
FIGURE 3.1 THE ARDUINO UNO BOARD
Figure 3.2 shows the arduino interface on a PC
FIGURE 3.2 ARDUINO INTERFACE
Internet based smart home robot
Page 20
ch3 ARDUINO BOARD
3.2 At mega 328P
3.2.1 Overview
High Performance, Low Power Atmel®AVR® 8-Bit Microcontroller
-
Advanced RISC Architecture
131 Powerful Instructions – Most Single Clock Cycle Execution
32 x 8 General Purpose Working Registers
Fully Static Operation
Up to 20 MIPS Throughput at 20MHz
On-chip 2-cycle Multiplier
Peripheral Features
- Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
- One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and
Capture Mode
- Real Time Counter with Separate Oscillator
- Six PWM Channels
- 8-channel 10-bit ADC in TQFP and QFN/MLF package Temperature
Measurement
- 6-channel 10-bit ADC in PDIP Package Temperature Measurement
- Programmable Serial USART
- Master/Slave SPI Serial Interface
- Byte-oriented 2-wire Serial Interface (Philips I2C compatible)
- Programmable Watchdog Timer with Separate On-chip Oscillator
- On-chip Analog Comparator
- Interrupt and Wake-up on Pin Change
Internet based smart home robot
Page 21
ch3 ARDUINO BOARD
3.2.3 Block diagram:
FIGURE 3.3 ATMEGA 328P BLOCK DIAGRAM
3.2.4 External interrupt
The External Interrupts are triggered by the INT0 and INT1 pins or any of
the PCINT23...0 pins. Observe that, if enabled, the interrupts will trigger
even if the INT0 and INT1 or PCINT23...0 pins are configured as outputs.
This feature provides a way of generating a software interrupt. The pin
Internet based smart home robot
Page 22
ch3 ARDUINO BOARD
change interrupt PCI2 will trigger if any enabled PCINT[23:16] pin
toggles. The pin change interrupt PCI1 will trigger if any enabled
PCINT[14:8] pin toggles. The pin change interrupt PCI0 will trigger if any
enabled PCINT[7:0] pin toggles. The PCMSK2, PCMSK1 and PCMSK0
Registers control which pins contribute to the pin change interrupts. Pin
change interrupts on PCINT23...0 are detected asynchronously. This
implies that these interrupts can be used for waking the part also from
sleep modes other than Idle mode. The INT0 and INT1 interrupts can be
triggered by a falling or rising edge or a low level. This is set up as
indicated in the specification for the External Interrupt Control Register A
– EICRA. When the INT0 or INT1 interrupts are enabled and are
configured as level triggered, the interrupts will trigger as long as the pin
is held low.
The external interrupt was used here on pin2 to monitor the change of
the square pulse coming from the wheel encoder, so whenever a change
in the pulse occurs, an interrupt occurs on pin2 and an ISR(interrupt
service routine is called and executed) which will be discussed later on in
the encoders operation section.
3.3 Analog feedback and encoders operation
A rotary encoder , figure 3.3, also called a shaft encoder, is an electromechanical device that converts the angular position or motion of a shaft
or axle to an analog or digital code.
There are two main types: absolute and incremental (relative). The
output of absolute encoders indicates the current position of the shaft,
making them angle transducers. The output of incremental encoders
provides information about the motion of the shaft, which is typically
further processed elsewhere into information such as speed, distance,
and position.
Rotary encoders are used in many applications that require precise shaft
unlimited rotation—including industrial controls, robotics, special
purpose photographic lenses, computer input devices (such as optomechanical mice and trackballs), controlled stress rheometers, and
rotating radar platforms.
Internet based smart home robot
Page 23
ch3 ARDUINO BOARD
FIGURE 3.4 ABSOLUTE ROTARY ENCODER
Optical absolute encoders
The optical encoder's disc is made of glass or plastic with transparent
and opaque areas. A light source and photo detector array reads the
optical pattern that results from the disc's position at any one time.
This code can be read by a controlling device, such as
a microprocessor or microcontroller to determine the angle of the shaft.
The absolute analog type produces a unique dual analog code that can
be translated into an absolute angle of the shaft (by using a special
algorithm).
Magnetic absolute encoders
The magnetic encoder uses a series of magnetic poles (2 or more) to
represent the encoder position to a magnetic sensor (typically magnetoresistive or Hall Effect). The magnetic sensor reads the magnetic pole
positions.
Internet based smart home robot
Page 24
ch3 ARDUINO BOARD
This code can be read by a controlling device, such as
a microprocessor or microcontroller to determine the angle of the shaft,
similar to an optical encoder.
The absolute analog type produces a unique dual analog code that can
be translated into an absolute angle of the shaft (by using a special
algorithm).
Sine wave encoder
A variation on the Incremental encoder is the sine wave encoder. Instead
of producing two quadrature square waves, the outputs are quadrature
sine waves (a sine and a cosine). By performing the arctangent function,
arbitrary levels of resolution can be achieved.
In our case, when connected to an oscilloscope, a sine wave showed, so
the encoders of the Sankyo motor is a sine wave encoder, this created a
problem when reading the encoders with the microcontroller interrupt pin.
The sine wave signal was too small (100 mv) for the microcontroller to
notice the change from high to low or low to high, so a conditioning circuit
was constructed to modify the signal so as to obtain the desired wave
form. 2 circuits were proposed, either a comparator followed by an OPAMP, this will convert the sine wave to a square wave then the OP-AMP
will amplify the signal to be easily read by the micro controller ,or a
frequency to voltage converter followed by the OP-AMP so the frequency
of the sine wave will be converted to a voltage range that can be
monitored and tailored to the application.
3.4 Interface with the main controller
As stated earlier, the Arduino can interface easily with any other device
through USB interface to offer flexibility and speed.
The main controller in our case is a laptop due to the lack of platforms
that interface with the Kinect sensor, so the best available main controller
that can provide both connectivity assurance and speed as well as the
internet connection was a PC or a laptop(for mobility).
Internet based smart home robot
Page 25
Download