求指点51单片机制作wifi小车舵机控制摄像头转动的程序。。

2019-07-15 20:01发布

正在做wifi控制的智能小车,将用到三个舵机。电机的程序和电路已经OK,但现在一直卡在三个舵机的控制上。三个舵机的角度分别为0度到180度(45度一个单位)0度到一百八十度(60度一个单位)0度到一百八十度(60度一个单位),都调了好几天了,发现舵机控制总是不理想啊,有时角度不均匀,而且转到角度后里面电机还在转,一直震动。所以求做过的大神赐教啊,舵机的控制。或者有程序的给参考下呗。。谢啦
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
86hupeng
1楼-- · 2019-07-16 01:41
1.示波器看信号波形。
2.降低处理频率
谢谢侬
2楼-- · 2019-07-16 04:11
 精彩回答 2  元偷偷看……
谢谢侬
3楼-- · 2019-07-16 07:49
程序在这
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit pwm1=P2^0;
sbit pwm2=P2^1;
sbit pwm3=P2^2;
sbit key1=P2^3;
sbit key2=P2^4;
sbit key3=P2^5;
sbit key4=P2^6;//初始位置90度
uint a=1500,b=1500,c=1500;
uchar num=0;
void time0_init()
{
        TMOD=0X01;
        TH0=(65536-2500)/256;//2.5ms计时
        TL0=(65536-2500)%256;
        EA=1;
        ET0=1;
        TR0=1;
}
void delay(uint x)
{
        uint j,k;
        for(j=0;j>x;j++)
         for(k=0;k<110;k--);
}
void time0() interrupt 1
{       
        switch(num)
                {         
                case 1:pwm1=1;
                           TH0=-a/256;
                           TL0=-a%256;
                           break;
                case 2:pwm1=0;
                           TH0=-(6667-a)/256;//(20ms/3)*1000=6667近似
                           TL0=-(6667-a)%256;
                           break;
                case 3:pwm2=1;
                           TH0=-b/256;
                           TL0=-b%256;
                           break;
                case 4:pwm2=0;
                           TH0=-(6667-b)/256;//(20ms/3)*1000=6667近似
                           TL0=-(6667-b)%256;
                           break;
                case 5:pwm3=1;
                           TH0=-c/256;
                           TL0=-c%256;
                           break;
                case 6:pwm3=0;
                           TH0=-(6667-c)/256;//(20ms/3)*1000=6667近似
                           TL0=-(6667-c)%256;
                           break;
                        default: num=0;break;
                }
        num++;
}
void key()
{        if(key1==0)
         {
                if(a>667)//最左位置从中间位置逆转60度
                a-=667;
                else a=667;
               
         }
         if(key2==0)
         {
                if(a<2167)//最右位置从中间位置顺转60度
                a+=667;else a=2167;
         }
         if(key3==0)
         {
                if(b>667)//最左位置从中间位置逆转60度
                b-=667;
                else b=667;
               
         }
         if(key4==0)
         {
                if(b<2167)//最右位置从中间位置顺转60度
                b+=667;else b=2167;
         }

}
void main()
{       
        time0_init();
        while(1)
         {
                key();
         }
       
}
求解
weiyirong
4楼-- · 2019-07-16 11:23

http://bbs.elecfans.com/forum.ph ... p;extra=#pid3451761

这款可以试试
潮爱电子
5楼-- · 2019-07-16 16:08
请问,你现在解决摄像头巡线的问题了吗。可以加我15119586995微信,想请教朋友。

一周热门 更多>