標題:
STC12單片機做平衡車程序 mpu6050+L298N+直流減速電機
[打印本頁]
作者:
生鐵0
時間:
2019-7-31 16:21
標題:
STC12單片機做平衡車程序 mpu6050+L298N+直流減速電機
大家參考參考。
mpu6050+L298N+直流減速電機
單片機源程序如下:
#include <stc12c5a.h>
#include <intrins.h>
#include <stdio.h>
#include <math.h>
#include "kalman.h"
#include "lcd1602.h"
#include "mpu6050.h"
#include "pid_own.h"
#include "pwm_motor.h"
#include "spe_pos.h"
int INT_PWM;
unsigned int Init_Time=0,Start_Flag=0;
void main()
{
lcd_init();
InitMPU6050();
PWM_Motor_Init();
INT_Init();
P1M0=1;
P1M1=0;
while(1)
{
if(GYRO_X<0)
{
write_com(0x80);
write_dat('-');
write_dat('0'+(uchar)abs(GYRO_X)/100);
write_dat('0'+(uchar)abs(GYRO_X)%100/10);
write_dat('0'+(uchar)abs(GYRO_X)%10);
}
else
{
write_com(0x80);
write_dat('+');
write_dat('0'+(uchar)GYRO_X/100);
write_dat('0'+(uchar)GYRO_X%100/10);
write_dat('0'+(uchar)GYRO_X%10);
}
if(Angle_End<0)
{
write_com(0x80+0x40);
write_dat('-');
write_dat('0'+(uchar)abs(Angle_End)/100);
write_dat('0'+(uchar)abs(Angle_End)%100/10);
write_dat('0'+(uchar)abs(Angle_End)%10);
}
else
{
write_com(0x80+0x40);
write_dat('+');
write_dat('0'+(uchar)Angle_End/100);
write_dat('0'+(uchar)Angle_End%100/10);
write_dat('0'+(uchar)Angle_End%10);
}
if(speed<0)
{
write_com(0x80+9);
write_dat('-');
write_dat('0'+(uchar)abs(speed)/100);
write_dat('0'+(uchar)abs(speed)%100/10);
write_dat('0'+(uchar)abs(speed)%10);
}
else
{
write_com(0x80+9);
write_dat('+');
write_dat('0'+(uchar)speed/100);
write_dat('0'+(uchar)speed%100/10);
write_dat('0'+(uchar)speed%10);
}
if(position<0)
{
write_com(0x80+0x40+9);
write_dat('-');
write_dat('0'+(uint)abs(position)/10000);
write_dat('0'+(uint)abs(position)%10000/1000);
write_dat('0'+(uint)abs(position)%1000/100);
write_dat('0'+(uint)abs(position)%100/10);
write_dat('0'+(uint)abs(position)%10);
}
else
{
write_com(0x80+0x40+9);
write_dat('+');
write_dat('0'+(uint)abs(position)/10000);
write_dat('0'+(uint)abs(position)%10000/1000);
write_dat('0'+(uint)position%1000/100);
write_dat('0'+(uint)position%100/10);
write_dat('0'+(uint)position%10);
}
if(Start_Flag)
{
INT_PWM = pid_proc(Angle_End,Gyro_End,speed,position);
Motor_Con(-INT_PWM,-INT_PWM);
}
}
}
void timer1() interrupt 3
{
TL1 = 0x00; //定時10MS
TH1 = 0xB8;
if(!Start_Flag) //啟動前的延時
{
Init_Time++;
if(Init_Time>=100) Start_Flag=1;
}
if(Start_Flag)
{
Get_Date();
Kalman_Filter(Angel_accY,GYRO_X);
Speed_Position_Get();
speed_mr = speed_ml = 0;
}
}
復(fù)制代碼
所有程序51hei提供下載:
小車平衡STC穩(wěn)定.zip
(196.23 KB, 下載次數(shù): 114)
2019-7-31 16:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-7-31 22:52
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1