機械社區
標題: DIY自行車速度里程表 [打印本頁]
作者: 1五湖四海1 時間: 2011-8-1 19:28
標題: DIY自行車速度里程表
本帖最后由 1五湖四海1 于 2011-8-1 20:38 編輯
上班以后,路程比較遠就很少騎車了,最近單位發了一臺自行車。周末休息時上公園騎了幾圈。回來后想如果有個速度表就好了,看看自己能騎到多少Km/h。自己是個愛制作DIY的電子愛好者,坐著想了一個設計方案。這個要有里程表有速度顯示和行駛時間顯示。這些功能只要一個功能強大的單片機就可以完成要求。
功能上采用6個數碼管做顯示,打開后左邊三位顯示里程數單位為Km,右邊兩位顯示速度單位為Km/h。當按下轉換按鈕后,顯示內容切換到顯示行駛時間,左邊兩位顯示小時,右邊兩位顯示分鐘,秒信號用中間小數點閃爍顯示。再次按下轉換按鈕時,所以數碼管關閉以節省電能,再按下轉換按鈕回到顯示里程速度。
那天坐公交車,汽車突然啟動時,這時有個加速度到勻速行駛。這讓我想起水銀開關,利用水銀開關成45度角放置在垂直平面水銀開關頭朝后。這樣就可以完成加速度檢測了。如果車停止或勻速前進時水銀開關閉合。一旦汽車啟動或加速后水銀開關斷開,等到勻速后水銀開關再次閉合。只有計算出從閉合到斷開再到閉合的時間就可以知道加速度大小了。同樣原理可以制成減速檢測。我利用這一原理將加速度檢測加到了自行車速度里程表。我還利用555制作了一個1KHz的頻率信號輸入到揚聲器做提示音,如果超速時發出提示音。
我制作這個自行車速度里程表出于自己對DIY單片機興趣愛好,我認為在實用性上也很方便可以測速度,里程,行駛時間和加速度而且還帶揚聲器超速時提示,用起來蠻好的。
自行車速度里程表由硬件和軟件組成,硬件是由單片機最小系統加六位掃描數碼管和霍爾速度傳感器構成。軟件用C語言編寫的下面是源程序還有單片機原理圖
(, 下載次數: 206)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數: 190)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
(, 下載次數: 187)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
///////////2010.08.09.21:00///////////////////
#include<reg52.h>
#include<absacc.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define shum P1 //數碼
#define saom P2 //數碼掃描
unsigned char code xsjs[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F ,~0x00};
char disp[4]={0,0,0,0};
uchar T0count; //從T0的計數單元中讀取計數的數值
uchar timecount; //
bit flag;
bit d_05s=0;
uchar set=0;
uchar sp=30; //標志位
unsigned long x;
unsigned long z;
unsigned long y;
unsigned long a;
unsigned long d;
uchar hour=0,min=0,sec=0;
uchar xPos,yPos;
uchar i;
uchar she=30;
V[7];
uint j=0;
sbit P0_1=P0^1;
sbit P2_1=P2^1;
sbit P1_7=P1^7;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
void delay(uint k)
{
uint i,j;
for(i=0;j<k;i++)
{
for(j=0;j<121;j++);
}
}
void scan_key()
{
delay(1);
if(P3_2==0)set++;
if(set>=3)set=0;
if(set==1)flag=0x55;
F0:if(P3_2==0)goto F0;
}
void display_led()//數碼管模塊
{char e,scan;
disp[0]=hour/10;
disp[1]=hour%10;
disp[2]=min/10;
disp[3]=min%10;
P0=0xff;
scan=0xdf;
for(e=0;e<4;e++)
{
shum=0xff;
saom=scan;
if(d_05s==1)
{if(e==1)P1_7=0;else P1_7=1;}
P1=xsjs[disp[e]];
delay(4);
scan>>=1;
}
}
void lidisp()
{
d=a/7;
P1=xsjs[y/10000]; P2=0xdf;delay(1);
P1=xsjs[y%10000/1000]; P1_7=0; P2=0xef; delay(1);
P1=xsjs[y%1000/100]; P2=0xf7;delay(1);
P1=xsjs[10]; P2=0xfb;delay(1);
P1=xsjs[d/10]; P2=0xfd;delay(1);
P1=xsjs[d%10]; P2=0xfe;delay(1);
}
void main(void)
{
TMOD=0x15; //T0工作為16位計數器(方式1),T1工作方式為16位定時器
TH0=0; //計數為65536
TL0=0; //
TH1=(65536-12000)/256; //定時器采用定時4ms. 初值為12000
TL1=(65536-12000)%256;
TR1=1; //TR1=1,控制開關閉合,計數脈沖進入T1計數器,啟動定時
TR0=1; //TR0=1,控制開關閉合,計數脈沖進入T1計數器,啟動計數
ET0=1; //定時器0開中斷
ET1=1; //定時器1開中斷
EA=1; //CPU開中斷
y=0;
while(1)
{
if(P3_1==1)
{
if(P3_2==0)scan_key();
switch(set)
{
case 0: lidisp(); break;
case 1: display_led(); break;
case 2: P1=0xff; break;
default:break;
}
if(flag==1) //
{
flag=0; //清標志位
z=2*(T0count*65536+TH0*256+TL0); //取得時間寬度參數
x=z*36/10;
y=z+y;
if(j==0)
{
V[0]=x; V[1]=x; V[2]=x; V[3]=x; V[4]=x; V[5]=x; V[6]=x;
j++;
}
if(0<j<=7)
{
V[j]=x;
j++;
}
if(j>7)
{
j=0;V[j]=x;
j++;
}
a=V[0]+V[1]+V[2]+V[3]+V[4]+V[5]+V[6];
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1; //TR0=1,控制開關閉合,計數脈沖進入T1計數器,啟動計數
}
}
else
{if(P3_6==0)she++;if(P3_5==0)she--;
P1=xsjs[she/10]; P2=0xfd;delay(5);
P1=xsjs[she%10]; P2=0xfe;delay(5);
}
}
}
//;==================================================================================
void t0() interrupt 1 using 0 //T0中斷服務
{
T0count++; //對P3。4口的脈沖進行計數
}
//;==================================================================================
void t1(void) interrupt 3 using 0 //T1中斷服務
{
TH1=(65536-12000)/256; //計數初值重裝載
TL1=(65536-12000)%256;
timecount++;
if(timecount==250)
{ sec++;
TR0=0;
timecount=0;
flag=1; // 置標志
}
if(timecount<=125)d_05s=0;
else d_05s=1;
if(sec==60){min++;sec=0;}
if(min==60){hour++;min=0;}
if(hour==24){hour=0;} }
作者: tntk 時間: 2011-8-1 19:52
樓主的東西真讓我羨慕
可惜我是玩純機械的,我認為在前車輪輻條上放上個東西,檢測車輪轉動的圈數!
作者: 1五湖四海1 時間: 2011-8-1 20:09
tntk 發表于 2011-8-1 19:52 
樓主的東西真讓我羨慕
可惜我是玩純機械的,我認為在前車輪輻條上放上個東西,檢測車輪轉動的圈數!
tntk 網友你好:
你說的對,我用的是霍爾接近開關固定在車架上,在車輪輻條上安裝一個小圓磁鋼。車輪每轉一圈輸出一個信號,根據單位時間1s檢測的脈沖數就可以測出速度了。
作者: wrzshud 時間: 2011-8-1 20:12
準不準
作者: 04102 時間: 2011-8-1 20:15
呵呵呵,有點意思啊這個~~~
作者: 1五湖四海1 時間: 2011-8-1 20:21
wrzshud 發表于 2011-8-1 20:12 
準不準
wrzshud網友你好:
這個是拿單片機內定時器資源制作的,精密計時精度一般,用于測速精度還是挺高的。
作者: 245037744 時間: 2011-8-1 20:26
直接買個自行車的碼表就可以,樓主的動手能力很強大,佩服
作者: 1五湖四海1 時間: 2011-8-1 20:33
245037744 發表于 2011-8-1 20:26 
直接買個自行車的碼表就可以,樓主的動手能力很強大,佩服
你好:
制作過程是個享受,會遇到想不到的困難,去解決問題帶來快樂。制作完安裝在車上體驗制作帶來的樂趣。
作者: 守望著 時間: 2011-8-1 21:15
嫉妒死了,喜歡騎車,但是不會電啊!嗚嗚嗚……
作者: maozhuzhou177 時間: 2011-8-1 21:41
樓主搞的東西一直是我向往的,可是一直找不到門路,自己動手搞的東西很有成就感,那種感覺想想就爽
作者: MechanicsD 時間: 2011-8-1 23:27
工作技能運用于生活,其樂無窮挖~
作者: yezhubenyue 時間: 2011-8-2 00:35
樓主學習了。。。。一直想做的,沒時間~~!
作者: c204013 時間: 2011-8-2 00:57
謝謝你了樓主非常好的資料,謝謝
作者: hcj907 時間: 2011-8-2 08:09
小伙子,不錯~
作者: honyo2011 時間: 2011-8-2 09:11
創新意識很好,不過這個東西也就是玩一下而已,請與20元左右買到的、小巧的自行車速度里程表比較一下吧!
作者: stevenguo 時間: 2011-8-2 09:29
LZ真強啊,不會電啊!
作者: qaz03802203 時間: 2011-8-2 09:57
自己做板子,真是愛好者啊
作者: 零度開始 時間: 2011-8-2 10:23
樓主真的很厲害,自己都動手做了好幾件東西了。羨慕。
作者: wyw423 時間: 2011-8-2 11:32
樓主好厲害啊
向樓主學習吧
作者: 徐道平 時間: 2011-8-2 12:22
小輩向樓主學習
作者: luxiang821 時間: 2011-8-2 13:13
樓主很強大,頂一下!
作者: vooha 時間: 2011-8-2 13:21
興趣好過所有的信仰
作者: robotics30 時間: 2011-8-2 13:42
很好!
另外問一下, 樓主為什么選擇SyncMOS(新茂)的單片機呢? SyncMOS的單片機有什么優勢嗎?價格還是性能?
作者: syc 時間: 2011-8-2 15:27
樓主真是太厲害了,佩服
作者: happysky008 時間: 2011-8-2 15:35
能人,這個都能自己做。
作者: 木子001 時間: 2011-8-2 15:51
我也想自己做,可惜這方面基礎知識不扎實
作者: pengzhh 時間: 2011-8-2 16:05
好羨慕啊樓主,可是不會電,的確,制作是個享受的過程。。。是該學習電的知識。
作者: 1五湖四海1 時間: 2011-8-2 19:11
honyo2011 發表于 2011-8-2 09:11 
創新意識很好,不過這個東西也就是玩一下而已,請與20元左右買到的、小巧的自行車速度里程表比較一下吧!
honyo2011網友你好:
你說的對,這個東西只能玩一下,整個制作成本近200元。跟20元左右買到碼表相比,這個電路板很大不美觀,但這個可以根據自己的想法個性化設計,功能上還可以擴展比如利用DS18B20加入數字溫度計顯示環境溫度,如果將運動保健方面知識增加進來,可以計算騎車人的運動總量,判斷是否運動適中。
作者: 1五湖四海1 時間: 2011-8-2 19:13
零度開始 發表于 2011-8-2 10:23 
樓主真的很厲害,自己都動手做了好幾件東西了。羨慕。
零度開始網友你好:
謝謝!出于自己的興趣愛好,喜歡搞這些電子制作和單片機控制。
作者: 1五湖四海1 時間: 2011-8-2 19:21
robotics30 發表于 2011-8-2 13:42 
很好!
另外問一下, 樓主為什么選擇SyncMOS(新茂)的單片機呢? SyncMOS的單片機有什么優勢嗎?價格還是性能?
robotics30網友你好:
SyncMOS和ATMEl單片機都可以啊,我用的是80C51核心的SM89S52,這種單片機有3個定時器資源,但這個自行車速度里程表只要到了2個定時器資源。性能挺好的。這個東西用的晶振是36M還算穩定。價格挺便宜的7元左右。
作者: rookie79 時間: 2011-8-2 19:43
是自行車愛好者,樓主的裝置自己辦不了~不是學機械和電子方面出身的~樓主這種DIY精神值得很多同齡人學習~那樣中國由制造大國向制造強國邁進的步伐就更快些~
作者: camaro2010 時間: 2011-8-2 21:15
嘿嘿 樓主對生活很有愛啊 ,我也算個菜驢。買了個西格瑪的速度表 ,型號:西格瑪906 ,我看原理也是算圈數的。
作者: 復蘇之風 時間: 2011-8-3 07:44
高人啊
作者: design-life 時間: 2011-8-3 12:16
制作的過程中可以發現很多問題,也能夠學到很多、
作者: hhh540027 時間: 2011-8-3 15:48
自己設計,值得學習!
作者: lxb1212 時間: 2011-8-3 15:53
直接買個自行車的碼表就可以啦。。。
作者: lxb1212 時間: 2011-8-3 15:53
直接買個自行車的碼表就可以啦。。。
作者: lxb1212 時間: 2011-8-3 15:54
直接買個自行車的碼表就可以啦。。。
作者: 破小孩 時間: 2011-8-3 16:28
兄弟真強大,做的過程中肯定很享受吧,羨慕
作者: wryp 時間: 2011-8-3 18:05
我也做過一個,用的STC89S52RC,可惜個頭太大,不如人家成品的小巧。。。。。。。。。。。但我們追求的是種樂趣,就像我的同事釣魚,比買的都貴,照樣樂此不彼!
作者: lingdu 時間: 2011-8-3 19:10
真不錯,挺向往的。。。。。
作者: cenji1207 時間: 2011-8-3 19:56
初涉機械行業,只能羨慕了。
作者: FSYY 時間: 2011-8-3 21:11
學單片機玩玩還行,
作者: hzp830706 時間: 2011-8-3 22:00
簡單的東西玩的那么復雜
作者: 1五湖四海1 時間: 2011-8-3 22:16
hzp830706 發表于 2011-8-3 22:00 
簡單的東西玩的那么復雜
你好,這個東西做著玩而已,體驗了制作電路板和編寫程序的樂趣。這個東西不復雜只要構成單片機最小系統就可以完成。
作者: hbkl2006 時間: 2011-8-4 11:08
本帖最后由 hbkl2006 于 2011-8-4 11:11 編輯
單片機啊,我那時候用的還是匯編,現在都用C了,感覺C的結構還是比較清晰的.
這么大個東西裝起來方不方便呀
PCB板看起來做的很不錯,手工做的嗎,以前焊過小電路板,那叫一個毛糙啊.
作者: wenfeng112 時間: 2011-8-4 18:53
欣賞樓主這種思維跟精神~~贊一個。。
作者: 272182703 時間: 2011-8-4 22:47
樓主我機械,對單片機特別的崇拜,教教我
作者: 刺血 時間: 2011-8-5 12:52
樓主最好上個圖來給我們膜拜一下 這樣做出來是不是大了點
作者: pengzhh 時間: 2011-8-6 10:52
能給我推薦些搞電的資料嗎,
作者: lybulesky 時間: 2011-8-6 11:04
樓主將自己的所長用于生活的一些小發明,佩服!我是做機械的向你學習。
作者: 火神云色 時間: 2011-8-7 10:25
有才人,比不上,羨慕啊
作者: 何加格 時間: 2011-8-7 15:08
佩服佩服,最近要做一個生產量計數的,市場有的是4位數的,有點小。正在找廠家。
作者: 會與不會 時間: 2011-8-7 15:18
學習了,樓主太給力了,支持一下
作者: perfecttic 時間: 2011-8-7 16:12
不錯,很有diy精神,可以上mcgeeker了
呵呵,羨慕
作者: joly888888 時間: 2011-8-8 19:54
樓主搞的東西一直是我向往的,可是一直找不到門路,自己動手搞的東西很有成就感,那種感覺想想就爽
作者: tianqilq 時間: 2011-9-1 22:41
樓主很有想法 也很有能力
作者: ziqi009 時間: 2011-9-1 23:59
整體方案還是挺不錯的,不過很擔心52能否勝任,呵呵。
我想說一點自己的看法,關于加速度的。我覺得你的方案有點費事。52將反饋回來的脈沖進行處理,得到速度值,可再對速度值處理就行了,得到的數據還是比較可靠的。水銀注在這地方不實用,而且運算較大,水銀上下的時間測量不方便吧?個人觀點,想知道你水銀柱上下時間測控方案。學習一下。
作者: pengzhh 時間: 2011-9-2 08:26
1五湖四海1 發表于 2011-8-3 22:16 
你好,這個東西做著玩而已,體驗了制作電路板和編寫程序的樂趣。這個東西不復雜只要構成單片機最小系統就 ...
你那個51開發范例大全,用的是啥板子
作者: pengzhh 時間: 2011-9-2 11:27
1五湖四海1 發表于 2011-8-1 20:09 
tntk 網友你好:
你說的對,我用的是霍爾接近開關固定在車架上,在車輪輻條上安裝一個小圓磁鋼。 ...
你那個照做的例子大全上的板子有特定的型號嗎?還有里面用到的那些小的集成塊都集成在板子上嘛????
作者: happqiwei 時間: 2011-9-2 12:01
這個確實是個好帖,贊一個!
作者: 寂靜的喧嘩 時間: 2011-9-2 12:45
厲害...........................
作者: 老畢sz 時間: 2011-9-2 13:52
學習這種精神,這技術恐怕沒指望了,呵呵
作者: 1五湖四海1 時間: 2011-9-5 21:26
pengzhh 發表于 2011-9-2 08:26 
你那個51開發范例大全,用的是啥板子
自己做的板子,你要是搞的話可以在淘寶上拍一個單片機系統實驗板。
作者: lovemy006 時間: 2011-9-6 13:10
N*
作者: demin 時間: 2011-9-6 14:07
我一直很向往電這方面,可是沒有機會,自己也不會,其實自己動手真的很好的,雖然買一個碼表也沒多少錢,但是在于享受過程,這個過程是很難得的。支持樓主
作者: uuk 時間: 2011-9-6 15:33
太強了,可惜俺電是盲區
作者: 深南大道 時間: 2011-9-6 23:27
樓主應該要設定輪徑吧
速度和里程都有計數嗎?
作者: 1五湖四海1 時間: 2011-9-7 22:08
深南大道 發表于 2011-9-6 23:27 
樓主應該要設定輪徑吧
速度和里程都有計數嗎?
你好,深南大道網友 這個速度里程表是按周長2m計算的,速度和里程采用單片機內部定時器中斷計數。
作者: zhengkai 時間: 2011-9-8 13:50
帥啊,樓主意識太好了
作者: lijinmu 時間: 2011-9-8 14:29
佩服!!!!!!!!!!!!!!!!!!!!!
作者: 南山獵手 時間: 2011-9-10 11:27
zhen niu bi !!!!!!!!!!!!!!!
作者: love584231 時間: 2011-9-10 17:20
好東西一起分享,真好
作者: 小林哥 時間: 2011-9-11 08:05
呵呵呵,有點意思啊這個~~~
作者: 鎭鈊㊣愛伱 時間: 2011-9-18 11:43
也可以用紅外對管做,行嗎?樓主
作者: hollkoll 時間: 2011-9-21 22:11
膜拜樓主。學習了,盼望日后能用到自己的工作上來。
作者: 603497782 時間: 2011-9-23 14:43
太強大了 這 佩服的很 我要多學學
作者: zyr27 時間: 2011-9-23 16:12
哈哈,不錯不錯,還分享了程序
作者: DY597 時間: 2011-10-8 11:00
原理很簡單 ,享受樂趣
作者: 南山獵手 時間: 2011-10-14 18:03
牛逼樓主!!!!!!!!!!1
作者: 36067106 時間: 2011-10-15 19:03
就是想學點自動化控制的東西,就是不曉得咋個入門
作者: 1五湖四海1 時間: 2011-10-16 06:42
36067106 網友你好:
想搞自動化控制需要電子技術知識,學好電子技術在學學單片機結合軟件程序控制電路。
作者: 迷上雪 時間: 2011-10-18 15:51
這個有趣,但是確實實用性不是很大,儀表壞了一般都是沒有人修的
作者: 1五湖四海1 時間: 2011-10-22 10:58
各位網友大家好:
基于8951系列單片機自己做的自行車速度里程表經實驗測試效果不錯,平路行駛一般速度可以達到20km/h,上坡時一般速度可以達到15KM/h,放坡時我騎最高速度達到30KM/h。行駛里程和行駛時間都可以顯示出來。我制做了PCB板還有很多,元件還有不少。現在已經拍到淘寶網希望把剩余的板子處理掉。各位網友如果對單片機系統板有興趣的話可以來看看,網友需要的話PCB板子我按制作成本發過去。以后希望和大家共同研究討論單片機。
作者: 風》追逐 時間: 2011-10-22 13:24
單片機,對我做機械的有點難度。
用PLC編,我倒是會。不過這樣都能買好幾輛自行車了,我傻……
作者: 迷上雪 時間: 2011-10-23 11:02
樓主好強悍
,,,,,,,學習
作者: 喬老四 時間: 2011-10-23 21:59
好東西,敢問樓主成本多少啊?
作者: liutao1919 時間: 2011-10-24 11:39
樓主很強悍啊!
很羨慕!
作者: 愛林158 時間: 2011-10-24 19:53
我不蠻會玩,電氣工程師應該很懂的
作者: 1五湖四海1 時間: 2011-10-24 21:37
喬老四 發表于 2011-10-23 21:59 
好東西,敢問樓主成本多少啊?
制作PCB板和電子元件成本大概60元
作者: sbetg 時間: 2011-10-25 14:11
值得學習,多動動手.....................
作者: 喬老四 時間: 2011-10-25 20:31
1五湖四海1 發表于 2011-10-24 21:37 
制作PCB板和電子元件成本大概60元
謝謝你的回答,成本不是太高,關鍵是制作的過程很享受
作者: 1五湖四海1 時間: 2011-10-25 20:47
喬老四 發表于 2011-10-25 20:31 
謝謝你的回答,成本不是太高,關鍵是制作的過程很享受
一個轉速表的成本啊,做一回PCB要150元我做了10個。
作者: zuozuo2013 時間: 2011-10-25 22:49
樓主這個實在是太強大了.....
作者: redplum 時間: 2011-10-26 13:58
非常感謝樓主分享這么好的資料
作者: 雙槍_ 時間: 2011-10-27 19:46
有空弄一個{:soso_e100:}
{:soso_e100:}
作者: xzy_xz 時間: 2011-11-2 15:49
上班再沒碰過這方面的東西了,純搞 機械設計了
作者: jshq0531 時間: 2011-11-2 17:18
這個太強大了吧?不過體積也大點了吧?我花20塊買的碼表,樓主純粹是釣勝于魚,支持一下。
作者: 1五湖四海1 時間: 2011-11-2 18:56
jshq0531 發表于 2011-11-2 17:18 
這個太強大了吧?不過體積也大點了吧?我花20塊買的碼表,樓主純粹是釣勝于魚,支持一下。
謝謝,不過我這回做了一個8×8cm的小板子。我在淘寶上才買29元屬于89系列單片機開發板,硬件有繼電器,18B20,光耦,功放386,四位掃描數碼管。
作者: 安靜的網名 時間: 2011-11-2 21:04
很牛!很牛!很牛!很牛!很牛!很牛!{:soso_e179:}
歡迎光臨 機械社區 (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |