SlideShare a Scribd company logo
1 of 45
Download to read offline
 
Người trình bày: Phạm Văn Vĩnh
Hà nội, 2022
ĐO LƯỜNG VÀ ĐIỀU KHIỂN VỚI ARDUINO
- Arduino là gì?
- Arduino dùng để làm gì?
- Có bao nhiêu loại Arduino?
- Mua Arduino ở đâu?
2
- Arduino là gì?
3
4
Arduino
Board
Processor Memory
Digital
I/O
Analogue
I/O
Arduino Uno
16Mhz
ATmega328
2KB SRAM,
32KB flash
14
6 input
0 output
Arduino Due
84MHz
AT91SAM3X8E
96KB SRAM,
512KB flash
54
12 input
2 output
Arduino
Mega
16MHz
ATmega2560
8KB SRAM,
256KB flash
54
16 input
0 output
Arduino
Leonardo
16MHz
ATmega32u4
2.5KB SRAM,
32KB flash
20
12 input
0 output
Arduino dùng để làm gì?
5
1. Nhà thông minh
2. Quân sự
3. Hàng không vũ trụ
4. Điều khiển tự động
5. Điều khiển giao thông
6 Y học
7 Khai thác dữ liệu
8 Quan trắc môi trường
9 Đo lường
Mua Arduino ở đâu?
6
1. https://lkcg.vn/
2. https://banlinhkien.com/
3. https://linhkien888.vn/
4. https://kme.com.vn/
5. https://linhkienvietnam.vn/
7
Web: http://arduino.vn/reference
Sách: 30 Arduino Project
8
1.CHUẨN BỊ PHẦN CỨNG
- 1 board Arduino nano hoặc uno
- 1 cáp USB mini
- 1 bản mạch cắm dây PCB (không hàn)
- Một số dây nối, bóng led và một số linh kiện khác
2. Phần mềm: Arduino IDE 1.8.2
9
Bản mạch cắm dây PCB (không hàn)
10
 
ĐẠI LƯỢNG SỐ VÀ ĐẠI LƯỢNG TƯƠNG TỰ
Đại lượng tương tự: đại
lượng có những giá trị liên
tục
Đại lượng số: đại lượng có giá
trị rời rạc, mỗi điểm rời rạc
được mã hóa dưới dạng một
giá trị số
ADC
DAC
12
- Điện áp toàn thang: Thang giá trị lớn nhất mà
phép đo có thể thực hiện được
- Độ phân giải
+ Đơn vị: bit
+ Cho biết giá trị nhỏ nhất mà phép đo có thể
thực hiện được.
Giá trị nhỏ nhất của phép đo =
(điện áp toàn thang)/(2m)
- Tốc độ lấy mẫu (tần số lấy mẫu)
+ Cho biết có bao nhiêu phép đo có thể thực
hiện trong một giây
 
MỨC LOGIC
- Giá trị điện áp dùng để biểu
diễn giá trị 0 và 1 gọi là mức
logic
- thực tế: mức logic cao - thấp là
một dải điện áp cao và dải điện
áp thấp
2V
5V
0.8V
0V
Biểu diễn số nhị phân thông qua mức logic
- Số nhị phân được biểu diễn
bằng một chuỗi các mức
logic
- Mỗi một mức logic tương
ứng với một bit số
- Chuỗi xung nối tiếp tạo
thành một số: Một chuỗi
xác định các xung trong đó
mỗi bit được qui định bởi
một trạng thái trong khoảng
thời gian 1 xung nhịp
- Biểu diễn bởi một nhóm các mức trạng thái cùng tồn tại song song:
(Xung nhịp là dạng sóng tuần hoàn trong đó khoảng thời gian giữa
các xung (chu kì) bằng thời gian của một bit).
Truyền dữ liệu
Dữ liệu là một nhóm các bit vận chuyển thông tin.
Truyền nối tiếp: Các bít được lần lượt truyền nối
tiếp nhau trên 1 đường truyền dưới sự điều khiển
của xung nhịp.
Truyền song song: Tất cả các bit được gửi đồng
thời ra ngoài trên các đường truyền riêng biệt. Có
một bit có một đường truyền.
UART= Universal Asynchronous Receiver / Transmitter
= Giao tiếp nối tiếp không đồng bộ
 Baudrate: Số bit truyền được trong 1s
(600,1200,2400,4800,9600,14400,19200,38400,56000,57600,115200)
 Frame: quy định số bit trong mỗi lần truyền
 Start bit: Bit đầu tiên được truyền trong một frame
 Data: thông tin mà nhận được trong quá trình truyền nhận.
Trong STM32 khung truyền là 8bit hoặc 9bit.
 Parity bit: kiểm tra dữ liệu truyền có đúng hay không
 Stop bits: bit báo cáo để cho bộ truyền/nhận biết gói dữ
liệu đã được gửi xong
20
Cổng RS-232 trong PC
1 master – 1 slave
1 master – nhiều slave
SCK: Xung giữ nhịp cho giao tiếp, mỗi nhịp trên chân SCK
=> 1 bit dữ liệu đến hoặc đi
MISO (Master Input / Slave Output): Ở master => in; Ở Slave => out
MOSI (Master Output / Slave Input): Ở master => out; Ở Slave => in
SS (Slave Select): chọn Slave cần giap tiếp, ở Slave SS ở mức
cao khi không làm việc. Master kéo đường SS của một
Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra
giữa Master và Slave đó. Chỉ có 1 đường SS trên mỗi Slave
nhưng có thể có nhiều đường điều khiển SS trên Master
- Cực của xung giữ nhịp (Clock Polarity- CPOL): trạng
thái của chân SCK ở trạng thái nghỉ (Idle). Có thể lấy
SCK mức cao (CPOL=1) hoặc thấp (CPOL=0) làm
trạng thái nghỉ.
- Phase (CPHA): cách mà dữ liệu được lấy mẫu (sample)
theo xung giữ nhịp. Dữ liệu có thể được lấy mẫu ở cạnh
lên của SCK (CPHA=0) hoặc cạnh xuống (CPHA=1).
=> 4 chế độ hoạt động của SPI, chọn chế độ nào tùy thuộc
vào nhà sản xuất chip slave
Chế độ chuẩn (standard mode) : 100 Kbit/s.
Chế độ tốc độ thấp (low-speed mode): 10 Kbit/s.
 Có 2 đường truyền tín hiệu SDA và SCL
 Master: điều khiển đường tín hiệu đồng hồ SCL và quyết
định hoạt động nào sẽ được thực hiện
 Slave: Mỗi slave được gán địa chỉ vật lí cố định 7 bit
