• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51单片机L298N控制直流电机程序难嘛?

crustycrab 2017-07-16 浏览量:1009
三个按键一个旋钮连接51单片机,驱动为L298N,控制直流电机转速小,大,停止,随着旋钮转速变大变小,程序很难吗
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 51单片机的话是比较麻烦,因为一般的89C51是不带ADC的,这样的话就比较难检测到旋钮的变化了

    如果采用STC的那些带ADC的增强型51单片机就不难

    程序的基本思路是

    初始化

    int main()

    {

    初始化

    while(1)

    读取旋钮AD值

    输出电机控制信号​

    等待中断,只要123任意一个按下即触发中断

    延时

    }

    中断函数()

    检测按钮1是否按下,按下则直接转速设置为小

    检测按钮2是否按下,按下则直接转速设置为大

    检测按钮3是否按下,按下则直接停止

    不过你的需求那里有一点没说清楚,就是电机速度那里按钮按下多久之后才检测旋钮变化。

    L298N的驱动就是用PWM,程序请参考一下这篇文章  51单片机的L298N直流电机驱动(PWM).pdf

    • 发布于 2017-07-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:3
  • 不难,电机的转速用pwm控制。

    根据旋钮的话,你就用adc采样电压的变化来控制pwm占空比输出就行。

    停止和正反转就是io控制

    • 发布于2017-07-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机的话是比较麻烦,因为一般的89C51是不带ADC的,这样的话就比较难检测到旋钮的变化了

    如果采用STC的那些带ADC的增强型51单片机就不难

    程序的基本思路是

    初始化

    int main()

    {

    初始化

    while(1)

    读取旋钮AD值

    输出电机控制信号​

    等待中断,只要123任意一个按下即触发中断

    延时

    }

    中断函数()

    检测按钮1是否按下,按下则直接转速设置为小

    检测按钮2是否按下,按下则直接转速设置为大

    检测按钮3是否按下,按下则直接停止

    不过你的需求那里有一点没说清楚,就是电机速度那里按钮按下多久之后才检测旋钮变化。

    L298N的驱动就是用PWM,程序请参考一下这篇文章  51单片机的L298N直流电机驱动(PWM).pdf

    • 发布于2017-07-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 不难吧。
    第一:按键很简单吧,你有三个按键,一个正转,一个反转,一个停转,刚好。
    第二:那个旋钮(——是不是电位器?)比较难一点点。
            第一:是没有办法直接读它的值的,必须用AD转换。AD转换的芯片很多,甚至用高级单片机还可以自带。51嘛,我用过PCF8591、XPT2046,都不错。
            第二:你想用旋钮控制电机转动的快慢?那么,还必须学会用刚才说到的AD转换的数据,加到PWM波中,这样,电机才能根据AD值调节转动快慢。这个也是有难度的。
    第三:任何工程都不会是一次成功,你可以先一样样地试验,如:先将按键控制电机正反转和停转搞好,再来搞旋钮的AD转换,最后是利用AD转换数据进行PWM波的调速。串行口的波特率发生器。 
    • 发布于2017-07-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

51单片机L298N控制直流电机程序难嘛?