1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tìm hiểu cách dùng PIC để chạy motor bước

58 437 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 5,54 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong lần này, tôi sẽ cùng Bạn đi tìm tư liệu về ic lập trình họ PIC và tìm hiểu cách viết các chương trình nguồn dùng sẽ giới thiệu với Bạn nhiều địa chỉ Web có liên quan đến chủ đề

Trang 1

Cùng Bạn vào InterNet: Tìm hiểu cách dùng PIC để chạy motor bước

xem

Dẫn nhập,

Tôi làm nghề điện tử trên 40 năm, vừa làm thợ mở tiệm sửa máy, vừa mở trường dạy nghề, vừa viết sách kỹ thuật, do vậy tư liệu kỹ thuật đối với tôi rất cần yếu, nhớ lại lúc trước, khi muốn tập trung tư liệu cho một đề tài, tôi phải mất rất nhiều thời gian, lại phải nhờ công sức của bạn bè khắp nơi, tốn rất nhiều tiền bạc mới có Còn bây giờ thời đại của Internet, trên đó tích gốp vô số thông tin kỹ thuật từ đơn giản cho đến tận cao siêu, nhiều không kể siết, và với ý niệm "thông tin là của chung, mọi người cùng hưởng", với Internet chúng ta có thể trong một khoảng thời gian ngắn là

đã lấy đủ thông tin liên quan đến chủ đề mà mình muốn tìm, muốn tập trung cho công việc muốn làm trước mắt, thật tiện lợi vô cùng.

Trong lần này, tôi sẽ cùng Bạn đi tìm tư liệu về ic lập trình

họ PIC và tìm hiểu cách viết các chương trình nguồn dùng

sẽ giới thiệu với Bạn nhiều địa chỉ Web có liên quan đến chủ

đề PIC để Bạn tham khảo khi cần, mong bài viết sẽ có ích với nhiều Bạn (VKH).

Trang 2

Giới thiệu trang Web

Có một trang Web của người Nhật đã chuyển qua Anh ngữ (và nhiều thứ tiếng khác), viết về đề tài kỹ thuật điện tử rất hay, quá hay, trong trang Web này, Bạn

có thể tìm thấy một mãnh chuyên viết về PIC, dành cho người mới làm quen với PIC, cách viết, cách trình bày, bố cục đi từ dễ đến khó rất rõ ràng dễ hiểu Tôi muốn giời thiệu với Bạn trang Web này

Bạn Click vào đây để mở trang Web nói về bộ môn điện tử của người Nhật (Bản chữ Anh)

Khi vào trang Web này, Bạn sẽ thấy bản đề mục như hình sau, trong đó có 2 mục liên quan đến chủ đề PIC

Trang 3

Bạn hãy vào 2 mục:

Guide to use the PIC (giới thiệu cách dùng ic PIC)

PIC Circuit Gallery (Các ứng dụng của ic PIC)

Tôi sẽ dùng tư liệu có trong 2 mục này và kết hợp thêm một số tư liệu của các trang Web khác và hiểu biết của chính mình để tìm hiểu về chủ đề motor bước hay còn gọi là motor bộ tiến Do bài viết ở mức phổ quát nên tôi chọn cách viết bình dị phù hợp cho nhiều Bạn mới làm quen với PIC

Khái quát về PIC

PIC là gì?

PIC(Peripheral Interface Controller) là nhóm các IC dùng để chấp hành câu

lệnh điều khiển theo các chương trình đã có trong bộ nhớ Bộ nhớ và CPU có thể xem như bộ óc của máy và PIC là các hệ thần kinh dùng để chấp hành các chương trình đã có trong bộ nhớ

Để cụ thể chúng ta sẽ đơn cử một ic PIC dùng để phân tích, đó là ic PIC16F84AKhi trên tay Bạn có một ic PIC, 3 điều Bạn cần hiểu về nó là:

(1) Sơ đồ chân và công dụng của các chân

(2) Sơ đồ chức năng cho thấy cấu trúc bên trong và sự vận hành của nó

(3) Sơ đồ tổ chức của các loại bộ nhớ, nhất là các thanh nhớ đặc dụng

(1) Sơ đồ chân của IC sẽ cho Bạn những hiểu biết về cấu trúc mạch điện, quen gọi là phần cứng

