makerbot...trong 1 chu kì xung arduino và makerbot banhmi Điềukhiểnđộngc ơservo và dc...

14
MakerBot BANHMI

Upload: others

Post on 20-Aug-2021

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

MakerBotBANHMI

Page 2: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(
Page 3: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Blink Led

• Vào File->examples->Basics->Blink

• Tuy nhiên với esp32, LED_BUILTIN là 1 hằn số chưa được

khai báo nên ta phải khai báo LED_BUILTIN, hoặc thay thế

bằng số chân tương ứng

• Chân led của mạch makerbot là GPIO 13

• #define LED_BUILTIN 13

Page 4: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Sử dụng thư viện Adafruit PCA9685:

• Link tải thư viện: https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

• Ví dụ mẫu điều khiển servo File->examples->Adafruit-PWM-Servo-Driver-Library>servo

• Ví dụ PWM: File->examples->Adafruit-PWM-Servo-Driver-Library->PWMtest

• Tài liệu tham khảo PWM: http://arduino.vn/reference/xung-pwm

Page 5: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Khai báo thư viện

#include <Wire.h> //thư viện I2c của Arduino, do PCA9685 sử dụng chuẩn giao

tiếp i2c nên thư viện này bắt buộc phải khai báo

#include <Adafruit_PWMServoDriver.h> // thư viện PCA9685

Page 6: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Khai báo biến của lớp

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

Hoặc

Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x70);

Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x71);

Page 7: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Khởi tạo trong hàm setup

pwm.begin(); //khởi tạo PCA9685

pwm.setOscillatorFrequency(27000000); // cài đặt tần số giao động

pwm.setPWMFreq(1600);// cài đặt tần số PWM

//tần số PWM được cài đặt từ 0-1600 HZ, tần số này được cài đặt tùy thuộc vào

nhu cầu xử dụng

Đối với servo tương tự, tần số PWM điều khiển là 50Hz

Page 8: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Khởi tạo trong hàm setup

Wire.setClock(400000); // cài đặt tốc độ giao tiếp i2c ở tốc độ cao nhất(400

Mhz) , hàm này có thể bỏ qua nếu gặp lỗi hoặc không có nhu cầu tử dụng I2c tốc

độ cao

Page 9: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Hàm băm xung PWM

pwm.setPWM(kênh PWM,giá trị bật, giá trị tắt);

//kênh PWM, kênh đầu ra có thế xem hình ở đầu slide và điền vào số kênh muốn

điều khiển

//giá trị bật, tắt chạy từ 0-4095 (2^12)

//giá trị bật quyết định tốc độ của động cơ, giá trị tắt = 4095 - giá trị bật

trong 1 chu kì xung

Page 10: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Page 11: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Hàm điều khiển bằng thời gian( điều khiển Servo)

pwm.writeMicroseconds(kênh PWM, microsec);

//Microsec, thời gian xung ở mức cao trong 1 chu kì( trạng thái bật)

Page 12: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Điều khiển động cơ DC

pwm.setPWM(chan2, 0, val);

pwm.setPWM(chan1, 4096, 0);

//makerbot Sử dụng 2 kênh của PCA9685 , để điều khiển động cơ qua 1 chân luôn

ở trạng thái tắt

Page 13: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Ví dụ: điều khiển động cơ số 1 tốc độ quay 50%, chiều quay thuận

pwm.setPWM(8, 0, 2048);

pwm.setPWM(9, 4096, 0);

//điều khiển kênh 8 và 9 của động cơ 1, tốc độ 50% = 4096/2

Page 14: MakerBot...trong 1 chu kì xung Arduino và Makerbot BANHMI Điềukhiểnđộngc ơServo và DC Arduino và Makerbot BANHMI ĐiềukhiểnđộngcơServo và DC Hàm điềukhiểnbằngthờigian(

Arduino và Makerbot BANHMI

Điều khiển động cơ Servo và DC

Ví dụ: điều khiển động cơ số 1 tốc độ quay 75%, chiều quay ngịch

pwm.setPWM(8, 4096, 0);

pwm.setPWM(9, 0, 2730);

//điều khiển kênh 8 và 9 của động cơ 1, tốc độ 75% = 4096/1.5