久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2555|回復: 27
打印 上一主題 下一主題
收起左側

想制作一個輪子轉動的速度表 用單片機控制

  [復制鏈接]
跳轉到指定樓層
樓主
ID:95922 發表于 2022-3-11 20:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
摩托車速度表壞了,想用51單片機做一個速度表,就單一功能的速度表。
前輪周長1.84米,輪子碟殺片剛好像編碼盤11線,用一個5V接近開關做脈沖信號,定時器1做計數器,定時器0做定時器
其它程序都寫好了,就是每小時多少公里這算法難倒我了,不知道要怎么去算了。。。。。
比如定時器1秒,計數器有多少個脈沖,然后怎么去算,學歷太低不會算了,有木有大神幫幫忙。自己瞎寫了一段算法,結果試驗速度快了好多。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:997011 發表于 2022-3-12 06:03 | 只看該作者
1.84*P/1000*3600/T
回復

使用道具 舉報

板凳
ID:997011 發表于 2022-3-12 06:29 | 只看該作者
上述公式必需在脈沖數P足夠大也就是T足夠大的前題下計算出的時速時速才會準確。所以最好用5V接近開關產生的脈沖間隔時間來推導出時速來。
回復

使用道具 舉報

地板
ID:161164 發表于 2022-3-12 08:41 | 只看該作者
以下是從舊貼中記下的轉速計算方法
取之于51Hei,還之于51Hei

高轉速脈沖計數,
低轉速測量脈沖的周期,
兩種結合就是固定采樣時間內計數N個脈沖+脈沖周期,
比如采用一個外部中斷源,
當脈沖下降沿開始計時100毫秒,
計數脈沖的個數N。
100ms時間到,
再計時T到下一個脈沖的下降沿。
那么總的脈沖數N+1個,
總的周期100ms+T.。

假設一圈有18個脈沖
那么轉速rps =(N+1)/(0.1+T)/18
回復

使用道具 舉報

5#
ID:8222 發表于 2022-3-12 08:48 | 只看該作者
這轉速這么慢的,還是測周期再換成轉速吧。
回復

使用道具 舉報

6#
ID:8222 發表于 2022-3-12 08:55 | 只看該作者
前輪周長1.84米,近時速36公里計,每秒10米,相當于轉5圈。如果采樣時間為1秒,測量圈數可能是4圈,誤差20%,如果速度更慢,誤差更大。如果加大采樣時間,又不能實時顯示。最好還是測量脈沖周期,這樣精度高,更新速度快。
回復

使用道具 舉報

7#
ID:879348 發表于 2022-3-12 11:22 | 只看該作者
沒必要自己做,買一個轉速表
回復

使用道具 舉報

8#
ID:401564 發表于 2022-3-12 14:35 | 只看該作者
如果你是想把你車子的速度表搞好,樓上有人說,買個碼表就完事了
如果你有這個自己動手的愛好,那就搞下去
先設定一個閾值,速度低于多少是不進行運算的,不然,你動一下輪子,就給你一個時速0.8公里出來
不知道你這個接近開關有沒有抖動,如果有的話,要去抖動,我沒有用過,所以不知道
如果脈沖出現的頻率比較慢.不要周期采樣,而采樣幾個脈沖,計算時間
比如一秒3-10圈,那么,你就計算收集到5圈的總時長,來進行計算
回復

使用道具 舉報

9#
ID:47286 發表于 2022-3-12 20:00 | 只看該作者
11個一圈太少了 通常的ABS靶盤都是43個或更多 只有11個分下來誤差會很大 因為觸發計算不能每秒一次 一個是間隔時間太長 另外是速度區間大 低速時反應遲鈍 高速時會溢出 所以一般是以n個毫秒采集觸發次數再轉換成1s的值 你只是測車輪還好點 我測發動機轉速 從0~8000轉更頭疼
回復

使用道具 舉報

10#
ID:401564 發表于 2022-3-12 20:15 | 只看該作者
dzbj 發表于 2022-3-12 20:00
11個一圈太少了 通常的ABS靶盤都是43個或更多 只有11個分下來誤差會很大 因為觸發計算不能每秒一次 一個是 ...

速度表是不需要太精密了,單車的碼表才一個干簧管,一千多公里下來,跟GPS誤差十幾公里而已
回復

使用道具 舉報

11#
ID:95922 發表于 2022-3-12 20:57 | 只看該作者
lwq1947 發表于 2022-3-12 06:29
上述公式必需在脈沖數P足夠大也就是T足夠大的前題下計算出的時速時速才會準確。所以最好用5V接近開關產生的 ...

脈沖間隔怎么算,是不是還用定時器?怎么推導,不會寫公式。
回復

使用道具 舉報

12#
ID:95922 發表于 2022-3-12 21:05 | 只看該作者
論壇大神還是很多,怪我學的不精大多數其實都不怎么明白!!!
如果用測周期的方法應該怎么寫程序,那位大神簡單的寫幾段讓我學習學習
回復

使用道具 舉報

13#
ID:624769 發表于 2022-3-12 21:24 | 只看該作者
老來所學 發表于 2022-3-12 20:57
脈沖間隔怎么算,是不是還用定時器?怎么推導,不會寫公式。

不知道你用的什么單片機,大多數單片機都有 PCA/CCP  一般就算是 89C51都有 CAP捕獲功能,用那個直接捕獲,比外部中斷+定時器要可靠和簡單的多。

另外,不知道你是什么摩托車,大多摩托車的碼表本來就是脈沖驅動的,你是碼表壞,脈沖應該好的,為什么不直接接那個,反而要裝接近開關呢? 我沒摩托車駕照,就沒有買摩托車,所以沒有機會禍禍。但是我的汽車,和電平車,我都是直接從發動機和電機取脈沖的,比自己加裝好多了。

一個脈沖就是輪子旋轉1格的距離,就是你行使的距離,兩個脈沖之間的間隔時間就是你這個長度的位移耗費的時間,  距離 / 時間  = 速度       當然,距離要換算成 公里  時間要換算成 小時。
當然,最好是  把 x公里 / y小時  變成     3.6  *  x米/  y秒    最好是: 3600 *  x毫米  /  y微秒    這樣計算會簡單點省事一點。
回復

使用道具 舉報

14#
ID:95922 發表于 2022-3-12 22:51 | 只看該作者
本帖最后由 老來所學 于 2022-3-12 23:35 編輯
188610329 發表于 2022-3-12 21:24
不知道你用的什么單片機,大多數單片機都有 PCA/CCP  一般就算是 89C51都有 CAP捕獲功能,用那個直接捕獲 ...

一個脈沖就是輪子旋轉1格的距離,就是你行使的距離,兩個脈沖之間的間隔時間就是你這個長度的位移耗費的時間,  距離 / 時間  = 速度
兩個脈沖的間隔時間的程序已經寫好了
例如兩個脈沖間隔時間為25毫秒,距離是184毫米,我要怎么轉換成公里/小時
這個不會算,學習不好。還有就是數碼管1秒刷新一次該怎么寫

回復

使用道具 舉報

15#
ID:624769 發表于 2022-3-13 11:20 來自手機 | 只看該作者
老來所學 發表于 2022-3-12 22:51
一個脈沖就是輪子旋轉1格的距離,就是你行使的距離,兩個脈沖之間的間隔時間就是你這個長度的位移耗費的 ...

3600 * 184毫米/25000微秒= 26.5公里/小時
你這摩托車,速度有點慢啊……
回復

使用道具 舉報

16#
ID:95922 發表于 2022-3-13 14:10 | 只看該作者
188610329 發表于 2022-3-13 11:20
3600 * 184毫米/25000微秒= 26.5公里/小時
你這摩托車,速度有點慢啊……

大神,你這算法是不是正確的?25毫秒只是一個假設。
回復

使用道具 舉報

17#
ID:624769 發表于 2022-3-13 14:40 來自手機 | 只看該作者
老來所學 發表于 2022-3-13 14:10
大神,你這算法是不是正確的?25毫秒只是一個假設。

算法是沒有問題的,3600常量 × 長度(毫米)÷ 時間(微秒)= 時速(公里/時)
帶入剛才你的 184毫米 25000微秒 就是 26.5

不過,大多時候會用:36000常量 × 長度(毫米)÷ 時間(微秒)
得到265,顯示的時候加個小數點,那么就是整型計算了,效率高很多。
回復

使用道具 舉報

18#
ID:95922 發表于 2022-3-13 15:08 | 只看該作者
188610329 發表于 2022-3-13 14:40
算法是沒有問題的,3600常量 × 長度(毫米)÷ 時間(微秒)= 時速(公里/時)
帶入剛才你的 184毫米 25 ...

謝謝大神了。
還是想問一下兩個脈沖周期的程序怎么寫簡單點,我用定時器0作計數器,定時器1作定時器,現在越寫越亂了,完全搞不懂了
回復

使用道具 舉報

19#
ID:624769 發表于 2022-3-13 15:31 | 只看該作者
老來所學 發表于 2022-3-13 15:08
謝謝大神了。
還是想問一下兩個脈沖周期的程序怎么寫簡單點,我用定時器0作計數器,定時器1作定時器,現 ...

你用的什么單片機? 最好是用“捕獲” 89C51 系列的話 就是T2 定時器, 但凡比他高一檔的基本都有專門的 PCA/CCP 用來捕獲。

實在沒有的話, 一般是 外部中斷 + 定時器     外部中斷下降沿觸發。記錄定時器的值,下一次外部中斷再觸發再讀取定時器,得到兩個脈沖之間的時間。然后就能計算了。

但是,實際使用時,最好是累計16個脈沖計算時速,比較準確。同時,收到第17個脈沖的時候,拋棄第1個脈沖,用第2~17 的脈沖計算新的時速,以此類推,這樣時速的變化會比較平滑。
回復

使用道具 舉報

20#
ID:1010121 發表于 2022-3-13 15:40 | 只看該作者
用中斷做,
arduino代碼
volatile unsigned long lasttime;
volatile float motospeed;
volatile int motoready=0;
int MotoPin =3;
void setup() {
pinMode(MotoPin, INPUT);
attachInterrupt(digitalPinToInterrupt(MotoPin),motocount,RISING);
lasttime = millis();
}

void motocount(){
  int currmotostate;
  if(motoready==0){
    motoready=1;
    lasttime =millis();
  }else{
      currmotostate = digitalRead(MotoPin);
      if(currmotostate==1){
          calmoto(0);
      }
    }
  }
void loop() {

    calmoto(1);
}
void calmoto(int m){
    if(motoready ==0){
        return;
    }
   
    unsigned long curr;
    unsigned long currtmp;
    float motorate;
   
    currtmp = millis();
    curr = currtmp-lasttime;
    if(curr>0){
         motorate = 60000/curr;
         if(m==0){
            motospeed =motorate;
            lasttime =currtmp;
         }else{
            if(motorate < motospeed){
               motospeed =motorate;
               if(motospeed < 5){
                motospeed=0;
                motoready=0;
               }
            }
         }
    }else{
       motoready=0;
    }
}
回復

使用道具 舉報

21#
ID:95922 發表于 2022-3-13 16:01 | 只看該作者
188610329 發表于 2022-3-13 15:31
你用的什么單片機? 最好是用“捕獲” 89C51 系列的話 就是T2 定時器, 但凡比他高一檔的基本都有專門的  ...

89C51不是只有T0和T1定時器嗎,怎么會有T2呢。
我現在用T0作外部計數器,T1作定時器,第一個脈沖開定時器,第二個脈沖關定時器,中間就是時間,然后用你的公式可以計算出時速了(只是在開發板了試驗了下)。
然后還有個問題,數碼管始終顯示兩個脈沖的速度,外部輸入的脈沖停止了還是顯示當前的速度,我想要顯示速度1秒,然后再顯示下一個速度,試驗了一下午沒成功,不知道怎么寫了。
回復

使用道具 舉報

22#
ID:95922 發表于 2022-3-13 16:01 | 只看該作者
join_gu 發表于 2022-3-13 15:40
用中斷做,
arduino代碼
volatile unsigned long lasttime;

不好意思,你這個實在是看不懂
回復

使用道具 舉報

23#
ID:624769 發表于 2022-3-13 17:20 | 只看該作者
老來所學 發表于 2022-3-13 16:01
89C51不是只有T0和T1定時器嗎,怎么會有T2呢。
我現在用T0作外部計數器,T1作定時器,第一個脈沖開定時 ...

首先,89C51是有 T2 定時器的,比如說, AT89C51, 在手冊的第13頁, AT89C51RC.pdf (516.12 KB, 下載次數: 2) 又比如說,STC89C51, 在手冊的第216頁,http://www.zg4o1577.cn/bbs/dpj-82368-1.html
都有對T2定時器,以及捕獲功能的介紹。


然后,你如果要脈沖停止后,不顯示,這上面有個思路的問題,嚴格來講,判斷速度,就是判斷兩個脈沖之間的時間,除去開機沒有發生脈沖,當有了一個脈沖之后,后面過多久時間才會再出現脈沖,這是不可知的,往大了說,過個百年,再次發生下一個脈沖,依然是可以計算速度的,只是小數點比較長,所以,你就需要定一個時間,比如1秒,或者3秒,10秒,沒有接收到下一個脈沖,就認為停止了,或者說,約等于0時速。
回復

使用道具 舉報

24#
ID:624769 發表于 2022-3-13 17:41 | 只看該作者
dzbj 發表于 2022-3-12 20:00
11個一圈太少了 通常的ABS靶盤都是43個或更多 只有11個分下來誤差會很大 因為觸發計算不能每秒一次 一個是 ...

一般用混合測算法比較合理,比較快的時候,用脈沖數除以 固定周期,比如100ms, 比較慢的時候,用固定數量脈沖所代表的距離 去除以發生這些脈沖所,耗費的時間。
回復

使用道具 舉報

25#
ID:95922 發表于 2022-3-13 21:21 | 只看該作者
188610329 發表于 2022-3-13 17:20
首先,89C51是有 T2 定時器的,比如說, AT89C51, 在手冊的第13頁, 又比如說,STC89C51, 在手冊的第216 ...

思路也是這個思路,就是感覺沒法下手了,學習單片機是網上下載教程學了個皮毛,再想學精一點有點難了
回復

使用道具 舉報

26#
ID:486153 發表于 2022-3-13 21:23 | 只看該作者
霍爾測速?編碼器?
回復

使用道具 舉報

27#
ID:1010121 發表于 2022-3-16 22:29 | 只看該作者
老來所學 發表于 2022-3-13 16:01
不好意思,你這個實在是看不懂

就是設置3號端口監聽中斷。
電平變化就執行中斷代碼,也就是計數器。計數時,計算一下上一次的中斷時間,這樣就可以計算出轉速了。
我馬達的轉速監測就這么寫的,沒有問題。
回復

使用道具 舉報

28#
ID:885416 發表于 2022-3-17 14:39 來自手機 | 只看該作者
最最最簡單的,就是看你什么輸入信號了,比如,會有個上升沿,弄個上升沿中斷,上升沿中斷里弄個變量++,每5s查看變量的值,變量增加了多少就是按你的計算方法算走了多少距離,讓后有每5s的距離了,代表上個5s走了這么遠,速度就是距離除以時間5s
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久婷婷国产综合精品首页 | 免费在线观看黄视频 | 成人3d动漫一区二区三区91 | 国产精华一区 | 欧美激情精品久久久久久变态 | av色在线 | 日本午夜网 | 久久男人 | 国产欧美一区二区久久性色99 | 三级av在线 | 成人在线观看免费视频 | 国产精品久久福利 | 欧美精品一区二区在线观看 | 午夜专区 | 亚洲成av人影片在线观看 | 日本精品一区二区三区视频 | 黄色视频a级毛片 | 久久精品国产亚洲夜色av网站 | 精品欧美一区二区三区久久久 | 亚洲97| 亚洲精品女人久久久 | 欧美精品一区二区在线观看 | 综合久 | 欧美成人黄色小说 | 午夜天堂精品久久久久 | 国产中文字幕在线 | 国产免费又色又爽又黄在线观看 | 亚洲激情在线观看 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 人人干人人玩 | 欧美综合久久久 | 丁香色婷婷 | 精品成人在线 | 成人特级毛片 | 久久久精品综合 | 一区二区三区视频免费观看 | 久久免费看 | 国产高清视频在线观看播放 | 人人鲁人人莫人人爱精品 | 日韩在线免费视频 | 成年人黄色一级毛片 |