Khác biệt giữa các bản “ShieldMotorL298”

Từ ChipFC Wiki
Bước tới: chuyển hướng, tìm kiếm
(Tạo trang mới với nội dung “Category:Arduino Shield {{Đang viết}} == Giới thiệu == * [http://chipfc.com/shield-motor-l298 Shield Motor L298] là một board mạch mở …”)
 
(Chương trình 2: RC Servo)
 
(Không hiển thị 24 phiên bản của 2 người dùng ở giữa)
Dòng 12: Dòng 12:
 
* Ngoài ra Shield Motor của chipfc còn cung cấp cho các bạn tối đa số đầu nối cho RC servo để bạn có thể dễ dàng thực hiện thêm những chức năng khác
 
* Ngoài ra Shield Motor của chipfc còn cung cấp cho các bạn tối đa số đầu nối cho RC servo để bạn có thể dễ dàng thực hiện thêm những chức năng khác
  
* Một số ứng dụng với Relay Shield như: điều khiển các thiết bị trong nhà thông minh như đèn, quạt, hẹn giờ tắt mở; kết hợp với Ethernet Shield ENC28J60 để điều khiển qua mạng Internet,...
+
* Một số ứng dụng với Shield motor như: điều khiển động cơ xe đua, làm robot, làm máy, điều khiển step motor, cánh tay máy ...
  
[[Hình:Motor298ShieldTop.jpg]]
+
[[Hình:Motor298ShieldTop.jpg | 400px]]
[[Hình:Motor298ShieldBot.jpg]]
 
  
 
== Đặc điểm ==
 
== Đặc điểm ==
  
* Điện thế hoạt động:  
+
* Điện thế hoạt động: mức logic hoạt động ở 5V giống Arduino, nguồn cho motor có domino kết nối riêng, từ 5-36V
  
 
* Hoàn toàn tương thích Arduino
 
* Hoàn toàn tương thích Arduino
  
 
* Gồm 4 nữa cầu H, Có thể điều khiển 2 động cơ thường hoặc 1 step motor
 
* Gồm 4 nữa cầu H, Có thể điều khiển 2 động cơ thường hoặc 1 step motor
 +
 +
* Có đèn báo hiệu tín hiệu điều khiển
 +
 +
* Cảm biến dòng cho động cơ
  
 
* Có tối đa 6 kênh điều khiển RC Servo
 
* Có tối đa 6 kênh điều khiển RC Servo
  
* Có thể ghép nối tới 2 shield motor này lên Arduino  
+
* Có thể ghép nối tới 2 shield motor này lên Arduino, tất nhiên cần một vài điều chỉnh nhỏ sẽ nói ở phần sử dụng bên dưới
  
*  
+
* Có thể cấp nguồn cho Arduino bằng nguồn nuôi motor bằng cách đặt jump
  
 
== Mô tả các chân kết nối ==
 
== Mô tả các chân kết nối ==
  
[[Hình:ShieldRelay_Sodochan.png|400px]]
+
[[Hình:ShieldMotor298_Sodochan.jpg|x400px]]
[[Hình:ShieldRelay_Sodonguyenly.png|400px]]
+
[[Hình:ShieldMotor298_Sodonguyenly.png|x400px]]
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
Dòng 41: Dòng 44:
 
! Thứ tự chân !! Tên gọi !! Loại !! Mô tả
 
! Thứ tự chân !! Tên gọi !! Loại !! Mô tả
 
|-
 
|-
| 1 || Relay_En1 || Output|| Tín hiệu điều khiển relay 1 nối vào chân D3 của Arduino
+
| 1 || Dir_Data || Input|| Tín hiệu data của spi cho điều khiển hướng
 +
|-
 +
| 2 || Dir_Clk|| Input || Tín hiệu clock cua spi cho điều khiển hướng
 
|-
 
|-
| 2 || Relay_En2|| Output || Tín hiệu điều khiển relay 2 nối vào chân D5 của Arduino
+
| 3 || Dir_Latch || Input || Tín hiệu latch của spi cho điều khiển hướng
 
|-
 
|-
| 3 || Relay_En3 || Output || Tín hiệu điều khiển relay 3 nối vào chân D6 của Arduino
+
| 4 || Dir_En || Input || Tín hiệu enable của spi cho điều khiển hướng
 
|-
 
|-
| 4 || Relay_En4 || Output || Tín hiệu điều khiển relay 4 nối vào chân D7 của Arduino
+
| 5 || PWM A || Input || Tín hiệu điều xung cho motor kênh A
 +
|-
 +
| 6 || PWM B || Input || Tín hiệu điều xung cho motor kênh B
 +
|-
 +
| 7 || Sense A || Output|| Tín hiệu giá trị cảm biến dòng điện của kênh A
 +
|-
 +
| 8 || Sense B || Output || Tín hiệu giá trị cảm biến dòng điện của kênh B
 
|}
 
|}
 +
 +
