模块化供电的艺术:TB6612驱动电路与系统电源架构的协同设计

stm32+TB6612驱动直流电机 因为单片机的不可以直接的驱动电机,所以需要在他们之间加上一个电机的驱动模块,之前的文章里面用过L298N电机驱动模块,现在再给大家推荐一个新的电机驱动模块,他比L298N好用许多,而且占用体积小,发热也少。TB6612可以一次驱动两个直流电机,输出PWM也很简单,下面就是通过实验对TB6612电机进行介绍。 一、TB6612电机驱动模块 先介绍一下TB6612电机驱动模块的引脚功能,VM:最大接15V电源,我一般使用12V直流电源供电。VCC采用3.3V或者5V供电。... 阅读详情

模块化供电的艺术:TB6612驱动电路与系统电源架构的协同设计

在构建复杂的嵌入式系统时,电源设计往往是决定项目成败的关键因素之一。对于机器人、智能小车等多模块协同的系统,电源架构不仅仅是简单的供电连接,而是需要综合考虑功率分配、噪声隔离、地线布局和效率优化的系统工程。TB6612电机驱动模块作为常见的执行单元驱动方案,其与单片机、传感器、通信模块等子系统的电源协同设计,直接影响到整个系统的稳定性、可靠性和性能表现。传统的点对点供电方式往往导致电压倒灌、地线干扰、噪声耦合等问题,而模块化的供电架构能够有效解决这些痛点,为高端嵌入式应用提供坚实的基础。

1. 系统级电源架构设计基础

现代嵌入式系统的电源设计已经超越了简单的电压转换和分配,演进为一种综合性的架构艺术。系统级电源架构的核心在于理解各个子模块的功率需求、噪声特性以及它们之间的相互影响。对于包含TB6612驱动模块的机器人系统,电源架构需要同时满足数字逻辑电路的洁净供电需求和大功率电机驱动的瞬态响应要求。

典型的嵌入式系统电源树包含多个层级:主电源输入、初级稳压、次级分配和局部调节。主电源通常采用锂电池或外部适配器,电压范围从7.4V到12V不等。初级稳压阶段将输入电压转换为系统所需的中间电压,如5V和3.3V。这个阶段的设计需要考虑功率损耗、热管理和效率优化。次级分配阶段将中间电压分配到各个功能模块,而局部调节则为敏感电路提供最终的洁净电源。

电源树设计的关键参数包括:

参数典型值说明
输入电压范围7.4-12V锂电池或适配器供电
5V总线电流2-3A为驱动模块和部分外设供电
3.3V总线电流1-2A为微控制器和数字电路供电
电机驱动峰值电流1.2-3.2ATB6612的驱动能力
纹波噪声要求<50mV敏感电路的电源质量要求

在实际设计中,电源树的拓扑结构需要根据具体应用场景进行优化。对于移动机器人系统,效率往往是首要考虑因素,因此会选择同步整流降压转换器而不是线性稳压器。对于噪声敏感的应用,如高精度传感器系统,则需要增加额外的滤波和隔离措施。

地线布局是电源架构中另一个关键但经常被忽视的方面。单点接地、多点接地和混合接地策略各有其适用场景。在包含电机驱动和数字电路的系统中,通常采用分区域接地策略,将大电流地(功率地)与信号地(数字地)分开,最后在一点连接,以避免地环路和共模噪声问题。

2. TB6612驱动模块的电源特性与集成挑战

TB6612FNG作为一款高效的直流电机驱动芯片,在嵌入式运动控制领域得到了广泛应用。其内部集成了双H桥电路,能够同时驱动两个直流电机,最大输出电流达1.2A(连续)或3.2A(峰值)。与传统的L298N相比,TB6612具有更高的效率和更小的体积,但其电源设计要求也更加严格。

TB6612模块具有两个独立的电源输入:VM(电机驱动电压)和VCC(逻辑控制电压)。VM引脚接收电机工作电压,范围4.5V至15V,直接决定电机的输出功率。VCC引脚为内部逻辑电路供电,要求2.7V至5.5V的稳定电压。这种双电源设计虽然提供了灵活性,但也带来了系统集成时的复杂性。

TB6612电源连接规范:

// 典型的TB6612电源连接配置
#define MOTOR_VOLTAGE 9.6    // 锂电池标称电压
#define LOGIC_VOLTAGE 5.0    // 逻辑电路工作电压