Start bit: master chuyển SDA sau
đó SCL xuống thấp
Khối địa chỉ: Gồm 7 bit truyền từ master xuống. Slave so
sánh với địa chỉ của nó. Nếu trùng địa chỉ thì tiến hành kết nối
giao tiếp
Bit Read / Write: xác định hướng truyền dữ liệu.
Master gửi dữ liệu tới Slave => đặt R/W=‘0’.
Master cần nhận dữ liệu từ Slave => đặt R/W= ‘1’.
Bit ACK / NACK: mặc định = 1; nếu địa chỉ của slave
trùng với địa chỉ mà master gửi tới thì slave đặt nó về 0
Khối dữ liệu: là dữ liệu cần truyền đi, nó nằm trước 1
bit ACK / NACK;. Khi nhận thành công thì slave sẽ đặt
bit ACK / NACK này thành 0
Điều kiện kết thúc: dữ liệu truyền trên
SDA kết thúc, master chuyển đường SDA
từ thấp sang mức cao sau đó SCL chuyển
từ cao xuống thấp.
1. Download Arduino IDE Software
2. Cài đặt
3. Chạy phần mềm, viết code
4. Chạy thử code, kiểm tra lỗi
5. Nạp code
6. Kiểm tra hoạt động phần cứng
7. Kiểm tra dữ liệu gửi lên máy tính
8. Quan sát đồ thị dữ liệu theo thời gian trên máy tính
35
36
1. Giới thiệu ADS1115
2. Ghép nối ADS1115 với arduino
3. Lập trình đo điện áp visai
4. Chương trình mẫu
5. Ứng dụng khảo sát đặc trưng I-V của diode bán dẫn
37
1. Giới thiệu ADS1115
38
- Độ phân giải: 16 bit
- Số kênh analog: 4 (đo đơn kênh hoặc visai)
- Chuẩn giao tiếp I2C
- Điện áp nguồn: 2-5V
- Tần số lấy mẫu: 8SPS~860SPS
- Điện áp toàn thang: +/- 6.144V; +/-4.096V; +/-2.048V; +/-
1.024V; +/- 0.512V; +/- 0.256V
2. Ghép nối ADS1115 với arduino
39
Sơ đồ mạch điện ghép nối ADC với tín hiệu cần đo
Sơ đồ mạch điện ghép nối ADC với Arduino
3. Lập trình đo điện áp visai
40
3.1. Thư viện “Adafruit_ADS1015.h” mã nguồn mở cho ADS1115
3. Lập trình đo điện áp vi sai
41
- Khai báo sử dụng thư viện
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1015 ads;
Serial.begin(9600); // Khởi tạo cổng RS232
ads.begin(); // khởi tạo ADC
- Khởi tạo thư viện
ads.readADC_Differential_0_1(); // trả về giá trị điện áp 2 chân A0 và A1
- Đo điện áp visai
ads.readADC_Differential_2_3(); // trả về giá trị điện áp 2 chân A2 và A3
4. Chương trình mẫu
42
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1015 ads;
void setup(void)
{
Serial.begin(9600);
ads.begin();
}
void loop()
{
int16_t results;
results = ads.readADC_Differential_0_1();
Serial.print("Differential: ");
delay(1000);
}
5. Ứng dụng khảo sát đặc trưng I-V của diode bán dẫn
43
5.1 Thiết kế phần cứng
A0 A1 A2 A3
ADS1115
5. Ứng dụng khảo sát đặc trưng I-V của diode bán dẫn
44
5.2 Viết code cho arduino
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads; // Declare an instance of the ADS1115
int16_t VrawADCvalue;
int16_t ArawADCvalue;
float scalefactor = 0.1875F;
float V = 0.0; // The result of applying the scale factor to the raw value
float A = 0.0; // The result of applying the scale factor to the raw value
byte i;
void setup()
{
Serial.begin(9600);
ads.begin();
}
45
void loop()
{
while(Serial.read()==63){// nếu có ký tự có mã ASCII=63 gửi xuống thì...
for (i=0;i<10;i++) {
VrawADCvalue = ads.readADC_Differential_0_1(); // Chọn chân A0 và A1 in CH1
ArawADCvalue = ads.readADC_Differential_2_3(); //// Chọn chân A2 và A3 in CH2
V = V+(VrawADCvalue * scalefactor)/1000.0;// điện thế
A = A+(ArawADCvalue * scalefactor)/1000.0;//dòng điện
}
V=V/10;
A=A/10;
Serial.print(V,5); Serial.print(" "); Serial.println(A,5);
delay(10);
}
}

More Related Content

Similar to Bài 1 ĐO LƯỜNG VÀ ĐIỀU KHIỂN VỚI ARDUINO V2.pdf

Báo cáo thực tập công nhân hệ thống báo động phát hiện rò rỉ khí gas
Báo cáo thực tập công nhân   hệ thống báo động phát hiện rò rỉ khí gas Báo cáo thực tập công nhân   hệ thống báo động phát hiện rò rỉ khí gas
Báo cáo thực tập công nhân hệ thống báo động phát hiện rò rỉ khí gas nataliej4
 
Thiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdfThiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdfquandao25
 
