加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

Lemontree 发布

2021年I题-具有发电功能的储能小车-步行也得行队

 
设计简介

前言
从全国电子大赛的开始到结束,我们历经四天三夜的作品创作和一个月的作品等测结果,最后荣获国二。在前几天我们看到了立创的作品征集开源活动,我和我的队友们毫不犹豫的选择报名参加活动,我们想让更多的电子爱好者们了解我们“具有发电功能的储能小车”的这个作品,也想与更多的电子爱好者交流技术。           
个人介绍
杨杰海
广西贵港
就读于广西职业技术学院
梁伟林
广西梧州
就读于广西职业技术学院
宋乐乐
广西贵港
就读于广西职业技术学院

项目分析

一 任务

设计并制作一个具有发电功能的智能小车,该小车具有液晶显示功能,采用超级电容法拉电容)作为储能元件。手动推动小车在图 1 所示的手动发电区内,从 A 点单向直线运动至 B 点,重复该过程 5 次,完成一次完整充电过程,为超级电容充电。充电完成后的小车,按要求完成规定动作。

二 要求

1. 基本要求

(1) 小车在充电过程中,能够点亮 LED 指示灯。

(2) 将完成充电的小车,置于地面的指定起始点,一键启动,小车延迟 1s后向前行驶直至完全停止,测量小车从起始点到停止点的直线距离 L1,要求 L1 不小于 100cm,小于 100cm 扣分。

(3) 要求小车能实时显示其行驶距离。

2. 发挥部分

(1) 小车在手动发电区内完成充电后,将小车置于图 1 所示的圆形循迹区起 始点 S,一键启动,小车延迟 1s 后沿着黑色圆形循迹线行驶直至完全停止,记录小车行驶距离 L2, L2越远越好。

(2) 在圆形循迹线下方放置多枚人民币壹元硬币,要求小车在行驶的第一圈探测硬币,每探测到一枚硬币 LED 灯点亮一次,并显示探测硬币的枚数。一圈后 不再检测,错检、漏检或多检均扣分,硬币由参赛队自带。

项目功能介绍

本小车电路相对比较简单,单片机的使用的是Arduino NANO板编程起来也比较简单功耗也不大,但为了省电节能,把模块板上的供电led灯给焊掉。使用的是两个电机并联给电容充电,使用循迹模块来实现小车走小圆圈功能,检测硬币使用金属模块来实现检测到硬币就会发送一个高电平信号给单片机处理计数显示在屏幕上。记录距离这方面使用红外光电传感器模块,获取传感器发送的脉冲,通过单片机计算4mm为一个脉冲,然后再屏幕上显示距离。

主要模块:

单片机模块(Arduino NANO)

循迹模块

升压模块

金属模块

红外光电传感器模块

Nokia5110液晶显示模块

金属模块:使用的是PNP型接近开关

工作原理:PNP型接近开关使用的是PNP三极管作为输出,通过电阻将输出端下拉到地,将GND作为公共端。在没有到位信号时,PNP三极管的基极是高电平,三极管不导通,接近开关输出低电平;当有到位信号时,三极管的基极是低电平,三极管导通,接近开关输出高电平。PLC通过检测接近开关输出端的高低电平来判断是否到位。

QQ图片20211215135849

循迹模块:它用的是CN70反射型红外对管,一共有三个

反射式光电传感器的工作原理:自带一个光源和一个光接收装置,光源发出的光经过待测物体的反射被光敏元件接收,再经过相关电路的处理得到所需要的信息。可以用来检测地面明暗和颜色的变化,也可以探测有无接近的物体。(循迹模块实际中是自己焊接的下面是电路图

QQ图片20211215134743

(循迹模块)红外光电传感器模块:使用的是对射型红外对管,通过光珊轮产生脉冲信号,一圈20个脉冲信号,再送给单片机进行计算通过显示屏显示。

QQ图片20211215140144

升压模块:使用的是PW5100,这是一款非常好的升压模块,最低能够工作的电压是0.7V,非常适合我们这个项目。

单片机模块(Arduino NANO):编程简单,运行处理信息速度够用。

Nokia5110液晶显示模块:

 Nokia5110是一款经典机型,由于较经典,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示。取代LCD1602。5110采用84x48 的点阵LCD,可以显示4 行汉字;特点包括:

1) 性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。

2) 接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。

3) 速度快,是LCD12864的20倍,是LCD1602的40倍。

4) Nokia5110工作电压3.3V,正常显示时工作电流200u以下,具有掉电模式,适合电池供电的便携式移动设备。

电机驱动

电机驱动这方面我们采用的是使用是4800场效应管来驱动电机,因为场效应管驱动方式是电压驱动,相比较普通的npn型三极管更好。

系统构图

系统组成框图

原来的原理图

QQ图片20211216200420

原来的PCB图

(由于比赛时间紧来不及改PCB图,所以实物用的是原pcb图,注:需要把原有的接到A7,A5,A4口断掉,接到A7-TX1,A5-RX0,A4-D7口,还有原原理图中不要的不用焊接。)

QQ图片20211216200443

电路原理图


电路PCB图

(不想用原PCB也可以用已经改好的)

QQ图片20211215163009

QQ图片20211215162850

QQ图片20211215162846

模块实物图

循迹模块:

IMG_20211217_091747

金属探测模块:

IMG_20211217_091758

测距模块(红外光电传感器模块):

IMG_20211217_091831

车外观(有点粗糙):

IMG_20211217_111658

IMG_20211217_111731

IMG_20211217_111707

IMG_20211217_091737

程序代码

#include <Nokia5110.h>

#include <MsTimer2.h>

Nokia5110 lcd;

int JuLi=0;

int dlnum=200;

int Plus_Distance = 0;

int Plus_Cion = 0;

float cmPerPlus = 0.4; //每个脉冲代表的长度,单位cm

const byte ledPin = 13;

const byte interruptPin1 = 2;//距离测量传感器信号脚

const byte interruptPin2 = 3;//硬币检测信号脚

const byte CionSensorCtrPin = 4;//硬币传感器电源控制脚

unsigned char DistanceBuff[] = {"Juli:0000mm "};

unsigned char CoinNumBuff[] = {"CoinNumber:0 "};

byte sensor[3] = {0, 0, 0};

// 电机设置 //

#define Left_PIN 6

#define Right_PIN 5

// 循迹模块设置 //

#define left_track_PIN A0

#define middle_track_PIN A1

#define right_track_PIN A2

//键盘定义

#define K1 A6

#define K2 7

#define K3 1

#define K4 0

#define middle_track_PIN A1

#define right_track_PIN A2

void motor_control(void); //电机控制

void motor_pinint( ); //引脚初始化

void KeyPinInit();

void KeyPinInit()

{

// pinMode(K1, INPUT_PULLUP);

pinMode(K2, INPUT_PULLUP);

pinMode(K3, INPUT_PULLUP);

pinMode(K4, INPUT_PULLUP);

}

/*循迹模块引脚初始化*/

void track_pinint( )

{

pinMode (left_track_PIN, INPUT); //设置引脚为输入引脚

pinMode (middle_track_PIN, INPUT);//设置引脚为输入引脚

pinMode (right_track_PIN, INPUT); //设置引脚为输入引脚

}

/*电机引脚初始化*/

void motor_pinint( )

{

pinMode (Left_PIN, OUTPUT); //设置引脚为输出引脚

pinMode (Right_PIN, OUTPUT); //设置引脚为输出引脚

}

void ShowDistance() {//显示距离

lcd.LcdXY(0, 0);

lcd.LcdWriteString(DistanceBuff);

}

void ShowCoinNum() {//显示硬币数量

lcd.LcdXY(0, 0);

lcd.LcdWriteString(CoinNumBuff);

}

void setup() {

lcd.initLCD(9, 8, 10, 12, 11); //CLK,DIN,DC,CE,RST

motor_pinint();

track_pinint();

KeyPinInit();

pinMode(interruptPin1, INPUT_PULLUP);

pinMode(interruptPin2, INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(interruptPin1), JuLiCeL, RISING);

attachInterrupt(digitalPinToInterrupt(interruptPin2), YBJC, FALLING);

Plus_Distance = 0;

Plus_Cion = 0;

pinMode(CionSensorCtrPin,OUTPUT);

pinMode(ledPin,OUTPUT);

MsTimer2::set(500,zhong_duan);

}

void zhong_duan()

{

digitalWrite(ledPin,0);

MsTimer2::stop();

}

void JuLiCeL()//测量距离

{

unsigned int temp;

noInterrupts();

Plus_Distance++;

JuLi = (unsigned int)(Plus_Distance * cmPerPlus * 10);

DistanceBuff[5] = JuLi / 1000 + 0x30;

DistanceBuff[6] = JuLi / 100 % 10 + 0x30;

DistanceBuff[7] = JuLi / 10 % 10 + 0x30;

DistanceBuff[8] = JuLi % 10 + 0x30;

interrupts();

}

void YBJC()//硬币检测

{

noInterrupts();

if(JuLi<1800){ Plus_Cion++;digitalWrite(ledPin,1);}

CoinNumBuff[11] = Plus_Cion/10 + 0x30;

CoinNumBuff[12] = Plus_Cion%10 + 0x30;

interrupts();

MsTimer2::start();

}

void Stop()

{

digitalWrite(Left_PIN, 0);

digitalWrite(Right_PIN, 0);

}

void TurnLeft()

{

digitalWrite(Left_PIN, 0);

digitalWrite(Right_PIN, 1);

}

