聚丰项目 > 家用式定桩充电割草机
本设计采用无线定桩充电的遥控和自定义路径的割草方案,打草方案采用小车两侧挂载打草绳打草的方式(此处用小电机演示)。 小车顶部挂载雨滴传感器,大雨情况下,小车无人控制直行,驶进预订的避水车间(发射端预先做隔水措施)。 小车底部挂载无线充电接收模块。模块以12V输入形式供电。通过稳压模块处理后,经过主控IC控制允许后向小车电池进行充电。 使用无线方案的充电模式,增强小车防水性能,不用频繁更换电池,解放了劳动力。 遥控模式能让用户在室内操作,不用顶着太阳使用割草机,符合机器为人服务 的理念。 防雨设计在主人不在家时电子器件会进行自我保护,延长使用寿命。 (本项目采用的是IDT 15W无线充电开发套件)
AA_Knight
分享AA_Knight
团队成员
柯铭凯 学生
王兴才 学生
周思剡 学生
主控芯片为51内核的扩展IC:
控制电机驱动信号,采集电源电压做电量指示,采集雨滴传感器数据做是否避雨的判断,控制继电器对蓄电池进行充电。
解码遥控信号,做出响应。
2.遥控信号发射器主控为6060:
发射遥控信号,并以红色指示灯做指示。
控制器俯视图草图如下:
控制割草机前进、后退;割草,可实现远程软关机,全键唤醒;可遥控割草机开始接受充电;可遥控割草机在庭院按预设路线自动巡航割草;可开关电池电量指示,由主板上的5个led灯做电量等级指示。
3.电机驱动IC为MX612:
引脚分布图及定义:需注意该ICvcc与vdd与默认定义不同,此处VCC是指逻辑电平。
可以实现一个电机前后驱动。
4.稳压元件为2596:
右图为LM2596原理图,LM2596用于无线接收端稳压至5V为锂电池充电。输入电压可达40V,输出电压范围是1.2V到37V±4%。
5.realplay雨水传感模块:
当感应到雨点到达某种程度时,小车径直驱动,驶进预设避雨区。(假设发射端已做防水措施。)
备注:
因成本问题只是概念阶段,未按真实数据选型,电机因为电源没有使用大功率电源,所以用三个直流无刷电机代替。
原预定的陀螺仪因系统时钟占用无法调用资源,电机振动引起误差参数没意义,方案舍弃。
原预定的GPS因搜星不便,经常没有信号又白白占用一组串口和时钟资源被舍弃。
改为采用遥控和预设路径巡航割草方案。
项目持续完善中,遥控正在转2.4G控制,测试阶段。2.4G版割草机使用PWM驱动,程序分六级调速。
遥控开发平台:WIN7,WINScope IDE
代码主程序如下:
IDT_ir_code.txt红外源码
主控IC开发平台:WIN7,IAR
部分代码如下
雨水传感,电压检测AD采样的部分源码:
u16 adc_value;
ADC_IE(0);
adc_value = ((u16)ADC_DATH << 8) | ADC_DATL;
ada_value[adc_channel-2] = adc_value;
//deg_puts("\n");
//deg_u16(adc_value);
adc_channel++;
if (adc_channel > 11)
{
adc_channel = 2;
ADC_CON1 = ad_table[adc_channel];
ADC_CON0 |= BIT(6); //启动ADC转换
ADC_IE(1);
}
else
{
ADC_CON1 = ad_table[adc_channel];
ADC_CON0 |= BIT(6); //启动ADC转换
ADC_IE(1);
}
遥控信号解码部分源码:
const u8 IRTab1151[] = //user code is 0x1151
{
0xff,IR_01,IR_03, IR_07,IR_04, 0xff, 0xff, 0xff,IR_05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
IR_06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
IR_00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
IR_02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
};红外接收编码表
u8 get_irkey_value(void)
{
u8 tkey = 0xff;
if (pIR_code->bState != 32)
{
//my_putchar('a');
return tkey;
}
if ((((u8*)&pIR_code->wData)[0] ^ ((u8*)&pIR_code->wData)[1]) == 0xff)
{
//my_putchar('b');
if (pIR_code->wUserCode == 0x1151)
{
//my_putchar('c');
tkey = IRTabFF00[(u8)pIR_code->wData];
}
}
else
{
pIR_code->bState = 0;
}
return tkey;
}
PWM驱动设置部分代码如下:
void timer2_output_PWM2(void) //16位 PWM2输出函数
{
///系统时钟为48MHZ即48000KHZ
///输出100KHZ PWM波形,正占空比为33%
//1、timer模式和预分频设置
TMR2_CON0 = 0; //清零
TMR2_CON0 |= BIT(0); //定时器为PWM模式
TMR2_CON0 &= ~(BIT(2) | BIT(3)); //使用系统时钟作为时钟源
TMR2_CON0 |= BIT(6); //清除中断请求标志
TMR2_CON0 &= ~(BIT(3) | BIT(4)), TMR2_CON1 &= ~BIT(6); //预分频为1
//2、PRD计算
TMR2_PRDL = 479 & 0xff; //TMRx_PRD = 48000(KHZ)/1/100(KHZ) - 1 = 479
TMR2_PRDH = 479 >> 8;
//3、正占空比设置
TMR2_PWML = 158; //TMRx_PWMx = TMRx_PRD * 33% = 158
TMR2_PWMH = 0;
//4、使能PWM2输出(默认输出)
P2DIR &= ~BIT(7);
TMR2_CON1 |= BIT(0); //PWM2(P27)使能
}
因为主控芯片为闭源芯片,完整代码涉及权限问题不能上传。
上图分别为2.4G遥控器框架,和信号接收端。IDT感应式无线充电15W模块工作电压电流。时间关系,项目未完全竣工无法接成实物,只能用测试板演示。
动心忍性1234: 您好我是无线电杂志的编辑,我们对您的项目十分感兴趣,请问您有兴趣投稿吗?成为我们的作者除稿费外还有其他优厚条件。敬请参与。投稿请联系QQ260534978.
回复