# Máy, thiết bị và sản phẩm khác > Điện - Điện tử - Tự động hóa > Arduino >  Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - Arduino UNO R3

## CKD

*Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - Arduino UNO R3*

*Arduino UNO R3*
Được CKD đánh giá là bo Arduino chuẩn, là nền tảng của các phiên bản tiếp theo sau này. Các ngõ vào/ra được bố trí theo chuẩn và hầu như tương thích hoàn toàn với các shield. Người mới bắt đầu nên khởi động bằng bo này. Cấu hình, tính năng, giá thành rất phù hợp trong giai đoạn làm quen.

*Giới thiệu sơ lượt.*
Arduino UNO được phát triển trên nần core xử lý của Atmel là atmega328. Trên bo đã được tích hợp một số phần tử:
- USB - UART dùng để giao tiếp với máy tính thông qua chuẩn serial (chuẩn nối tiếp)
- Mạch điều khiển nguồn và ổn áp.
- Một số linh kiện ngoại vi cần thiết.

 

Từ khi ra đời đến giờ đã được nâng cấp qua 3 phiên bản, đó là chưa tính đến những bo tự tạo (biến thể của Arduino UNO) của các thành viên khi cùng tham gia vào cộng đồng Arduino. Các biến thể do người dùng tự tạo (DIY hoặc homemade) CKD sẽ giới thiệu sau nếu có time.
Các phiên bản R1 & R2 hiện nay hầu như không còn vì đã được thay thế bởi phiên bản R3. Vậy các phiên bản khác nhau ở điểm nào?
- Với phiên bản R1. USB - UART dùng chíp FTDI
- Với phiên bản R2. USB - UART dùng chíp atmega8 được lập trình thành bộ chuyển đổi USB - serial.
- Với phiên bản R3. USB - UART dùng chíp atmega16 được lập trình thành bộ chuyển đổi USB - serial.
Các cải tiến này nhằm mục đích giúp cho việc lập trình lại core xử lý chính (atmega328) nhanh chóng và ít lỗi hơn. Ngoài ra ở phiên bản R3 một số ngõ vào/ra đã được thay đổi đến vị trí phù hợp hơn. Giúp cho tính tương thích với các shield tốt hơn.

* Vi điều khiển
AVR atmega328

* Điện áp làm việc
5V

* Nguồn cấp
7-12V

* Nguồn cấp - giới hạn
6-12V

* Ngõ vào/ra số (digital I/O)
14, trong đó có 6 ngỏ ra PWM

* Ngõ vào tương tự (analog)
6, có thể dùng như ngõ vào số

* Dòng hạn mức ngõ vào/ra
40mA

* Dòng hạn mức ngõ 3.3V
50mA

* Bộ nhớ Flash
32kB đã dùng 0.5kB cho bootloader

* SRAM
2kB

* EEPROM
1kB

* Tần xố xung nhịp
16MHz



Sơ đồ và chức năng các ngõ vào/ra của atmega328 và tương ứng trên Arduino UNO R3


Xem thêm thông tin từ trang chủ Arduino UNO R3
Xem thêm các bài viết về Arduino
- Chuyên mục có các bài viết liên quan đến Arduino http://forum.cncprovn.com/forums/80-Arduino
- Bài viết DIY - Arduino LCD sheild
- Bài viết DIY - Arduino tiny board
- Bài viết Arduino - Mỗi ngày một ví dụ, từ dễ tới khó - Arduino là gì?

----------

anhcos, cuong, elkun24, hungdn, Mr.L, zentic

----------


## CKD

Kích thước tổng quát Arduino UNO R3


Sơ đồ Arduino UNO R3


Sơ đồ & mạch trên Egale arduino_Uno_Rev3-02-TH.zip
Sơ đồ PDF Arduino_Uno_Rev3-schematic.pdf

----------

anhcos, cuong, Mr.L, nguyenluu.13

----------


## anhcos

Chi tiết kỹ thuật thì mình không biết nhiều, nhưng với bo này, nếu dùng visual studio với addins arduino thì sẽ lập trình điều khiển nó với vài ba con step là được chứ CKD.
Chả biết bo R3 này có giá bán ở VN là bao nhiêu?

----------


## CKD

> Chi tiết kỹ thuật thì mình không biết nhiều, nhưng với bo này, nếu dùng visual studio với addins arduino thì sẽ lập trình điều khiển nó với vài ba con step là được chứ CKD.
> Chả biết bo R3 này có giá bán ở VN là bao nhiêu?


Mấy cái addin thì em không rỏ. Có cái em dùng Arduino IDE hay dùng luôn AVRStudio, CodeVision thì lập trình vô tư. Tất nhiên như đã đề cập Arduino IDE có nhiều ưu/khuyết, muốn tận dụng hết năng lực con atmega thì nhảy qua dùng AVRStudio hay CodeVision thì hay hơn.

Điều khiển cùng lúc mấy con step là sao a? Nó chỉ làm controller hay làm luôn chức năng driver?
- Controller thì nó có cái project GRBL.. max điều khiển lên tới 4axis, tích hợp G-Code intepreter. Trong dự án GRBL tụi coding nó chủ yếu dùng C, viết cho tương thích với Arduino. Nếu dùng thuần với Arduino thì không đạt được hiệu suất cũng như tốc độ làm việc như trong GRBL.
- Driver step full/haft thì chắc được 2 con lúc  :Big Grin: .

Nói chung thì em cũng chưa trải nghiệm nhiều. Mới làm sơ sơ mấy bài tập:
- Điều khiển I/O, analog.
- Kết nối UART
- Kết nối qua internet shield, làm web master hoặc slaver  :Big Grin: 
Mấy cái project đó phần lớn chạy tốc độ chậm, chủ yếu on/off, đo đạt. Gần đây nhất thì mới thử với PID mới thấy nhanh/chậm thế nào, thử luôn chức năng giả lập dùng ADC làm OSC chơi. Tần số lấy mẫu đạt khoảng vài kHz. Có thể gọi là FUN project  :Big Grin: 

Nói chung thì cộng đồng dùng Arduino khá là đông. Phần lớn dự án đều mang tính mở (open source) nên mới học, thì tiếp cận dễ. Không biết phải làm thế nào thì chỉ cần hỏi thầy google.com là có ngay bài tập mẫu, hoặc cùng ý tưởng. Cứ thể mà xem rồi thực nhiệm, rồi chỉnh sửa theo ý mình. Các tiện ích viết thêm chạy trên nền Windows cũng được chia sẻ khá nhiều. Không biết lập trình IDE, lập trình VB hay MATLAB bla bla.. vẫn có thể tìm ra được cái để dùng  :Big Grin: .

----------

anhcos, cuong

----------


## anhcos

Ý là dùng làm controller đó CKD, điều khiển vài con step, tốc độ không cao và một thời điểm cũng điều khiển tối đa có 3 con thôi thì chắc là đáp ứng được nhỉ.

Arduino IDE cho Microsoft Visual Studio ở đây rồi: 
http://playground.arduino.cc/Code/VisualStudio
http://www.visualmicro.com/

Vậy nên giao tiếp giữa PC và bo R3 này chắc không lo lắm nữa, chỉ cần lo phần chương trình cho con atomega kia mới mệt.

----------

anhxco

----------


## CKD

Chắc là được. Em thì chưa thử bao giờ.. nhưng mà tụi nó dùng chạy CNC, dù thấy không smoot như mấy cái soft trên PC, nhưng so với một số PSD đời cũ thì thấy cũng ổn. Nến nếu dùng để điều khiển mấy thiết bị chụp hình của anh chắc là được.

Có cái thằng visual thì tuyệt.. mà nó là bản thương mại mà.. nghèo sao chơi được a?
Mình thuộc nhóm sinh viên hay là thương mại nhỉ. Li săn chỉ có 29/99 bảng.

----------


## Tien Manh

Hóng tiếp các bài của cụ, trong lúc chờ hàng về  :Big Grin: . Em mua UNO, LENADO với mấy shield linh tinh như này. Theo cụ có cần mua gì nữa không. Con UNO có USB HID đúng không cụ, dự tính ban đầu là sẽ viết 1 vài thứ có dây dưa đến MACH3, Planet CNC.





Cái shield XBee này em không biết có tác dụng gì?


Có cái này cho vô cái hộp trông nguy hiểm không kém PLC  :Big Grin: 


Trong đám này sẽ nhặt một số hữu dụng, hay dùng như Relay, buzzer, joystick, cảm biết khoảng cách, đo nhiệt....

----------


## Tien Manh

> Chắc là được. Em thì chưa thử bao giờ.. nhưng mà tụi nó dùng chạy CNC, dù thấy không smoot như mấy cái soft trên PC, nhưng so với một số PSD đời cũ thì thấy cũng ổn. Nến nếu dùng để điều khiển mấy thiết bị chụp hình của anh chắc là được.


Máy in 3D nữa cụ ạ, có sẵn hết luôn. Giá cũng hạt rẻ. Mầy chán CNC em sẽ chuyển sang loại này. Găm được cả lố step kèm bánh răng chạy đai rồi  :Big Grin: .