void TurnRight()

{

digitalWrite(Left_PIN, 1);

digitalWrite(Right_PIN, 0);

}

void Go()

{

digitalWrite(Left_PIN, 1);

digitalWrite(Right_PIN, 1);

}

void Move()

{

if (analogRead(left_track_PIN) * 5.0 / 1023 >= 0.5)sensor[0] = 1;

else sensor[0] = 0;

if (analogRead(middle_track_PIN) * 5.0 / 1023 >= 2.8)sensor[1] = 1;

else sensor[1] = 0;

if (analogRead(right_track_PIN) * 5.0 / 1023 >= 0.9)sensor[2] = 1;

else sensor[2] = 0;

if (sensor[0] == 0 && sensor[1] == 0 && sensor[2] == 0) //黑线外是1,黑线内是0

{

Go();

}

else if ((sensor[0] == 0 && sensor[1] == 0 && sensor[2] == 1) || (sensor[0] == 0 && sensor[1] == 1 && sensor[2] == 1))

{

TurnLeft();

}

else if ((sensor[0] == 1 && sensor[1] == 0 && sensor[2] == 0) || (sensor[0] == 1 && sensor[1] == 1 && sensor[2] == 0))

{

TurnRight();

}

else

{

Stop();

}

}

void loop() {

while (1) {

if (digitalRead(K4)==0)

{

delay(1000);

while (1)

{

ShowDistance();

Go();

 

}

}

if (digitalRead(K3)==0)

{

delay(1000);

while (1)

{

Move();

}

}

if (digitalRead(K2)==0)

{

digitalWrite(CionSensorCtrPin,HIGH);

while (1)

{

ShowCoinNum();

Move();

}

}

}

}

总结

这让我收获了很多东西,学会了很多。经过了这件事我们知道了在日常学习的重要性,在这次比赛中我们也用到了很多平时觉得用不到的比如:圆的周长;欧姆定律等。
在这次比赛中我们也知道了团结的重要性,队长是一个很重要的位置,有了队长就要相信队长,不可以自己有想法了就自己去干自己的,应该是先和队长商量,这样才能得出最好的解法,这样才是最好的。在我们做作品的过程也遇到了很多困难,我们都会一步一步的解决他。不会因为遇到点困难就相互的说,而是在一起想办法解决。

参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
相关器件
器件 类型 描述 数据手册
CHP5R5L105R-TW 5.5V1F 超级电容器 点击下载
SS14 肖特基二极管 二极管配置:独立式 直流反向耐压(Vr):40V 平均整流电流(Io):1A 正向压降(Vf):550mV@1A 反向电流(Ir):500μA@40V 点击下载
1N4007 通用二极管 直流反向耐压(Vr):1kV 平均整流电流(Io):1A 正向压降(Vf):1.1V @ 1A 通用二极管 1000V,1A,VF=1.1V@1A 贴片M7的直插封装 IN4007 点击下载
A2541HWV-4P 排针排母 针脚数:4 连接器类型:排母 排数:1 触头类型:母形插口 间距:0.100"(2.54mm) - 点击下载
PT908-7C(BIN4) 红外接收管 波长:860nm 电流 - 暗:100nA 频谱范围:- 电流 - 集电极(最大值):20mA 电压 - 集射极击穿(最大值):30V 红外接收管,管脚长度15mm 点击下载
IR908-7C(E7) 红外发射管 波长:940nm 正向电流-DC (If):50mA 辐射强度:- 正向电压(Vf):1.25V 红外发射管管脚长度15mm 点击下载
77311-102-03LF 排针排母 针脚数:3 连接器类型:排针 排数:1 触头类型:公形引脚 间距:0.100"(2.54mm) 点击下载
K2-1103DP-M4SW-04 轻触开关 电路结构:SPST-NO 触点额定电流:50mA @ 12VDC 按钮头类型:Standard 按钮作用方向:Top Actuated 点击下载
17-21SURC/S530-A3/TR8 发光二极管 照明颜色:红色 主波长/色坐标:624~632nm 亮度值Iv=61mcd(Typ) @IF=20mA 点击下载
2.54-1*2P母 排针排母 针脚数:2 连接器类型:排母 排数:1 触头类型:母形插口 间距:0.100"(2.54mm) 点击下载
KTC9015S-C-RTK/P 三极管 额定功率:350mW 集电极电流Ic:150mA 集射极击穿电压Vce:50V 晶体管类型:PNP PNP,Vceo=-50V,Ic=-150mA,hfe=200~600 点击下载
RTX051001DETP 贴片电阻 点击下载
74HC165M/TR 移位寄存器 点击下载
0603 ±1% 10K 贴片电阻 点击下载
Type-C-2.0-6Pin USB连接器 点击下载
NANOSMDC200F-2 自恢复保险丝 点击下载
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-19 04:32:00

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved