找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10101|回復(fù): 7
收起左側(cè)

L298N光耦電機驅(qū)動原理圖 51 Arduino PWM調(diào)速程序 步進電機驅(qū)動及pdf中文資料

[復(fù)制鏈接]
ID:140725 發(fā)表于 2017-3-20 22:32 | 顯示全部樓層 |閱讀模式
分享一個很全面的L298N光耦電機驅(qū)動給51黑電子論壇的朋友們,有步進電機的驅(qū)動 包含51單片機和Arduino示例程序,有芯片的pdf中文資料和L298N各種常見電路的原理圖.

L298N模塊原理圖:
0.png

L298N的pdf中文資料:
0.png 0.png 0.png 0.png



L298N模塊51單片機PWM調(diào)速程序:
  1. /*
  2. //利用51計時器+中斷來產(chǎn)生PWM信號,從而實現(xiàn)對電機速度
  3. //的控制
  4. //程序基于51單片機,晶振11.0592M 12M都可以
  5. */

  6. #include"reg52.h"
  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. sbit in1 = P0^0;                      //IN1邏輯輸入端
  10. sbit in2 = P0^1;                  //IN2邏輯輸入端
  11. sbit in3 = P0^2;                  //IN3邏輯輸入端
  12. sbit in4 = P0^3;                 //IN4邏輯輸入端
  13. uchar count = 0;   //定義計數(shù)變量
  14. /****************************
  15. //T0初使化
  16. ****************************/
  17. void Init_timer()
  18. {
  19.         TH0 = (65535-10)/256;
  20.         TL0 = (65535-10)%256;
  21.         TMOD = 0x01;
  22.         TR0 = 1;
  23.         ET0 = 1;
  24.         EA = 1;
  25. }
  26. /****************************
  27. //電機速度調(diào)節(jié),speed為速度
  28. //值,從0-100可調(diào)。
  29. //兩個電機正轉(zhuǎn)調(diào)速 speed值取決
  30. //電機速度,當(dāng)定時器值小于speed
  31. //值的時候,電機正轉(zhuǎn),大于speed
  32. //值的時候,電機反轉(zhuǎn).從而達到
  33. //調(diào)速的目的
  34. ****************************/
  35. void motor_speed_ctl(uchar speed)
  36. {
  37.         if(count<=speed)
  38.         {
  39.                 in1 = 1;
  40.                 in2 = 0;
  41.                 in3 = 1;
  42.                 in4 = 0;
  43.         }
  44.         else
  45.         {
  46.                 in1 = 0;
  47.                 in3 = 0;
  48.         }
  49. }

  50. /****************************
  51. //main()主函數(shù)
  52. //大循環(huán)
  53. ****************************/
  54. void main()
  55. {
  56.         Init_timer();
  57.         while(1)
  58.         {
  59.                 motor_speed_ctl(20);  //電機向前行駛,速度可調(diào)節(jié),改變括號里的值改變電機速度
  60.         }
  61. }
  62. /****************************
  63. //T0計時中斷
  64. ****************************/
  65. void Timer0_int()interrupt 1
  66. {
  67.         TH0 = (65535-10)/256;
  68.         TL0 = (65535-10)%256;
  69.         count ++;
  70.         if(count >= 100)
  71.         {
  72.                 count = 0;
  73.         }               
  74. }
復(fù)制代碼

Arduino示例程序小車加速運動:
  1. //小車前進與后退
  2. //時間20120902
  3. int PWM1=6;  //ena port
  4. int in1=9; //IN1 port
  5. int in2=10;  //IN2  port
  6. int PWM2=7;  //enb port
  7. int in3=11;  //in3 port
  8. int in4=12; //in4 port
  9. void setup()
  10. {   
  11. pinMode(PWM1, OUTPUT); //定義PWM輸出
  12. pinMode(in1, OUTPUT);     
  13. pinMode(in2, OUTPUT);     
  14. pinMode(PWM2, OUTPUT); //定義PWM輸出
  15. pinMode(in3, OUTPUT);   
  16. pinMode(in4, OUTPUT);  
  17. }
  18. void advance()//前進加速
  19. {
  20.   int i = 0;
  21.   for(i=0;i<255;i++)
  22.   {
  23.     analogWrite(PWM1,i);
  24.     analogWrite(PWM2,i);
  25.     digitalWrite(in1,HIGH);
  26.     digitalWrite(in2,LOW);
  27.     digitalWrite(in3,HIGH);
  28.     digitalWrite(in4,LOW);
  29.     delay(5);
  30.   }
  31. }
  32. void back()//后退加速
  33. {
  34.     int i = 0;
  35.     for(i=0;i<255;i++)
  36.     {
  37.       analogWrite(PWM1,i);
  38.       analogWrite(PWM2,i);
  39.       digitalWrite(in1,LOW);
  40.       digitalWrite(in2,HIGH);
  41.       digitalWrite(in3,LOW);
  42.       digitalWrite(in4,HIGH);
  43.       delay(5);
  44.     }
  45. }
  46. void loop()
  47. {
  48.     advance();//小車勻加速前進
  49.    delay(1000);//延遲1秒
  50.     back();//小車勻加速后退
  51.    delay(1000);//延遲1秒
  52. }

復(fù)制代碼

0.png
資料下載: L298N光耦電機驅(qū)動.rar (898.33 KB, 下載次數(shù): 98)

回復(fù)

使用道具 舉報

ID:151348 發(fā)表于 2017-3-21 10:01 | 顯示全部樓層
之間也有設(shè)計L298N驅(qū)動板,跟你這個差不多。后來做別的去了,所以還沒做出實物圖
回復(fù)

使用道具 舉報

ID:151000 發(fā)表于 2017-8-11 00:55 | 顯示全部樓層
樓主能把L298N和光耦電機驅(qū)動的連接圖發(fā)過來看嗎?謝謝!
回復(fù)

使用道具 舉報

ID:495287 發(fā)表于 2020-6-25 00:35 | 顯示全部樓層
謝謝樓主分享。
回復(fù)

使用道具 舉報

ID:495287 發(fā)表于 2020-6-25 00:48 | 顯示全部樓層
謝謝樓主分享,很完善的光耦隔離指導(dǎo)。
回復(fù)

使用道具 舉報

ID:495287 發(fā)表于 2020-6-26 01:53 | 顯示全部樓層
樓主好,俺有個大膽滴想法
每次被out1.2.3.4的續(xù)流二極管搞得懵逼,
續(xù)流二極管的作用主要是抵消驅(qū)動設(shè)備的反電動勢,
在int1-4加光耦,out1-4再加光耦,這樣取消續(xù)流二極管,您看可行嗎 ?
回復(fù)

使用道具 舉報

ID:340220 發(fā)表于 2020-7-22 14:45 | 顯示全部樓層
地沒有隔離啊,你這個光耦加了意義不大,還不如加一個緩沖器
回復(fù)

使用道具 舉報

ID:228467 發(fā)表于 2020-8-16 10:14 | 顯示全部樓層
阿哲呀 發(fā)表于 2020-7-22 14:45
地沒有隔離啊,你這個光耦加了意義不大,還不如加一個緩沖器

我看有的電路中的緩沖器也是和大電源共地的,感覺也沒啥隔離效果。克晕也恢兰泳彌_器的原因是啥,您能方便講講嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表