Trang 4

Về các sơ đồ mạch điện dùng ic vi điều kiển họ PIC, nói chung rất đơn giản Bạn chú ý đến việc cấp nguồn, việc gắn thạch anh định tần và chọn định kiểu reset Tất cả các lệnh xuất nhập bit dùng cho chức năng điều khiển đều cho thực hiện trên các cảng Ở ic PIC16F84A có 2 cảng: Cảng A có 5 chân và cảng B có 8 chân Do đó muốn sử dụng các ic vi điều khiển (dù cho đối với họ nào đi nữa) thì điều đầu tiên là Bạn phải hiểu rõ hoạt động của các bến cảng của ic đó Ở đây chúng ta sẽ nói đến 2 cảng của PIC16F84A, cảng A và cảng B.

Bạn xem một sơ đồ kinh điển dùng ic PIC16F84A (dùng điều khiển 8 Led

trên cảng B)

Trang 5

Hình vẽ cho thấy:

* Chân 5 nối masse, chân 14 nối nguồn Nguồn 5V được tạo ra từ ic ổn áp 7805

* Chân 15, chân 16 gắn thạch anh định tần (tần số thạch anh là 10MHz)

* Chân 4, chân reset cho nối lên mức áp cao, vậy sơ đồ này dùng mạch reset nội

* Các cảng:

+ Trên cảng A gắn 5 nút nhấn chọn mode với 5 điện trở treo áp

+ Trên cảng B gắn 8 Led biểu hiện trạng thái bit trên cảng B với 8 điện trở hạn dòng, Led sáng với bit 0 và tắt với bit 1

Chỉ với mạch điện này, Bạn đã có thể dùng câu lệnh (35 câu lệnh, xem phần dưới, trình bày 35 câu lệnh dùng để viết các chương trình nguồn chạy các ic PIC ) để tạo ra các trạng thái nhấp nháy của 8 Led theo ý muốn của Bạn, Bạn có thể chọn các kiểu nhấp nháy theo các nút nhấn gắn trên cảng A

(2) Nhìn sơ đồ chức năng, Bạn sẽ hiểu được các trình thức hoạt động của IC

Trang 6

Giải thích khái quát về sơ đồ khối:

Flash Program Memory có dung lượng 1024 thanh nhớ, loại rộng 14 bit

(1Kx14) Ở đây Bạn cất giữ các mã lệnh của chương trình nguồn Các mã lệnh được truy cập theo mã địa chỉ có trong thanh ghi PC (Program Counter) Mã lệnh xuất ra trên thanh ghi Instruction Register

Thanh ghi Program Counter dùng ghi các địa chỉ của mã lệnh của bộ nhớ

Flash ROM Trong hoạt động, khi dùng lệnh nhẩy đến các chương trình con, thì địa chỉ hiện tại sẽ được tạm thời cho cất giữ trong các thanh ghi ngăn xếp, ở đây chiều xâu ngăn xếp chỉ có 8 lớp (8 Level Stack)

Ngăn xếp 8 Level Stack dùng lưu giữ các mã địa chỉ của chương trình chính

khi trong chương trình có dùng lệnh nhẩy Địa chỉ cất vào ngăn xếp có thể hiểu như dùng lệnh Push và địa chỉ lấy ra từ ngăn xếp có thể hiểu như dùng lệnh Pop

Instruction Register là thanh ghi mã lệnh, ở ngả ra, mã lệnh có thể chuyển đến

khối giải mã Instruction Decode & Control để tạo ra lệnh điều khiển Hay chuyển

Trang 7

đến khối xử lý địa chỉ đa kênh Address Multiplex để truy cập các thanh nhớ

trong bộ nhớ RAM (File Register)

Instruction Decode & Control là khối giải mã, xác định tính năng điều khiển trong câu

lệnh, nó tác dụng vào khối định trạng thái cho IC Khối này gồm có các chức năng:

Power-up Timer, Oscillator Start-Power-up Timer, Power-on Reset, Watchdog Timer

Power-up Timer dùng kích hoạt IC theo đồng hồ Timer.

Oscillator Start-up Timer dùng kích hoạt mạch dao động theo đồng hồ Timer.

Power-on Reset dùng “phục nguyên” các thanh ghi trong ic PIC khi nó mới

được cấp nguồn

Watchdog Timer dùng vào ra mode “Chó giữ nhà” theo đồng hồ Timer, một tính

năng dùng để tiết kiệm điện

Timing Generation là khối tạo ra xung nhịp chính, tần số của xung nhịp thường

định theo thạch anh PIC16F84A có thể hoạt động với xung nhịp 20MHz

Đồng hồ Timer 0 (TMR0) dùng một thanh đếm 8 bit để tạo ra chức năng điều

khiển theo thời gian Nó có thể đếm tối đa 256 xung nhịp, khi thanh đếm đầy, bit báo tràn sẽ chuyển lên mức 1

Các bến cảng I/O Port (gồm Port A có 5 chân và Port B có 8 chân) dùng xuất

nhập dữ liệu Nhiều chân còn có tính đa nhiệm (một chân mà làm nhiều nhiệm vụ), nên ngoài công năng xuất nhập dữ liệu nó còn có các công năng khác Như công năng nhập xung đếm trên chân RA4/TOCKI, công năng ngắt trên chân RB0/INT…

Bộ nhớ dữ liệu EEPROM Data Memory, đây là bộ nhớ xóa ghi được trên 1 triệu

lần, EEPROM có 64 thanh nhớ, với độ rộng 8 bit (1 byte) Để truy cập dữ liệu trong các thanh nhớ, mã địa chỉ sẽ chuyển vào thanh ghi EEADR và dữ liệu xuất nhập trên thanh ghi EEDATA

Bộ nhớ RAM File Register, đây là bộ nhớ RAM có 68 thanh nhớ, với độ rộng 8 bit, trong đó có 12 thanh nhớ đặc dụng (SFR, Special Function Register), các

thanh nhớ còn lại được dùng làm thanh nhớ phổ dụng (GPR, General Purpose Register) Các thanh nhớ đặc dụng xác định hoạt động của IC, các thanh nhớ phổ dụng dùng làm thanh nhớ tạm Khi IC mất nguồn, các dữ liệu trong các thanh nhớ RAM đều bị xóa sạch Người ta truy cập dữ liệu trong các thanh nhớ của RAM với bó nối mã địa chỉ RAM Addr (7 đường) và xuất nhập dữ liệu trên

bó nối Data Bus (8 đường)

Thanh ghi FSR (File Select Register) dùng truy tìm dữ liệu theo mã địa chỉ gián

tiếp (Indirect Address), dùng bó nối Indirect Addr (7 đường)

Thanh ghi STATUS (Status Register) dùng chọn định các điều kiện làm việc

cho IC (Thanh ghi trạng thái này rất thường dùng)

Trang 8

MUX (Multiplex) là khối xử lý đa nhiệm, nó cung cấp mã cho khối tính toán

ALU

ALU (Arithmetic & Logic Unit) là khối thực hiện các phép toán số học và logic

Không có bộ phận này, IC không được gọi là IC máy tính

Thanh ghi W reg (Work Register) là thanh ghi công tác (một thanh ghi cực kỳ

quan trọng của PIC), nó cất giữ các kết quả của khối toán ALU

(3) Bạn phải hiểu rõ công năng của các bộ nhớ, nhất là hiểu rõ các thanh nhớ đặc dụng

Trang 9

Các thanh nhớ của bộ nhớ File Register của RAM (Random Access Memory)

Ở đây, người ta dùng cách chuyển dãi nhớ ( chuyển bank) cho bộ nhớ này Mỗi dãi nhớ có dung lượng là 80 byte (80 thanh nhớ với mã địa chỉ là 00h đến 4fh) Trong IC vi điều khiển PIC16F84A có 2 dãi nhớ (có 2 Bank, bank0 và bank1) Bộ nhớ này chia ra làm 2 phần:

Ở phần đầu, người ta lấy 12 byte (tức 12 thanh nhớ có địa chỉ từ 00h đến 0bh) của mỗi dãi dùng làm các thanh nhớ đặc dụng (SFR, Special Function Register)

và dùng nó để đặt bit 0/1 xác định các trạng thái vận hành của PIC Định điều kiện cho việc xuất nhập trên các bến cảng và còn định các điều kiện khác nữa

Có 16 thanh ghi khác nhau trong vùng chứa các thanh ghi đặc dụng (11 thanh trong bank0 và 5 thanh trong bank1) Nội dung trong mỗi thanh ghi này dùng quản lý sự vận hành của PIC Mặc dù có tổng cộng 24 thanh ghi lưu trữ (file register), nhưng 7 trong chúng nằm chung trong cả hai bank

Còn lại 68 byte (tức 68 thanh nhớ, có địa chỉ từ 0ch đến 4fh), từ byte thứ 13 trở lên, được gọi là các thanh ghi phổ dụng (GPR, General Purpose Register), nó được dùng như các thanh nhớ tam thời dùng ghi các kết quả, các dữ liệu khi chương trình đang chạy

Nội dung ghi trong các thanh ghi phổ dụng GPR đều giống nhau trong cả hai dãi, do vậy việc dùng bit để chuyển bank0 hay bank1 cũng chỉ dùng được có 68 byte mà thôi (tức có 68 thanh nhớ thôi) Chúng ta biết, nội dung trong các thanh ghi phổ dụng sẽ bị xóa hết khi IC không được cấp điện Với các thanh ghi này,

số lần xóa ghi là không hạn chế

Mỗi thanh nhớ đặc dụng SFR đều có các công năng chuyên dùng như sau:

INDF: Data memory contents by indirect addressing Nội dung dữ liệu trong

bộ nhớ xác định theo địa chỉ gián tiếp

TMR0: Timer counter Thanh đếm của 8 bit của đồng hồ Timer0.

PCL: Low order 8 bits of program counter 8 bit thấp trong thanh ghi Program

counter

STATUS: Flag of calculation result Các bit cờ dùng cho các phép toán và

chuyển bank

FSR: Indirect data memory address pointer Thanh ghi con trỏ chỉ dữ liệu

trong bộ nhớ theo mã địa chỉ gián tiếp

PORT A: PORT A DATA I/O Gồm 5 bit thấp dùng xác lập trạng thái bit trên bến

Trang 10

EEDR: Address for EEPROM Thanh ghi địa chỉ dùng cho bộ nhớ EEPROM.

PCLATH: Write buffer for upper 5 bits of the program counter Thanh ghi

đệm dùng ghi 5 bit cao dùng cho thanh ghi con trỏ PC

INTCON: Interruption control Gồm 8 bit dùng xác định tính năng ngắt.

OPTIN_REG: Mode set Gồm 8 bit dùng khai báo các mode cho PIC.

TRISA: Mode set for PORTA Thanh ghi 5 bit dùng xác định hướng chuyển dữ

liệu xuất hay nhập cho Port A

TRISB: Mode set for PORTB Thanh ghi 8 bit dùng xác định hướng dữ liệu

xuất hay nhập cho Port B

EECON1: Control Register for EEPROM Thanh ghi điều khiển việc ghi đọc

Sau đây là bảng ghi các thanh ghi đặc dụng: Bạn nên in ra để trước mặt

khi viết các chương trình nguồn cho PIC

Trang 11

Bây giờ hãy nói đến

cách dùng 35 câu lệnh của ic vi điều khiển

họ PIC.

IC vi điều khiển họ PIC chỉ có 35 câu lệnh, muốn sử dụng ic PIC Bạn phải quen cách dùng các câu lệnh này, sau đâu là cách dùng và ý nghĩa của từng cầu lệnh.Trước hết hãy hiểu rõ một số qui định dùng trong câu lệnh

Trang 12

Trong các câu lệnh, ký tự f dùng để chỉ địa chỉ của các thanh nhớ, ký tự W là chỉ thanh ghi tích lũy Ký tự b có các số 0, 1, 2 ,3 ,4 ,5 ,6 ,7 dùng chỉ vị trí bit trong thanh ghi mà Bạn muốn chọn Ký tự k là một trị hằng, cũng có thể là tên nhãn Dùng ký tự x ý muốn nói ở đó lấy 0 hay 1 cũng được Dùng ký tự d để chỉ việc chọn thanh f hay thanh W để giữ kết quả, chọn d = 0 cho kết quả giữ trong thanh W, chọn d =1 cho kết quả giữ trong thanh f Chữ PC là thanh ghi dùng để đếm lệnh của chương trình Chữ TO là bit tràn và chữ PD là bit dùng

