微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求指点51单片机制作wifi小车舵机控制摄像头转动的程序。。

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

时间:10-02 整理:3721RD 点击:
正在做wifi控制的智能小车,将用到三个舵机。电机的程序和电路已经OK,但现在一直卡在三个舵机的控制上。三个舵机的角度分别为0度到180度(45度一个单位)0度到一百八十度(60度一个单位)0度到一百八十度(60度一个单位),都调了好几天了,发现舵机控制总是不理想啊,有时角度不均匀,而且转到角度后里面电机还在转,一直震动。所以求做过的大神赐教啊,舵机的控制。或者有程序的给参考下呗。谢啦

1.示波器看信号波形。
2.降低处理频率

一块单片机控制三个舵机可行吗?如果可行的话我就这样做下去,不行的话得改变方案了。舵机转动的精度要求不是很高,一般就可以。有没有什么比较好的方案呢。谢谢

程序在这
#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();
         }
       
}
求解

http://bbs.elecfans.com/forum.ph ... p;extra=#pid3451761
这款可以试试

请问,你现在解决摄像头巡线的问题了吗。可以加我15119586995微信,想请教朋友。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top