// 电源连接建议
void power_connection_guidelines() {
    // VM引脚:连接经过滤波的电机电源
    // VCC引脚:来自系统5V稳压输出
    // GND引脚:与系统共地,但要注意地线布局
}

在实际系统集成中,TB6612最常见的挑战是电源倒灌问题。当VM电压高于VCC电压时,可能发生电流反向流动,导致逻辑电路损坏或单片机工作异常。这种现象在电机急停或反向电动势较大时尤为明显。解决这一问题的传统方法是在VCC线路中串联肖特基二极管,但这种方法会引入额外的压降和功率损耗。

更先进的解决方案是使用电源隔离模块或理想二极管控制器。电源隔离模块如金升阳的LD10-23B05能够提供完全的电气隔离,彻底解决倒灌问题,同时还能抑制电源噪声。理想二极管控制器则使用MOSFET和控制电路模拟二极管的单向导通特性,但压降更低、效率更高。

另一个集成挑战是电机驱动产生的噪声对系统其他部分的影响。TB6612在PWM驱动电机时会产生高频开关噪声,这些噪声可能通过电源线和地线耦合到敏感电路中。解决这一问题需要在VM引脚附近放置足够大的去耦电容(通常为100-470μF的电解电容并联0.1μF的陶瓷电容),并在电源入口处添加LC滤波电路。

3. 多子系统电源噪声隔离技术

在复杂的嵌入式系统中,各个子系统对电源质量的要求各不相同。电机驱动模块产生大量开关噪声,无线通信模块对电源纹波极其敏感,而传感器模块则需要稳定的参考电压。有效的噪声隔离技术是确保系统可靠工作的关键。

电源隔离是最彻底的噪声解决方案,它通过变压器或电容耦合将噪声源与敏感电路完全隔离。DC-DC隔离模块能够提供高达数千伏的隔离电压,同时实现电源转换功能。在选择隔离模块时,需要考虑隔离电压、效率、纹波噪声和体积等因素。

常见隔离方案对比:

方案类型隔离电压效率成本适用场景
磁耦隔离2.5-5kV80-90%中一般工业应用
容耦隔离1-2kV85-92%低消费电子
光耦隔离3.5-5kV70-85%高高噪声环境

对于不需要完全隔离的应用,可以采用局部滤波和稳压策略。π型滤波电路(电感-电容-电感)能有效抑制高频噪声,特别适合为无线模块供电。低压差线性稳压器(LDO)虽然效率较低,但能提供极为洁净的电源,适合为模拟传感器和ADC参考电压供电。

地线噪声是另一个需要重点关注的问题。在多层PCB设计中,可以采用分割地平面的方法,将数字地、模拟地、功率地分开布局。各地平面之间通过磁珠或0欧姆电阻在单点连接,形成星型接地结构。这种设计既能防止地环路形成,又能为高频噪声提供低阻抗回流路径。

# 地平面分割示例代码
def ground_plane_segmentation():
    """
    地平面分割设计原则:
    1. 数字地区域:微控制器、数字逻辑电路
    2. 模拟地区域:传感器、ADC、精密参考源
    3. 功率地区域:电机驱动、大电流开关电路
    4. 单点连接:在电源入口处使用0欧姆电阻或磁珠连接各地平面
    """
    # 地平面分割策略
    segmentation_strategy = {
        "digital_ground": "微控制器、存储器、数字接口",
        "analog_ground": "传感器、ADC、DAC、参考电压",
        "power_ground": "电机驱动、电源转换、大电流负载"
    }
    
    # 连接点设计
    connection_point = "电源输入滤波电容接地端"
    return segmentation_strategy, connection_point

对于特别敏感的应用,还可以采用屏蔽罩和guard ring(保护环)技术。屏蔽罩可以防止电磁辐射干扰,而guard ring则是在敏感信号线周围布设接地铜皮,防止串扰和噪声耦合。

4. 高效电源管理IC与前瞻性设计理念

随着半导体技术的发展,现代电源管理IC已经集成了众多先进功能,为嵌入式系统设计提供了更多可能性。从传统的线性稳压器和开关稳压器,到如今的多通道PMIC(电源管理集成电路),设计者有了更多工具来优化系统电源架构。

多输出PMIC是复杂系统的理想选择,如TI的TPS65263、MAX77650等器件集成了多个降压转换器、LDO和电源管理功能。这些器件能够提供高度集成的电源解决方案,减少外部元件数量,提高系统可靠性。以TPS65263为例,它包含3个高效降压转换器和4个LDO,能够为处理器核心、I/O、存储器和外设提供完整的电源解决方案。

