欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Mega48做的电动车控制程序.docx

    • 资源ID:15927913       资源大小:20.91KB        全文页数:20页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Mega48做的电动车控制程序.docx

    1、Mega48做的电动车控制程序/*ROM 3892 BYTES*/*功能*/*60度/120度直流无刷电机自适应*/*软启动*/*转把调速*/*禁止巡航/手动按键巡航/自动巡航*/*过流保护*/*限流*/*堵转保护(堵转进入静音)*/*防飞车保护(上电转把必须归零及防止转把电压出现异常)*/*1+1助力*/*欠压回差保护*/*EABS电子柔性刹车(柔性静音)*/*换相补偿*/*ISP在线编程、维护和升级软件*/*使用最新AT电机专用驱动MCU*/*注:堵转退出不可靠的现象已在该程序解决,使用if(drive_duty_var=0)语句*/*注:该程序没有按键巡航的功能(已屏蔽)*/*注:该程序

    2、空载时高速纯使用机械刹车没事*/*注:根据余姚路易要求,堵转电流为12A1A,限流18A1A*/*注:换相时关断MOS管加入了冗余语句close_drive_function()两条,新龙测试时出现的启动复位现象、异常过流现象已基本解决*/*/#include iom48v.h/#include avr/interrupt.h/#include avr/pgmspace.h/*/#define QIANYA_VALUE 120 /欠压值预定义(QIANYA_VALUE/255*5)QIANYA_VALUE=118时,欠压值为41.5V0.5V;QIANYA_VALUE=128时,欠压值为440

    3、.5V#define XIANLIU_CURRENT_VALUE 110 /限流值预定义(XIANLIU_VALUE/10A)0XIANLIU_VALUEBcase 0b00000001:TCCR1A=0b00100001;/开CHPORTB&=0b;/开BLbreak; /电流流向:C-Bcase 0b00000010:;case 0b00000111:TCCR0A=0b00100001;/开BHPORTD&=0b;/开ALbreak; /电流流向:B-Acase 0b00000011:TCCR1A=0b00100001;/开CHPORTD&=0b;/开ALbreak; /电流流向:C-Ac

    4、ase 0b00000100:TCCR0A=0b;/开AHPORTB&=0b;/开CLbreak; /电流流向:A-Ccase 0b00000110:TCCR0A=0b00100001;/开BHPORTB&=0b;/开CLbreak; /电流流向:B-Cdefault:break;/*/*开三桥函数*/*/void change_phase_function1(void)close_drive_function();close_drive_function();close_drive_function();close_drive_function();close_drive_function(

    5、);switch(PIND&0b00000111)case 0b00000000:;case 0b00000101:TCCR0A=0b;TCCR1A=0b00100001;/开AH CHPORTB&=0b;/开BLbreak; /电流流向:A-Bcase 0b00000001:TCCR1A=0b00100001;/开CHPORTD&=0b;/开ALPORTB&=0b;/开BLbreak; /电流流向:C-Bcase 0b00000010:;case 0b00000111:TCCR0A=0b00100001;/开BHPORTB&=0b;/开CLPORTD&=0b;/开ALbreak; /电流流向

    6、:B-Acase 0b00000011:TCCR0A=0b00100001;TCCR1A=0b00100001;/开BH CHPORTD&=0b;/开ALbreak; /电流流向:C-Acase 0b00000100:TCCR0A=0b;/开AHPORTB&=0b;/开BL CL/PORTB&=0b;/开CLbreak; /电流流向:A-Ccase 0b00000110:TCCR0A=0b;/开AH BHPORTB&=0b;/开CLbreak; /电流流向:B-Cdefault:break;/*/int main(void)/初始化DDRB=0b00001110;DDRC=0b00010000

    7、;DDRD=0b01101000;PORTB=0b;PORTC=0b01101000; PORTD=0b; /各端口初始化/*防飞车保护功能的实现*/feiche_protect:ADMUX=0b00100001; /从1通道转换ADCSRA=0b; /首先128分频,ADC中断禁止ADCSRB=0b00000000; /单步触发转换模式,/8MHZ*128*25(最多时钟数)400usADCSRA|=0b01000000; /启动第一次转换开始while(ADCSRA&0b00010000)=0);ADCSRA|=0b00010000;/向标志写1来将ADC标志清除if(ADCH63)got

    8、o feiche_protect;/TIMSK0=0b00000000;TCCR0A=0b00000001;TCCR0B=0b00000001;/OCR0A=0;/OCR0B=0; /定时器0用来做相位修正的PWM输出,初始化为占空比输出0,不引发任何中断/TIMSK1=0b00000000;TCCR1A=0b00000001;TCCR1B=0b00000001;/OCR1AL=0;/OCR1BL=0; /定时器1用来做8位相位修正的PWM输出,初始化为占空比0,不引发任何中断TIMSK2=0b00000001;TCCR2A=0b00000001;TCCR2B=0b00000001; /OCR

    9、2A=0;/OCR2B=0; /定时器2用来做相位修正的PWM输出,初始化占空比为0,并引发定时中断,不分频ADMUX=0b00100000; /首先从通道开始转换ADCSRA=0b; /4分频,开ADC中断使能ADCSRB=0b00000000; /单步触发转换模式,/8MHZ*4*25(最多时钟数)12.5usADCSRA|=0b01000000; /启动第一次转换开始PCICR=0b00000100;PCMSK2=0b0000111; /使能PCINT16,PCINT17和PCINT18的引脚电平变化中断,以捕获霍尔信号SREG|=0b; /开总中断/主循环开始 while(1);/*/

    10、*霍尔信号电平变化中断*/*/SIGNAL(SIG_PIN_CHANGE2) PORTC=0b00010000;/霍尔信号变化,则工作指示灯不断闪/*/*ADC转换中断*/*/SIGNAL(SIG_ADC)unsigned char m;switch(adc_int_event_counter)case 0:dianchi_ADC_buffer=ADCH;adc_int_event_counter=1;ADMUX=0b00100001;break;case 1:if(zhuanba_ADC_buffer=ADCH)m=zhuanba_ADC_buffer-ADCH;else m=ADCH-zh

    11、uanba_ADC_buffer;if(m=5) /转把回差电压(0.1V)zhuanba_ADC_buffer=ADCH; /只有转把回差电压大于0.1V,才更新转把xunhang_counter=0;adc_int_event_counter=2; ADMUX=0b00100010;break;case 2:xianliu_ADC_buffer=ADCH;adc_int_event_counter=0;ADMUX=0b00100000;break;default:break;ADCSRA|=0b01000000; /启动一次转换开始/*/*定时器2定时中断,约每64uS定时中断一次*/*/

    12、SIGNAL(SIG_OVERFLOW2)/*过流保护的实现*/if(flag&0b)=0) /如果还没有过流if(PIND&0b)=0)if(+guoliu_sample_counter=2)flag|=0b; /过流标志置1elseguoliu_sample_counter=0;else /如果已经过流if(zhuanba_ADC_bufferxianliu_var)flag|=0b00001000;else flag&=0b; /超过限流比较值,则超限流标志置1,否则清0/*调速及EABS刹车的实现*/switch(tiaosu_event_counter)case 0:if(flag&

    13、0b01000000)=0) / 如果不是刹车if(flag&0b00000010)=0) /如果不是巡航drive_duty_buffer=pgm_read_byte(zhuanba_tab+zhuanba_ADC_buffer);if(flag&0b00000100)!=0)|(flag&0b00010000)!=0)/如果是电池欠压或者堵转drive_duty_buffer=0;if(flag&0b)!=0)drive_duty_var=0; /如果是过流,则立即关闭PWM(无缓冲) drive_duty_buffer=0;if(flag&0b00001000)=0) /如果不是超限流if(+dri


    注意事项

    本文(Mega48做的电动车控制程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开