久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11970|回復(fù): 36
打印 上一主題 下一主題
收起左側(cè)

【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(172)---MX1508雙路馬達(dá)驅(qū)動

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動手試試多做實(shí)驗(yàn),不管成功與否,都會記錄下來——小小的進(jìn)步或是搞不掂的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)一百七十二:MX1508 四通道雙路有刷直流馬達(dá)驅(qū)動模塊 2路直流電機(jī)驅(qū)動模塊 雙H橋步進(jìn)電機(jī) 正反轉(zhuǎn)PWM調(diào)速




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:513258 發(fā)表于 2020-12-6 08:58 | 只看該作者
MX1508
是專用單芯片解決方案,芯片內(nèi)部集成兩路 H 橋驅(qū)動電路,可同時(shí)驅(qū)動轉(zhuǎn)向電機(jī)以及前進(jìn)后退電機(jī)。為電池供電的玩具、低壓或者電池供電的運(yùn)動控制應(yīng)用提供了一種集成的有刷直流馬達(dá)驅(qū)動解決方案。電路內(nèi)部集成了兩通道采用N溝和P溝功率MOSFET設(shè)計(jì)的H橋驅(qū)動電路,適合于驅(qū)動電動玩具車的轉(zhuǎn)向輪及后輪驅(qū)動,(驅(qū)動有刷直流馬達(dá)或者驅(qū)動步進(jìn)馬達(dá)的兩個(gè)繞組)。該電路具備較寬的工作電壓范圍(從2V到9.6V)。




回復(fù)

使用道具 舉報(bào)

板凳
ID:513258 發(fā)表于 2020-12-6 09:02 | 只看該作者
MX1508內(nèi)部結(jié)構(gòu)圖



回復(fù)

使用道具 舉報(bào)

地板
ID:513258 發(fā)表于 2020-12-6 09:07 | 只看該作者

MX1508單通道工作時(shí),左轉(zhuǎn)/右轉(zhuǎn)通道用于驅(qū)動轉(zhuǎn)向電機(jī),最大持續(xù)輸出電流達(dá)到 1.2A,最大峰值輸出電流達(dá)到 1.5A。前進(jìn)/后退通道用于驅(qū)動前進(jìn)后退電機(jī),最大持續(xù)輸出電流達(dá)到 1.4A,最大峰值輸出電流達(dá)到 2A;雙通道同時(shí)工作時(shí),左轉(zhuǎn)/右轉(zhuǎn)通道持續(xù)輸出 0.8A 的情況下,前進(jìn)/后退通道能持續(xù)輸出 1.2A。該芯片具備較寬的工作電壓范圍(VM 端供電從 2V 到 8V),可覆蓋 2 節(jié)干電池至 5 節(jié)干電池的應(yīng)用。

該專用芯片內(nèi)置過熱保護(hù)電路。驅(qū)動電路的負(fù)載電流遠(yuǎn)大于電路的最大持續(xù)電流時(shí),受封裝散熱能力限制,封裝內(nèi)部芯片的結(jié)溫將會迅速升高,一旦超過設(shè)定值,內(nèi)部電路將立即關(guān)斷輸出功率管,切斷負(fù)載電流,避免溫度持續(xù)升高造成塑料封裝冒煙、起火等安全隱患。內(nèi)置的溫度遲滯電路,確保電路恢復(fù)到安全溫度后,才允許重新對電路進(jìn)行控制。

應(yīng)用中注意采用PWM控制時(shí),PWM頻率不可太高,高了后無法響應(yīng),輸出端并非PWM信號,導(dǎo)致控制失敗,建議采用較低控制頻率,兩路PWM控制,注意不能采用互補(bǔ)控制,有效波形必須全部非高,否則電機(jī)剎車?刂齐妷航ㄗh小于10V,邏輯電平5V為宜。

回復(fù)

使用道具 舉報(bào)

5#
ID:513258 發(fā)表于 2020-12-6 09:09 | 只看該作者