先进PMIC特性对比:

型号输出通道效率开关频率特殊功能
TPS652633Buck+4LDO95%2.25MHzI2C接口、动态电压调节
MAX776501Buck+1Boost+2LDO93%4MHz锂电池管理、安全功能
MP54164Buck+1LDO92%2.2MHz电源序列控制、故障保护

动态电压调节(DVS)是另一个值得关注的技术,它允许根据处理器的负载情况动态调整供电电压。在低负载时降低电压可以显著减少功耗,这对于电池供电的移动设备尤为重要。现代微控制器如STM32H7系列和ESP32系列都支持DVS功能,需要与PMIC配合实现。

对于电机驱动应用,集成电流 sensing 和故障保护功能的驱动IC是发展趋势。如DRV8837、A4950等器件集成了电流检测、过流保护、过热保护和欠压锁定功能,大大提高了系统的可靠性。这些器件通常还支持低功耗模式,在空闲时显著降低功耗。

前瞻性的电源设计还需要考虑能量回收和功耗优化。在机器人减速或下坡时,电机工作于发电模式,产生的能量可以通过适当的电路回收到电池中。同步整流降压转换器在特定条件下可以工作于升压模式,实现能量回收功能。

# 电源管理调试命令示例
# 使用I2C工具配置PMIC参数
i2cset -y 1 0x48 0x01 0xAE  # 设置Buck1输出电压
i2cget -y 1 0x48 0x02       # 读取电源状态寄存器
i2cdetect -y 1               # 扫描I2C总线上的设备

# 监控系统功耗
monitor_power_consumption() {
    while true; do
        read_voltage=$(adc_read 0)
        read_current=$(adc_read 1)
        power=$(echo "$read_voltage * $read_current" | bc)
        echo "当前功耗: $power mW"
        sleep 1
    done
}

在实际项目中,我倾向于使用集成度较高的PMIC配合少量外部元件,在BOM成本和性能之间取得平衡。对于噪声特别敏感的应用,会选择开关频率较高的器件,因为高频开关噪声更容易滤波。同时,保留足够的测试点和调试接口,以便在开发过程中优化电源性能。

电源架构设计是一个需要综合考虑多方面因素的工程艺术。从芯片级的电源管理到系统级的供电分配,从噪声抑制到热管理,每一个环节都需要精心设计和验证。通过模块化的设计理念和先进的电源管理技术,我们能够构建出更加可靠、高效和智能的嵌入式系统,为各种应用场景提供坚实的动力基础。

用Arduino Mega2560和TB6612驱动MG513电机,我踩过的坑和最佳实践 本文详细介绍了使用Arduino Mega2560和TB6612驱动模块控制MG513直流电机的实战经验,包括硬件连接、PWM配置、编码器信号处理等关键技巧。通过优化电源系统、信号线布局和软件控制算法,有效解决了电机抖动、转速不稳等常见问题,为机器人底盘和自动化项目提供了可靠解决方案。 阅读详情

相关推荐

TB6612模块与单片机供电连接中的电压倒灌问题及解决方案

本文详细解析了TB6612模块与单片机供电连接中常见的电压倒灌问题及其危害,包括单片机重启和IO口烧毁等。重点介绍了使用肖特基二极管隔离和电源隔离模块等有效解决方案,帮助开发者确保系统稳定运行,避免因电源反向电流导致的设备损坏。

redis7keeper的博客 1005

Arduino使用TB6612电机驱动 循迹小车(附代码)

标题写的啥,文章就说的啥

sclovezxy的博客 6133

DIY智能小车电源方案避坑:LM2596S降压模块如何为STM32和TB6612稳定供电?

本文详细解析了如何利用LM2596S降压模块为DIY智能小车的STM32和TB6612提供稳定供电方案。通过分析各模块的供电需求、LM2596S选型改造技巧、多电压系统实现方案以及PCB布局抗干扰实践,帮助开发者避免常见电源问题,确保智能小车稳定运行。特别适合硬件爱好者和嵌入式开发者参考。

weixin_28726391的博客 101

【STM32学习】TB6612FNG驱动芯片的学习,驱动电路的学习

TB6612芯片是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并控制其转速和方向。参考:C141517_电机驱动芯片_TB6612FNG,C,8,EL_规格书_TOSHIBA(东芝)电机驱动芯片规格书。

weixin_60324241的博客 8308

【MSP432电机驱动学习—上篇】TB6612带稳压电机驱动模块、MG310电机、霍尔编码器

本文最终使用MSP432P401r开发板实践驱动TB6612带稳压电机驱动模块驱动电机,主要学习的有以下三个模块:TB6612带稳压电机驱动模块、MG310电机的编程使用,霍尔编码器的基础知识,文章前部分会先介绍各个模块基础,后续实践并且会贴出驱动代码,也提供整体工程下载。

NULL指向我的博客 5万+

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

TB6612模块与单片机供电连接

vm驱动电压>7.4V,的时候建议VCC连接5V供电,因为VM电压会倒灌VCC中,接3.3V会导致单片机的3v3输出口被倒灌。或者接肖特基二极管也行。

qq_62249424的博客 3441

海康工业相机 Could not find module MvCameraControl.dll(已解决)

【代码】海康摄像机 Could not find module MvCameraControl.dll(已解决)

hmbbpdx的博客 2223

【含代码】STM32F1PWM控制TB6612驱动两个直流电机,PWM调速、智能小车入门教程、电机正反转、TT电机

通过本文可以学到STM32F103C8T6控制两个直流电机转动,正转、反转、调速。TB6612FNG是一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,其效率高于晶体管H桥驱动器。双通道电路输出,可同时驱动2个电机。相比L293D每通道平均600mA的驱动电流和1.2A的脉冲峰值电流,它的输出负载能力提高了一倍。相比L298N的热耗性和外围二极管续流电路,它无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。

m0_60997683的博客 2万+

Uibot RPA中级认证实战:手把手教你用流程创造者搞定客户数据迁移(附验证码容错技巧)

本文详细介绍了Uibot RPA中级认证实战中的客户数据迁移工程化解决方案,特别针对验证码容错技巧和动态表格处理等核心挑战。通过环境准备、登录模块设计、数据提取技术及容错体系的系统讲解,帮助RPA实施工程师掌握高效稳定的自动化流程开发方法,提升企业数据迁移效率。

weixin_30505225的博客 228

从零到一:手把手教你用STM32和WiFi打造智能温室大棚的物联网核心

本文详细介绍了如何利用STM32单片机和WiFi技术从零构建智能温室大棚的物联网核心系统。内容涵盖硬件选型、传感器集成、低功耗WiFi通信、自动控制逻辑及OLED显示,提供实际部署中的优化技巧和故障排查方案,帮助开发者打造稳定可靠的农业自动化解决方案。

c7d8e的博客 179

创客必备七武器:从系统设计到调试的完整项目实践指南

在嵌入式系统与物联网开发领域,系统设计与需求分析是项目成功的基石。其核心原理在于通过模块化拆解,将复杂问题转化为可管理的硬件选型、电路设计和软件架构任务,这能有效规避后期的兼容性与稳定性风险。掌握这一方法的技术价值在于,它能显著提升开发效率与项目可靠性,是连接创意与实现的关键桥梁。在智能硬件、机器人及自动化装置等应用场景中,从明确核心问题到输出包含电压、电流及接口定义的模块需求表,这一流程至关重要。本文以创客项目为例,深入剖析了如何运用Arduino、3D建模等工具组合,系统化地推进从思维蓝图到物理实体的全

weixin_30654419的博客 331

从JT808/JT1078协议到多端协同:构建高并发北斗车辆监控平台的技术实践

本文详细介绍了基于JT808/JT1078协议构建高并发北斗车辆监控平台的技术实践,包括协议解析、高并发架构设计、多端协同实现及数据持久化策略。通过Netty、Kafka等技术优化,系统成功支撑日均2000万条消息处理,为GPS车辆动态监控系统提供了可靠解决方案。

weixin_28358083的博客 224

电机驱动----TB6612FNG(STM32F103C8T6)

引脚号引脚名类型说明1AO1O通道A输出12AO13PGND1——电源接地14PGND15AO2O通道A输出26AO27BO2O通道B输出28BO29PGND2——电源接地210PGND211BO1O通道B输出112BO113VM2——电源输入,最大15V14VM315PWMBI通道B的PWM输入引脚,内接200KΩ下拉电阻16BIN2I通道B逻辑输入2引脚,内接200KΩ下拉电阻17BIN1I。

聪聪的成长之路 1万+

直流无刷BLDC六步换相“电流环”、“速度环”的关系

4、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载非正常变化,例如速度严重“超速”时,需要“限速”保护,这个任务是“速度环”的,这时“速度环”会根据设定的速度上限,控制触发器,将电机速度迅速将下来,电流降下来,在“限速”保护期间,“电流环”失去对触发器的控制作用;3、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载正常变化,“速度环”对速度大小的控制作用是没有的;6、很多人想当然,“电流环”不工作,电机“电流”哪里来的?

u011878611的博客 5471

Keil AC6编译器独立安装与配置指南:不升级Keil MDK也能用上新工具链

本文详细介绍了如何在不升级Keil MDK的情况下独立安装和配置Arm Compiler 6(AC6),帮助嵌入式开发者充分利用AC6的编译速度、代码密度和现代语言支持优势。通过零侵入式解决方案,开发者可以在现有环境中灵活切换编译器版本,提升开发效率。

weixin_30872157的博客 552

【SLAM小车】硬件_TB6612FNG设计记录

TB6612FNG作为一款性价比十分高的电机驱动芯片,一块芯片可带动2个直流电机,非常nice! 供电电源电压最高可以达15V,我采用的是12V供电! 平均输出电流为1.2A,峰值电流为3.2A,驱动小电机绰绰有余! AO1 接1电机的正极 AO2 接1电机的负极 BO1 接2电机的正极 BO2 接2电机的负极 PGND1 和 PGND2 接地 VM1、VM2、VM3 接 12V供电 STBY 由下图可知,接高电平有效,故接3.3V AIN1、AIN2、PWMA 控制1电..

Q小鑫 4124

YOLOv9改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 2892

【嵌入式模块】直流电机驱动L298N,TB6612详解

直流电机控制时,只需要给它输入一个PWM波即可,占空比越大,电机运行速度越快。但是一般来说单片机工作电压为5V,且电流较小,而电机运行需要较大的电流,因此往往控制电机运行时,都需要在单片机与电机之间连接一个驱动,即所谓的电机驱动。L298N和TB6612FNG,下面分别介绍。

记录学习成长之路,进一寸有进一寸的欢喜 3万+

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2847

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TB6612与电机编码器

前言 本文将讲述关于电机的知识,内容包含电机驱动和电机编码器。电机驱动介绍TB6612FNG,电机编码器介绍霍尔编码器

微光feng的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

TB6612FNG电机驱动使用说明

TB6612是双驱动,也就是可以驱动两个电机 下面分别是控制两个电机的IO口 STBY口接单片机的IO口清零电机全部停止, 置1通过AIN1 AIN2,BIN1,BIN2 来控制正反转 VM  接12V以内电源 VCC 接5V电源 GND 接电源负极 驱动1路 PWMA      接单片机的PWM口   真值表: AIN1 0      0      1 AIN2 0      1     ...

明天你好 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【电机驱动芯片(H桥、直流电机驱动方式)——DRV8833、TB6612、A4950、L298N的详解与比较】

H桥电路在驱动直流电机上具有重要的应用,此篇文章便是介绍H桥的工作原理和相关芯片的驱动方式。

默默无闻小菜鸡的博客 9万+

平衡小车—TB6612FNG与直流电机控制教程

文章目录1.直流电机原理2.减速器3.电机实物接线图解4.TB6612FNG使用说明5.TB6612FNG原理图与PCB6.获取方式 这篇教程来自平衡小车之家,与大家一起学习直流电机的原理和控制、减速器的作用,并介绍一款直流电机驱动芯片TB6612FNG。 1.直流电机原理   下面是分析直流电机的物理模型图。其中,固定部分有磁铁,这里称作主磁极;固定部分还有电刷。转动部分有环形铁心和绕在环形铁心上的绕组。(其中2个小圆圈是为了方便表示该位置上的导体电势或电流的方向而设置的)   它的固定部分(定子)

果果小师弟的博客 4万+

循迹避障小车制作第一篇(tb6612模块与降压模块的使用)

TB6612 如何驱动电机 一.TB6612模块 二.TB6612的接线 tb6612是双电机驱动,即可同时驱动两个电机,有四种电机控制模式:正转/反转/制动/停止

m0_46507918的博客 2万+
上一篇: 深入解析STM32 Systick定时器:从时钟源选择到精准延时实现
下一篇: 基于STM32与PWM的二维机械臂精准控制与多模式交互实现
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值