0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino微控制器atmega328p-pu对微控制器编程实现

电子设计 来源:电路城 作者:电路城 2021-04-27 15:29 次阅读

硬件部件:

atmega328p-pu× 1个

带按钮的旋转编码器× 1个

2.5伏参考电压,ad680jtz× 1个

8 MHz晶振× 1个

电容22 pF× 2个

电容100 nF× 5

电阻1M欧姆× 2个

电阻10k欧姆× 10

电阻4.75k欧姆× 1个

电阻1k欧姆× 7

电阻220欧姆× 1个

电阻100欧姆× 7

电容1 µF× 2个

电容器100 µF× 1个

电容1000 µF× 1个

ams1117-5.0× 1个

二极管1n400× 1个

mosfet N通道ao3400× 3

Mosfet P通道A03407× 2个

JST XH插座。3p,4p,5p× 1个

LED(通用)× 1个

散热器× 1个

风扇40x40 12v× 1个

功率PNP晶体管1SB1375× 2个

通用晶体管PNP× 2个

通用晶体管NPN× 4

1欧姆1W 1%电阻× 2个

2.2欧姆5W电阻× 2个

齐纳单二极管,5.1 V× 2个

LCD i2c显示器16x2或20x4× 1个

Maxim Integrated DS18B20可编程分辨率1-Wire数字温度计× 3

AA电池座× 2个

软件应用程序和在线服务

Arduino IDE

手动工具和制造机

烙铁(通用)

该项目致力于为NiMh AA电池充电。

声明:这是一项正在进行的工作,该软件仍处于Alpha阶段。

该充电器可用于为电池缓慢和快速充电,也可以恢复旧电池。该充电器基于Arduino微控制器atmega328p-pu,可将全部可用信息显示到16x2或20x4 LCD字符屏上。它最多可以独立为两节电池充电。您只能给一个电池充电,也可以同时给两个不同容量的电池或两个类似的电池充电。在为电池充电之前,必须为每个电池插槽设置电池容量,充电速度和循环计数,然后将电池插入插槽,然后过程开始。

充电器支持三种充电模式:

• 快速充电。电池应在5个小时内充满电。充电电流取决于电池容量,等于0.2C。

• 充电缓慢。电池应在10小时内充满电。充电电流等于0.1C。

• 恢复充电。此模式下的充电电流限制为40mA。恢复时间取决于电池容量。此模式可用于恢复电池容量并为其他充电器无法充电的旧电池充电。

充电过程包括以下几个阶段:

• 放电阶段。电池通过内部电阻放电至0.9 v。

• 预充电阶段。电池以小电流充电,大约30mA,直到电池电压变为1.0v。

• 主充电阶段。根据计算的电流对电池充电,具体取决于电池容量和充电模式(快速,缓慢还原)。如果检测到电压下降或电池过热或达到电压上限,则电池充电阶段结束。

• 充电后阶段。电池以小电流充电,直到另一个电压下降或电压上限。

• 完成阶段。电池会以短电流脉冲充电,直到将其从充电器中取出为止。

如果在给电池充电之前未设置环路,则充电过程将贯穿整个阶段。如果选择运行多个充电循环,则充电器将在主充电阶段完成后立即重新开始放电过程,直到达到循环计数为止。您可以使用多个循环充电来恢复电池容量。

充电器具有三个温度传感器:一个用于每个电池插槽,另一个用于控制安装在功率晶体管上方的内部散热器的温度。为了降低内部散热器的温度,在充电器内部安装了一个小风扇。散热器温度达到最高限制时,风扇会自动打开。当散热器变冷时,风扇将关闭。

充电器原理图如下图所示。为了简化原理图的读数,它分为三个部分:控制器部分和两个通道。两个充电通道都非常相似,唯一的区别是输出和输入信号以及组件编号。

充电器的控制器部分:

基于Arduino微控制器atmega328p-pu对微控制器编程实现

如上图所示,为增加电池电压测量,已实现外部基准电压源AD680JTZ。其精度为0.4%,并且控制器可以检查高达0.001伏的电池电压。您可以用运行在8 MHz或更高频率的Arduino板(uno,nano,pro mini)替换atmega328p-pu IC

这是套接字说明:

• J1可以像Arduino pro mini一样通过UART端口对微控制器进行编程。

• J2连接电池温度传感器DS18b20

• X2 12伏电源连接器

• U3连接i2c LCD显示器。平滑改变显示屏亮度所需的亮度引脚

• U4连接旋转编码器。

• U5连接安装在散热器上的12v 40x40x10mm风扇。

通道“ A”原理图:

基于Arduino微控制器atmega328p-pu对微控制器编程实现

通道“ B”的原理图:

基于Arduino微控制器atmega328p-pu对微控制器编程实现

在这里,您可以找到该项目的完整原理图和PCB板。

让我解释一下充电器如何在通道“ B”上工作。晶体管Q9和Q10是达林顿对,可为连接到插座J4的电池提供充电电流。Arduino控制器通过PWR_B端口将PWM信号提供给Q13晶体管。PWM占空比越大,在Q9集电极上产生的电流就越大。

Q11 mosfet用于启用或禁用电池充电电流。Q12 MOSFET用于通过R26电阻对电池放电。

要测量R31电阻上的充电电流电压,请检查。

为了向电池提供所需的电流,充电器中使用了PID算法

定义温度传感器的正确顺序

您必须对充电器进行一些初始配置,因为在此项目的单条总线上有三个温度传感器ds18b20。在启动过程中,充电器以某种特定顺序检测所有传感器。您必须指定正确的传感器顺序,充电器才能正常工作。

将NiMh_Serial固件加载到您的控制器,并将终端连接到UART端口。选择“温度”菜单项。按下编码器按钮。您可以看到所有温度传感器的值。加热一些传感器,并记住它在列表中的位置。对每个传感器重复此过程。现在,您可以定义充电器的正确传感器顺序。将NiMH_Charger代码加载到Arduino IDE并找到“ core.init(SO_BHA);”行。在setup()函数中。要定义正确的传感器顺序,您必须为core.init()方法指定正确的SO_ *代码。温度传感器有6种可能的组合:

SO_ABH-通道“ A”,通道“ B”,内部散热器。

SO_BAH-通道“ B”,通道“ A”,内部散热器等。

此过程只能执行一次。

串行固件的其他可能性

* _serial固件是一种功能强大的工具,可用于调试充电器硬件。使用串行菜单,您可以选择电池通道“ A”或“ B”之一,定义充电电流,执行测试充电,测试放电,散热器风扇测试和温度传感器测试。

该项目仍在进行中,因为电池充电过程非常耗时,并且调试需要大量时间。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6803

    浏览量

    147595
  • 显示器
    +关注

    关注

    21

    文章

    4730

    浏览量

    137794
  • 晶体管
    +关注

    关注

    76

    文章

    9041

    浏览量

    135141
收藏 人收藏

    评论

    相关推荐

    电梯的基础原理:微控制器

    微控制器
    jf_10480160
    发布于 :2022年12月14日 07:20:15

    五大微控制器板特性盘点

    的开发板之一。Arduino UNO R3是基于ATmega328P微控制器的最简单,最强大的原型设计环境。Raspberry Pi开发板树莓派开发板很小(就像信用卡计算机的大小。树莓派可以很容易地插入监视
    发表于 11-29 09:21

    使用MCU微控制器实现对物联网设备的控制

    **PacketTracer模拟器物联网教程2—MCU微控制器编程**一、目的使用MCU微控制器实现对物联网设备的控制二、设备1.台灯2.S
    发表于 11-01 07:36

    Atmega328p-puAtmega16A-PU有什么区别

    Atmega328p-puArduino-URO主控芯片)和Atmega16A-PU有什么区别Atmega328p-puAtmega16
    发表于 11-23 09:15

    基于picoPower 8位AVR RISC的高性能微控制器

    描述Atmega328P 不带 Arduino PCB 设计Atmega328P 微控制器ATmega328P 是一款基于 picoPow
    发表于 07-01 08:32

    采用ATmega328P芯片设计的水库水泵控制器

    描述带Arduino的水库水泵控制器采用ATmega328P芯片设计的水库水泵控制器,通过LED显示水库水位的5个位置。
    发表于 08-03 07:18

    ATMEGA 328P微控制器上数字钎焊站的装配设计

    描述ATMEGA 328P微控制器上数字钎焊站的装配设计
    发表于 08-11 07:35

    AtMega328AtMega328-MU的编程

    描述AtMega328AtMega328-MU 的编程板。非常适合为您的项目编程新芯片。用于刻录引导加载程序和编程的自己的引脚。设计为
    发表于 09-13 07:03

    什么是微控制器?如何编程微控制器

    微控制器进行编程或刻录意味着“将程序从编译器传输到微控制器的存储器”。微控制器的程序通常是用C或汇编语言编写的,最后编译器会生成一个十六进制文件,其中包含机器语言指令(例如零和
    的头像 发表于 08-21 15:40 9339次阅读

    Atmega328p-puAtmega16A-PU区别

    Atmega328p-puArduino-URO主控芯片)和Atmega16A-PU有什么区别Atmega328p-puAtmega16
    发表于 11-15 12:06 0次下载
    <b class='flag-5'>Atmega328p-pu</b>与<b class='flag-5'>Atmega16A-PU</b>区别

    Arduino Uno微控制器采用的是Atmel的ATmega328

    Arduino Uno微控制器采用的是Atmel的ATmega328
    发表于 11-15 12:06 10次下载
    <b class='flag-5'>Arduino</b> Uno<b class='flag-5'>微控制器</b>采用的是Atmel的<b class='flag-5'>ATmega328</b>

    基于ATmega328微控制器板原理图

    ArduinoUno是一款基于ATmega328微控制器板。它有14个数字输入/输出引脚(其中6个可用作PWM输出)、6个模拟输入、一个16MHz晶体振荡器、一个USB连接、一个电源插孔
    的头像 发表于 07-05 17:17 3342次阅读
    基于<b class='flag-5'>ATmega328</b>的<b class='flag-5'>微控制器</b>板原理图

    Arduino Pro Mini基于ATmega168的微控制器

    电子发烧友网站提供《Arduino Pro Mini基于ATmega168的微控制器板.zip》资料免费下载
    发表于 08-22 16:43 3次下载
    <b class='flag-5'>Arduino</b> Pro Mini基于<b class='flag-5'>ATmega</b>168的<b class='flag-5'>微控制器</b>板

    简单的独立ATMega328p微控制器

    电子发烧友网站提供《简单的独立ATMega328p微控制器.zip》资料免费下载
    发表于 06-12 10:57 0次下载
    简单的独立<b class='flag-5'>ATMega328</b>p<b class='flag-5'>微控制器</b>

    基于ATmega328P微控制器的Ardu键盘

    电子发烧友网站提供《基于ATmega328P微控制器的Ardu键盘.zip》资料免费下载
    发表于 06-19 14:47 0次下载
    基于<b class='flag-5'>ATmega328</b>P<b class='flag-5'>微控制器</b>的Ardu键盘