Bao cao thuc tap pic18 f4520
Bao cao thuc tap pic18 f4520Bao cao thuc tap pic18 f4520
Bao cao thuc tap pic18 f4520Yến Thanh Thanh
 
đê Cương vi mach sô
đê Cương vi mach sôđê Cương vi mach sô
đê Cương vi mach sôCao Phong
 
Chuẩn truyền tín hiệu
Chuẩn truyền tín hiệuChuẩn truyền tín hiệu
Chuẩn truyền tín hiệuvannghiatdh
 
Tìm hiểu về Arduino và một số dự án với Arduino
Tìm hiểu về Arduino và một số dự án với ArduinoTìm hiểu về Arduino và một số dự án với Arduino
Tìm hiểu về Arduino và một số dự án với Arduinonvn0696
 
Lập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểm
Lập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểmLập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểm
Lập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểmXuân Thủy Nguyễn
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Viết thuê báo cáo thực tập giá rẻ
 
Họ vi xử lí 8086 intel
Họ vi xử lí 8086 intelHọ vi xử lí 8086 intel
Họ vi xử lí 8086 inteldark_valley
 
đinh tuyến tĩnh và định tuyến động
đinh tuyến tĩnh và định tuyến độngđinh tuyến tĩnh và định tuyến động
đinh tuyến tĩnh và định tuyến độngnguyenhoangbao
 
New Microsoft Word Document.docx
New Microsoft Word Document.docxNew Microsoft Word Document.docx
New Microsoft Word Document.docxLinh An
 
datasheet.pdf
datasheet.pdfdatasheet.pdf
datasheet.pdfDuyL84058
 

Similar to Bài 1 ĐO LƯỜNG VÀ ĐIỀU KHIỂN VỚI ARDUINO V2.pdf (20)

Báo cáo thực tập công nhân hệ thống báo động phát hiện rò rỉ khí gas
Báo cáo thực tập công nhân   hệ thống báo động phát hiện rò rỉ khí gas Báo cáo thực tập công nhân   hệ thống báo động phát hiện rò rỉ khí gas
Báo cáo thực tập công nhân hệ thống báo động phát hiện rò rỉ khí gas
 
Thiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdfThiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdf
 
Co ban ve msp430
Co ban ve msp430Co ban ve msp430
Co ban ve msp430
 
Đồ án asembly thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51.doc
Đồ án asembly thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51.docĐồ án asembly thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51.doc
Đồ án asembly thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51.doc
 
Msptieuluan
MsptieuluanMsptieuluan
Msptieuluan
 
Bao cao thuc tap pic18 f4520
Bao cao thuc tap pic18 f4520Bao cao thuc tap pic18 f4520
Bao cao thuc tap pic18 f4520
 
đê Cương vi mach sô
đê Cương vi mach sôđê Cương vi mach sô
đê Cương vi mach sô
 
Chuẩn truyền tín hiệu
Chuẩn truyền tín hiệuChuẩn truyền tín hiệu
Chuẩn truyền tín hiệu
 
Tìm hiểu về Arduino và một số dự án với Arduino
Tìm hiểu về Arduino và một số dự án với ArduinoTìm hiểu về Arduino và một số dự án với Arduino
Tìm hiểu về Arduino và một số dự án với Arduino
 
Lập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểm
Lập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểmLập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểm
Lập trình PLC S7 1200 tiếng Việt-Chuong 7 truyền thông điểm điểm
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
 
Họ vi xử lí 8086 intel
Họ vi xử lí 8086 intelHọ vi xử lí 8086 intel
Họ vi xử lí 8086 intel
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
đinh tuyến tĩnh và định tuyến động
đinh tuyến tĩnh và định tuyến độngđinh tuyến tĩnh và định tuyến động
đinh tuyến tĩnh và định tuyến động
 
New Microsoft Word Document.docx
New Microsoft Word Document.docxNew Microsoft Word Document.docx
New Microsoft Word Document.docx
 
Mạnh (1)
Mạnh (1)Mạnh (1)
Mạnh (1)
 
An toan-mang
An toan-mangAn toan-mang
An toan-mang
 
Chuong5 hoạt động port nối tiếp
Chuong5 hoạt động port nối tiếpChuong5 hoạt động port nối tiếp
Chuong5 hoạt động port nối tiếp
 
datasheet.pdf
datasheet.pdfdatasheet.pdf
datasheet.pdf
 
Nhóm-HM.docx
Nhóm-HM.docxNhóm-HM.docx
Nhóm-HM.docx
 

Bài 1 ĐO LƯỜNG VÀ ĐIỀU KHIỂN VỚI ARDUINO V2.pdf

  • 1.   Người trình bày: Phạm Văn Vĩnh Hà nội, 2022 ĐO LƯỜNG VÀ ĐIỀU KHIỂN VỚI ARDUINO
  • 2. - Arduino là gì? - Arduino dùng để làm gì? - Có bao nhiêu loại Arduino? - Mua Arduino ở đâu? 2
  • 3. - Arduino là gì? 3
  • 4. 4 Arduino Board Processor Memory Digital I/O Analogue I/O Arduino Uno 16Mhz ATmega328 2KB SRAM, 32KB flash 14 6 input 0 output Arduino Due 84MHz AT91SAM3X8E 96KB SRAM, 512KB flash 54 12 input 2 output Arduino Mega 16MHz ATmega2560 8KB SRAM, 256KB flash 54 16 input 0 output Arduino Leonardo 16MHz ATmega32u4 2.5KB SRAM, 32KB flash 20 12 input 0 output
  • 5. Arduino dùng để làm gì? 5 1. Nhà thông minh 2. Quân sự 3. Hàng không vũ trụ 4. Điều khiển tự động 5. Điều khiển giao thông 6 Y học 7 Khai thác dữ liệu 8 Quan trắc môi trường 9 Đo lường
  • 6. Mua Arduino ở đâu? 6 1. https://lkcg.vn/ 2. https://banlinhkien.com/ 3. https://linhkien888.vn/ 4. https://kme.com.vn/ 5. https://linhkienvietnam.vn/
  • 8. 8 1.CHUẨN BỊ PHẦN CỨNG - 1 board Arduino nano hoặc uno - 1 cáp USB mini - 1 bản mạch cắm dây PCB (không hàn) - Một số dây nối, bóng led và một số linh kiện khác 2. Phần mềm: Arduino IDE 1.8.2
  • 9. 9 Bản mạch cắm dây PCB (không hàn)
  • 10. 10
  • 11.   ĐẠI LƯỢNG SỐ VÀ ĐẠI LƯỢNG TƯƠNG TỰ Đại lượng tương tự: đại lượng có những giá trị liên tục Đại lượng số: đại lượng có giá trị rời rạc, mỗi điểm rời rạc được mã hóa dưới dạng một giá trị số ADC DAC
  • 12. 12 - Điện áp toàn thang: Thang giá trị lớn nhất mà phép đo có thể thực hiện được - Độ phân giải + Đơn vị: bit + Cho biết giá trị nhỏ nhất mà phép đo có thể thực hiện được. Giá trị nhỏ nhất của phép đo = (điện áp toàn thang)/(2m) - Tốc độ lấy mẫu (tần số lấy mẫu) + Cho biết có bao nhiêu phép đo có thể thực hiện trong một giây
  • 13.   MỨC LOGIC - Giá trị điện áp dùng để biểu diễn giá trị 0 và 1 gọi là mức logic - thực tế: mức logic cao - thấp là một dải điện áp cao và dải điện áp thấp 2V 5V 0.8V 0V
  • 14. Biểu diễn số nhị phân thông qua mức logic - Số nhị phân được biểu diễn bằng một chuỗi các mức logic - Mỗi một mức logic tương ứng với một bit số - Chuỗi xung nối tiếp tạo thành một số: Một chuỗi xác định các xung trong đó mỗi bit được qui định bởi một trạng thái trong khoảng thời gian 1 xung nhịp - Biểu diễn bởi một nhóm các mức trạng thái cùng tồn tại song song: (Xung nhịp là dạng sóng tuần hoàn trong đó khoảng thời gian giữa các xung (chu kì) bằng thời gian của một bit).
  • 15. Truyền dữ liệu Dữ liệu là một nhóm các bit vận chuyển thông tin. Truyền nối tiếp: Các bít được lần lượt truyền nối tiếp nhau trên 1 đường truyền dưới sự điều khiển của xung nhịp. Truyền song song: Tất cả các bit được gửi đồng thời ra ngoài trên các đường truyền riêng biệt. Có một bit có một đường truyền.
  • 16.
  • 17. UART= Universal Asynchronous Receiver / Transmitter = Giao tiếp nối tiếp không đồng bộ
  • 18.
  • 19.  Baudrate: Số bit truyền được trong 1s (600,1200,2400,4800,9600,14400,19200,38400,56000,57600,115200)  Frame: quy định số bit trong mỗi lần truyền  Start bit: Bit đầu tiên được truyền trong một frame  Data: thông tin mà nhận được trong quá trình truyền nhận. Trong STM32 khung truyền là 8bit hoặc 9bit.  Parity bit: kiểm tra dữ liệu truyền có đúng hay không  Stop bits: bit báo cáo để cho bộ truyền/nhận biết gói dữ liệu đã được gửi xong
  • 21. 1 master – 1 slave 1 master – nhiều slave
  • 22. SCK: Xung giữ nhịp cho giao tiếp, mỗi nhịp trên chân SCK => 1 bit dữ liệu đến hoặc đi MISO (Master Input / Slave Output): Ở master => in; Ở Slave => out MOSI (Master Output / Slave Input): Ở master => out; Ở Slave => in SS (Slave Select): chọn Slave cần giap tiếp, ở Slave SS ở mức cao khi không làm việc. Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó. Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có nhiều đường điều khiển SS trên Master
  • 23. - Cực của xung giữ nhịp (Clock Polarity- CPOL): trạng thái của chân SCK ở trạng thái nghỉ (Idle). Có thể lấy SCK mức cao (CPOL=1) hoặc thấp (CPOL=0) làm trạng thái nghỉ. - Phase (CPHA): cách mà dữ liệu được lấy mẫu (sample) theo xung giữ nhịp. Dữ liệu có thể được lấy mẫu ở cạnh lên của SCK (CPHA=0) hoặc cạnh xuống (CPHA=1). => 4 chế độ hoạt động của SPI, chọn chế độ nào tùy thuộc vào nhà sản xuất chip slave
  • 24.
  • 25.
  • 26. Chế độ chuẩn (standard mode) : 100 Kbit/s. Chế độ tốc độ thấp (low-speed mode): 10 Kbit/s.
  • 27.  Có 2 đường truyền tín hiệu SDA và SCL  Master: điều khiển đường tín hiệu đồng hồ SCL và quyết định hoạt động nào sẽ được thực hiện  Slave: Mỗi slave được gán địa chỉ vật lí cố định 7 bit
  • 28. Start bit: master chuyển SDA sau đó SCL xuống thấp
  • 29. Khối địa chỉ: Gồm 7 bit truyền từ master xuống. Slave so sánh với địa chỉ của nó. Nếu trùng địa chỉ thì tiến hành kết nối giao tiếp
  • 30. Bit Read / Write: xác định hướng truyền dữ liệu. Master gửi dữ liệu tới Slave => đặt R/W=‘0’. Master cần nhận dữ liệu từ Slave => đặt R/W= ‘1’.
  • 31. Bit ACK / NACK: mặc định = 1; nếu địa chỉ của slave trùng với địa chỉ mà master gửi tới thì slave đặt nó về 0
  • 32. Khối dữ liệu: là dữ liệu cần truyền đi, nó nằm trước 1 bit ACK / NACK;. Khi nhận thành công thì slave sẽ đặt bit ACK / NACK này thành 0
  • 33. Điều kiện kết thúc: dữ liệu truyền trên SDA kết thúc, master chuyển đường SDA từ thấp sang mức cao sau đó SCL chuyển từ cao xuống thấp.
  • 34.
  • 35. 1. Download Arduino IDE Software 2. Cài đặt 3. Chạy phần mềm, viết code 4. Chạy thử code, kiểm tra lỗi 5. Nạp code 6. Kiểm tra hoạt động phần cứng 7. Kiểm tra dữ liệu gửi lên máy tính 8. Quan sát đồ thị dữ liệu theo thời gian trên máy tính 35
  • 36. 36
  • 37. 1. Giới thiệu ADS1115 2. Ghép nối ADS1115 với arduino 3. Lập trình đo điện áp visai 4. Chương trình mẫu 5. Ứng dụng khảo sát đặc trưng I-V của diode bán dẫn 37
  • 38. 1. Giới thiệu ADS1115 38 - Độ phân giải: 16 bit - Số kênh analog: 4 (đo đơn kênh hoặc visai) - Chuẩn giao tiếp I2C - Điện áp nguồn: 2-5V - Tần số lấy mẫu: 8SPS~860SPS - Điện áp toàn thang: +/- 6.144V; +/-4.096V; +/-2.048V; +/- 1.024V; +/- 0.512V; +/- 0.256V
  • 39. 2. Ghép nối ADS1115 với arduino 39 Sơ đồ mạch điện ghép nối ADC với tín hiệu cần đo Sơ đồ mạch điện ghép nối ADC với Arduino
  • 40. 3. Lập trình đo điện áp visai 40 3.1. Thư viện “Adafruit_ADS1015.h” mã nguồn mở cho ADS1115
  • 41. 3. Lập trình đo điện áp vi sai 41 - Khai báo sử dụng thư viện #include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1015 ads; Serial.begin(9600); // Khởi tạo cổng RS232 ads.begin(); // khởi tạo ADC - Khởi tạo thư viện ads.readADC_Differential_0_1(); // trả về giá trị điện áp 2 chân A0 và A1 - Đo điện áp visai ads.readADC_Differential_2_3(); // trả về giá trị điện áp 2 chân A2 và A3
  • 42. 4. Chương trình mẫu 42 #include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1015 ads; void setup(void) { Serial.begin(9600); ads.begin(); } void loop() { int16_t results; results = ads.readADC_Differential_0_1(); Serial.print("Differential: "); delay(1000); }
  • 43. 5. Ứng dụng khảo sát đặc trưng I-V của diode bán dẫn 43 5.1 Thiết kế phần cứng A0 A1 A2 A3 ADS1115
  • 44. 5. Ứng dụng khảo sát đặc trưng I-V của diode bán dẫn 44 5.2 Viết code cho arduino #include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1115 ads; // Declare an instance of the ADS1115 int16_t VrawADCvalue; int16_t ArawADCvalue; float scalefactor = 0.1875F; float V = 0.0; // The result of applying the scale factor to the raw value float A = 0.0; // The result of applying the scale factor to the raw value byte i; void setup() { Serial.begin(9600); ads.begin(); }
  • 45. 45 void loop() { while(Serial.read()==63){// nếu có ký tự có mã ASCII=63 gửi xuống thì... for (i=0;i<10;i++) { VrawADCvalue = ads.readADC_Differential_0_1(); // Chọn chân A0 và A1 in CH1 ArawADCvalue = ads.readADC_Differential_2_3(); //// Chọn chân A2 và A3 in CH2 V = V+(VrawADCvalue * scalefactor)/1000.0;// điện thế A = A+(ArawADCvalue * scalefactor)/1000.0;//dòng điện } V=V/10; A=A/10; Serial.print(V,5); Serial.print(" "); Serial.println(A,5); delay(10); } }