ATMEGA168+L298控制电机正反转的代码与Proteus仿真

发布者:老卫最新更新时间:2019-10-24 来源: 51hei关键字:ATMEGA168  L298  控制电机正反转  Proteus仿真 手机看文章 扫描二维码
随时随地手机看文章

这是之前课程设计做的遥控小车,简单的控制电机转速使小车前进和后退,左转右转也是参考了网上别人的,有需要的可以看看,哪里有不足也请指出

ATMEGA168单片机+L298仿真原理图如下

 

单片机源码:

int Foreward_key=2;//正转按钮
int Reverse_key=3;//反转按钮
int Stop_key=4;//停止按钮
int Trunleft_key=0;//左转按钮
int Trunright_key=1;//右转按钮
int Foreward_led=5;//正转指示灯
int Reverse_led=6;//反转指示灯
int Stop_led=7;//停止指示灯
int pinI1=8;//定义电机1正转接口
int pinI2=9;//定义电机1反转接口
int pinI3=13;//定义电机2正转接口
int pinI4=12;//定义电机2反转接口
int speedpin=14;//定义EA(PWM调速)接口
int speedpin1=14;//定义EB(PWM调速)接口
void setup()
{
  pinMode(Foreward_key,INPUT);
  pinMode(Reverse_key,INPUT);
  pinMode(Trunleft_key,INPUT);
  pinMode(Trunright_key,INPUT);
  pinMode(Stop_key,INPUT);
  pinMode(Foreward_led,OUTPUT);
  pinMode(Reverse_led,OUTPUT);
  pinMode(Stop_led,OUTPUT);
  pinMode(pinI1,OUTPUT);//定义该接口为输出接口
  pinMode(pinI2,OUTPUT);
  pinMode(pinI3,OUTPUT);//定义该接口为输出接口
  pinMode(pinI4,OUTPUT);
  pinMode(speedpin,OUTPUT);
  pinMode(speedpin1,OUTPUT);
  digitalWrite(Foreward_led,HIGH);
  digitalWrite(Reverse_led,HIGH);
  digitalWrite(Stop_led,HIGH);
}
void loop()

  if(digitalRead(Foreward_key)==HIGH)//正转
  {
    while(digitalRead(Foreward_key)==HIGH);
    digitalWrite(Foreward_led,LOW);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI1,LOW);//使直流电机顺时针转
    digitalWrite(pinI2,HIGH);
    analogWrite(speedpin,100);
    digitalWrite(pinI3,LOW);//使直流电机顺时针转
    digitalWrite(pinI4,HIGH);
    analogWrite(speedpin1,100);
  }
  if(digitalRead(Reverse_key)==HIGH)//反转
  {
    while(digitalRead(Reverse_key)==HIGH);
    digitalWrite(Foreward_led,HIGH);
    digitalWrite(Reverse_led,LOW);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI1,HIGH);//使直流电机逆时针转
    digitalWrite(pinI2,LOW);
    analogWrite(speedpin,100);
    digitalWrite(pinI3,HIGH);//使直流电机逆时针转
    digitalWrite(pinI4,LOW);
    analogWrite(speedpin1,100);

  }
  if(digitalRead(Stop_key)==HIGH)//停止
  {
    while(digitalRead(Stop_key)==HIGH);
    digitalWrite(Foreward_led,HIGH);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,LOW);
    digitalWrite(pinI1,LOW);//使直流电机逆时针转
    digitalWrite(pinI2,LOW);
    analogWrite(speedpin,100);
    digitalWrite(pinI3,LOW);//使直流电机逆时针转
    digitalWrite(pinI4,LOW);
    analogWrite(speedpin1,100);
  }
  if(digitalRead(Trunleft_key)==HIGH)//左转
  {
    while(digitalRead(Trunleft_key)==HIGH);
    digitalWrite(Foreward_led,LOW);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI1,LOW);//使直流电机顺时针转
    digitalWrite(pinI2,HIGH);
    analogWrite(speedpin,100);
    delay(120);
    digitalWrite(pinI3,LOW);//使直流电机顺时针转
    digitalWrite(pinI4,HIGH);
    analogWrite(speedpin1,100);

  }
    if(digitalRead(Trunright_key)==HIGH)//右转
  {
    while(digitalRead(Trunright_key)==HIGH);
    digitalWrite(Foreward_led,LOW);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI3,LOW);//使直流电机顺时针转
    digitalWrite(pinI4,HIGH);
    analogWrite(speedpin1,100);
    delay(120);
    digitalWrite(pinI1,LOW);//使直流电机顺时针转
    digitalWrite(pinI2,HIGH);
    analogWrite(speedpin,100);
  }

}

关键字:ATMEGA168  L298  控制电机正反转  Proteus仿真 引用地址:ATMEGA168+L298控制电机正反转的代码与Proteus仿真

上一篇:AVR单片机电子抽奖完整项目仿真+源码设计
下一篇:avr单片机读写时钟芯片DS3231程序(通过测试)

推荐阅读最新更新时间:2024-10-25 15:43

