This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 基本 PWM

Guru**** 2614265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/646554/basic-pwm

我需要帮助、我必须使用编码器控制位置直流电机、我找不到用于 PWM 转 tVAC tm4c123gpm 的基本代码我使用 code composer 进行编程

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您下载 TivaWare 驱动程序、您将在以下位置找到 PWM 的一些示例:
    C:\ti\TivaWare_C_Series-2.1.4.178\examples\peripherals\PWM

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我首先尝试控制速度、

    这是我的代码

    #include
    #include
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/debug.h"
    #include "driverlib/pwm.h"
    #include "driverlib/pin_map.h"
    #include "inc/hw_gpio.h"
    #include "driverlib/rom.h"
    #include "driverlib/adc.h"

    #define PWM_FREQUENCY 55

    int main (空)

       volatile uint32_t ui32Load;
       volatile uint32_t ui32PWMClock;
       uint32_t ui32ADC0Value[1];
       volatile uint8_t ui8Adcust;

       SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);
       SysCtlPWMClockSet (SYSCTL_PWMDIV_64);



       SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);
       SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);

       GPIOPinTypePWM (GPIO_PORTD_BASE、GPIO_PIN_0);
       GPIOPinConfigure (GPIO_PD0_M1PWM0);



       ui32PWMClock = SysCtlClockGet ()/64;
       ui32Load =(ui32PWMClock/PWM_FREQUENCY)- 1;
       PWMGenConfigure (PWM1_base、PWM_GEN_0、PWM_GEN_MODE_DOWN);

       PWMGenPeriodSet (PWM1_base、PWM_GEN_0、ui32Load);


       PWMOutputState (PWM1_base、PWM_OUT_0_bit、true);
       PWMGenEnable (PWM1_base、PWM_GEN_0);




       SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
       SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
       GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3);
       ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_PROCESSOR、0);
       ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_CH0 | ADC_CTL_IE |ADC_CTL_END);

       ADCSequenceEnable (ADC0_BASE、3);

       while (1)
       {


           ADCIntClear (ADC0_BASE、3);
           ADCProcessorTrigger (ADC0_BASE、3);

             while (!ADCIntStatus (ADC0_BASE、3、false))
             {
             }


             ADCSequenceDataGet (ADC0_BASE、3、ui32ADC0Value);//监视 ui32ADC0Value
             ui8Adcy=ui32ADC0Value[0];


              PWMPulseWidthSet (PWM1_base、PWM_OUT_0、ui8Adust * ui32Load / 500);


              SysCtlDelay (100000);
        }


       }



    但我认为 PWMPulseWidthSet (PWM1_base、PWM_OUT_0、ui8Adust * ui32Load /500)这一行中的问题电机改变了速度、但并不正常

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    忽略电机、PWM 信号的频率和脉宽是否正确?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道如何计算参数

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也许我们应该从一开始就开始。 您要控制哪种类型的电机? 您希望 PWM 信号的频率是多少? 如何确定所需的占空比?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用直流电机、我不知道的频率、我只想控制电机的转速

    PWM1_Init (5000);

    PWM1_Start ();

    while (1)

    POT=ADC_READ (0)>>2;
    PWM1_SET_DUTY (POT);
    delay_ms (30);


    这就是我要做的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已连接一个 CCS7.3项目、该项目读取 AIN0上的值并以40KHz 在 M0PWM2上输出 PWM。

    /cfs-file/__key/communityserver-discussions-components-files/81/Forum646554.zip