giảm công suất khi cho ic vào mode tắt chờ

Dưới đây là bảng tra nhanh 35 câu lệnh dùng viết các

(Bạn nên in ra và để bảng này trước mặt mỗi khi viết các chương trình nguồn cho ic PIC)

Trang 13

Tìm hiểu cú pháp và ý nghĩa của từng câu lệnh:

(Tôi soạn lại 35 lệnh này theo hình thức của trang Web Nhật, chú thích bằng chữ Việt để Bạn dễ tham khảo)

Các câu lệnh được trình bày trong khung theo các phân mục như hình sau:

Trang 14

* Tên lệnh: Viết tắt, đó là các từ khóa đã qui định cho lệnh.

* Giải thích tên lệnh: Chú thích ngắn gọn ý nghĩa của câu lệnh

* Cú pháp: Cách viết câu lệnh phần tên nhãn ở trước có khi không có, tên lệnh

và các toán hạng

* Toán hạng: Mục này cho thấy các giá trị làm việc của các toán hạng

* Tác dụng bit cờ: Cho thấy tác dụng của lệnh có ảnh hưởng vào các bit cờ nào

* Chu kỳ lệnh: Lệnh được thực hiện nhanh hay chậm, lệnh dùng mấy chu kỳ lệnh để làm xong

(Bạn xem 35 câu lệnh viết cho PIC ở phần phụ lục)

Trang 15

Hãy tìm hiểu ý nghĩa của từng bit trong thanh ghi STATUS (có địa chỉ 03h, 83h).

Bit 7 ( IRP): Register Bank Select bit (used for indirect addressing).

Bit dùng chọn dãi nhớ Bit IRP không dùng với PIC16F84A Sau lệnh Reset nó xác lập ở mức 0

Bit 6-5 (RP1-RP0): Register Bank Select bits (used for direct addressing).

Các bit dùng để chọn dãi nhớ Bank 0 hay Bank 1

Khi xác lập trị 00 là chọn các thanh nhớ ở dãi 0 (Bank 0 có địa chỉ 00h – 7fh).Khi xác lập trị 01 là chọn các thanh nhớ ở dãi 1 (Bank 1 có địa chỉ 80h – ffh)

Mỗi dãi nhớ có 128 byte (thanh nhớ) Trong PIC16F84A chỉ dùng bit RP0, bit RP1 luôn đặt ở BIT 0

BIT 4 (/TO: Time-out bit).

Bit báo thoát ra trạng thái Power-up, trạng thái Watch-dog, trạng thái Sleep

Được xác lập ở mức 1, sau Power-up, dùng lệnh CLRWDT hay lệnh SLEEP.Được xác lập ở mức 0, Khi thoát ra trạng thái WDT

Bit 3 (/PD): Power-down bit

Bit báo trạng thái giảm mức nguồn

Được xác lập ở mức 1, sau Power-down hay sau lệnh CLRWDT

Được xác lập ở mức 0, sau chấp hành câu lệnh SLEEP

Bit 2 (Z): Zero bit

Bit báo trạng thái 0

Được xác lập ở mức 1, khi ở khối toán cho kết quả là 0

Được xác lập ở mức 0, khi kết quả ở khối toán khác 0

Bit 1 (DC): Digit carry/-borrow bit (for ADDWF and ADDLW instructions)

(For borrow the polarity is reversed)

Bit xác lập trạng thái tràn trong phép toán cộng số (Trong câu lệnh ADDWF và ADDLW) hay số mượn trong phép toán trừ SỐ

Được xác lập ở mức 1, khi xuất hiện tràn số ở bit thấp thứ 4

Được xác lập ở mức 0, khi không có số tràn ở bit thấp thứ 4

Bit 0 (C): Carry/-borrow bit (for ADDWF and ADDLW instructions)

Trang 16

Bit xác lập trạng thái tràn trong phép toán cộng (Trong câu lệnh ADDWF và ADDLW) hay số mượn trong phép toán trừ.

Được xác lập ở mức 1, khi xuất hiện tràn số ở thanh ghi

Được xác lập ở mức 0, khi không có số tràn ở thanh ghi