Kết nối chân ra nguồn và động cơ
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
|+ Domino kết nối - Đầu ra của relay
+
|+ Kết nối chân của domino
 
|-
 
|-
 
! Thứ tự chân !! Tên gọi !! Loại !! Mô tả
 
! Thứ tự chân !! Tên gọi !! Loại !! Mô tả
 
|-
 
|-
| 1 || NO1|| Connector|| Normal close - chân nối với chân COM ở trạng thái mình thường, hở ra khi relay được kích
+
| 1 || MB1 || Output|| Tín hiệu điều khiển motor B, kênh 1
 +
|-
 +
| 2 || MB2|| Output || Tín hiệu điều khiển motor B, kênh 2
 
|-
 
|-
| 2 || COM1 || Connector || Common - chân chung, chân này sẽ nối với 1 trong 2 chân NC hoặc NO
+
| 3 || GND || Power|| Mức đất, dùng cho stepmotor có chân chung nối GND
 
|-
 
|-
| 3 || NC1 || Connector || Normal open - chân hở, chân này chỉ nối với chân COM khi relay được kích
+
| 4 || MA1 || Output || Tín hiệu điều khiển motor A, kênh 1
 
|-
 
|-
| 4 || NO2|| Connector|| Normal close - chân nối với chân COM ở trạng thái mình thường, hở ra khi relay được kích
+
| 5 || MA2 || Output || Tín hiệu điều khiển motor A, kênh 2
 
|-
 
|-
| 5 || COM2 || Connector || Common - chân chung, chân này sẽ nối với 1 trong 2 chân NC hoặc NO
+
| 6 || + || Power|| Nguồn cung cấp cho motor, nên từ 6.5-12 V
 
|-
 
|-
| 6 || NC2 || Connector || Normal open - chân hở, chân này chỉ nối với chân COM khi relay được kích
+
| 7 || - || Power|| Nguồn cung cấp cho motor, mức tín hiệu đất
 +
|}
 +
 
 +
Nếu bạn không dùng với Arduino thì có thể dùng shield motor này như một module driver để điều khiển động cơ, cách kết nối cũng khá đơn giản và thiết lập cũng dễ dàng. Trước tiên bạn hãy chỉnh lại mối hàn chỗ thiết lập chế độ là non-Arduino, hàn hàng rào chỗ còn trống để điều khiển qua hàng rào này. Thứ tự của các chân trên hàng rào được ghi trên mạch và có chức năng như sau:
 +
 
 +
{| class="wikitable sortable"
 +
|+ Chân điều khiển khi không dùng với Arduino
 +
|-
 +
! Thứ tự chân !! Tên gọi !! Loại !! Mô tả
 
|-
 
|-
| 7 || NO3|| Connector|| Normal close - chân nối với chân COM ở trạng thái mình thường, hở ra khi relay được kích
+
| 1 || PWMA|| Input|| Tín hiệu điều xung motor A
 
|-
 
|-
| 8 || COM3 || Connector || Common - chân chung, chân này sẽ nối với 1 trong 2 chân NC hoặc NO
+
| 2 || DirA|| Input || Tín hiệu điều khiển hướng motor A
 
|-
 
|-
| 9 || NC3 || Connector || Normal open - chân hở, chân này chỉ nối với chân COM khi relay được kích
+
| 3 || PWMB || Input|| Tín hiệu điều xung motor B
 
|-
 
|-
| 10 || NO4|| Connector|| Normal close - chân nối với chân COM ở trạng thái mình thường, hở ra khi relay được kích
+
| 4 || DirB || Input || Tín hiệu điều khiển hướng motor B
 
|-
 
|-
| 11 || COM4 || Connector || Common - chân chung, chân này sẽ nối với 1 trong 2 chân NC hoặc NO
+
| 5 || GND|| Power || Mức nguồn đất
 
|-
 
|-
| 12 || NC4 || Connector || Normal open - chân hở, chân này chỉ nối với chân COM khi relay được kích
+
| 6 || VCC || Power|| Mức nguồn cung cấp cho ic, 5V
 
|}
 
|}
  
 
== Sử dụng ==  
 
== Sử dụng ==  
  
Cách nối với một bóng đèn đơn giản như sau  
+
Cách nối với bo Arduino đơn giản như sau
  
[[Hình:ShieldRelay_ketnoiden.jpg|400px]]
+
[[Hình:ShieldMotor_ketnoiarduino.jpg|400px]]
 +
[[Hình:ShieldMotor_ketnoiarduino_power.jpg|400px]]
  
Bạn có thể tải về một chương trình mẫu dùng để test shield relay [http://cloud.chipfc.com/File/Download?f=vhflvwgeq4j tại đây]
+
Để sử dụng shield motor này với Arduino, đầu tiên bạn phải tải về thư viện mà chipfc đã chuẩn bị sẵn tại [http://chipfc.com/shield-motor-l298 trang giới thiệu của sản phẩm]. Sau đó bạn chép và giải nén tại thư mục libraries của Arduino, mở chương trình lên lại và sử dụng.
  
 +
Để tham khảo các chức năng hoạt động, bạn có thể mở từng ví dụ trong mục example của thư viện shield motor này
 +
=== Chương trình 1: DC Motor ===
 +
[[Hình:ShieldMotor_ketnoiarduino_motordc.jpg|400px]]
 +
* Kết nối Shield Motor với Arduino
 +
* Kết nối động cơ với Shield
 +
* Cấp nguồn cho Shield, trước khi cấp nguồn nhớ chú ý jump Vin, khi jump này nối nghĩa là nguồn nuôi động cơ cuãng là nguồn nuôi arduino, nếu không nối jump thì nguồn cho động cơ và nguồn cho arduino riêng biệt (nên tách riêng như vậy)
 +
* Nạp chương trình test motor, trong đó có một số hàm sau:
  
Dưới đây một ví dụ mẫu tự động tắt/mở relay.
+
** Hàm khởi tạo '''CFC_DCMotor(uint8_t motornum, uint8_t pwmpin)''' khởi tạo motor, trong đó
 +
_ motornum thứ tự motor, trên mỗi Shield có 2 cổng để gắn động
 +
_ pwmpin là chân điều xung cho động cơ, motor 1 mặc định là D13 và motor 2 mặc định là D3
 +
<syntaxhighlight lang="cpp">
 +
CFC_DCMotor motor1(1, 11); // Motor 1, PWMpin = D11
 +
</syntaxhighlight>
  
 +
** Hàm khỏi tạo '''CFC_DCMotor(uint8_t motornum, uint8_t pwmpin, uint8_t analogpin)''' khỏi tạo motor, tương tự như trên nhưng có thêm chân cho cảm biến dòng khai báo tại ''uint8_t analogpin''
 +
<syntaxhighlight lang="cpp">
 +
CFC_DCMotor motor1(1, 11,A0); // Motor 1, PWMpin = D11, sensor pin = A0
 +
</syntaxhighlight>
  
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted"
+
** Hàm chạy '''void run(uint8_t)''' để cho phép motor chạy, thông số truyền vào là:
|<syntaxhighlight lang="cpp">
+
*** '''FORWARD''' tiến
/**
+
*** '''BACKWARD''' lui
* Tự động bật relay
+
*** '''BRAKE''' thắng
* Sử dụng kết hợp với Chipiuno của chipfc
+
*** '''RELEASE''' thả
*
+
<syntaxhighlight lang="cpp">
* Viết bởi: Thophi
+
motor1.run(FORWARD);
* Tham khảo tại http://chipfc.com/
+
motor1.run(BACKWARD);
*/
+
motor1.run(BRAKE);
 +
motor1.run(RELEASE);
 +
</syntaxhighlight>
  
 +
** Hàm '''void setSpeed(uint8_t)''' để set tốc độ cho motor, có giá trị từ 0->255
 +
<syntaxhighlight lang="cpp">
 +
motor1.setSpeed(255);
 +
</syntaxhighlight>
  
byte relayPin = 3;  //Mô đun relay1 nối với chân 3 của Arduino
+
=== Chương trình 2: RC Servo ===
 +
[[Hình:ShieldMotor_ketnoiarduino_motordc_rcservo.jpg|400px]]
 +
* Kết nối Shield Motor với Arduino
 +
* Kết nối động cơ servo với Shield, trên shield có 6 header để có thể cắm tối đa 6 động cơ, thông thường chúng ta chỉ sử dụng 4 servo và để dành 2 vị trí cho điều khiển motor.
 +
* Cấp nguồn cho Shield, trước khi cấp nguồn nhớ chú ý jump Vin, khi jump này nối nghĩa là nguồn nuôi động cơ cuãng là nguồn nuôi arduino, nếu không nối jump thì nguồn cho động cơ và nguồn cho arduino riêng biệt (nên tách riêng như vậy)
 +
* Nạp chương trình servo test để kiểm tra, trong đó có thể có một số hàm sau:
  
boolean state = true; //Biến trạng thái cho relay
+
** Khởi tạo đối tượng Servo
 +
<syntaxhighlight lang="cpp">
 +
Servo servo1;
 +
Servo servo2;
 +
</syntaxhighlight>
  
void setup(){
+
** Hàm '''uint8_t attach(int pin)''' để gắn chân Arduino nào sử dụng với servo này
  pinMode(relayPin,OUTPUT); //Relay là output
+
** Hoặc có thể dùng hàm '''uint8_t attach(int pin, int min, int max)''' cũng tương tự như trên nhưng đồng thời đặt giá trị tối đa và tối thiểu cho servo, rất hữu ích khi cần chặn hành trình của servo
}
+
<syntaxhighlight lang="cpp">
 +
servo1.attach(5);
 +
servo2.attach(6, 70,160); // giới hạn góc từ 70 tới 160 độ
 +
</syntaxhighlight>
  
void loop(){
+
** Hàm '''  void write(int value)''' để xuất giá trị ra servo, nếu giá trị value dưới 200 thì coi là giá trị góc, nếu trên 200 thì coi là giá trị xung rộng theo micro giây
  digitalWrite(relayPin,LOW);
+
** Hoặc dùng hàm '''void writeMicroseconds(int value)''' nếu cần xuất ra giá trị theo xung micro giây
  delay(1000)
+
<syntaxhighlight lang="cpp">
  digitalWrite(relayPin,HIGH);
+
servo1.write(45);
  delay(1000);
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>
|}
 
  
 +
** Một số hàm khác như '''void detach()''' dùng khi muốn thả nổi servo
 +
** Hàm '''bool attached()''' để hỏi xem servo có đang được gắn vào không
 +
** Hàm '''int read()''' trả về giá trị góc hiện tại
 +
** Hàm '''  int readMicroseconds()''' trả về giá trị rộng xung hiện tại
  
Dưới đây là một ví dụ mẫu bật đèn tự động khi trời tối
+
=== Chương trình 3: StepMotor ===
 +
[[Hình:ShieldMotor_ketnoiarduino_stepmotor.jpg|400px]]
  
 +
Đang cập nhật
  
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted"
+
== Các rắc rối có thể bạn gặp phải ==
|<syntaxhighlight lang="cpp">
 
/**
 
* Tự động bật đèn
 
* Sensor là module Chipi-Light Sensor, bộ điều khiển đèn là ShieldRelay của chipfc
 
* Sử dụng kết hợp với Chipiuno, Shield Relay và Shield Base của chipfc
 
* Sử dụng mô đun ChipI-relay như một cộng tắc, sử dụng 2 chân COM và NO
 
* Viết bởi: Thophi
 
* Tham khảo tại http://chipfc.com/
 
*/
 
  
byte sensorPin = A0;  //Cảm biến gắn với chân A0 của Arduino
+
Không có đèn nào sáng => kiểm tra kết nối nguồn, xem có đảm bảo đủ điện áp hoạt động không, kiểm tra dây nối xem có bị hở mạch không
byte relayPin = 3;  //relay1 nối với chân 3 của Arduino
 
  
int edge = 500;  //Độ nhạy này do bạn tùy chỉnh
+
Động cơ dc và servo không quay đúng thứ tự => kiểm tra các chân config phía dưới bo.
void setup(){
 
  pinMode(sensorPin,INPUT);  //Nút nhấn là input
 
  pinMode(relayPin,OUTPUT);  //Loa bíp là output
 
  digitalWrite(relayPin,LOW);  //Mặc định là tắt đèn
 
}
 
  
void loop(){
+
Động cơ không quay nhưng code mẫu thì chạy được => kiểm tra lại chương trình
  if(analogRead(sensorPin) < edge) digitalWrite(relayPin, HIGH);  //Nếu cảm biến đọc về thấp hơn giá trị định trước thì bật đèn
 
  else digitalWrite(relayPin,LOW);  //Không thì tắt đèn
 
  delay(3000);  //Dừng xử lí trong 3s hoặc hơn
 
}
 
</syntaxhighlight>
 
|}
 
  
== Các rắc rối có thể bạn gặp phải ==
+
Giá trị sensor quá nhỏ hoặc thường xuyên không lấy được => cảm biến dòng có giá trị khi động cơ hoạt động, nên cho chu kì lấy mẫu nhỏ lại, hoặc muốn mịn hơn thì có thể chỉnh lại giá trị điện trở theo datasheet của driver ic L298
  
Kết nối phần cứng chưa đúng ==> kiểm tra và kết nối lại cho đúng, nhớ la relay hoạt động như một công tắc điện nên mắc nối tiếp với thiết bị
+
== Tham khảo thêm ==
 +
Bạn có thể làm xe đua lập trình chạy tự động với arduino và shield motor này
  
Nguồn cung cấp đủ để kích hoạt relay, nên thay bằng một trong các nguồn chất lượng có điện áp khoảng 7.5 - 9V _[http://chipfc.com/nguon Nguồn tham khảo]
+
Bạn thể làm robot với khả năng di chuyển và kết hợp với servo làm cánh tay máy
 
 
== Tham khảo thêm ==
 
[https://www.youtube.com/watch?v=wWZ6uF1BAH4&list=UUmFxsuR6c4gUeNKHE_ZkWEw Ứng dụng mẫu điều khiển đèn điện qua internet] (có video)
 
  
Ngoài ra bạn còn có thể làm hàng ngàn ứng dùng khác nữa dùng Arduino điều khiển shield relay này như: điều khiển động cơ, làm xe, điều khiển chốt cửa, điều khiển van bơm nước, điều khiển van khí ...
+
Điều khiển các loại động cơ ...

Bản hiện tại lúc 11:25, ngày 2 tháng 3 năm 2018

Editor.png

Bài viết này đang được phát triển hoặc chỉnh sửa lớn.
Bạn có thể đóng góp để bài viết hoàn thiện hơn.
Sau khi chỉnh sửa xong thông báo này sẽ được gỡ bỏ.

Giới thiệu

  • Shield Motor L298 là một board mạch mở rộng cho Arduino, tương thích hoàn toàn với Arduino và cả ChipPRO, ChipUNO của ChipFC.
  • Shield Motor cung cấp cho board Arduino của bạn một bộ driver để có thể điều khiển cùng lúc 2 động cơ, hệ thống mạch bảo vệ giúp 2 động cơ chạy trơn tru, đảo chiều nhẹ nhàng, tránh các sự cố về điện
  • Nếu cần nhiều hơn 2 động cơ thì sao, bạn hoàn toàn có thể ghép chồng 2 shield motor này để có thể điều khiển tận 4 động cơ với đầy đủ các chức năng riêng biệt
  • Ngoài ra Shield Motor của chipfc còn cung cấp cho các bạn tối đa số đầu nối cho RC servo để bạn có thể dễ dàng thực hiện thêm những chức năng khác
  • Một số ứng dụng với Shield motor như: điều khiển động cơ xe đua, làm robot, làm máy, điều khiển step motor, cánh tay máy ...

Motor298ShieldTop.jpg

Đặc điểm

  • Điện thế hoạt động: mức logic hoạt động ở 5V giống Arduino, nguồn cho motor có domino kết nối riêng, từ 5-36V
  • Hoàn toàn tương thích Arduino
  • Gồm 4 nữa cầu H, Có thể điều khiển 2 động cơ thường hoặc 1 step motor
  • Có đèn báo hiệu tín hiệu điều khiển
  • Cảm biến dòng cho động cơ
  • Có tối đa 6 kênh điều khiển RC Servo
  • Có thể ghép nối tới 2 shield motor này lên Arduino, tất nhiên cần một vài điều chỉnh nhỏ sẽ nói ở phần sử dụng bên dưới
  • Có thể cấp nguồn cho Arduino bằng nguồn nuôi motor bằng cách đặt jump

Mô tả các chân kết nối

ShieldMotor298 Sodochan.jpg ShieldMotor298 Sodonguyenly.png

Kết nối chân tới Arduino
Thứ tự chân Tên gọi Loại Mô tả
1 Dir_Data Input Tín hiệu data của spi cho điều khiển hướng
2 Dir_Clk Input Tín hiệu clock cua spi cho điều khiển hướng
3 Dir_Latch Input Tín hiệu latch của spi cho điều khiển hướng
4 Dir_En Input Tín hiệu enable của spi cho điều khiển hướng
5 PWM A Input Tín hiệu điều xung cho motor kênh A
6 PWM B Input Tín hiệu điều xung cho motor kênh B
7 Sense A Output Tín hiệu giá trị cảm biến dòng điện của kênh A
8 Sense B Output Tín hiệu giá trị cảm biến dòng điện của kênh B

Kết nối chân ra nguồn và động cơ

Kết nối chân của domino
Thứ tự chân Tên gọi Loại Mô tả
1 MB1 Output Tín hiệu điều khiển motor B, kênh 1
2 MB2 Output Tín hiệu điều khiển motor B, kênh 2
3 GND Power Mức đất, dùng cho stepmotor có chân chung nối GND
4 MA1 Output Tín hiệu điều khiển motor A, kênh 1
5 MA2 Output Tín hiệu điều khiển motor A, kênh 2
6 + Power Nguồn cung cấp cho motor, nên từ 6.5-12 V
7 - Power Nguồn cung cấp cho motor, mức tín hiệu đất

Nếu bạn không dùng với Arduino thì có thể dùng shield motor này như một module driver để điều khiển động cơ, cách kết nối cũng khá đơn giản và thiết lập cũng dễ dàng. Trước tiên bạn hãy chỉnh lại mối hàn chỗ thiết lập chế độ là non-Arduino, hàn hàng rào chỗ còn trống để điều khiển qua hàng rào này. Thứ tự của các chân trên hàng rào được ghi trên mạch và có chức năng như sau:

Chân điều khiển khi không dùng với Arduino
Thứ tự chân Tên gọi Loại Mô tả
1 PWMA Input Tín hiệu điều xung motor A
2 DirA Input Tín hiệu điều khiển hướng motor A
3 PWMB Input Tín hiệu điều xung motor B
4 DirB Input Tín hiệu điều khiển hướng motor B
5 GND Power Mức nguồn đất
6 VCC Power Mức nguồn cung cấp cho ic, 5V

Sử dụng

Cách nối với bo Arduino đơn giản như sau

ShieldMotor ketnoiarduino.jpg 400px

Để sử dụng shield motor này với Arduino, đầu tiên bạn phải tải về thư viện mà chipfc đã chuẩn bị sẵn tại trang giới thiệu của sản phẩm. Sau đó bạn chép và giải nén tại thư mục libraries của Arduino, mở chương trình lên lại và sử dụng.

Để tham khảo các chức năng hoạt động, bạn có thể mở từng ví dụ trong mục example của thư viện shield motor này

Chương trình 1: DC Motor

400px

  • Kết nối Shield Motor với Arduino
  • Kết nối động cơ với Shield
  • Cấp nguồn cho Shield, trước khi cấp nguồn nhớ chú ý jump Vin, khi jump này nối nghĩa là nguồn nuôi động cơ cuãng là nguồn nuôi arduino, nếu không nối jump thì nguồn cho động cơ và nguồn cho arduino riêng biệt (nên tách riêng như vậy)
  • Nạp chương trình test motor, trong đó có một số hàm sau:
    • Hàm khởi tạo CFC_DCMotor(uint8_t motornum, uint8_t pwmpin) khởi tạo motor, trong đó

_ motornum là thứ tự motor, trên mỗi Shield có 2 cổng để gắn động cơ _ pwmpin là chân điều xung cho động cơ, motor 1 mặc định là D13 và motor 2 mặc định là D3

CFC_DCMotor motor1(1, 11); // Motor 1, PWMpin = D11
    • Hàm khỏi tạo CFC_DCMotor(uint8_t motornum, uint8_t pwmpin, uint8_t analogpin) khỏi tạo motor, tương tự như trên nhưng có thêm chân cho cảm biến dòng khai báo tại uint8_t analogpin
CFC_DCMotor motor1(1, 11,A0); // Motor 1, PWMpin = D11, sensor pin = A0
    • Hàm chạy void run(uint8_t) để cho phép motor chạy, thông số truyền vào là:
      • FORWARD tiến
      • BACKWARD lui
      • BRAKE thắng
      • RELEASE thả
motor1.run(FORWARD);
motor1.run(BACKWARD);
motor1.run(BRAKE);
motor1.run(RELEASE);
    • Hàm void setSpeed(uint8_t) để set tốc độ cho motor, có giá trị từ 0->255
motor1.setSpeed(255);

Chương trình 2: RC Servo

400px

  • Kết nối Shield Motor với Arduino
  • Kết nối động cơ servo với Shield, trên shield có 6 header để có thể cắm tối đa 6 động cơ, thông thường chúng ta chỉ sử dụng 4 servo và để dành 2 vị trí cho điều khiển motor.
  • Cấp nguồn cho Shield, trước khi cấp nguồn nhớ chú ý jump Vin, khi jump này nối nghĩa là nguồn nuôi động cơ cuãng là nguồn nuôi arduino, nếu không nối jump thì nguồn cho động cơ và nguồn cho arduino riêng biệt (nên tách riêng như vậy)
  • Nạp chương trình servo test để kiểm tra, trong đó có thể có một số hàm sau:
    • Khởi tạo đối tượng Servo
Servo servo1;
Servo servo2;
    • Hàm uint8_t attach(int pin) để gắn chân Arduino nào sử dụng với servo này
    • Hoặc có thể dùng hàm uint8_t attach(int pin, int min, int max) cũng tương tự như trên nhưng đồng thời đặt giá trị tối đa và tối thiểu cho servo, rất hữu ích khi cần chặn hành trình của servo
servo1.attach(5);
servo2.attach(6, 70,160); // giới hạn góc từ 70 tới 160 độ
    • Hàm void write(int value) để xuất giá trị ra servo, nếu giá trị value dưới 200 thì coi là giá trị góc, nếu trên 200 thì coi là giá trị xung rộng theo micro giây
    • Hoặc dùng hàm void writeMicroseconds(int value) nếu cần xuất ra giá trị theo xung micro giây
servo1.write(45);
    • Một số hàm khác như void detach() dùng khi muốn thả nổi servo
    • Hàm bool attached() để hỏi xem servo có đang được gắn vào không
    • Hàm int read() trả về giá trị góc hiện tại
    • Hàm int readMicroseconds() trả về giá trị rộng xung hiện tại

Chương trình 3: StepMotor

400px

Đang cập nhật

Các rắc rối có thể bạn gặp phải

Không có đèn nào sáng => kiểm tra kết nối nguồn, xem có đảm bảo đủ điện áp hoạt động không, kiểm tra dây nối xem có bị hở mạch không

Động cơ dc và servo không quay đúng thứ tự => kiểm tra các chân config phía dưới bo.

Động cơ không quay nhưng code mẫu thì chạy được => kiểm tra lại chương trình

Giá trị sensor quá nhỏ hoặc thường xuyên không lấy được => cảm biến dòng có giá trị khi động cơ hoạt động, nên cho chu kì lấy mẫu nhỏ lại, hoặc muốn mịn hơn thì có thể chỉnh lại giá trị điện trở theo datasheet của driver ic L298

Tham khảo thêm

Bạn có thể làm xe đua lập trình chạy tự động với arduino và shield motor này

Bạn có thể làm robot với khả năng di chuyển và kết hợp với servo làm cánh tay máy

Điều khiển các loại động cơ ...