主要特性
    a. 低待機(jī)電流 (小于0.1uA);
    b. 低靜態(tài)工作電流;
    c. 集成的H橋驅(qū)動電路;
    d. 內(nèi)置防共態(tài)導(dǎo)通電路;
    e. 低導(dǎo)通內(nèi)阻的功率MOSFET管;
    f. 內(nèi)置帶遲滯效應(yīng)的過熱保護(hù)電路 (TSD);
    g. 抗靜電等級:3KV (HBM);
  h. 集成的 H 橋驅(qū)動電路;
  i. 高度集成方案,集成 RX2 芯片和兩個(gè)馬達(dá)驅(qū)動芯片;
  j. 內(nèi)置 2.5V 穩(wěn)壓 LDO 電路。

典型應(yīng)用
  2-5 節(jié) AA/AAA 干電池供電的玩具馬達(dá)驅(qū)動;
  2-5 節(jié)鎳-氫/鎳-鎘充電電池供電的玩具馬達(dá)驅(qū)動;
  1-2 節(jié)鋰電池供電的馬達(dá)驅(qū)動

回復(fù)

使用道具 舉報(bào)

6#
ID:513258 發(fā)表于 2020-12-6 09:29 | 只看該作者

回復(fù)

使用道具 舉報(bào)

7#
ID:513258 發(fā)表于 2020-12-6 09:33 | 只看該作者

回復(fù)

使用道具 舉報(bào)

8#
ID:513258 發(fā)表于 2020-12-6 09:34 | 只看該作者

回復(fù)

使用道具 舉報(bào)

9#
ID:513258 發(fā)表于 2020-12-6 09:37 | 只看該作者

回復(fù)

使用道具 舉報(bào)

10#
ID:513258 發(fā)表于 2020-12-6 09:39 | 只看該作者

回復(fù)

使用道具 舉報(bào)

11#
ID:513258 發(fā)表于 2020-12-6 09:42 | 只看該作者

回復(fù)

使用道具 舉報(bào)

12#
ID:513258 發(fā)表于 2020-12-6 09:45 | 只看該作者

回復(fù)

使用道具 舉報(bào)

13#
ID:513258 發(fā)表于 2020-12-6 09:48 | 只看該作者



回復(fù)

使用道具 舉報(bào)

14#
ID:513258 發(fā)表于 2020-12-6 09:51 | 只看該作者





回復(fù)

使用道具 舉報(bào)

15#
ID:513258 發(fā)表于 2020-12-11 10:54 | 只看該作者


MX1508雙路馬達(dá)驅(qū)動模塊特點(diǎn)
1.采用專業(yè)電機(jī)驅(qū)動芯片,內(nèi)置低導(dǎo)通內(nèi)阻MOS開關(guān)管,發(fā)熱極小,無需散熱片,體積小,省電,是您電池供電的理想選擇。(相比較L298N內(nèi)部為晶體管開關(guān),效率低,發(fā)熱高,需散熱,體積笨重,市面上的L298N極容易燒壞,都沒有采用原裝芯片,本模塊能夠完美替代)。
2.雙路1.5A*2,峰值電流可到2.5A, 內(nèi)置過熱保護(hù)電路,不用怕電機(jī)堵轉(zhuǎn)燒壞,溫度下降后自動恢復(fù)(目前市面上的智能小車電壓和電流都在此范圍內(nèi))。
3.體積小,質(zhì)量輕,0待機(jī)電流,是各種模型車載的理想選擇。

回復(fù)

使用道具 舉報(bào)

16#
ID:513258 發(fā)表于 2020-12-11 11:15 | 只看該作者


MX1508雙路馬達(dá)驅(qū)動模塊主要參數(shù)
雙路H橋電機(jī)驅(qū)動,可以同時(shí)驅(qū)動兩路直流電機(jī)或者1個(gè)4線兩相式步進(jìn)電機(jī);
模塊供電電壓2V-10V;
信號端輸入電壓1.8-7V;
單路工作電流1.5A,峰值電流可達(dá)2.5A,低待機(jī)電流 (小于 0.1uA);
內(nèi)置防共態(tài)導(dǎo)通電路,輸入端懸空時(shí),電機(jī)不會誤動作;
內(nèi)置帶遲滯效應(yīng)的過熱保護(hù)電路 (TSD),無需擔(dān)心電機(jī)堵轉(zhuǎn);
產(chǎn)品尺寸: 24.7*21*5mm (長寬高),超小體積,適合組裝和車載;
安裝孔直徑:2 mm;
重量:5g 。

回復(fù)

使用道具 舉報(bào)

17#
ID:513258 發(fā)表于 2020-12-11 12:41 | 只看該作者
MX1508雙路馬達(dá)驅(qū)動模塊電原理圖



回復(fù)

使用道具 舉報(bào)

18#
ID:513258 發(fā)表于 2020-12-11 12:59 | 只看該作者
MX1508雙路馬達(dá)驅(qū)動模塊接腳圖



回復(fù)

使用道具 舉報(bào)

19#
ID:513258 發(fā)表于 2020-12-11 13:05 | 只看該作者
MX1508 電機(jī)驅(qū)動邏輯真值表



回復(fù)

使用道具 舉報(bào)

20#
ID:513258 發(fā)表于 2020-12-11 13:08 | 只看該作者
MX1508雙路電機(jī)驅(qū)動模塊接線示意圖



回復(fù)

使用道具 舉報(bào)

21#
ID:513258 發(fā)表于 2020-12-11 16:13 | 只看該作者
下載安裝MX1508庫

鏈接  https://github.com/Saeterncj/MX1508




回復(fù)

使用道具 舉報(bào)

22#
ID:513258 發(fā)表于 2020-12-11 17:25 | 只看該作者
  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百七十二:MX1508 四通道雙路有刷直流馬達(dá)驅(qū)動模塊
  4.   2路直流電機(jī)驅(qū)動模塊 雙H橋步進(jìn)電機(jī) 正反轉(zhuǎn)PWM調(diào)速

  5.   1、安裝庫:下載鏈接 https://github.com/Saeterncj/MX1508
  6.   2、實(shí)驗(yàn)接線方法
  7.   MX1508模塊   Ardunio Uno
  8.   GND---------GND接地線
  9.   VCC---------5V 接電源
  10.   IN1---------D9(PWM)
  11.   IN2 ------- D10(PWM)
  12.   3、實(shí)驗(yàn)之一:簡易控制電機(jī)(MOTOR-A)連續(xù)正轉(zhuǎn),PWM設(shè)置為250
  13. */

  14. #include <MX1508.h>

  15. #define PINA 9
  16. #define PINB 10
  17. #define NUMPWM 2
  18. #define PWM 250

  19. MX1508 motorA(PINA, PINB, FAST_DECAY, NUMPWM);

  20. void setup() {}

  21. void loop() {
  22.   motorA.motorGo(PWM);
  23. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

23#
ID:513258 發(fā)表于 2020-12-11 18:03 | 只看該作者
實(shí)驗(yàn)一場景示意圖



回復(fù)

使用道具 舉報(bào)

24#
ID:513258 發(fā)表于 2020-12-11 19:45 | 只看該作者
  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百七十二:MX1508 四通道雙路有刷直流馬達(dá)驅(qū)動模塊
  4.   2路直流電機(jī)驅(qū)動模塊 雙H橋步進(jìn)電機(jī) 正反轉(zhuǎn)PWM調(diào)速

  5.   1、安裝庫:下載鏈接 https://github.com/Saeterncj/MX1508
  6.   2、實(shí)驗(yàn)接線方法
  7.   MX1508模塊   Ardunio Uno
  8.   GND---------GND接地線
  9.   VCC---------5V 接電源
  10.   IN1---------D9(PWM)
  11.   IN2 ------- D10(PWM)
  12.   3、實(shí)驗(yàn)之二:控制電機(jī)(MOTOR-A)正轉(zhuǎn)與反轉(zhuǎn),
  13.   PWM為0-180,180-0,,逐步加速然后減速,循環(huán)
  14. */

  15. #include <MX1508.h>

  16. #define PINA 9
  17. #define PINB 10
  18. #define NUMPWM 2

  19. MX1508 motorA(PINA, PINB, FAST_DECAY, NUMPWM);

  20. void setup() {
  21.   Serial.begin(115200);
  22. }


  23. /*
  24.   通過每50毫秒將pwm增加1來將斜坡增加到pwm = 180。
  25.    然后通過每50毫秒降低pwm降低到pwm = -180。
  26.    正值pwm表示正向。
  27.    負(fù)值pwm的方向相反。
  28. */

  29. void loop() {
  30.   static unsigned long lastMilli = 0;
  31.   static bool cwDirection = true; // 假設(shè)初始方向(正pwm)為順時(shí)針
  32.   static int pwm = 1;

  33.   if (millis() - lastMilli > 50) { // 每50毫秒
  34.     if (cwDirection && pwm++ > 180 ) {
  35.       cwDirection = false;
  36.     } else if (!cwDirection && pwm-- < -180) {
  37.       cwDirection =  true;
  38.     }
  39.     motorA.motorGo(pwm);
  40.     lastMilli = millis();
  41.     Serial.println(motorA.getPWM()); // 我們可以只打印pwm,但是僅顯示成員函數(shù)getPWM()起作用。
  42.   }

  43. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

25#
ID:513258 發(fā)表于 2020-12-11 20:03 | 只看該作者
MX1508庫的幾個(gè)函數(shù)
1、motorGo(pwmVal)
這將設(shè)置PWM val(速度)其值為0-200(數(shù)值太小,電機(jī)只是抖動而無法轉(zhuǎn)動,合適的數(shù)值需要通過實(shí)驗(yàn)來確定)

2、stopMotor()
只需停止電動機(jī)

3、setResolution(pwmResolution)
可以更改pwm的分辨率。要使用此功能,必須使用arduino nano / uno的9和10的pwm可以實(shí)現(xiàn)16位PWM。理論上,該值可以在0-65535之間的任何值)

說明:
MX1508電機(jī)驅(qū)動器的主要缺點(diǎn)之一是需要PWM引腳,每1臺電機(jī)需要2 pwm引腳。通過實(shí)驗(yàn)發(fā)現(xiàn),僅使用一個(gè)PWM和任何數(shù)字引腳,而不是使用2個(gè)不同的PWM引腳是可能的。這是一個(gè)巨大的折衷。電機(jī)轉(zhuǎn)動一個(gè)方向所獲得的響應(yīng)不同于電機(jī)轉(zhuǎn)動另一個(gè)方向所獲得的響應(yīng)。在一種方式中,將獲得FAST_DECAY響應(yīng)(線性響應(yīng),看起來像一個(gè)“ V”),然后在另一種情況下,將獲得SlOW_DECAY響應(yīng)(積極反應(yīng),看起來像個(gè)“ U”)。僅當(dāng)絕對沒有更多的PWM引腳時(shí)才應(yīng)使用此功能。

回復(fù)

使用道具 舉報(bào)

26#
ID:513258 發(fā)表于 2020-12-11 20:16 | 只看該作者
MX1508.h文件

  1. #ifndef MX1508_h
  2. #define MX1508_h

  3. #include "Arduino.h"

  4. typedef enum
  5. {
  6.   FAST_DECAY  = 0,  // set non-PWM pin low
  7.   SLOW_DECAY = 1    // set non-PWM pin high
  8. } DecayMode;

  9. typedef enum
  10. {
  11.   PWM_1PIN  = 1,
  12.   PWM_2PIN  = 2
  13. } NumOfPwmPins;

  14. class MX1508 {
  15.   public:
  16.     MX1508(uint8_t pinIN1, uint8_t pinIN2); // default fast decay, 2 pwm pins
  17.     MX1508(uint8_t pinIN1, uint8_t pinIN2, DecayMode decayMode, NumOfPwmPins numPWM);
  18.     void motorGo(long pwmVal); //
  19.     void setResolution(unsigned int resolution);
  20.     int getPWM();
  21.     void stopMotor();
  22.         void analogWrite16(uint8_t pin, uint16_t val);
  23.     void setPWM16(uint8_t prescaler, unsigned int resolution);
  24.   private:
  25.   
  26.     uint8_t _pinIN1;
  27.     uint8_t _pinIN2;
  28.         bool _useAnalogWrite16 = false;
  29.     int _pwmVal;
  30.     int _pwmResolution = 255;   //max resolution of pwm, default is 255.  
  31.     DecayMode _whichMode;
  32.     NumOfPwmPins _numPwmPins;
  33. };

  34. #endif
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

27#
ID:513258 發(fā)表于 2020-12-11 20:19 | 只看該作者
MX1508.cpp文件

  1. #include "MX1508.h"

  2. MX1508::MX1508( uint8_t pinIN1, uint8_t pinIN2) {
  3.   _pinIN1 = pinIN1; // always a PWM pin
  4.   _pinIN2 = pinIN2; // can be a non-Pwm pin.
  5.   _whichMode = FAST_DECAY;
  6.   _numPwmPins = PWM_2PIN;
  7.   pinMode(_pinIN1, OUTPUT);
  8.   pinMode(_pinIN2, OUTPUT);
  9. }

  10. MX1508::MX1508( uint8_t pinIN1, uint8_t pinIN2, DecayMode decayMode, NumOfPwmPins numPins) {
  11.   _pinIN1 = pinIN1; // always a PWM pin
  12.   _pinIN2 = pinIN2; // can be a non-Pwm pin.
  13.   _whichMode = decayMode;
  14.   _numPwmPins = numPins;
  15.   pinMode(_pinIN1, OUTPUT);
  16.   pinMode(_pinIN2, OUTPUT);
  17. }

  18. int MX1508::getPWM() {
  19.   return _pwmVal;
  20. }

  21. void MX1508::stopMotor() {
  22.   digitalWrite(_pinIN1, LOW);
  23.   digitalWrite(_pinIN2, LOW);
  24. }

  25. void MX1508::setResolution(unsigned int pwmResolution) {
  26.   _pwmResolution = pwmResolution;
  27.   if(_useAnalogWrite16) ICR1 = pwmResolution;
  28. }

  29. void MX1508::setPWM16(uint8_t prescaler, unsigned int resolution){
  30.         if(prescaler > 5 || prescaler == 0) prescaler = 3; // default to 64 if not in range.
  31.         DDRB  |= _BV(PB1) | _BV(PB2);       /* set pin 9and 10 as outputs */
  32.     TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM11);    // non-inverting PWM, mode 14 fastPWM, TOP =ICR1
  33.         TCCR1B = _BV(WGM13) | _BV(WGM12) | prescaler ;        // rescaler must be 1->5, 1,8,64,256,1028 respectively
  34.         ICR1 = resolution;
  35.         _pwmResolution = resolution;
  36.         _useAnalogWrite16 = true;
  37. }

  38. void MX1508::analogWrite16(uint8_t pin, uint16_t val)
  39. {
  40.   if(_useAnalogWrite16){
  41.         if(val < 5) val =5;
  42.         switch (pin) {
  43.                 case  9: OCR1A = val; break;
  44.                 case 10: OCR1B = val; break;
  45.                 default: analogWrite(pin,val);
  46.         }
  47.   }else{
  48.           analogWrite(pin, val);
  49.   }
  50. }

  51. void MX1508::motorGo(long pwmSpeed) {
  52.   _pwmVal = pwmSpeed;
  53.   
  54.   // if set decay mode is set as fast decay mode
  55.   if (this->_whichMode == FAST_DECAY) {
  56.     if (pwmSpeed >= 0) {                        //forward fast decay
  57.       if(_numPwmPins == PWM_1PIN)digitalWrite(_pinIN2, LOW);
  58.           else analogWrite16(_pinIN2, 1);
  59.       analogWrite16(_pinIN1, pwmSpeed);
  60.     } else if (this->_numPwmPins == PWM_2PIN) { // reverse fast decay
  61.       pwmSpeed *= -1;
  62.           analogWrite16(_pinIN1, 1);
  63.       analogWrite16(_pinIN2, pwmSpeed);
  64.     } else if (this->_numPwmPins == PWM_1PIN) { // reverse slow decay
  65.       pwmSpeed *= -1;
  66.       pwmSpeed = map(pwmSpeed, 0, _pwmResolution, _pwmResolution, 0);
  67.       digitalWrite(_pinIN2, HIGH);
  68.       analogWrite16(_pinIN1, pwmSpeed);
  69.     }
  70.   }
  71.    // if decay mode is set as slow decay mode
  72.   else {
  73.     if (pwmSpeed >= 0) {                        // forward slow decay
  74.       pwmSpeed = map(pwmSpeed, 0, _pwmResolution, _pwmResolution, 0);
  75.       if(_numPwmPins == PWM_1PIN)digitalWrite(_pinIN1, HIGH);
  76.           else analogWrite16(_pinIN1, _pwmResolution);
  77.       analogWrite16(_pinIN2, pwmSpeed);
  78.     } else if (this->_numPwmPins == PWM_2PIN) { // reverse slow decay
  79.       pwmSpeed *= -1;
  80.       pwmSpeed = map(pwmSpeed, 0, _pwmResolution, _pwmResolution, 0);
  81.           analogWrite16(_pinIN2, _pwmResolution);
  82.       analogWrite16(_pinIN1, pwmSpeed);
  83.     } else if (this->_numPwmPins == PWM_1PIN) { // reverse fast decay
  84.       pwmSpeed *= -1;
  85.       digitalWrite(_pinIN1, LOW);
  86.       analogWrite16(_pinIN2, pwmSpeed);
  87.     }
  88.   }
  89. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

28#
ID:513258 發(fā)表于 2020-12-12 16:57 | 只看該作者
實(shí)驗(yàn)之三:通過D9和D10的pwm引腳來實(shí)現(xiàn)16位PWM
    使用功能setPWM16(uint8_t預(yù)分頻器,unsigned int分辨率)的Arduino Nano / Uno引腳9和10的分辨率。

    快速pwm頻率的公式= MPU(16Mhz)/預(yù)分頻器/分辨率的頻率, F_PWM = 16000000 /預(yù)分頻器/分辨率

    預(yù)分頻器參數(shù)值必須在1-5之間,分別代表1、8、64、256、1024。分辨率必須為0-65535之間的值。

    MX1508(uint8_t pinIN1,uint8_t pinIN2,DecayMode衰減模式,NumOfPwmPins numPWM);

    DecayMode必須為FAST_DECAY或SLOW_DECAY,NumOfPwmPins,對于setPWM16()函數(shù),其值必須為2,PINA和PINB必須!! 是setPWM16()函數(shù)的引腳9和10 。

    示例MX1508 myMotor(10,9,F(xiàn)AST_DECAY,2)。
回復(fù)

使用道具 舉報(bào)

29#
ID:513258 發(fā)表于 2020-12-12 16:59 | 只看該作者
  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百七十二:MX1508 四通道雙路有刷直流馬達(dá)驅(qū)動模塊
  4.   2路直流電機(jī)驅(qū)動模塊 雙H橋步進(jìn)電機(jī) 正反轉(zhuǎn)PWM調(diào)速

  5.   1、安裝庫:下載鏈接 https://codeload.github.com/Saeterncj/MX1508/zip/master
  6.   2、實(shí)驗(yàn)接線方法
  7.   MX1508模塊   Ardunio Uno
  8.   GND---------GND接地線
  9.   VCC---------5V 接電源
  10.   IN1---------D9(PWM)
  11.   IN2 ------- D10(PWM)
  12.   3、實(shí)驗(yàn)之三:通過D9和D10的pwm引腳來實(shí)現(xiàn)16位PWM
  13. */

  14. #include <MX1508.h>

  15. #define PINA 9
  16. #define PINB 10
  17. #define NUMPWM 2

  18. MX1508 motorA(PINA, PINB, FAST_DECAY, 2);

  19. int resolution = 1000;
  20. void setup() {
  21.   Serial.begin(115200);

  22.   motorA.setPWM16(2, resolution); // 預(yù)分頻器為8,分辨率1000,PWM頻率= 16Mhz / 8/1000 = 2000Hz
  23.   // prescalar 1=1, 2=8, 3=64, 4=256, 5 =1028
  24.   /*------------ setPWM16 Class function is defined as below-----------------
  25.     void MX1508::setPWM16(uint8_t prescaler, unsigned int resolution){
  26.     if(prescaler > 5 || prescaler == 0) prescaler = 3; // default to 64 if not in range.
  27.     DDRB  |= _BV(PB1) | _BV(PB2);       // set pin 9and 10 as outputs
  28.       TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM11);    // non-inverting PWM, mode 14 fastPWM, TOP =ICR1
  29.     TCCR1B = _BV(WGM13) | _BV(WGM12) | prescaler ;
  30.     ICR1 = resolution;
  31.     _pwmResolution = resolution;
  32.     _useAnalogWrite16 = true;
  33.     }
  34.   */
  35. }
  36. /*
  37. 通過每50毫秒將pwm增加1,將斜率提高到pwm =分辨率/ 2。
  38.     然后通過每50毫秒降低pwm降低到pwm = -resolution / 2。
  39.     正值pwm表示正向。
  40.     負(fù)值pwm的方向相反。   
  41. */
  42. void loop() {
  43.   static unsigned long lastMilli = 0;
  44.   static bool cwDirection = true; // 假設(shè)初始方向(正pwm)為順時(shí)針
  45.   static int pwm = 1;

  46.   if (millis() - lastMilli > 50) { // 每50毫秒
  47.     if (cwDirection && pwm++ > resolution / 2 ) {
  48.       cwDirection = false;
  49.     } else if (!cwDirection && pwm-- < -(resolution / 2)) {
  50.       cwDirection =  true;
  51.     }
  52.     motorA.motorGo(pwm);
  53.     lastMilli = millis();
  54.     Serial.println(motorA.getPWM()); // we can just print pwm but just showing that member function getPWM() works.
  55.   }
  56. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

30#
ID:513258 發(fā)表于 2020-12-14 19:56 | 只看該作者
實(shí)驗(yàn)開源圖形編程(Mind+、編玩邊學(xué))
通過數(shù)字口12和13,簡單控制電機(jī)A正轉(zhuǎn)與反轉(zhuǎn)



回復(fù)

使用道具 舉報(bào)

31#
ID:513258 發(fā)表于 2020-12-14 19:57 | 只看該作者
實(shí)驗(yàn)開源仿真編程(linkboy3.7)
使用按鍵控制電機(jī)1,按下正轉(zhuǎn),松開停止




回復(fù)

使用道具 舉報(bào)

32#
ID:513258 發(fā)表于 2020-12-24 13:01 | 只看該作者
【花雕動手做】超迷你哦,用商徽香煙盒做個(gè)智能小車!




回復(fù)

使用道具 舉報(bào)

33#
ID:513258 發(fā)表于 2020-12-24 13:04 | 只看該作者
【花雕動手做】超迷你哦,用商徽香煙盒做個(gè)智能小車!



回復(fù)

使用道具 舉報(bào)

34#
ID:513258 發(fā)表于 2020-12-24 13:06 | 只看該作者
【花雕動手做】超迷你哦,用商徽香煙盒做個(gè)智能小車!




回復(fù)

使用道具 舉報(bào)

35#
ID:74784 發(fā)表于 2021-3-7 18:30 | 只看該作者
上個(gè)MX1508的pdf看看?
回復(fù)

使用道具 舉報(bào)

36#
ID:710495 發(fā)表于 2022-1-24 12:47 | 只看該作者
你好,我最近在用這個(gè)模塊的時(shí)候出了點(diǎn)問題。我用3.3V供電STC8G2K64S4單片機(jī)和mx1508模塊,輸入1和0也就是高低電平電機(jī)并不會轉(zhuǎn)動,只有輸入兩個(gè)高電平的時(shí)候電機(jī)才轉(zhuǎn)動,而且只能朝一個(gè)方向轉(zhuǎn)動,請問這是什么問題
回復(fù)

使用道具 舉報(bào)

37#
ID:796416 發(fā)表于 2022-7-7 01:59 | 只看該作者
1508有不同的版本,9樓的那張?jiān)韴D與其他的電路與模塊實(shí)物都不符,發(fā)貼前建議檢查確認(rèn)一下。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产免费视网址 | 精品国产1区2区3区 在线国产视频 | 国产精品一区二区欧美黑人喷潮水 | 日韩精品一区二区三区四区 | 第一区在线观看免费国语入口 | 精品国产99 | 久久久久久黄 | 欧美综合国产精品久久丁香 | 国产亚洲网站 | 久久久久久久久久影视 | 国产精品视频一区二区三区四蜜臂 | 人人干在线 | 欧美片网站免费 | 欧美成人性生活 | 国产一区二区在线看 | 黄色毛片黄色毛片 | 黄色大片观看 | 中文字幕第二区 | 成人免费看黄网站在线观看 | 国产精品久久久精品 | 亚洲精品第一国产综合野 | 亚洲一区二区三区国产 | 日韩欧美专区 | 青草视频在线 | 欧美日韩在线综合 | 日本黄色免费大片 | 玖玖国产精品视频 | 国产精品久久久久久妇女 | 亚洲第一福利视频 | 国产乱码精品1区2区3区 | 精品电影| 搞黄网站在线观看 | 亚洲成人日韩 | 国产乱码一区 | 欧美三级三级三级爽爽爽 | 亚洲成人精品在线 | 亚洲精品一区在线 | av播播| 亚洲国产精品第一区二区 | 成人网av| 欧美在线一区二区三区 |