----------


## hungdn

> Chắc là được. Em thì chưa thử bao giờ.. nhưng mà tụi nó dùng chạy CNC, dù thấy không smoot như mấy cái soft trên PC, nhưng so với một số PSD đời cũ thì thấy cũng ổn. Nến nếu dùng để điều khiển mấy thiết bị chụp hình của anh chắc là được.
> 
> Có cái thằng visual thì tuyệt.. mà nó là bản thương mại mà.. nghèo sao chơi được a?
> Mình thuộc nhóm sinh viên hay là thương mại nhỉ. Li săn chỉ có 29/99 bảng.


Bác có thể dùng VS bản Community... tất nhiên là miễn phí và full featured  :Smile: 
http://www.visualstudio.com/en-us/ne...munity-vs.aspx

----------


## CKD

3D printer & GRBL CNC nó giống giống nhau bác ạ.
Có mấy bác phát triển để chạy với cortex M3 gọi là TinyG thì phải, dạo này căng thẳng.. đầu óc chẵng nhớ gì  :Big Grin:

----------


## anhcos

> Bác có thể dùng VS bản Community... tất nhiên là miễn phí và full featured 
> http://www.visualstudio.com/en-us/ne...munity-vs.aspx


Ý bác CKD là cái VisualMicro kia kìa, chứ VS mấy bản mình xài không biết đã có xxxx chưa mà không bao giờ thấy nó hỏi lai sần.

Bo UNI R3 này tme bán 260k, giá quá tốt để vọc vẹo rồi.

----------


## nhatson

> 3D printer & GRBL CNC nó giống giống nhau bác ạ.
> Có mấy bác phát triển để chạy với cortex M3 gọi là TinyG thì phải, dạo này căng thẳng.. đầu óc chẵng nhớ gì


báo cáo là G2 ah, tinyg dùng xmega ah


https://github.com/synthetos/g2

----------


## cuong

Vậy hành trang là gồm những dụng cụ gì vậy bác CKD, tốn hết bi nhiêu lúa, mua ở mô, để em còn đu theo. Nghe là nổi máu rồi. Việc điều khiển driver step thì cần đọc những cái gì vậy bác

----------


## CKD

Để làm quen thì chỉ cần bo Arduino UNO là đủ.. thêm vài linh kiện lặt vặt.

Giá tầm >250K
Mình hay mua ở Thiên Minh http://tme.vn/Product.aspx?id=1628
hoặc http://hshop.vn/mach-arduino/board-arduino/arduino-uno

Các linh kiện khác có thể là
- đèn LED
- điện trở 470om
- bla lba

----------

cuong

----------


## cuong

Ai da. Nghe bảo cần mạch nạp cho con ic trên bo uno à bác, mà em cần đọc thứ gì cho việc điều khiển drive cho step môt vậy bác

----------


## cuong

Ai da. Nghe bảo cần mạch nạp cho con ic trên bo uno à bác, mà em cần đọc thứ gì cho việc điều khiển drive cho step moto vậy bác

----------


## trucnguyen

Ai bảo thế thì xúi dại rồi, không cần thêm bất cứ mạch nạp nào đâu bác ah, nó nạp bằng bootloader qua cồng ISCP của con VXL.
Nếu bác có 1 con VXL AVR328P trắng thì bác cũng có thể dùng 1 board UNO làm mạch nạp để download bootloader UNO co con VXL trắng kia. Rồi bác tự làm cái mạch vối con VXL kia + thạch anh 16MHz + vài cái tụ + nút nhấn + 1 mạch chuyển USB-SERIAL là được 1 board UNO made by tự tui.

Board UNO R3 bác có thể mua ở đây cho rẽ, khoảng 160 K hay 170K gì đó: http://dientuachau.com/page/index.ph...view&p_id=1107
Rẽ hơn nữa là loại này cũng bootloader UNO luôn  90K :  http://dientuachau.com/page/index.ph...view&p_id=1108 

2 cái này hoàn toàn như nhau, chỉ khác nhau ở chổ cái thằng mắc hơn dùng con AVR gì đó làm giao tiếp USB- SERIAL nên nó tự nhận dạng driver và COM port tự động (phải cài trước Arduino IDE). Còn cái rẽ hơn dùng 1 chip USB-Serial của Tàu , nên bác phải tự cài driver và khai báo COM port bằng tay trong Arduino IDE.

Arduino đúng là một công cụ lý tưởng để mọi người tiếp cận với VXL - em cũng mới a dua theo được hơn tháng, càng tìm hiểu càng thích. :Embarrassment:

----------

anhcos, mytho

----------


## trucnguyen

Tý nữa thì quên, 1 kinh nghiệm cho bác nào thích làm Board UNO made by tự tui, khi mua mạch chuyển USB-COM thì nhớ chọn loại có tín hiệu bắt tay DTS nhé rồi nối ngõ này vào chân RST của cổng ICSP thì mới tiện khi nạp chương trình. Không nên mua loại chỉ có ra 2 ngõ RX và TX vì nếu không thì phải bấm nút giữ RESET mỗi lần nạp thì hơi mệt.
Mà em nghĩ cũng không nên chế cháo làm gì, đi mua cái board 90K cho nhanh, con AVR328P trắng cũng 75K rồi.

----------

anhcos

----------


## anhcos

Chơi luôn con có cổng USB-SERIAL luôn cho tiện đi bác, dây usb-com to và dài hơn sợi usb nhiều, mình cũng nhảy vô ngâm cứu với ae. Mai mốt có kết quả sẽ sô hàng luôn.

----------


## CKD

Bản thân trên UNO đã có usb-serial rồi. Board arduino nano cũng giống như UNO, sau khi test thành công thì chơi arduino micro cho gọn và rẻ.
Thực ra với em, dùng mấy bo này để thí nghiệm cho dễ. Ok rồi thì làm lại pcb rồi mới chiến.

----------

cuong

----------


## trucnguyen

Em vừa download bootloader UNO cho con Arduino micro của em đó bác CKD, giờ thì con micro thành con UNO rồi.
Test thử phần addon UNO tự sinh code của MATLAB thì thấy OK.

----------


## jimmyli

có thể nạp bootloader từ arduino vs arduino không thì mua con atmega8 chế thành mạch nạp hoặc dùng cổng lpt máy bàn nạp cũng được  :Big Grin:  thiếu gì cách nạp, mua thêm 1 modul usb-rs232 để nạp firmware cho những ứng dụng k cần giao tiếp vs máy tính

----------


## Luyến

em đang ham hố board arduino này lập trình C cho VDK để điều khiển robot u dog công nghiêp.

----------

Tuấn

----------


## cuong

bác CKD bảo mỗi ngày một ví dụ, làm em mừng hụt, mua một mớ linh kiện và board về mà seach chả ra arduino điều khiển ac servor, tìm được một bài về stepmoto mà chưa có gì để test cả. các bác cho hỏi arduino có điều khiển được acservor không? mò chỗ nào để đọc ạ?. chân thành cảm ơn các bác

----------


## Luyến

bác vào trang chủ arduino.cc >> seach ac servo nó ra cả mớ. sao chưa biết dùng đã mua cả mớ về rồi lại trách người khác vậy??

----------

cuong

----------


## CKD

> bác CKD bảo mỗi ngày một ví dụ, làm em mừng hụt, mua một mớ linh kiện và board về mà seach chả ra arduino điều khiển ac servor, tìm được một bài về stepmoto mà chưa có gì để test cả. các bác cho hỏi arduino có điều khiển được acservor không? mò chỗ nào để đọc ạ?. chân thành cảm ơn các bác


Xin lỗi bác ạ.
1. Kế hoạch là vậy nhưng hơi bận & con lười nó lớn nên chưa làm được ạ.
2. Cao thủ VXL trên diễn đàn mình đông quá, mà viết bài so sài, chém gió trước cao thủ thì kỳ quá.. nên ngại ạ.

CKD xin cố gắng thực hiện đúng như chủ đê ạ. Mà bác cũng chăm ghê, bài viết lúc 04h. Bác ở VN hay nước ngoài thế  :Wink:

----------

cuong

----------


## nhatson

> bác CKD bảo mỗi ngày một ví dụ, làm em mừng hụt, mua một mớ linh kiện và board về mà seach chả ra arduino điều khiển ac servor, tìm được một bài về stepmoto mà chưa có gì để test cả. các bác cho hỏi arduino có điều khiển được acservor không? mò chỗ nào để đọc ạ?. chân thành cảm ơn các bác


ý bác là motion control cho ac servo drive hay dùng uno làm ac servo drive?

b.r

----------

cuong

----------


## CKD

Cơ bản nếu xem ac servo như brushless motor + encoder + PID position thì có khã năng làm được. Có hiệu quả hay không thì khó nói trước vì tuỳ thuộc vào tiêu chí đánh giá.

Xét về giá có thể tham khảo: ac servo 2hnd có giá dao động trong khoảng 10-15k/w

----------

cuong