ATMEGA168+L298控制电机正反转的代码与Proteus仿真
这是之前课程设计做的遥控小车,简单的控制电机转速使小车前进和后退,左转右转也是参考了网上别人的,有需要的可以看看,哪里有不足也请指出 ATMEGA168单片机+L298仿真原理图如下 单片机源码: int Foreward_key=2;//正转按钮 int Reverse_key=3;//反转按钮 int Stop_key=4;//停止按钮 int Trunleft_key=0;//左转按钮 int Trunright_key=1;//右转按钮 int Foreward_led=5;//正转指示灯 int Reverse_led=6;//反转指示灯 int Stop_led=7;//停止指示灯 int pinI1=8;//定
[单片机]
ATMEGA168+L298<font color='red'>控制</font><font color='red'>电机正反转</font>的代码与<font color='red'>Proteus仿真</font>
L297,L298驱动步进电机原理图proteus仿真+程序 LCD显示速度
L297,L298驱动步进电机的原理图,亲测可用 L297,L298驱动步进电机的51单片机程序如下: #include AT89X51.h int delay(); void inti_lcd(); void show_lcd(int); void cmd_wr(); void ShowState(); void clock(unsigned int Delay) ; void DoSpeed(); //计算速度 //正转值 #define RIGHT_RUN 1 //反转值 #define LEFT_RUN 0 sbit RS=0xA0; sbit RW=0xA1; sbit E=0xA2; char Spe
[单片机]
L297,<font color='red'>L298</font>驱动步进电机原理图<font color='red'>proteus仿真</font>+程序 LCD显示速度
ATmega168 MCU控制寄存器SMCR
MCU 控制寄存器包含了电源管理的控制位。 · Bits 7..4 Res 保留位: ATmega168中的这些位都没有使用到,读返回值始终是 0”。 · Bits 3、2、1-SM2..0 : 休眠模式选择位 2、 1 和 0 。如 Table18 所示,这些位用于选择具体的休眠模式。 · Bit 0 – SE: 休眠使能 为了使MCU 在执行SLEEP 指令后进入休眠模式, SE 必须置位。为了确保进入休眠模式是程序员的有意行为,建议仅在SLEEP 指令的前一条指令置位SE。MCU 一旦唤醒立即清除SE。
[单片机]
<font color='red'>ATmega168</font> MCU<font color='red'>控制</font>寄存器SMCR
ATmega168 控制和状态寄存器MCUCSR
AVR 控制和状态寄存器提供了有关引起AVR复位的复位源的信息。 · Bit 7..4 – Res: 保留位 ATmega168中的这些位都没有适用,读返回值始终为 0”。 · Bit 3 – WDRF: 看门狗复位标志 看门狗复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 · Bit 2 – BORF: 掉电检测复位标志 掉电检测复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 · Bit 1 – EXTRF: 外部复位标志 外部复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 · Bit 0 – PORF: 上电复位标志 上电复位发生时置位。只能通过写”0” 来清除。为了使
[单片机]
<font color='red'>ATmega168</font> <font color='red'>控制</font>和状态寄存器MCUCSR
三相电机正反转控制原理
电流大小不同,正反转控制也不相同,一般小电机交流接触器切换即可。倒顺开关也可用。大电机要软启动,星三角启动再切换,变频由IGBT来切换。不论是机械而是电子切换,只要能改变交流电机的进线相位即可达到正反转的目的。
[嵌入式]
怎样控制直流电机正反转调速
一般情况下,只要改变电枢或磁场的电源方向,即可使直流电机反转。如果要得到快速高频率的正反转就比较复杂了。由于直流电机的特殊性能以及强反电势,存磁等情况。要想做到快速高效又高频的正反转需要拥有一套非常专一的电子线路、高精度检测手段及繁杂的逻辑控制才可安全有效地实现。 现以单相直流DC220V与三相直流DC440V的电机为例。 常规都是用2套可控硅正反并接,2套控制系统、2套脉冲触发器来控制2套可控硅,其中2套可控硅控制如何切换。如何安全有效的运行,就必须要有一套非常精准而复杂的控制检测系统来实现2套可控硅来自由导通,而不会产生短路、漏电及雪崩效应。 当直流电机在高速旋转的情况下要求快速反转就必须要有一整套安全有效的强制制
[嵌入式]
【分析】电机正反转控制系统
下图为使用亿佰特公司旗下的C31-04R实现的直交流电机正反转控制系统,该系统可以使用本地按键控制,也可以通过4G网络接入云服务器再通过手机APP进行控制(使用阿里云的“云智能”),还可以通过遥控器在4Km内实现控制。 继电器带载分析 C31-04R使用功率继电器常开触点具有(常温30A@277VAC,阻性),常闭触点具有(常温15A@277VAC,阻性),耐压等级(线圈与触点间介质耐压2.5KVAC 1min,断开触点间1500VAC 1min),继电器详细参数如下图所示: 触点负载说明 继电器触点所能承受的负载,除了确认负载的大小,还需要确认负载的类型,不同的负载类型有不同的冲击电流和稳态值,如下表所示: 综
[嵌入式]
【分析】<font color='red'>电机正反转</font><font color='red'>控制</font>系统
PLC的变频器控制电机正反转接线图
PLC与变频器两者是一种包含与被包含的关系,PLC与变频器都可以完成一些特定的指令,用来控制电机马达,PLC是一种程序输入执行硬件,变频器则是其中之一。 但是PLC的涵盖范围又比变频器大,还可以用来控制更多的东西,应用领域更广,性能更强大,当然PLC的控制精度也更大。变频器无法进行编程,改变电源的频率、电压等参数,它的输出频率可以设为固定值,也可以由PLC动态控制。 PLC是可以编程序的,用来控制电气元件或完成功能、通信等任务。 PLC与变频器之间通信需要遵循通用的串行接口协议(USS),按照串行总线的主从通信原理来确定访问的方法。总线上可以连接一个主站和最多31个从站,主站根据通信报文中的地址字符来选择要传输数据的从站,
[嵌入式]
PLC的变频器<font color='red'>控制</font><font color='red'>电机正反转</font>接线图
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved