|
分享一個(gè)很全面的L298N光耦電機(jī)驅(qū)動(dòng)給51黑電子論壇的朋友們,有步進(jìn)電機(jī)的驅(qū)動(dòng) 包含51單片機(jī)和Arduino示例程序,有芯片的pdf中文資料和L298N各種常見電路的原理圖.
L298N模塊原理圖:
0.png (322.66 KB, 下載次數(shù): 66)
下載附件
2017-3-20 22:23 上傳
L298N的pdf中文資料:
0.png (104.6 KB, 下載次數(shù): 69)
下載附件
2017-3-20 22:24 上傳
0.png (62.47 KB, 下載次數(shù): 72)
下載附件
2017-3-20 22:24 上傳
0.png (158.91 KB, 下載次數(shù): 78)
下載附件
2017-3-20 22:24 上傳
0.png (34.54 KB, 下載次數(shù): 67)
下載附件
2017-3-20 22:24 上傳
L298N模塊51單片機(jī)PWM調(diào)速程序:
- /*
- //利用51計(jì)時(shí)器+中斷來產(chǎn)生PWM信號(hào),從而實(shí)現(xiàn)對(duì)電機(jī)速度
- //的控制
- //程序基于51單片機(jī),晶振11.0592M 12M都可以
- */
- #include"reg52.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit in1 = P0^0; //IN1邏輯輸入端
- sbit in2 = P0^1; //IN2邏輯輸入端
- sbit in3 = P0^2; //IN3邏輯輸入端
- sbit in4 = P0^3; //IN4邏輯輸入端
- uchar count = 0; //定義計(jì)數(shù)變量
- /****************************
- //T0初使化
- ****************************/
- void Init_timer()
- {
- TH0 = (65535-10)/256;
- TL0 = (65535-10)%256;
- TMOD = 0x01;
- TR0 = 1;
- ET0 = 1;
- EA = 1;
- }
- /****************************
- //電機(jī)速度調(diào)節(jié),speed為速度
- //值,從0-100可調(diào)。
- //兩個(gè)電機(jī)正轉(zhuǎn)調(diào)速 speed值取決
- //電機(jī)速度,當(dāng)定時(shí)器值小于speed
- //值的時(shí)候,電機(jī)正轉(zhuǎn),大于speed
- //值的時(shí)候,電機(jī)反轉(zhuǎn).從而達(dá)到
- //調(diào)速的目的
- ****************************/
- void motor_speed_ctl(uchar speed)
- {
- if(count<=speed)
- {
- in1 = 1;
- in2 = 0;
- in3 = 1;
- in4 = 0;
- }
- else
- {
- in1 = 0;
- in3 = 0;
- }
- }
- /****************************
- //main()主函數(shù)
- //大循環(huán)
- ****************************/
- void main()
- {
- Init_timer();
- while(1)
- {
- motor_speed_ctl(20); //電機(jī)向前行駛,速度可調(diào)節(jié),改變括號(hào)里的值改變電機(jī)速度
- }
- }
- /****************************
- //T0計(jì)時(shí)中斷
- ****************************/
- void Timer0_int()interrupt 1
- {
- TH0 = (65535-10)/256;
- TL0 = (65535-10)%256;
- count ++;
- if(count >= 100)
- {
- count = 0;
- }
- }
復(fù)制代碼
Arduino示例程序小車加速運(yùn)動(dòng):
- //小車前進(jìn)與后退
- //時(shí)間20120902
- int PWM1=6; //ena port
- int in1=9; //IN1 port
- int in2=10; //IN2 port
- int PWM2=7; //enb port
- int in3=11; //in3 port
- int in4=12; //in4 port
- void setup()
- {
- pinMode(PWM1, OUTPUT); //定義PWM輸出
- pinMode(in1, OUTPUT);
- pinMode(in2, OUTPUT);
- pinMode(PWM2, OUTPUT); //定義PWM輸出
- pinMode(in3, OUTPUT);
- pinMode(in4, OUTPUT);
- }
- void advance()//前進(jìn)加速
- {
- int i = 0;
- for(i=0;i<255;i++)
- {
- analogWrite(PWM1,i);
- analogWrite(PWM2,i);
- digitalWrite(in1,HIGH);
- digitalWrite(in2,LOW);
- digitalWrite(in3,HIGH);
- digitalWrite(in4,LOW);
- delay(5);
- }
- }
- void back()//后退加速
- {
- int i = 0;
- for(i=0;i<255;i++)
- {
- analogWrite(PWM1,i);
- analogWrite(PWM2,i);
- digitalWrite(in1,LOW);
- digitalWrite(in2,HIGH);
- digitalWrite(in3,LOW);
- digitalWrite(in4,HIGH);
- delay(5);
- }
- }
- void loop()
- {
- advance();//小車勻加速前進(jìn)
- delay(1000);//延遲1秒
- back();//小車勻加速后退
- delay(1000);//延遲1秒
- }
復(fù)制代碼
0.png (69.71 KB, 下載次數(shù): 71)
下載附件
2017-3-20 22:22 上傳
資料下載:
L298N光耦電機(jī)驅(qū)動(dòng).rar
(898.33 KB, 下載次數(shù): 98)
2017-3-20 22:33 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|