----------


## cuong

To bác luyến: hihi em nói vui thôi, ai cũng cơm áo gạo tiền mà. Em có seach mà nó ra rc servo không hà. Em dốt điện, và tiếng anh luôn mới đau chứ.
-to bác linh: em tính điều khiển thông qua driver.
-to bác CKD. Em ở Việt Nam. Tại tìm hoài hổng ra nên khuya rồi cũng post lên đây để đi ngủ. Cảm ơn bác và các bác khác khui cái chủ đề này cho em để em biết đến vdk. Hôm qua làm cho con step của bác nam và driver của bác luyến mua năm xưa chạy được làm mừng hết lớn.
Chân thành cảm ơn và tiếp tục hóng các chủ đề về arduino, đặc biệt là chủ đề về ac servo

----------


## Gamo

CKD đẹp chai, có tín đồ kìa. Em đăng ký nhờ bác CKD chỉ cách dk AC Servo luôn nhe :x :x :x

----------


## CKD

Hôm rồi có cụ nào quảng cáo đã điều khiển được ac servo rồi đó mà. Cụ nào làm được mà có tinh thần quảng bá thì dù là a rờ méo hay gì gì thì em cũng chuyển thể để dùng với arduino được. Mà nói trước, được là chạy được chứ speed & smooth thì không dám so à.

----------


## CKD

Như vụ dc servo, chạy thì vô tư rồi. Nhưng speed chưa đạt nên chẵng dám khoe tiếp (đọc encoder max 20kHz). Lão elm chan dùng avr cũ, thạch anh 10MHz mà đọc được encoder tới 40kHz. Lại thấy nhiều bác khuyến khích chuyển qua a rờ méo nên đang phân vân.
Sãn phẩm chư hoàn thiện, chạy thì rùa, post lên sợ bị cười nên e ngại.

----------

cuong

----------


## Gamo

Hehe, hôm trước mới điều khiển nó theo 2 dạng: 6 steps & sine wave. 6 steps thì giống BLDC nhưng như cụ Linh nói thì ko ngon rồi nên bỏ qua. Còn sinewave thì giống vụ ông sửa cái máy tiện cho tui vậy, tạo ra 3 nguồn sine bằng PWM lệch pha nhau 120 độ là xong. Thật ra thì chỉ cần 2 nguồn là đủ, nguồn còn lại dùng tụ làm lệch pha. Nhưng mà chỉ mới làm tới mức đó thôi, có nghĩa là tần số phải đúng với hiệu điện thế & motor thì mới chạy được >.<

PS: hehe, post lên để có cái mà chọc chứ 
Mà DC Servo cổ rồi, bác làm AC Servo đi :x :x :x
Thấy AC Servo mới toanh bán rẻ đầy đường mà ko có driver, còn nguyên bộ thì... alphastep cho nó rẻ >.<

----------


## CKD

Cụ Gà tập trung lo điều khiển speed & torque cho con AC đồng bộ Ok là có thể phát triển thành servo mấy hồi.

Em thì còn lâu mới đu tới.. vì em sợ điện tử... chỉ chơi với 5/12/24V thôi.. lớn hơn nữa thì em chẵng dám đụng. Hời trước ráp amp cũng chỉ chơi DC 36V là hết.

----------


## Gamo

Hehe, tau cũng rứa, trên 40v là bắt đầu rét rồi 

Thôi đợi ông nào can đảm vậy...

----------


## CKD

Mà cụ Gà.. cái lão elm-chan đó bảo có kỹ thuật đọc encoder với tốc độ x2 lần tần số quét là thế nào nhỉ.. trình tiếng anh gà quá, đọc cái http://elm-chan.org/works/smc/report_e.html của lão không hiểu hết ý được.
Làm cách nào đọc được encoder tới 52kHz.. trong khi chu kỳ tính PID đã mất 92us, chạy với thạch anh 10MHz



Chơi DC servo dù biết là nó cũ, khã năng ứng dụng so với giá có thể mua được cũng không được khã thi cho lắm. Nhưng DC servo có cái lợi là không cần thuật toán điều khiển gì cả. Rất đơn giản, dễ tiếp cận.. muốn điều khiển được DC motor chỉ cần làm được mấy chuyện:
- Chiều dòng điện cấp cho motor ---> sẽ quyết định chiều quay của motor.
- Cường độ dòng điện (đương nhiên phải dính tới áp).. quyết định tốc độ và moment.
* mọi thông số phải <= định mức của motor.. nếu không muốn nó chạy xíu rồi xì khói.

Ngoài ra.. em tạm ngưng vì tạm thời đã hiểu sơ sơ thế nào là PID.. cũng như các tham số và tác động của nó.

----------

Gamo

----------


## CKD

Ai bảo test  như cái clip là tệ  :Smile:

----------

Gamo

----------


## cuong

- ặc em mới là "gà mờ" nè "hu hu". ngu điện tử, tự động, lập trình mà còn đu đeo, thôi theo step tiếp vậy, một loạt khái niệm mới thế em đu theo không nổi, trên máy mà em tính làm theo là cnc panel saw. cho nghề gỗ (đã có lần hỏi bác Linh qua điện thoại), bọn nó dùng plc để điều khiển ac servo hay sao ý, cơ mà trong tủ điện có tới hai cái biến tần, có khi nào biến tần điều khiển vị trí cho acservo không các bác?. plc thì em cũng ngu luôn nên mới chuyển qua arduino. vì lúc bác CKD giới thiệu thì em có hỏi cụ gg cụ cho một loạt ví dụ về step, nghĩ là bí quá thì dùng step, nên mới đu theo hihih. cho em hỏi ngu một tý : có con step nào có thông số tương đương ac servo 1,2kw không ạ

----------


## Gamo

Về vụ đọc encoder, để hồi xem của elmchan ra sao. Tại vì dùng timer của ARM, chỉ có mấy dòng code setup timer & 1 dòng để read position của encoder mỗi khi cần dùng nên chẳng bao giờ để ý.

* 6 steps sequence để điều khiển BLDC/AC Servo:
  | Step1 | Step2 | Step3 | Step4 | Step5 | Step6 |
   ----------------------------------------------------------
  |Channel1  |   1   |   0   |   0   |   0   |   0   |   1   |
   ----------------------------------------------------------
  |Channel1N |   0   |   0   |   1   |   1   |   0   |   0   |
   ----------------------------------------------------------
  |Channel2  |   0   |   0   |   0   |   1   |   1   |   0   |
   ----------------------------------------------------------
  |Channel2N |   1   |   1   |   0   |   0   |   0   |   0   |
   ----------------------------------------------------------
  |Channel3  |   0   |   1   |   1   |   0   |   0   |   0   |
   ----------------------------------------------------------
  |Channel3N |   0   |   0   |   0   |   0   |   1   |   1   |
   ----------------------------------------------------------

@cương: step hay hơn bác ợ. Cnc gỗ vẫn hay dùng step mà. Servo chỉ đc cái nhanh khi di chuyển nhưng việc cấu hình mất công lắm, chưa kể nếu bác làm ko chuẩn, ngồi giật tóc cả ngày cũng ko hiểu vì sao đường tròn bị méo đâu. Bác thích nhanh thì me mấy lão bán alphastep, vừa nhanh vừa dễ xài.

----------

cuong

----------


## CKD

Ý bác cuong là cưa CNC, mà là cưa lọng hay chỉ là cưa thẳng. Mấy tính năng này chắc để chỉnh thước, cữ... thì phải.

Thật ra trong điều khiển công nghiệp, có nhiều ứng dụng vị trí bằng VFD + motor + encoder lắm. Mọi thứ đều được kết nối với PLC để điều khiển.
Nhưng mà... mấy ứng dụng này thường chỉ để di chuyển chậm.. khi dừng phải dùng phanh từ. Điêù khiển vị trí khá chính xác. Các ứng dụng mình đã tiếp xúc thì độ chính xác đạt 0.1mm

----------

cuong

----------


## nhatson

> Mà cụ Gà.. cái lão elm-chan đó bảo có kỹ thuật đọc encoder với tốc độ x2 lần tần số quét là thế nào nhỉ.. trình tiếng anh gà quá, đọc cái http://elm-chan.org/works/smc/report_e.html của lão không hiểu hết ý được.
> Làm cách nào đọc được encoder tới 52kHz.. trong khi chu kỳ tính PID đã mất 92us, chạy với thạch anh 10MHz
> 
> Đính kèm 6410
> 
> Chơi DC servo dù biết là nó cũ, khã năng ứng dụng so với giá có thể mua được cũng không được khã thi cho lắm. Nhưng DC servo có cái lợi là không cần thuật toán điều khiển gì cả. Rất đơn giản, dễ tiếp cận.. muốn điều khiển được DC motor chỉ cần làm được mấy chuyện:
> - Chiều dòng điện cấp cho motor ---> sẽ quyết định chiều quay của motor.
> - Cường độ dòng điện (đương nhiên phải dính tới áp).. quyết định tốc độ và moment.
> * mọi thông số phải <= định mức của motor.. nếu không muốn nó chạy xíu rồi xì khói.
> ...



;----------------------------------------------------------;
; 83kHz Position capture and servo operation interrupt

background:
	push	T0L
	pushw	Z
	in	T0L, SREG		;Save flags

	mov	ZL, _PvEnc		;ZL[1:0] = previous A/B signal
	in	_PvEnc, PIND		;Sample A/B signal into _PvEnc[1:0]
	swap	_PvEnc			;/
	ldi	ZH, 1			;Convert it to sequencial number.
	sbrc	_PvEnc, 1		;
	eor	_PvEnc, ZH		;/
	sub	ZL, _PvEnc		;Decode motion
	andi	ZL, 3			;/
	breq	enc_zr			;-> Not moved
	cpi	ZL, 3			;
	breq	enc_rev			;-> -1 count
	cpi	ZL, 1			;
	breq	enc_fwd			;-> +1 count
	mov	ZL, _PvDir		;-> Missing code recovery:
	mov	ZH, _PvDir		; double count for previous direction
	lsl	ZL			;
	asr	ZH			;/
	rjmp	enc_add
enc_rev:ldiw	Z, -1
	rjmp	PC+3
enc_fwd:ldiw	Z, 1
	mov	_PvDir, ZL
enc_add:addw	_Pos, Z
	adc	_PosX, ZH
enc_zr:
	dec	_CtDiv		;Decrement 1/83 divider
	rjne	bgnd_exit	;If not overflow, exit interrupt routine.

em chưa check code, nhưng khả năng là encoder có 4 trạng thái cho 1 chu kì, ta có thể bắt xung ở trạng thái thứ 1 và thứ 4 = +4 > tương đương bắt được xung gấp 2 lần tần số quét

----------

CKD

----------


## Gamo

À, nhắc mới nhớ, xin hỏi các cao thủ luôn:

1. Mấy chú Tây làm bằng cách nào mà có thể cắt nhôm sắt hộp chính xác ta? Độ chính xác là bao nhiêu? Mình có thể DIY được ko?

2. Cắt dây & cắt tia nước thì ưu nhược điểm ra sao?

----------


## nhatson

> À, nhắc mới nhớ, xin hỏi các cao thủ luôn:
> 
> 1. Mấy chú Tây làm bằng cách nào mà có thể cắt nhôm sắt hộp chính xác ta? Độ chính xác là bao nhiêu? Mình có thể DIY được ko?
> 
> 2. Cắt dây & cắt tia nước thì ưu nhược điểm ra sao?


1.chính xác thì em nghĩ cắt bằng cưa vòng, ko thì cắt bằng đá rồi để lên máy phay lấy kích thước

2. cắt dây để cắt mí cái dạng có chiều sâu+ góc cạnh, cắt tia nươc có tác dụng lớn với inox dầy + đá hoa cuông, với inox mòng em e tia nước ko xử lí được

----------

Gamo

----------


## nhatson

> - ặc em mới là "gà mờ" nè "hu hu". ngu điện tử, tự động, lập trình mà còn đu đeo, thôi theo step tiếp vậy, một loạt khái niệm mới thế em đu theo không nổi, trên máy mà em tính làm theo là cnc panel saw. cho nghề gỗ (đã có lần hỏi bác Linh qua điện thoại), bọn nó dùng plc để điều khiển ac servo hay sao ý, cơ mà trong tủ điện có tới hai cái biến tần, có khi nào biến tần điều khiển vị trí cho acservo không các bác?. plc thì em cũng ngu luôn nên mới chuyển qua arduino. vì lúc bác CKD giới thiệu thì em có hỏi cụ gg cụ cho một loạt ví dụ về step, nghĩ là bí quá thì dùng step, nên mới đu theo hihih. cho em hỏi ngu một tý : có con step nào có thông số tương đương ac servo 1,2kw không ạ


nếu chỉ cần dkhien vị trí tới lui, ko yêu cầu cao về profile, aduino có thư viện stepper controller, dùng chung step/servo chạy step dir được hết ah

----------

cuong

----------


## CKD

@nhatson
Cái source của elm-chan thì có xem qua, nhưng là ASM, mà môn này thì gà quá nên vẫn không hiểu. Tất cả các phát triển từ nguồn elm-chan đều dùng ASM. Phải chi dùng C hay gì đó thì hay biết mấy.
Ngoài ra nó còn có cascade pid nữa. Nói chung không chuyên nên khó xơi hehe.

@cuong
Nếu ứng dụng của bạn chỉ dùng để chỉnh cữ, giữ phôi.. trong cưa tự động thì không quá khó.

----------

cuong

----------


## Gamo

> 1.chính xác thì em nghĩ cắt bằng cưa vòng, ko thì cắt bằng đá rồi để lên máy phay lấy kích thước
> 
> 2. cắt dây để cắt mí cái dạng có chiều sâu+ góc cạnh, cắt tia nươc có tác dụng lớn với inox dầy + đá hoa cuông, với inox mòng em e tia nước ko xử lí được


Ủa, cắt bằng đá là sao hả bác?

----------


## Gamo

Ủa, cắt dây có phải cắt EDM ko? Hay là cắt bằng dây kim cương?

----------


## nhatson

> Ủa, cắt dây có phải cắt EDM ko? Hay là cắt bằng dây kim cương?


cụ hỏi em cắt dây vs water jet giờ quay ra hỏi em cắt dây phải là EDM ko , nghi ngờ cụ qua  :Smile:

----------


## Gamo

Hehe, tại đang tính đi cắt dây/water jet. Thế rồi lại té ngửa ra là có 2 pp cắt dây lận  :Wink:

----------


## cuong

cảm ơn bác linh và các CKD, em bị chứng ì tâm lý huhu,hihi. Làm cho step chạy rồi thì đấu ac driver vô chân tương tự như đấu vô step driver thôi đúng không các bác?hihihi.
em mới vừa lòi ra câu hỏi. trong đoạn chương trình này:

// Define a stepper and the pins it will use
AccelStepper stepper(AccelStepper: :Big Grin: RIVER, 13, 12); // 13-PUL,12-DIR

void setup()
{  
  stepper.setAcceleration(8000);
  stepper.setCurrentPosition(0);
  stepper.setMaxSpeed(1000);
}
long current_position;
void loop() 
{
  current_position = stepper.currentPosition();
  if(current_position>=50000){
    stepper.moveTo(0);
  }
  if(current_position<=0){
    stepper.moveTo(-500);
  }
  stepper.run();
}

đoạn nào tính tỉ số xung và vòng quay vậy các bác, để cần biết mô tơ quay chính xác một vòng cần bao nhieu xung. ttrên step em cài :400 fulse/rev, full curent

----------


## huanpt

Em mới tham gia lớp học arduino dành cho trẻ em và các cụ ông.
Em muốn đọc nội dung từ file text, từng dòng từng dòng, mà đọc mãi chẳng thấy hàm nào readln cả. Em thuộc nhóm cao tuổi, lười nghĩ mẹo nên lên đây hỏi trước.

Cụ CKD giúp với, em làm mẹo cũng được, nhưng dự là sẽ test ra được 1 đống lỗi (em đang làm QA :-s)

----------


## CKD

> Em mới tham gia lớp học arduino dành cho trẻ em và các cụ ông.
> Em muốn đọc nội dung từ file text, từng dòng từng dòng, mà đọc mãi chẳng thấy hàm nào readln cả. Em thuộc nhóm cao tuổi, lười nghĩ mẹo nên lên đây hỏi trước.
> 
> Cụ CKD giúp với, em làm mẹo cũng được, nhưng dự là sẽ test ra được 1 đống lỗi (em đang làm QA :-s)


Chưa thử nhưng với cái ex từ arduino.cc thì nó đọc từ từ.


```
/*
  SD card read/write

 This example shows how to read and write data to and from an SD card file
 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4

 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe

 This example code is in the public domain.

 */

#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // nothing happens after setup
}
```

https://www.arduino.cc/en/Tutorial/ReadWrite



```
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
```

Chưa làm qua, nhung có 2 giả thuyết.
1. Mỗi lần nó đọc 1 byte. Vậy muốn biết nó hết 1 dòng chưa thì phải dò ký tự return.
2. Nếu mỗi lần nó đọc 1 dòng thì quá tuyệt rồi.

----------

nhatson

----------


## huanpt

myFile.read() nó đọc cả file mới đau.

----------


## CKD

Lệnh
myFfile.read() là nó đọc từng byte (char) một.

Vậy muốn nó đọc hết một dòng mới thôi thì có thể đọc kiểu này.


```
char thisByte;
String str = "";
while (myFile.available())
{
  thisByte = myFile.read();
  if (thisByte != 10) 'kiểm tra nếu thấy char 10 (line feed) thì ngừng
  {
    str =str + thisByte;
  }
  else
  {
    Serial.print("New line: ");
    Serial.println(str);
    str = "";
  }
}
```

----------


## huanpt

Đã chạy OK. Thks cụ CKD.

----------

nhatson

----------

