小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 4426|回复: 3

求助:使用电调驱动两个无刷电机

[复制链接]
发表于 2014-9-18 11:20:48 | 显示全部楼层 |阅读模式
目标:按“前进”按钮,舵机1和舵机2输出正转PWM信号(类似舵机正转)
“后退”按钮舵机和舵机2输出反转pwm信号(类似舵机反转)
“左转”“右转”按钮,舵机1,舵机2输出相反的PWM信号。

这样就能通过电调控制两个无刷电机实现驱动功能,功率无上限。
请求大侠谁能改改上位机或者下位机程序,实现这个梦想》》》
回复

使用道具 举报

发表于 2014-9-18 14:17:51 | 显示全部楼层
修改下位机的uart.c代码,如下,然后重新生成hex文件烧录到驱动板里面即可。
  1. /*
  2. 版权声明:
  3. WIFI机器人网·机器人创意工作室版权所有 www.wifi-robots.com
  4. 您可以任意修改本程序,并应用于自行研发的智能小车机器人及其他电子作品上,但是禁止用于向他人牟取暴利。
  5. By WIFI机器人网·机器人创意工作室
  6. */

  7. #include "uart.h"
  8. #include <stdio.h>
  9. #include "motor.h"
  10. #include "steer.h"



  11. extern uint16 se_timer[8];
  12. uint8 buffer[3];
  13. uint8 rec_flag=0;        //等于0等待接受 等于1正在接受

  14. void UART_init(void)
  15. {
  16.         PCON |= 0x80;                //使能波特率倍速位SMOD
  17.         SCON = 0x50;                //8位数据,可变波特率
  18.         BRT = RELOAD_COUNT;                //设定独立波特率发生器重装值
  19.         AUXR |= 0x04;                //独立波特率发生器时钟为Fosc,即1T
  20.         AUXR |= 0x01;                //串口1选择独立波特率发生器为波特率发生器
  21.         AUXR |= 0x10;                //启动独立波特率发生器
  22.         ES      =   1;    //允许串口中断
  23.     EA      =   1;    //开总中断
  24.         TI      =   1;       
  25. }

  26. void UART_send_byte(uint8 byte)
  27. {
  28.         ES     =   0;  //关串口中断
  29.     TI     =   0;  //清零串口发送完成中断请求标志
  30.     SBUF   =   byte;
  31.     while(TI ==0); //等待发送完成
  32.     TI     =   1;  //清零串口发送完成中断请求标志
  33.     ES     =   1;  //允许串口中断
  34. }

  35. void UART_send(uint8 *Buffer, uint8 Length)
  36. {
  37.         while(Length != 0)
  38.         {
  39.                 UART_send_byte(*Buffer);
  40.                 Buffer++;
  41.                 Length--;
  42.         }

  43. }

  44. void Communication_Decode(void)  
  45. {       
  46.         if(buffer[0]==0x00)
  47.         {
  48.                 switch(buffer[1])
  49.                 {
  50.                         case 0x01: se_timer[0]=135;se_timer[1]=135; return;
  51.                         case 0x02: se_timer[0]=45;se_timer[1]=45;    return;
  52.                         case 0x03:se_timer[0]=45;se_timer[1]=135;;    return;
  53.                     case 0x04:se_timer[0]=135;se_timer[1]=45;;   return;
  54.                         case 0x00:se_timer[0]=90;se_timer[1]=90;;    return;
  55.                         default: return;
  56.                 }       
  57.         }
  58.         else if(buffer[0]==0x01)
  59.         {
  60.                 if(buffer[2]>180)
  61.                         return;
  62.                 switch(buffer[1])
  63.                 {
  64.                         case 0x01:se_timer[0]=buffer[2]; return;
  65.                         case 0x02:se_timer[1]=buffer[2]; return;
  66.                         case 0x03:se_timer[2]=buffer[2]; return;
  67.                         case 0x04:se_timer[3]=buffer[2]; return;
  68.                         case 0x05:se_timer[4]=buffer[2]; return;
  69.                         case 0x06:se_timer[5]=buffer[2]; return;
  70.                         case 0x07:se_timer[6]=buffer[2]; return;
  71.                         case 0x08:se_timer[7]=buffer[2]; return;
  72.                         default : return;
  73.                 }
  74.         }
  75.         else if(buffer[0]==0x04)          //车灯控制使用灌电流方式        FF040100FF  FF040000FF
  76.         {
  77.                   switch(buffer[1])
  78.                    {
  79.                        case 0x00:
  80.                                  MAINLIGHT_TURNON;
  81.                                  return;
  82.                                 case 0x01:
  83.                                   MAINLIGHT_TURNOFF;
  84.                                   return;
  85.                                   default:return;
  86.                    }
  87.                                           
  88.         }
  89.         else if(buffer[0]==0x08)
  90.         {
  91.                  switch(buffer[1])
  92.                    {
  93.                        case 0x01:
  94.                                  LASER_TURNON;
  95.                                  break;
  96.                                 case 0x00:
  97.                                   LASER_TURNOFF;
  98.                                   break;
  99.                                   default:return;
  100.                    }
  101.        
  102.         }
  103.         else
  104.         {
  105.                 return;
  106.         }
  107. }

  108. void UART_Interrupt_Receive(void) interrupt 4
  109. {
  110.         static uint8 i;
  111.        
  112.     if(RI==1)
  113.     {
  114.         RI  =   0;
  115.         if(rec_flag==0)
  116.                 {
  117.                         if(SBUF==0xff)
  118.                         {
  119.                                 rec_flag=1;       
  120.                                 i=0;
  121.                         }                       
  122.                 }
  123.                 else
  124.                 {
  125.                         if(SBUF==0xff)
  126.                         {
  127.                                 rec_flag=0;       
  128.                                 if(i==3)
  129.                                 {
  130.                                         Communication_Decode();               
  131.                                 }
  132.                                 i=0;
  133.                         }
  134.                         else
  135.                         {
  136.                                 buffer[i]=SBUF;
  137.                                 i++;
  138.                         }
  139.                 }               
  140.     }
  141.     else
  142.     {
  143.         TI  =  0;
  144.     }       
  145. }
复制代码

uart.c

2.98 KB, 下载次数: 1, 下载积分: 金钱 -1

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-18 16:18:41 | 显示全部楼层
非常感谢大侠
回复 支持 反对

使用道具 举报

发表于 2014-9-19 09:35:14 | 显示全部楼层
用安卓客户端如何实现pwm调速呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-5-4 16:58 , Processed in 1.101574 second(s), 23 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表