Từ thanh ghi Status Bạn thấy bit RP1, RP0 chọn định Bank, vậy khi muốn làm việc với Bank nào trước hết Bạn phải set ở 2 bit này

Với PIC, việc chọn tính Input / Output cho các chân của cảng portA và portB Bạn phải khai báo trước, Cách làm như sau (Bạn xem hình)

Chọn định tính Input/Output cho các cảng RA và cảng RB:

Hình vẽ cho thấy trong PIC người ta dùng thanh ghi đặc dụng TRISA và TRISB (đặt trong bank1) để chỉ định tính Input/Output cho portA và portB (lại nằm trong bank0) Do vậy khi muốn đặt bit 1 hay 0 cho thanh TRISA, hay TRISB Bạn phải set ở 2 bit RP1, RP0 trong thanh ghi đặc dụng Status Sau khi chọn định xong 2 thanh TRISA và TRISB, và Bạn phải trở lại bank0 để làm việc với portA

và portB Do vậy, khởi đầu ở các chương trình của PIC, Bạn thường gặp các câu lệnh như sau:

Trang 17

;**************** Initial Process *********************init

bsf status,rp0 ; Đặt 1 vào bit rp0 của thanh Status, làm vậy

movlw b'10000000' ; Chuyển số nhị phân '10000000' vào W, không

* Bạn thấy với PIC, trước hết Bạn thường phải vào Bank1 để định nghĩa chân vào (Input) chân ra (Output) cho các cảng PortA hay PortB Trong 8 bit của thanh trisa và trisb, nếu Bạn đặt 0 là ngả ra và nếu đặt 1 là ngả vào

movlw b'00000101' ;Set PORTA initial value (Chuyển trị '0000010' vào W)

movwf porta ;Write PORTA (Chuyển trị trong W vào cảng porta)

bsf portb,rb7 ;Set RB7 = 1 (Đặt bit 1 vào rb7 của cảng portb)

btfsc portb,rb5 ;RB5 = 0 ? (Xét bit rb5 của portb để nhẩy)

Trang 18

goto $-1 ;No Wait (quay lại dòng lệnh trên

để xét tiếp)

Đoạn chương trình trên cho thấy cách khởi tạo các tính IN/OUT cho các chân của cảng portA và cảng portB

Ứng dụng: Viết chương trình nguồn cho motor bước

Cấu tạo của motor bước: Bạn xem hình

Motor bước lấy bước góc làm đơn vị tính (các loại motor khác lấy số vòng quay

làm đơn vị tính), motor bước gồm có 2 phần: Phần tĩnh (Stator) gồm các cuộn

dây quấn trên các trụ từ cực khi các cuộn dây này nhận dòng xung nó sẽ trở

thành các cực nam châm điện và tương tác với Phần quay (Rotor) là nam

châm vĩnh cữu và sẽ tạo ra chuyển động quay Đặc tính là phần quay, quay mỗi nhịp chỉ nhíc 1 bước, đo đó góc của bước là một tham số của motor bước

Trang 19

Sự vận hành của motor bước: Bạn thấy khi xung cấp cho cuộn dây, cuộn dây

sẽ có từ tính và tạo ra tương tác với phần quay (vốn là một nam châm vĩnh cữu)

để tạo ra chuyển động quay, mỗi lần chỉ quay một bước

Các cách đấu dây của một motor bước:

Hình vẽ trên cho thấy cách đấu các cuộn dây của motor bước Bạn có thể cho đấu ra 8 dây, 6 dây, 5 dây hay 4 dây

Trang 20

Trình bày cách tháo một motor bước (gồm 12 bước): Nhìn các hình động

(12 hình) Bạn thấy rõ các thành phần cấu tạo của một motor bước

Tìm hiểu đề tài này trong trang Web của Nhật Chúng ta trở lại thử phân

tích một bài ứng dụng của PIC16F84A trên trang Web của Nhật Dùng PIC16F84A để điều khiển một motor bước với 3 nút nhấn: STOP, LEFT và RIGHT

và một biến trở chỉnh tốc

Trang 21

Nguyên lý vận hành của motor bước:

Trong bài viết, tác giả dùng motor bước 2 pha (4 cuộn dây) với phần quay là một từ cực tạo từ nam châm vĩnh cữu và cho xung cấp dòng cho các cuộn dây trên phần tĩnh và tạo ra chuyển động quay, góc bước là 90 độ (Bạn xem hình)

Trang 22

Dùng hình động để trình bày nguyên lý vận hành của một motor bước có góc bước là 90 độ.

Trang 23

Với Motor bước có góc bước 7.5 độ, chúng ta sẽ phải cung cấp tín hiệu cho

các cuộn dây 2 pha theo qui trình sau (Đoạn chương trình sẽ cấp tín hiệu theo bảng này cho motor bước):

Trang 24

Sơ đồ mạch điện và bản mạch bố trí linh kện:

Giải thích sơ đồ mạch điện:

Phần mạch cơ bản: Chân 5 cho nối masse để lấy dòng (dòng điện tử chảy vào

IC qua chân số 5), chân 14 nối với nguồn 5V Đường nguồn 5V lấy ra từ một ic

ổn áp 78L05 Khi dùng ic ổn áp họ 78xx, Bạn nhớ gắn tụ lọc nhỏ ở dập nhỏ ở ngả ra để dập hiện tượng tự dao động Chân 15, 16 mắc thạch anh định tần 4MHz, vậy tần số xung nhịp trong PIC sẽ là 1MHz (tức 1us) Mạch điều khiển thực hiện trên các cảng portA và portB Chúng ta thấy c1 3 nhóm mạch:

* Nhóm các chân của portA dùng cấp xung cho các transistor phức hợp TR2, TR3, TR4, TR5 để cấp dòng cho các cuộn dây làm quay motor, trên các cuộn dây gắn các diode dập các xung ứng biên cao, phản hồi từ các cuộn dây để bảo

vệ các transistor trong mạch

* Nhóm các chân trên portB (chân 6, 7, 8) gắn các nút chỉnh để chọn mode

* Hai chân 11, 13 của portB dùng điều khiển mạch nạp xả của tụ C1 qua điện trở R4 và VR1 để làm mạch chỉnh tốc

Trang 25

Giải thích nguyên lý vận hành của mạch:

Mạch cấp dòng cho các cuộn dây và mạch điều khiển quá trình nạp xả của tụ để chính tốc

Khi chân RAx lên mức áp cao (bit 1), chân B của transistor phức hợp được cấp dòng IB và transistor dẫn điện, có dòng IB sẽ có dòng chảy ra trên chân C (dòng IC), dòng IC qua cuộn dây trong motor và biến đó thành nam châm điện

để tương tác với phần quay, phần quay vốn là một nam châm vĩnh cữu Khi chân RAx xuống mức áp thấp (bit 0), transistor ngưng dẫn, nó cắt dòng qua các cuộn dây, ngay lúc này từ 2 đầu cuộn dây phát ra điện áp ứng nghịch biên cao,

và diode sẽ hấp thu dòng và tạo tác dụng dập biên nhờ tính ghim áp của nó

Khi chân RB7 còn ở mức áp thấp (L, bit 0), transistor ngưng dẫn, nó tạo điều kiện cho tụ C nạp dòng, dòng nạp chảy qua điện trở R, và chúng ta biết khi tụ nạp thì mức áp trên tụ sẽ tăng cao dần, chỉ khi mức áp trên tụ lên đến mức đủ cao (H), nó sẽ tác động vào chân RB5 (Đặt chân RB5 lên mức cao), lúc này chương trình sẽ cho đặt chân RB7 lên mức áp cao (H, bit 1), vậy transistor sẽ dẫn điện, nó cho tụ xả điện nhanh và rồi chân RB7 lại chuyển xuống mức áp

Trang 26

thấp (L) để qui trình trên được lập lại Vậy với điện trở R có trị lớn thì mức áp trên tụ sẽ lên chậm, điều này cho phép chúng ta có thể làm thay đổi tốc độ quay của motor bằng cách chỉnh điện trở R và kiểm tra bit 1 vào trên chân RB5.

Giải thích các linh kiện dùng trong mạch:

Tôi dùng hình động để giải thích nhanh các linh kiện dùng trong mạch, cách trình bày này ít chiếm chổ trong bài viết, không gây cảm giác là bài viết dài lê thê, đọc thấy mệt, phải không?

Phân tích cách viết chương trình nguồn dùng để điều khiển

Đây là chương trình nguồn

dùng điều khiển motor bước theo sơ đồ mạch điện bên trên.

Trang 27

config _hs_osc & _wdt_off & _pwrte_on & _cp_off

;**************** Label Definition ********************

;0=stop 1=right 2=left

count2 ;Wait counter(for 1msec)

clrf intcon ;Clear Interruption reg

;**************** Initial Process *********************init

bsf status,rp0 ;Change to Bank1 clrf trisa ;Set PORTA all OUT

movwf trisb ;Set PORTB movlw b'10000000' ;RBPU=1 Pull up not use

bcf status,rp0 ;Change to Bank0 clrf mode ;Set mode = stop clrf count1 ;Clear counter clrf count2 ;Clear counter movlw b'00000101' ;Set PORTA initial value movwf porta ;Write PORTA bsf portb,rb7 ;Set RB7 = 1 btfsc portb,rb5 ;RB5 = 0 ? goto $-1 ;No Wait

start

;************* Check switch condition ***************** btfsc portb,rb1 ;RB1(stop key) = ON ?

clrf mode ;Yes Set stop mode goto drive ;No Jump to motor drivecheck1

btfsc portb,rb2 ;RB2(right key) = ON ?

Trang 28

goto check2 ;No Next movlw d'1' ;Yes Set right mode

goto drive ;No Jump to motor drivecheck2

btfsc portb,rb0 ;RB0(left key) = ON ? goto drive ;No Jump to motor drive movlw d'2' ;Yes Set left mode

;******************** Motor drive *********************drive

bz start ;mode = stop bsf portb,rb7 ;Set RB7 = 1

movlw d'5' ;Set loop count(5msec)

decfsz count1,f ;count - 1 = 0 ?

goto drive_end ;Jump to PORTA writedrive1

goto drive_end ;Jump to PORTA write

; -drive2

movf porta,w ;Read PORTA

sublw d'1' ;Right ?

bz drive3 ;Yes Right

goto drive_end ;Jump to PORTA writedrive3

Trang 29

goto drive_end ;Jump to PORTA write

; -drive4

movf porta,w ;Read PORTA

sublw d'1' ;Right ?

bz drive5 ;Yes Right

goto drive_end ;Jump to PORTA writedrive5

goto drive_end ;Jump to PORTA write

; -drive6

movf porta,w ;Read PORTA

sublw d'1' ;Right ?

bz drive7 ;Yes Right

goto drive_end ;Jump to PORTA writedrive7

goto drive_end ;Jump to PORTA write

; -drive8

drive_end

goto start ;Jump to start

;************* 1msec Timer Subroutine *****************timer

decfsz count2,f ;count - 1 = 0 ?

return ;Yes Count end

;********************************************************

;********************************************************

Ngày đăng: 25/10/2014, 22:09

HÌNH ẢNH LIÊN QUAN

Hình vẽ cho thấy trong PIC người ta dùng thanh ghi đặc dụng TRISA và TRISB  (đặt trong bank1) để chỉ định tính Input/Output cho portA và portB (lại nằm  trong bank0) - Tìm hiểu cách dùng PIC để chạy motor bước
Hình v ẽ cho thấy trong PIC người ta dùng thanh ghi đặc dụng TRISA và TRISB (đặt trong bank1) để chỉ định tính Input/Output cho portA và portB (lại nằm trong bank0) (Trang 16)
Hình vẽ trên cho thấy cách đấu các cuộn dây của motor bước. Bạn có thể cho  đấu ra 8 dây, 6 dây, 5 dây hay 4 dây. - Tìm hiểu cách dùng PIC để chạy motor bước
Hình v ẽ trên cho thấy cách đấu các cuộn dây của motor bước. Bạn có thể cho đấu ra 8 dây, 6 dây, 5 dây hay 4 dây (Trang 19)
Sơ đồ mạch điện và bản mạch bố trí linh kện: - Tìm hiểu cách dùng PIC để chạy motor bước
Sơ đồ m ạch điện và bản mạch bố trí linh kện: (Trang 24)

TỪ KHÓA LIÊN QUAN

w