|
| 你用示波器量一下測人高電平然后用手揮看看有沒有高低電平變更! |
|
學(xué)習(xí)一下,樓主搞出來了嗎 |
| 我也遇到過類似問題,沒解決,也來學(xué)習(xí)一下 |
| 我在51上面做的時候曾遇到過相同的問題,紅外模塊觸發(fā)中斷之后可能打亂了pwm的輸出周期,可能需要調(diào)整的是外部中斷和pwm生成的次序 |
|
MG995舵機的功率較大,只用單片機的IO口是無法驅(qū)動的,必須加一個電機驅(qū)動模塊才行。 即:舵機的電源口要與電機驅(qū)動模塊相連接,控制口與單片機連接,就可以控制MG995舵機了。 |
| 舵機的信號線加電阻連串口,抱歉說錯了 |
| 都是大神,膜拜了!也可以在電源線上加一個電阻 |
| 都是大神,膜拜了! |
HC6800-ES-V2.0 發(fā)表于 2018-6-12 07:34 TIM1_PWM_Init(4999,287);//50hz while(1) { delay_ms(100); if(dir) t=t+20; else t=t-20; if(t>660)dir=0; if(t==140)dir=1; // printf("t:%d\n",t); TIM_SetCompare1(TIM1,t); } } 這段代碼就可以使舵機來回轉(zhuǎn),pwm波形正確20ms的周期,高電平在0.5毫秒與2.5毫秒來回循環(huán),但是下面這段程序就連pwm都是亂的,連周期都在變 delay_ms(100); dianpin= GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);//紅外檢測是否有人,有人輸出高電平 printf("%d\n",dianpin);用串口調(diào)試,觀看對著人與不對著人的電平高低變化 if(!dianpin)//沒檢測到人,讓舵機轉(zhuǎn)動檢測 { delay_ms(20000); if(dir) t=t+20; else t=t-20; if(t>660) dir=0; if(t==140)dir=1; TIM_SetCompare1(TIM1,t); } else//檢測到人,舵機在原來的位置停止 { delay_ms(1000); TIM_SetCompare1(TIM1,t); } printf("t:%d\n ",t); //用串口調(diào)試觀察t的值 } |
HC6800-ES-V2.0 發(fā)表于 2018-6-12 07:34 我單獨用單片機可以驅(qū)動它正反轉(zhuǎn),只是加了紅外后連pwm波形都是亂的 |
zsyzdx 發(fā)表于 2018-6-11 21:07 檢測到人理應(yīng)是讓舵機定住不動,一旦人離開舵機紅外沒檢測到人的話,開始轉(zhuǎn)動;紅外檢測到人直接會給單片機一個3.3v高電平 |
|
MG995舵機的功率較大,只用單片機的IO口是無法驅(qū)動的,必須加一個電機驅(qū)動模塊才行。 即:舵機的電源口要與電機驅(qū)動模塊相連接,控制口與單片機連接,就可以控制MG995舵機了。 |
| 你檢測人和沒檢測到人是怎么做的?會不會是你檢測人的波形有問題? |
| 支持下,幫頂 |
Powered by 單片機教程網(wǎng)