找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2745|回复: 2
收起左侧

Aduino之PWM控制实例 可以进行DC Motor的控制速度

[复制链接]
ID:345500 发表于 2018-6-26 13:38 | 显示全部楼层 |阅读模式
这个是用串口输入数据进行PWM控制的程序,实际用来可以进行DC Motor的控制速度。

源程序如下:
  1. #include <avr/wdt.h>

  2. int duty = 0;
  3. byte lo , hi;

  4. void setup() {
  5.   // put your setup code here, to run once:
  6.   Serial.begin(115200);
  7.   Serial.setTimeout(500);    //setTimeout
  8.   pinMode(9,OUTPUT);
  9.   digitalWrite(2,LOW);
  10.   TCCR1A = 0;
  11.   TCCR1B = 0;
  12.   
  13.   TCCR1A = _BV(WGM11) | _BV(WGM10) | _BV(COM1A1) | _BV(COM1B1);
  14. //  TCCR1A = _BV(WGM11) | _BV(WGM10);
  15.   TCCR1B = _BV(CS10) | _BV(WGM12);
  16.   OCR1A = 0;
  17.   OCR1B = 1000;
  18.   wdt_enable(WDTO_1S);
  19. }

  20. void loop() {
  21.   // put your main code here, to run repeatedly:
  22.   if(Serial.available()>0)
  23.   {
  24.     lo = Serial.read();       //hi = 0x04, lo =0x00
  25. //    Serial.write(Serial.available());
  26.     if( Serial.readBytesUntil(240,&hi,1) != 0)
  27.     {
  28.       if( hi < 4)
  29.       {
  30.         duty = (hi << 8) + lo ;
  31.         OCR1A = duty;
  32. //      Serial.write(lo);
  33. //      Serial.write(hi);   
  34.       }
  35.       else if(hi == 0x70)
  36.         Serial.write(lo);
  37.     }
  38. //    Serial.write(Serial.available());   
  39.   }
  40.   wdt_reset();
  41. }


  42. void software_Reset()
  43. {
  44.   asm volatile("  jmp 0");
  45. }
复制代码

所有资料51hei提供下载:
motorSetTimeout.zip (819 Bytes, 下载次数: 10)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:258474 发表于 2018-6-27 12:05 | 显示全部楼层
请问怎样接线
回复

使用道具 举报

ID:345500 发表于 2018-6-27 13:42 | 显示全部楼层
就用串口接收PC端发送Pluse数据,由Aduino  Pin 9输出控制Mos管对DC motor电源进行控制
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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