# Hệ thống Điện > Driver DC/AC servo motor >  Cần trợ giúp về mạch điều khiển DC brushless servo

## Gamo

Hế nhô các cụ,

Em đang dụ dỗ được 3 bộ brushless servo gồm servo + controller. Con servo có encoder, còn controller thì có thể điều khiển torque, tốc độ & chiều quay nhưng ko điều khiển được vị trí. Thông tin em nó ở đây: http://www.a-m-c.com/download/datasheet/b15a8.pdf

Cơ bản là để điều khiển em nó thì em cần điều khiển Ref+, Ref- của bên controller. Ref từ -10v đến 10v. Ref+ < Ref- thì quay chiếu này, Ref+<Ref- thì quay ngược lại. Duty cycle có thể dùng để điều chỉnh tốc độ. Vol thì em đoán là dùng để kiểm soát torque.
Em đã độ lại, để em nó chạy như servo, bằng cách điều khiển 2 line, y như pp dùng cho DC servo
http://forum.cncprovn.com/threads/21...ll=1#post23211

Vấn đề kẹt là con Cortex M3 thì đầu ra chỉ có 3.3v trong khi đó driver thì chạy 10v mới full torque. Mà nói gì thì nói chứ truyền 3.3v 30kHz chính xác qua khoảng cách 2m-3m em cũng ko an tâm tí nào. Do đó em đang tính độ lại để PWM bằng +-10v. Như vậy em nghĩ có 2 pp:
 * Phương pháp 1:
Nối Ref- vào 0v, điều khiển Ref+ từ -10v -> 10v. Đây có lẽ là pp mà máy cnc em gỡ ra.
 * Phương pháp 2:
Bật tắt Ref- và Ref+ với 10v, 0v

Em tính dùng pp1, nếu vậy thì từ 3.3v, Ref+ switch 3 nấc: -10v, 0v, 10v. Mình switch bằng cách nào?

----------


## lekimhung

sao thấy cụ mô tả phức tạp quá, em thấy nó chỉ so sánh thôi mà, đâu nhất thiết phải +/- 10v nhỉ.

=>Differential Reference Input (±10 V Operating Range, ±15 V Maximum Input)

----------

Gamo

----------


## Nam CNC

3 bộ ấy cho thuê nhé , ế đừng nói là nguyên cái controller mày đem về luôn rồi nhé ??? mà thôi nghiên cứu thành công trả lại cho tao thì ok.

----------


## Gamo

> sao thấy cụ mô tả phức tạp quá, em thấy nó chỉ so sánh thôi mà, đâu nhất thiết phải +/- 10v nhỉ.
> 
> =>Differential Reference Input (±10 V Operating Range, ±15 V Maximum Input)


Hehe, áp dùng để dk gain (ngay chổ đó là opamp mà)=> torque. Ngoài ra 3.3v mà truyền tốc độ cao, đi xa thì ko ổn lắm => phải chơi 10v

----------

lekimhung

----------


## Gamo

> 3 bộ ấy cho thuê nhé , ế đừng nói là nguyên cái controller mày đem về luôn rồi nhé ??? mà thôi nghiên cứu thành công trả lại cho tao thì ok.


Ai thèm cái controller của mày  :Big Grin:  Cho tau thuê 10 năm nhe :x :x :x cả con sờ pín êm ru bà rù nữa  :Smile: )

----------


## nhatson

> Ai thèm cái controller của mày  Cho tau thuê 10 năm nhe :x :x :x cả con sờ pín êm ru bà rù nữa )


tốc độ cụ bao nhiêu mà cao?
dùng DAC mà tạo ra analog chứ ai lại dùng PWM cho analog servo hehe

----------

Gamo

----------


## CKD

3.3V thì dùng opamp mà chuyển thành +-10V vô tư mà.

----------

Gamo

----------


## Gamo

Up cái phim lên để dễ tám

----------


## Gamo

> tốc độ cụ bao nhiêu mà cao?
> dùng DAC mà tạo ra analog chứ ai lại dùng PWM cho analog servo hehe


Hoho, là sao hả sư phụ? Cái driver này ghi là dùng Duty Cycle thì sao dùng DAC được ta?




> 3.3V thì dùng opamp mà chuyển thành +-10V vô tư mà.


Hehe, có lý... nhưng mà đang cần PWM 3 giá trị: -10v, 0v, 10v, opamp có chậm quá hem? Mà chưa kể con 10v có sẵn chỉ có 10mA, mình có tận dụng được ko? Hay là phải cấp nguồn riêng?

----------


## LEDUC

Đúng rồi , phải dùng DAC để có analog điều khiển , sử dụng các IC convert  , hoặc biến trở số cũng được .

----------

Gamo

----------


## CKD

Thì từ 0-3.3V -> offset -> amp -> +-10V là xong.
Đương nhiên phải có nguồn +-10V (tốt nhất là +-12V)

Mà mới alo bảo chạy rồi là chạy thế này đó à? Híc híc.. chém vãi.
Chạy kiểu ấy thì CKD dùng arduino cũng xơi được. Mấy con ARM chết nhục mất thôi. Hí hí hí  :Cool:

----------


## Gamo

Hehe, nhiều chuyện quá, thế là đủ để chạy rồi. Còn thứ gì nữa nói ra để tau làm luôn 

Ủa, mà ngoài pp dùng opamp + DAC thì có cách nào đơn giản switch 3 hiệu điện thế +10v, 0v, -10v hơn ko? (giả sử là đã có nguồn rồi)

----------


## CKD

Cơ bản thì nếu control không tuyến tính hoặc gần tuyến tính thì khó mà thành công.
Vì chạy thì không sao.. khi dừng lại thì thế nào? Dừng không tải khác xa với dừng có tải à.

Không dùng DAC thì dùng r2r, cùng lắm thì PWM dùng tạm. Opamp là phải có rồi.
Mà arm có DAC thì mắc gì mà không dùng nhỉ.

----------

Gamo

----------


## nhatson

> Hoho, là sao hả sư phụ? Cái driver này ghi là dùng Duty Cycle thì sao dùng DAC được ta?
> 
> 
> Hehe, có lý... nhưng mà đang cần PWM 3 giá trị: -10v, 0v, 10v, opamp có chậm quá hem? Mà chưa kể con 10v có sẵn chỉ có 10mA, mình có tận dụng được ko? Hay là phải cấp nguồn riêng?


dùng opamp  offet lại 0 3.3V thành -10 0 +10V ko chậm, vì speed respons của servo ko quá 2000hz , thường thì 500hz thì phải
em chỉ sợ là PWM ra analog nó noise thôi, kiểu dì nó cũng ripple
STM32 ko có con nào có DAC build in ah

----------

Gamo

----------


## LEDUC

STM32 có DAC 12bit ah . Nếu bí quá thì dùng 2 pwm qua opamp để +-10v giống như tacho số vậy + thêm cái mạch chỉnh offset  để điều chỉnh vị trí 0V , nhớ phải lọc thông thấp thật tốt , ko thì nó ripple tưng đít .

----------

Gamo

----------


## Gamo

> Cơ bản thì nếu control không tuyến tính hoặc gần tuyến tính thì khó mà thành công.
> Vì chạy thì không sao.. khi dừng lại thì thế nào? Dừng không tải khác xa với dừng có tải à.
> 
> Không dùng DAC thì dùng r2r, cùng lắm thì PWM dùng tạm. Opamp là phải có rồi.
> Mà arm có DAC thì mắc gì mà không dùng nhỉ.


Hehe, chuyện tuyến tính ko phải lo. Đúng là chạy kiểu này nó giật bể máy luôn. 
Chưa xong board nên test tạm. Để chốt rồi sẽ biểu diễn S-Curve. Arduino sao bằng ARM được, hohoho....
Rất tiếc là dòng M3 high density mới có DAC, dòng thường chỉ có ADC >.<




> dùng opamp  offet lại 0 3.3V thành -10 0 +10V ko chậm, vì speed respons của servo ko quá 2000hz , thường thì 500hz thì phải
> em chỉ sợ là PWM ra analog nó noise thôi, kiểu dì nó cũng ripple
> STM32 ko có con nào có DAC build in ah


Đám em hay dùng là STM32F103C8T6 thì ko có DAC cụ ui >.< Có con F4 thì đang để trên bàn thờ
Cái driver này nó ghi là control bằng duty cycle, vẫn chưa hiểu bên trong nó kiểm soát ra sao nữa >.<




> STM32 có DAC 12bit ah . Nếu bí quá thì dùng 2 pwm qua opamp để +-10v giống như tacho số vậy + thêm cái mạch chỉnh offset  để điều chỉnh vị trí 0V , nhớ phải lọc thông thấp thật tốt , ko thì nó ripple tưng đít .


Thanks bác! Đó là nguyên nhân vì sao em ko thích dùng DAC với Opamp vì phức tạp mà khả năng bị ripple cao >.<

Có khả năng phải chơi cho nó 1 cái H-Bridge ko ta? Phí đạn quá >.<

----------


## nhatson

> Hehe, chuyện tuyến tính ko phải lo. Đó là nguyên nhân vì sao ARM ngon hơi Arduino, tính toán số thực hơi bị nhiều, hohoho....
> Rất tiếc là dòng M3 high density mới có DAC, dòng thường chỉ có ADC >.<
> 
> 
> Thanks bác! Đó là nguyên nhân vì sao em ko thích dùng DAC với Opamp vì phức tạp mà khả năng bị ripple cao >.<


lạy cụ , ripple là PWM <> analog cụ ợ

----------


## nhatson

drive analog, dùng opam tao xung tam giác, rồi một số mạch logic để xác định trạng thái uvw , PI bằng opam > tạo ra áp, đem áp đó đua vào so sánh với xung tam giác <> pwm

----------


## Gamo

> lạy cụ , ripple là PWM <> analog cụ ợ


Hehe, hiểu sai ý bác Le Duc. Ý em ripple là khi bác dùng DAC + OPpamp, 0v chưa chắc là 0v, qua opamp còn sai số nữa.

Nhưng để kiểm tra lại nó lái bằng duty cycle hay analog.

----------


## LEDUC

ec. Có 2 cách cho Gamo chọn : 
C1 : analog . tạo ra nguồn tham chiếu +-10v . cái này dùng những IC convert từ digital ra analog . Cái này ở ngoài bán nhiều 8bit digital -> +-10v , hoặc 10bit hoặc 12 bit . 
C2 : có thể dùng 2 pwm để tạo ra +-10v đối xứng thông qua mạch opamp vi sai đối xứng + lọc thông thấp  . Nhưng nhược điểm pwm sau khi lọc thông thấp cũng còn bị nhấp nhô không tuyến tính lắm . Còn mạch chỉnh offset thì hiển nhiên phải có để điều chỉnh điểm Zero . 
 Cụ thể 2x(0-3.3V) -> difference amplifier -> offset -> +-10V . Thường ngõ vào điều khiển analog chỉ lấy áp tham chiếu nên ko phải lo về chuyện công suất . chỉ cần tuyến tính là được . 
Sử dụng cầu H thì cũng như C2 thôi  , ko có ưu điểm gì mà còn ngược lại là khác , mà cũng ko ai làm ngược vậy đâu .
Kết luận tốt nhất là nên dùng IC convert digital to analog là . IC này thì bán đầy ngoài chợ , mua về là thịt thôi . 



> Đám em hay dùng là STM32F103C8T6 thì ko có DAC cụ ui >.< Có con F4 thì đang để trên bàn thờ
> Cái driver này nó ghi là control bằng duty cycle, vẫn chưa hiểu bên trong nó kiểm soát ra sao nữa >.<


Dòng ARM cortex M3 thì con F1 đã có 2 DAC 12bit rồi .  Cụ thể là con STM32F100x . Gamo dowload datasheet về mà xem .
Nếu dùng duty cycle để điều khiển nghĩa là bên trong driver sẽ có 2 capture để đọc xung pwm tính toán Ton để điều khiển .

----------

Gamo

----------


## Gamo

Hix, con stm32f103c8t6 là dòng medium density nên ko có dac bác ợ. Giờ mình nen mua chip DAC nào giờ hả bác?

----------


## LEDUC

> Hix, con stm32f103c8t6 là dòng medium density nên ko có dac bác ợ. Giờ mình nen mua chip DAC nào giờ hả bác?


Em sợ  bác thật , chẳng chịu tìm hiểu và đọc gì hết , con stm32f100c8t6 cũng là dòng low density đó bác , nó còn rẻ hơn con của bác đó . Con này em sai lâu rồi cũng khoản 20k->30k  . Giờ chắc nó lên giá rồi . 
DAC ngon thì bác nên mua DAC703KP(12 bit )  hoặc DAC707 ( 16 bit thì phải ) mấy con này dễ sài giá cả phải chăng , hoặc serial thì có DAC716 , max5312 hoặc max5322 . 
DAC em chỉ ko biết bác có sài được ko nữa , em sài nhiều rồi ko sao , nếu sài ko được đừng ném đá em nha .
ps : mấy con DAC7xx toàn đò củ , còn max thì có IC mới .

----------

Gamo

----------


## Gamo

Hehe, ông này thật, chưa đọc tài liệu, chưa dùng STM32F103C8T6 bao giờ mà phán như đinh đóng cột  :Smile: 

Dòng STM32F103C8T6 tốc độ cao hơn nhưng ko có DAC nhưng dòng STM32F100C8 thì lại có 2 DAC  :Smile: 
Thông tin em nó đây: http://www.st.com/web/catalog/mmc/FM...N1565/PF164476

Hehe, nhưng mà cảm ơn ông đã về thông tin mấy con DAC. Chắc phải trữ vài bộ STM32 có DAC làm thuốc quá. Hồi mười mấy năm trước tôi hay dùng DAC, nhưng đắt quá, điều khiển lại lằng nhằng ko tốn chân thì tốn code >.<

----------


## nhatson

thử ngiệm cụ cứ hú em, bao nhiêu bit? serial hay parraler?

----------

Gamo

----------


## CKD

Ôi.. cụ Gà chỉ muốn lắc lắc cho vui ý mà. Chủ yếu chạy được là vui rồi. Vì bảo với cụ Nam là làm cho nó chạy dể ẹc. Và giờ thì em nó đã chạy.
Nên chỉ cần 3 mức -10, 0, +10 là được. Lằng nhằng chi cho mất công.

Mà hình như con brusless dc này em đã post schematic hay sơ đồ khối rồi thì phải. Cụ Gà lười quá nên suốt ngày cú duty cycle hoài. Hé hé.

Với hoàn cảnh của cụ bây giờ thì tạm như vầy.
PWM - opamp + low pas filter - opamp offset - opamp amp.
Xong test chạy thấy khác với cái 3 mức của cụ rồi tính tiếp.
Lúc đó ngộ rồi thì chịu khó chơi DAC cho nó smoot cũng không muộn.

Mà cũng báo cáo với cụ là trên cái board của nó đã có con DAC 12 hay 16 bit gì đó quên roài.

----------

Gamo

----------


## CKD

Mà nhớ lại.. lúc trước chỉ cần cái núm vê vê là chạy được mà.
Smart-speed-control-DYNA-mechtronics-DM2800

Làm +-10 chưa được thì chơi tạm +-2.5V (5V / 2) tạm chắc nó cũng chạy đó bác. Được rồi thì tăng áp lên để tăng moment & tốc độ phản ứng.

----------

Gamo

----------


## Ga con

Cái của bác Gà có 2 kiểu input chính là Ref input (áp) và dạng Sin input (sin U và sin V). Loại của bác đang dùng là input Ref. Em có của hãng khác cả 2 loại luôn, chạy áp 220V.

E không hiểu bác dùng vào mục đích gì. Hồi lâu lắc cũng làm bộ điều khiển vị trí cho mấy cái này, input encoder, xuất áp cho driver dạng này. Output là kết quả hàm PID vị trí, nó là tín hiệu analog 12 bit chứ không phải 3 mức như của bác. Do 2 vòng lặp nên kết quả đáp ứng không ngon, chỉ làm cho robot là ổn, còn làm máy CNC thì chỉnh vã mồ hôi (chỉnh trên driver, chỉnh trên bộ chuyển đổi) mà vẫn không ngon.

DAC ngon thì dùng cái này, hồi trước e mua 200k/con đấy, chân vàng vỏ ceramic, hàng top. Các máy CNC toàn dùng con này, lên 1 đời nữa là dùng truyền thông nối tiếp. Bo này e mua vài cái về tháo DAC và mấy con 26LSxx


Thanks.

----------

Gamo

----------


## Gamo

Ui giời ui, thanks các trùm!!!

Đầu tiên tính dùng DAC nhưng thấy mất công & phiền cụ Nhật Sơn quá => tính chơi theo cách CKD, dùng 2nd order low pass filter.
Nhưng đọc bài bác Phúc xong thì em bỏ luôn  :Big Grin: 

Plan kế tiếp: dẹp luôn cái drive, gắn 3 bộ H-Bridge vào chạy PWM, khỏi cần DAC

----------


## nhatson

> Ui giời ui, thanks các trùm!!!
> 
> Đầu tiên tính dùng DAC nhưng thấy mất công & phiền cụ Nhật Sơn quá => tính chơi theo cách CKD, dùng 2nd order low pass filter.
> Nhưng đọc bài bác Phúc xong thì em bỏ luôn 
> 
> Plan kế tiếp: dẹp luôn cái drive, gắn 3 bộ H-Bridge vào chạy PWM, khỏi cần DAC


pán cuối này khả thi và tương lai tươi sáng hơn   :Smile:

----------

Gamo

----------


## CKD

Kiểu này lại tết công gô thôi.
Khi nào position closed loop control ngon thì mang cái driver gin qua em, lấy 2 con motor về mà đốt nhé.
Hy vọng lúc ấy 2 con motor chưa bị rỉ sét.

----------


## Gamo

Ko có sửa gì hết, tuần sau qua lấy thôi :P

Vụ H-Bridge cho vào công trình thế kỷ  :Big Grin:

----------


## CKD

Chạy kiêu 10 0 10 thì hỏng hết... motor.
Mang gì qua đổi nhỉ? Brushless đổi brushed à?

----------


## LEDUC

> Hehe, ông này thật, chưa đọc tài liệu, chưa dùng STM32F103C8T6 bao giờ mà phán như đinh đóng cột 
> 
> Dòng STM32F103C8T6 tốc độ cao hơn nhưng ko có DAC nhưng dòng STM32F100C8 thì lại có 2 DAC 
> Thông tin em nó đây: http://www.st.com/web/catalog/mmc/FM...N1565/PF164476
> 
> Hehe, nhưng mà cảm ơn ông đã về thông tin mấy con DAC. Chắc phải trữ vài bộ STM32 có DAC làm thuốc quá. Hồi mười mấy năm trước tôi hay dùng DAC, nhưng đắt quá, điều khiển lại lằng nhằng ko tốn chân thì tốn code >.<


Kha..kha.. Đúng là em sợ bác thật ,  em nói bác là con 32F100C8T6 có 2xDAC , là có ý bác muốn dùng DAC cua vdk thì mua con đó , còn con 32f103 của bác ai cải với bác làm gì . Ko lẽ thằng ST nó sản xuất ra cả đống dòng vdk giống hết phần cứng sao . 
Em ko phán như đinh đóng cột ,  mấy con của bác em còn cả mớ trong kho, vì thời mới có cortex M3 ở đây em đã sử dụng  rồi ạ  .

----------


## CKD

Cụ Gà đang bị quáng gà với cái +-10V nên mới nhầm lẫn. Trước giờ cụ ấy toàn 3.3V không hà. Ráng lắm thì được 5V. Lớn hơn cụ ấy sợ bị giật.
Đúng không cụ chủ  :Smile:

----------


## Gamo

Hehe, giết giờ. Chạy bằng pp hiện tại là được rồi, cùng lắm cho thêm con low pass filter. Tuần sau dụ CKD đi cafe :x :x :x

----------

