在研究555之後,當確定PWM的方式+交流電可以讓FZR轉速表順利運作
那麼就可以用8051來實作電路
依上面這張圖的接法,Input導進12V,8051要吃的是5V,如果直接把12Vpass給7805
那7805通常是撐不久,直接燒掉,所以中間過5個二極體減壓,一顆可以減0.7V
12-0.7*5 = 8.5V,這樣的電壓再餵給7805,就可以安心,溫度比較不會太高
出來的5V也乾淨
從P0.0出來的訊號線,因為電壓太低,所以加上一個 NPN C945,把電壓拉高
再餵入TIP41、TIP42,這樣從E級出來就是交流電呦!!!
最後的交流電約3V,再透過脈衝變壓器,把電壓拉2~3倍,就可以給FZR的表頭測試嘍
最後測試的機器就如左邊的機器
如有車友想自己DIY,我把程式放在這:連結
--------------------------------------------------------------------------------------------------
/********************************
* Tachometer Signal Generator
* Homemade Yamaha FZR-150 Portable 8051 Tachometer Signal Generator
* Author : FeatherMountain
* HomePage: http://sunnyriver.3wa.tw
* Version: 1.0 (2015-01-16 01:50AM)
* Date: 2014-12-20 23:20:00
* License: GPL & MIT
* Frequency : 0 ~ 233 HZ
* RPM From : 0 ~ 14000 RPM
* Free free and free. Feel free and feedback let me know :))
* ******************************
// Initial 8051 header
#include<AT89x51.h>
long i=0;
void delay_us(unsigned int us_count)
{
while(us_count!=0)
{
i++;
us_count--;
}
}
int loops[22] = {12000,12000,10000,8000,6250,3030,2000,1500,1200,1000,857,750,666,599,545,500,461,428,380,320,280,260};
void main(void)
{
int next=1;
int step=0;
long thelimit=6000;
while (1)
{
if(i>=thelimit)
{
i=0;
step+=next;
}
if(step>=21)
{
next=-1;
}
if(step<=0)
{
next=1;
}
P0=0xFF;
P1=0xFF;
P2=0xFF;
P3=0xFF;
delay_us(loops[step]/4);
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
delay_us(loops[step]/4);
}
}