欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10929|回復: 2
收起左側

51單片機智能小車設計(電路原理圖+源程序)

[復制鏈接]
ID:343799 發表于 2018-12-29 13:30 | 顯示全部樓層 |閱讀模式
  前段時間電子實訓用89C52單片機做了個智能車,只做了最基礎的部分,可以繼續添加其他外設。
  硬件設備:單片機最小系統(89C52RC)、電源(9V)、穩壓(7805)、驅動模塊(L9110)、測速模塊(LM393+GK152)、直流電機+小車支架。
  要實現的功能:在程序里面通過測速閉環調節輸出的PWM占空比使小車直行。(目前就只寫了直行的程序,轉彎程序還沒寫,其他外設也沒寫)
  單片機配置:定時器0:左輪pwm波;定時器1:右輪pwm波;外部中斷0:左輪測速;外部中斷1:右輪測速。
  要讓小車直行最簡單的辦法是對左右輪輸出pwm波,手動調節占空比來使左右輪轉速相同。由于各電機差異當占空比相同時電機轉速不一樣,所以就要不斷調試,調節占空比來使左右輪轉速相同,這個過程很麻煩。而通過測速模塊就可以自動調節占空比來使轉速達到一致。

制作出來的實物圖如下:

實物圖2

實物圖2

實物圖1

實物圖1

PCB

PCB


電路原理圖如下:

原理圖

原理圖


下面是單片機程序:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit djl2=P0^3;
  5. sbit djl1=P0^2;
  6. sbit djr1=P0^1;
  7. sbit djr2=P0^0;

  8. uchar time1,time2,pwm1=80,pwm2=80;
  9. uint tmp1,tmp2;

  10. void init()
  11. {
  12.         EA=1;
  13.         EX0=1;
  14.         ET0=1;
  15.         IT0=1;
  16.         EX1=1;
  17.         ET1=1;
  18.         IT1=1;
  19.         TMOD=0X11;
  20.         TH0=(65536-100)/256;
  21.         TL0=(65536-100)/256;
  22.         TH1=(65536-100)/256;
  23.         TL1=(65536-100)/256;
  24.         TR1=1;
  25.         TR0=1;
  26. }
  27. void external0() interrupt 0
  28. {
  29.         EX0=0;
  30.         tmp1++;
  31.         EX0=1;
  32. }
  33. void inter1() interrupt 1
  34. {
  35.         TR0=0;
  36.   TH0=(65536-100)/256;
  37.   TL0=(65536-100)%256;
  38.   TR0=1;
  39.          
  40.   time1++;
  41.         if(time1==100)
  42.         time1=0;
  43. }
  44. void cesu2() interrupt 2
  45. {
  46.         EX1=0;
  47.         tmp2++;
  48.         EX1=1;
  49. }
  50. void inter2() interrupt 3
  51. {
  52.         TR1=0;
  53.         TH1=(65536-100)/256;
  54.         TL1=(65536-100)%256;
  55.         TR1=1;
  56.          
  57.         time2++;
  58.         if(time2==100)
  59.         time2=0;
  60. }

  61. void pwm()
  62. {
  63.                 if(time1<=pwm2)
  64.                 djr1=1;
  65.         else djr1=0;
  66.         if(time2<=pwm1)
  67.                 djl1=1;
  68.         else djl1=0;

  69. }
  70. void tiaosu()
  71. {
  72.         if(time1==100)
  73.         {
  74.                 while(1)
  75.                 {
  76.                         if(tmp1>tmp2)
  77.                                 pwm1-=1;
  78.                         if(tmp1<tmp2)
  79.                                 pwm2+=1;
  80.                         if(tmp1=tmp2)
  81.                          break;
  82.                 }
  83.                 tmp1=tmp2=0;
  84.         }
  85. }

  86. void main()
  87. {
  88.         djl2=djr2=0;
  89.         init();
  90.         while(1)
  91.         {
  92.                 pwm();
  93.                 tiaosu();
  94.         }
  95. }
復制代碼







評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:29972 發表于 2019-2-9 22:12 | 顯示全部樓層
    我的遙控車剛剛制作完成,目前問題是無法直行,請問樓主用的是自帶編碼器的電機嗎?是PID控制嗎?
程序能否加注釋?愿與樓主同行,共同完成制作!
回復

使用道具 舉報

ID:544737 發表于 2020-2-8 16:30 | 顯示全部樓層
求原理圖和代碼
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表