头像-274708

Gwvfbukn

  • 16244
  • 单片机、嵌入式、FPGA/CPLD
  • 消费电子、测试仪器及设备

个人成就

获得 35 次赞

帮助过29人

自平衡小车pid调节中积分项的作用是什么

积分项老是保持在一个正值或一个负值附近,到不了0附近,这正常吗?比例输出,积分输出,微分输出具体体现在对小车平衡的什么地方?

怎么判断串口接受的字节个数。。

怎么判断串口接收到一个字节还是两个字节。。。要发送0 - 65535之间的数,怎么判断是一个字节的还是两个字节的。。。

步进电机平衡小车

用的1.2a的42步进电机,a4988做驱动,16细分模式,3.2khz每秒一圈定时器比较翻转模式,输入电机最大有效频率在16khz左右,但速度突变较大时会停转,10khz以下相对稳定,只写了个比例调节,根本站不起来。。感觉小车反应迟钝的多,比例系数大点好还是小点好?陀螺仪是mpu6050,用的dmp库,每秒大概100次pit角采样pid写的话p  i   d 三部分都有哪些影响啊?对输出占比大概各占多少,pit角为0时用加一个常量输出吗3节18650,电池放在电机的上面怎么写最简单?先能站起来就行了

stm32f10x 输出比较打开后程序卡死在下个函数

输出比较有脉冲输出,卡死在初始化后面的函数,注释后后面函数正常会是哪里问题?定时器配置问题吗?GPIO_InitTypeDef GPIO_Structure; TIM_TimebaseInitTypeDef  TIM_TimebaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; NVIC_InitTypeDef NVIC_InitStructure; //开定时器时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 ENABLE); //配置pwm输出管脚 GPIO_Structure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_6; GPIO_Structure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Structure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA &GPIO_Structure); GPIO_SetBits(GPIOAGPIO_Pin_1 | GPIO_Pin_6); //初始化引脚 //配置中断优先级 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //中断源 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //中断通道使能 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //响应优先级 NVIC_Init(&NVIC_InitStructure); //初始化 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //中断源 NVIC_Init(&NVIC_InitStructure); //初始化 // 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断  即周期 TIM_TimebaseStructure.TIM_Period = 1000 - 1; //周期 TIM_TimebaseStructure.TIM_Prescaler= 360-1;// 时钟预分频数 TIM_TimebaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分割 0 TIM_TimebaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_TimebaseStructure.TIM_RepetitionCounter = 0; //高级定时器选项,普通定时器忽略即可 TIM_TimebaseInit(TIM2 &TIM_TimebaseStructure);// 初始化定时器 TIM_TimebaseInit(TIM3 &TIM_TimebaseStructure);// 初始化定时器 //初始化定时器通道:  TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Toggle; //翻转输出模式 TIM_OCInitStructure.TIM_Pulse = 500; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //状态使能 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性 TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM_OC2Init(TIM2&TIM_OCInitStructure); //输出比较通道2初始化 TIM_OC1Init(TIM3&TIM_OCInitStructure); //输出比较通道1初始化 TIM_OC2PreloadConfig(TIM2 TIM_OCPreload_Disable); TIM_OC1PreloadConfig(TIM3 TIM_OCPreload_Disable); //失能预装载寄存器 TIM_ITConfig(TIM2TIM_IT_CC2ENABLE); TIM_Cmd(TIM2 ENABLE); TIM_ITConfig(TIM3TIM_IT_CC1ENABLE); TIM_Cmd(TIM3 ENABLE); TIM_CtrlPWMOutputs(TIM2 ENABLE); TIM_CtrlPWMOutputs(TIM3 ENABLE);​中断函数:void TIM2_IRQHandler(void)   //PA1 { if(TIM_GetITStatus(TIM2TIM_IT_CC2) == SET) { TIM_ClearITPendingBit(TIM2TIM_IT_CC2); i ++; if(i == 2) { i = 0; TIM2->ARR=1000; TIM_SetCompare2(TIM250);   } } }void TIM3_IRQHandler(void) //PA6{ if(TIM_GetITStatus(TIM3TIM_IT_CC1) == SET) { TIM_ClearITPendingBit(TIM2TIM_IT_CC1); i ++; if(i == 2) { i = 0; TIM3->ARR=3000; //设置重装载值  改变这个可以改变频率 TIM_SetCompare1(TIM320);  //设置比较值 }  }}​

a4988步进电机驱动模块

做小车用的,用的1.2a的42步进电机,洞洞板上焊接了两个模块,ms1ms2ms3悬空了,一上电两个都冒烟了。。。会是哪里问题,转向和步进尚未编程,resetsleepvdd接了3.3,enable接了地,vmot接了12v,电机是红绿黄白的顺序接的,操作有问题吗?调节电流的旋钮默认没动,会是哪里的问题?还有步进细分和不细分对扭矩有什么影响,细分会更容易丢步吗?

hc-06的蓝牙模块,设置校验位后都是乱码是哪里问题

波特率一致都是9600,程序和串口助手都设置偶校验,蓝牙也是偶校验,是哪里操作问题吗?只要把校验去了就没乱码了,加上校验全是乱码,一个正确的数据都没有。。