免费无码av网站|日韩三级国产精品五月丁香六月三级|精品国产自在钱自|欧州Av蜜臀Av|强奸视频久久网站|日韩福利视频导航|亚洲男人天堂导航|国内成人无码影片|无午夜福利视频在线观看|91丨九色丨国产 在线
汽配軟件使用幫助
汽修軟件使用幫助
汽配號:
密碼:
忘記密碼
免費注冊
汽車配件城市聯(lián)盟
新聞投稿
汽車配件110網
資訊中心
國際
國內
企業(yè)
地方
電動車
行業(yè)快報
展會
統(tǒng)計
研究
政策
特種車
汽配黃頁
電動車
摩托車
重型車配件
加盟商家
拆車件
農用車
軸承
物流
配件搜索
品牌專區(qū)
汽車用品
汽配批發(fā)
汽配供求
車主投訴
汽修百科
電動車
汽車改裝
保養(yǎng)
用車養(yǎng)車
摩托車
汽車裝飾
視頻
QQ群
汽配城
當前位置:
汽車配件110網
>>
汽修百科
>>
電動車維修
>> PIC單片機控制的電動自行車驅動系統(tǒng)C程序
PIC單片機控制的電動自行車驅動系統(tǒng)C程序
www.seb3fes.cn
來源:
電動車商情網 電動車商情網
作者:
俠名
類別:
電動車維修
時間:
2008-2-26
PIC
單片機控制的電動自行車驅動系統(tǒng)
C
程序
.46.
#include <pic.h>
//
電動車
雙閉環(huán)程序,采用雙閉環(huán)方式控制
電機
,以得到最好的zh 轉速性能,并且可以
//限制
電機
的最大電流。本應用程序用到兩個CCP 部件,其中CCP1 用于PWM 輸出,以控
//制電機電壓;CCP2 用于觸發(fā)AD,定時器TMR2、TMR1,INT 中斷,RB 口電平變化中斷,
//看門狗以及6 個通用I/O 口
#define AND 0xe0 //狀態(tài)采集5,6,7 位
#define CURA 0X0a //電流環(huán)比例和積分系數之和
#define CURB 0X09 //電流環(huán)比例系數
#define THL 0X6400 //電流環(huán)最大輸出
#define FULLDUTY 0X0FF //占空比為1 時的高電平時間
#define SPEA 0X1d //轉速環(huán)比例和積分系數之和
#define SPEB 0X1c //轉速環(huán)比例系數
#define GCURHILO 0X0330 //轉速環(huán)最大輸出
#define GCURH 0X33 //最大給定電流
#define GSPEH 0X67 //最大轉速給定
#define TSON 0X38 //手柄開啟電壓1.1 V,TSON*2 為剎車后手柄開啟電壓,即
//2.2 V
#define VOLON 0X4c //低電壓保護重開電壓3.0 V 即33 V
#define VOLOFF 0X49 //低電壓保護關斷電壓2.86 V 即31.5 V
volatile unsigned char DELAYH,DELAYL,oldstate,speed,
speedcount,tsh,count_ts,count_vol,gcur,currenth,
voltage; //寄存器定義
static bit sp1,spe,ts,volflag,spepid,lowpower,
off,shutdown,curpid; //標志位定義
static volatile unsigned char new[10]={0xaf,0xbe,0xff,0x7e,0xcf,
0xff,0xd7,0x77,0xff,0xff}; //狀態(tài)寄存器表
//------------PIC16F877 初始化子程序------------
void INIT877()
{
PORTC=0X0FF; //關斷所有MOSFET
TRISC=0X02; //設置C 口輸出
PIE1=0X00; //中斷寄存器初始化,關斷所有中斷
TRISA=0XCF; //設置RA4,RA5 輸出
TRISB=0XEF; //RB 口高三位輸入,采集電機三相的霍爾信號
PORTC=new[(PORTB&AND)>>5]; //采集第一次霍爾信號,并輸出相應的信號,導通
//兩個MOS 管
T2CON=0X01; //TMR2 4 分頻
CCPR1L=0X0FF; //初始時PWM 輸出全高
CCP1CON=0X0FF; //CCP1 設置為PWM 方式
CCP2CON=0X0B; //CCP2 設置為特殊方式,以觸發(fā)AD
ADCON0=0X81; //AD 時鐘為32 分頻,且AD 使能,選擇AN0 通道采集手
//柄電壓
TMR2=0X00; //TMR2 寄存器初始化
TMR1H=0X00; //TMR1 寄存器初始化
TMR1L=0X00;
T1CON=0X00; //TMR1 為1 分頻
CCPR2H=0X08;
CCPR2L=0X00; //電流采樣周期設置為TAD=512 μs
PR2=0XC7; //PWM 頻率設置為5 kHz
ADCON1=0X02; //AD 結果左移
OPTION=0XFB; //INT 上升沿觸發(fā)
TMR2ON=1; //PWM 開始工作
INTCON=0XD8; //中斷設置GIE=1,PEIE=1,RBIE=1
ADIE=1; //AD中斷使能
speedcount=0x00; //轉速計數寄存器
speed=0x7f; //轉速保持寄存器
spe=1; //低速標志位
sp1=1; //低速標志位
oldstate=0x0ff; //初始狀態(tài)設置,區(qū)別于其他狀態(tài)
count_ts=0x08; //電流采樣8 次,采集1 次手柄
count_vol=0x00; //采樣256 次手柄,采集1 次電池電壓
ts=1; //可以采集手柄值的標志位
ADGO=1; //AD采樣使能
TMR1ON=1; //CCP2 部件開始工作
}
//------------延時子程序---------------
#pragma interrupt_level 1
void DELAY1(x)
char x;
{
DELAYH=x; //延時參數設置
#asm
DELAY2 MOVLW 0X06
MOVWF _DELAYL
DELAY1 DECFSZ _DELAYL
GOTO DELAY1
DECFSZ _DELAYH
GOTO DELAY2
#endasm
}
//-----------狀態(tài)采集子程序----------------------
void sample()
{
char state1,state2,state3,x;
do {
x=1;
state1=(PORTB&AND); //霍爾信號采集
DELAY1(x);
state2=(PORTB&AND);
}while(state1-state2); //當三次采樣結果不相同時繼續(xù)采集狀態(tài)
if(state1-oldstate!=0) //看本次采樣結果是否與上次相同,不同
//則執(zhí)行
{oldstate=state1; //將本次狀態(tài)設置為舊狀態(tài)
state1=(oldstate>>5);
PORTC=new[state1]; //C 口輸出相應的信號觸發(fā)兩個MOS 管
if(sp1==1){spe=1;sp1=0;}
else { //如果轉速很低,則spe 置1
spe=0;sp1=0;
speedcount<<=1;
state3=(TMR1H>>2); //否則,spe=0,計轉速
speed=speedcount+state3; //speed 寄存器為每256 μs 加1
}
speedcount=0;
}
}
//-----------------AD 采樣子程序----------------------
void AD()
{
char x;
ADIF=0; //清AD 中斷標志位
if(ts==1){ //如果為手柄采樣,則采樣手柄值
CHS0=1; //選擇電流采樣通道
count_vol=count_vol+1; //電池采樣計數寄存器
spepid=1; //置轉速閉環(huán)運算標志
ts=0;tsh=ADRESH; //存手柄值
if(count_vol==0) { //如果電池采樣時間到,則選擇AN2 通道,采集電池電壓
CHS0=0;CHS1=1;volflag=1;x=1;DELAY1(x);ADGO=1;
}
}
else if(volflag==1) { //電池采樣完畢,進行相應的處理
CHS1=0;CHS0=1;volflag=0;voltage=ADRESH;lowpower=1;
}
else { //否則,中斷為采樣電流中斷
speedcount=speedcount+1; //speedcount 寄存器加1,作為測量轉速用
if(speedcount>0x3d) sp1=1; //如果轉速低于1 000 000 μs/(512 μs*3eh*3)
// 則認為為低速狀態(tài)
currenth=ADRESH;
curpid=1;
count_ts=count_ts-1;
if(count_ts==0) { //如果手柄時間到,則轉入手柄采樣通道
CHS0=0;count_ts=0x08;ts=1;x=1;DELAY1(x);ADGO=1;
}
}
}
//-------------剎車處理子程序------------------
void BREAKON()
{
char x;
off=0; //off清零,如果是干擾則不復位
shutdown=0;
if(RB0==1) { //如果剎車信號為真,則停止輸出電壓
ADIE=0; //關AD 中斷
INTE=0; //關剎車中斷
CCPR1L=FULLDUTY; //輸出電壓0
TMR1ON=0; //關CCP2,不再觸發(fā)AD
for(;ADGO==1;) continue;//如正在采樣,則等待采樣結束
ADIF=0; //ADIF 位清零
CHS0=0; //選擇通道0 采樣手柄
CHS1=0;
x=1;
DELAY1(x);
do {
ADGO=1;
for(;ADIF==0;)continue;
ADIF=0;
CCPR1L=FULLDUTY;
asm("CLRWDT");
tsh=(ADRESH>>1);
}while(tsh>TSON||RB0==1); //當手柄值大于2.2 V 或剎車仍舊繼續(xù)時,執(zhí)行以
//上語句
off=1; //置復位標志
}
}
//---------欠保護子程序-------------------
void POWER()
{
char x;
lowpower=0;
voltage>>=1; //電壓值換為7 位,以利于單字節(jié)運算
if(voltage<VOLOFF) { //電池電壓小于3*k(V)時保護
ADIE=0;
INTE=0;
TMR1ON=0;
CCPR1L=FULLDUTY;
for(;ADGO==1;)continue;
ADIF=0;
CHS0=0;CHS1=1;
x=1;
DELAY1(x);
do{ADGO=1;
for(;ADIF==0;)continue;
ADIF=0;
voltage=(ADRESH>>1);
CCPR1L=FULLDUTY;
asm("CLRWDT");
}while(voltage<VOLON); //電池電壓小于35 V 時繼續(xù)保護
off=1; //置復位標志
}
}
//------------電流環(huán)運算子程序-----------------
void CURPI()
{ static int curep=0x00,curek=0x00,curuk=0x00;
union data{int pwm;
char a[2];}b; //定義電流環(huán)運算寄存器
curpid=0; //清電流運算標志
curep=curek*CURB; //計算上一次偏差與比例系數的積
if(currenth<2)currenth=2; //如果采樣電流為零,則認為有一個小電流以利于
//使轉速下降
currenth>>=1;
curek=gcur-currenth; //計算本次偏差
curuk=curuk+curek*CURA-curep; //按閉環(huán)PI 運算方式得到本次輸出結果,下
//面對結果進行處理
if(curuk<0x00) { //如果輸出小于零,則認為輸出為零
curuk=0;CCPR1L=FULLDUTY;CCP1X=0;CCP1Y=0;
}
else if(curuk-THL>=0) { //如果輸出大于限幅值,則輸出最大電壓
curuk=THL;CCPR1L=0;CCP1X=0;CCP1Y=0;
}
else { //否則,按比例輸出相應的高電平時間到CCPR1 寄存器
b.pwm=THL-curuk;
b.pwm<<=1;
CCPR1L=b.a[1]; //CCPR1L=(b.pwm>>8)&0x0ff;將PWM 寄存器的高半字節(jié)
if(b.pwm&0x80!=0) CCP1X=1;
else CCP1X=0;
if(b.pwm&0x40!=0) CCP1Y=1;
else CCP1Y=0;
}
}
//---------------轉速環(huán)運算子程序-----------------------
void SPEPI()
{ static int speep=0x00,speek=0x00,speuk=0x00;
int tsh1,speed1; //轉速寄存器定義
spepid=0; //清轉速運算標志
if(spe==1) speed1=0x00; //若轉速太低,則認為轉速為零
else speed1=0x7f-speed; //否則計算實際轉速
if(speed1<0) speed1=0;
speep=speek*SPEB;
tsh1=tsh-0x38; //得到計算用的手柄值
speek=tsh1-speed1;
if(tsh1<0) {speuk=0;gcur=0;} //當手柄值低于1.1 V 時,則認為手柄給定為零
else { //否則,計算相應的轉速環(huán)輸出
if(tsh1>=GSPEH) //限制最大轉速
tsh1=GSPEH;
speuk=speuk+speek*SPEA-speep; //計算得轉速環(huán)輸出
if(speuk<=0X00) {speuk=0x00;gcur=0x00;}//轉速環(huán)輸出處理
else if(speuk>GCURHILO) { //轉速環(huán)輸出限制,即限制最大電流約12 A
speuk=GCURHILO;gcur=GCURH;}
else { //調速狀態(tài)時的輸出
gcur=(speuk>>4)&0x0ff;
}
}
}
//-----------主程序-------------------------
main()
{
for(;;){
INIT877(); //單片機復位后,先對其進行初始化
off=0; //清復位標志
for(;off==0;) { //復位標志為零,則執(zhí)行下面程序,否則復位
if(curpid==1) CURPI(); //電流PI 運算
else if(spepid==1) SPEPI(); //轉速PI 運算
else if(lowpower==1) POWER();
else if(shutdown==1) BREAKON();
asm("CLRWDT");
}
}
}
//---------中斷服務子程序---------------------
#pragma interrupt_level 1
void interrupt INTS(void)
{
if(RBIF==1) {RBIF=0;sample();}
else if(ADIF==1) AD();
else if(INTF==1) {shutdown=1;INTF=0;} //剎車中斷來,置剎車標志
分享到:
新浪微博
騰訊微博
百度搜藏
QQ空間
百度貼吧
百度空間
微信
更多
品牌專修
:( 關鍵字:
PIC單片機控制的電動自行車驅動系統(tǒng)C程序電動車維修轉速,寄存器,手柄,電流,子程序
)
東風
珠峰
金杯閣
馳野
阿爾法
中興
上饒客
高仕
救護車
峨眉客
依維柯
王牌
吉江
捷安特
升降車
冷藏車
雪鐵龍
通信車
蒙迪歐
沈飛日
愛麗舍
春洲汽
東風
豪爵
林業(yè)集
臺鈴
藍旗亞
斯太爾
川馬客
北方紅
樂騁
寶馬
空降車
德國曼
美的客
路虎
馬自達
路寶
金杯
法拉利
庫斯特
兩棲車
尼奧普
龍江客
斯柯達
雙環(huán)小
安凱
力帆5
豹風
東風
福克斯
一汽自
豪豹
飛揚
景程
Vol
薩博
QQ
綠源
吉利
江南精
長安
圣達菲
雅迪
星王
雅閣
萬象大
京華
西雅特
凱旋
大陽
裝卸車
力帆
少林客
君越
中大客
哈飛
五菱陽
桑塔納
新大洲
瑞虎
隆鑫
長城
通用汽
森地
揚子
蘭博基
陽光
林蔭大
速騰
華北汽
道奇
牡丹客
洛陽宇
建設
吉田
紅巖
名爵
途勝
波羅
明銳
水星
鐵馬
奔奔
霍頓
更多品牌專修
配件展示:
更多商品展示
聚乙烯PP EP2
適用車型:
泰國巴賽
TPU 58206
適用車型:
通用級
PA6 PX930
適用車型:
通用級
TPEE DYM1
適用車型:
通用級
閉鎖器 右
適用車型:
老陽光風
前橋/元寶梁1.6
適用車型:
YDQD
倒水板
適用車型:
捷達
下球頭(L)
適用車型:
獵豹
6126柴油機六配
適用車型:
濰柴發(fā)動
大包圍-后輪眉L
適用車型:
逍客
后杠包角-R
適用車型:
銳旗
AES 1520U
適用車型:
通用級
豐田4700發(fā)動機
適用車型:
豐田
離合器壓盤
適用車型:
皮卡
尾燈總成-L
適用車型:
樂風
相關評論:
請自覺遵守互聯(lián)網相關政策法規(guī),作者可以直接刪除惡意評論、廣告或違禁詞語
汽配通=管理軟件+傳真機+宣傳器 +連鎖店
汽配通是一個汽配管理軟件
可以用汽配通進行配件的進、銷、存管理,功能全面專業(yè),操作簡單易用,性能穩(wěn)定、永不出錯,免費試用、 不斷升級、終身維護
汽配通是一個智能傳真機
當客戶通過汽配通發(fā)來問價或訂貨傳真時,立即會收到短信、聲音及頁面三種提示,按鍵自動接收,直接填寫報價迅速回傳(如用汽配通管理庫存,則可自動調出庫存直接報價,訂單傳真則可快速轉銷售單)
汽配通是一個速效宣傳器
可以通過汽配通服務平臺迅速讓全國客戶查詢到自己的名片信息及發(fā)布的配件信息(不限數量隨時發(fā)布,客戶可直接訂購發(fā)布的配件,訂單可直接轉為銷售單)
汽配通是一個加盟連鎖店
商家可以創(chuàng)建自己的聯(lián)盟,將加入自己聯(lián)盟的成員設為好友,好友就能共享自己的庫存信息,能隨時查詢和訂購。聯(lián)盟內每個成員還可以發(fā)布100條推薦配件信息,供同聯(lián)盟成員間相互交流及訂貨
>>>汽配通【汽配管理軟件 13.63】
汽修通=管理軟件+傳真機+搜索器 +大倉庫
汽修通是一個汽修美容管理軟件
可以用汽修通進行汽車維修及美容從進廠接待、維修派工、出廠結算一系列過程完整的管理,流程清晰、操作簡單,性能穩(wěn)定、永不出錯,免費試用、不斷升級、終身維護
汽修通是一個智能傳真機
可以用汽修通光速寫出一長串配件問價單或訂貨單,圖文并茂,一鍵發(fā)送。接收方立即會收到短信、聲音及頁面三種提示
汽修通是一個配件搜索器
當疑難配件不知哪里購買時,可以通過汽配通直接搜索商家,可以直接搜索配件,可以傳真群發(fā)詢問?傊,汽配通,沒有找不到的配件
汽修通是一個超級大倉庫
在汽修通的“聯(lián)盟管理”處選擇一個聯(lián)盟加入,申請同聯(lián)盟的商家成員設置自己為好友,這樣可以擁有此商家的庫存信息(最多可以擁有10位好友商家的庫存),方便查詢及直接訂貨
>>>汽修通【汽修美容管理軟件 13.63】
汽修百科目錄索引
更多>>
品牌汽車維修
汽車保養(yǎng)維修
汽車電器維修
汽車構造維修
修車常識
汽修知識
維修案例
汽車美容技術
汽車裝飾常識
汽車改裝技術
修理廠管理制度
汽配生意怎么做
汽車4S店管理
電動車維修
修車視頻
摩托車維修
相關汽修改知識
更多>>
租塊電池每個月10元錢 有人做
關于電動自行車安全行駛的“技術
西安工商部門提醒:謹慎購買電動
鎖具易撬盜竊率居高不下 非機動
延長壽命電動車所需的日常維護和
電動車上牌要蓋(Guy)章社區(qū)
無證三輪電動車半路撞倒行人棄乘
8分鐘完成充電斯巴魯(Suba
新一代產品雅哥弟鋰電池電動車近
私人電動車車庫失竊 物業(yè)公司沒
消費指南:電動自行車選購與使用
鋰離子電池的安全與材料性能息息
時下“環(huán)保電動車”消費成為“時
歸納一下最近比較流行的電動自行
這些防滑防凍的竅門 大家可能會
電動自行車用電機控制器原理與維
揭開問題電瓶黑幕被盜電瓶翻新后
電瓶車頻頻被盜警方支招預防盜竊
免充電的電動汽車 真正節(jié)能為奧
停在車庫的電動車被盜物業(yè)公司要
電動車電池問題多多 工商建議購
美卡得充電器解決了電動車的致命
丹陽消委會發(fā)布消費警示:選購電
技術園地:深度解析電動自行車電
購車指南:購買電動車時應注意的
提醒:選購電動自行車得留心電瓶
電動車用鉛鋅電池總容量只占全國
自制升降機六旬大爺把電動自行車
技術園地:論電動自行車控制器可
第一輛電動Smart ed正式
老技工造無電瓶電動車已獲國家專
力拼SMART濟南飛寶電動車北
最新加盟汽車修理廠
更多>>
平安到家汽修汽配
同誠汽車維修廠
吉林市北方通盛汽車維修有限責任
成達汽修
新界汽修
洛寧宏大汽車專業(yè)服務站
武漢市信達汽車綜合服務中心
新疆榮騰玻璃
大井汽車修配部
深圳市華集實業(yè)有限公司汽車修配
日升汽修
銀華汽修
興融汽車維修有限公司
汽配最新供求
哈市德利拆車件
配件明細
々PC 24SRFD
=PBT 3309HRHF
求購摩托車、發(fā)電機零配件
求購奧迪C6 2.8噴油嘴
※PC 6870
求購一汽佳星【幸福使者】型號LJ
黑豹HFJ1010WV油箱
求購安全帶卡扣 安全帶上小零件
關于汽配110網
|
各地汽配QQ群
|
網站建議反饋
|
友情鏈接
|
聯(lián)系我們
|
代理合作
|
會員服務
|
全國汽車配件聯(lián)盟
|
廣告招商
|
收藏本站
|
網絡交易安全提示
|
網站免責聲明
版權所有:汽配110網 www.seb3fes.cn 汽車后服務市場專業(yè)網絡平臺 懷化好易簡科技有限公司
湘ICP備12007470號
E-mail:webmast@qp110.com
湘公網安備 43120202000083號