Package: haas-python-l298
HaaS Python介绍HaaS Python是阿里云IoT团队最新研发的一套低代码编程框架，兼容MicroPython编程规范，依托HaaS平台软硬件积木提供AI、支付、蓝牙配网、云连接、UI等物联网场景常用的能力，从而解决了物联网应用开发难的问题。有了Python轻应用框架，物联网编程不再局限于专业软件开发人员，一般的技术员也可以快速实现复杂的物联网需求。
更多HaaS Python介绍和开发资料见HaaS Python官网,创意案例,硬件积木HaaS Python is a set of low-code programming frameworks newly developed by Alibaba Cloud IoT team. It is compatible with MicroPython programming specifications. It relies on the hardware and software building blocks of the HaaS platform to provide capabilities commonly used in IoT scenarios such as AI, payment, Bluetooth network configuration, cloud connection, and UI. Solve the difficult problem of IoT application development. With the Python light application framework, IoT programming is no longer limited to professional software developers, and general technicians can quickly implement complex IoT requirements.
For more HaaS Python introduction and development materials, seeHaaS Python official website,Creative Case,Hardware Building Blocks安装方法在HaaS Python官网下载开发板对应的固件，并完成固件烧录Download the firmware corresponding to the development board atHaaS Python websiteand complete the firmware burning在开发板上运行以下命令完成安装和使用,如果您在使用过程中遇到问题，欢迎在github上向我们提交issue，我们的工程师会及时解答Run the following commands on the development board to complete the installation and use. If you encounter problems during use, please submit an issue to us ongithub, Our engineers will answer in timeimport upip
upip.install("haas-python-l298")
import haas-python-l298L298 电机驱动模块一、产品简介L298N是意法半导体（ST Semiconductor）集团旗下量产的一种双路全桥式电机驱动芯片，拥有工作电压高、输出电流大、驱动能力强、发热量低、抗干扰能力强等特点，通常用来驱动继电器、螺线管、电磁阀、直流电机以及步进电机。L298N可以驱动一台两相步进电机或四相步进电机，也可以驱动两台直流电机。L298N 采用Multiwatt 15封装，N是L298的封装标识符。如图是市面上较为常见的一款L298N驱动模块。其中黑色的直立芯片就是 L298N 。并且配备了散热器，其可以用于大功率场景。市面上也有一些采用其他封装的模块，采用更小体积的封装模式，以应对更小功率需求的场景。其引脚定义都大致相同。引脚定义VCC：驱动电源正（在图示模块中可使用5V或12V）GND：驱动电源地Out1 Out2 Out3 Out4：功率输出IN1 IN2 IN3 IN4：逻辑控制ENA：IN1 & IN2 使能（TTL高电平使能）ENB：IN3 & IN4 使能（TTL高电平使能）其中 ENA 和 ENB 在部分模组中可能未透出给开发者，此时它们默认连接至芯片内部的VDD，即默认使能。二、技术参数驱动部分端子供电范围 Vs：5V~ 35V驱动部分峰值电流 lo：2A逻辑部分端子供电范围 Vss：5V~7V(板内取电+5V)逻辑部分工作电流范围：0 ~ 36mA控制信号输入电压范围：低电平：-0.3VsVin≤1.5V高电平：2.3VsVinsVss使能信号输入电压范围：低电平：-0.3svin≤1.5V(控制信号无效）高电平：2.3VsvinsVss(控制信号有效）最/大功耗：20W(温度T=75°C时）储存温度：-25°C~+130°C驱动板尺寸：48mm * 43mm * 33mm三、软件接口L298N电机驱动HaaS Python驱动：下载地址L298DC - 创建直流电机驱动对象函数原型L298DCObj = L298DC(Int1x:PWM, Int2x:PWM, en=None, freq=50, name="DCMotorX")参数说明该方法初始化一个 L298DC 对象，用于直流电机控制。其使用L298的单侧资源，即 ENA，IN1，IN2 以控制 OUT1， OUT2；或使用 ENB，IN3，IN4 以控制 OUT3， OUT4。参数类型必选参数？说明Int1xPWM是IN1或IN3引脚的PWM对象。调用此函数前需确保对象已被openInt2xPWM是IN2或IN4引脚的PWM对象。调用此函数前需确保对象已被openenPWM否ENA或ENB引脚的PWM对象。调用此函数前需确保对象已被open。若该入参不被指定，则默认对应的控制引脚已被使能。freqint否PWM驱动频率。默认为50Hz。开发者可以改变此值以寻找最佳的驱动效果。nameString否驱动对象名称。用于在多驱动对象场景下进行标注和区分。返回值若L298DC对象创建成功，返回L298DC对象；否则抛出Exception示例代码froml298importL298DCfromdriverimportPWMin1=PWM()in1.open("in1")in2=PWM()in2.open("in2")ena=PWM()ena.open("ena")wheel=L298DC(in1,in2,ena,100,"wheel_left")run(rate) - 驱动电机以指定速度转动函数功能：驱动电机以rate指定速度转动。其中，rate指定的是电机最大功率的百分比。例如当rate=50时，电机以50%最大功率转动。（因此，对于普通的直流电机而言，并不能严格控制转速）函数原型：L298DC.run(rate:int)参数说明：参数类型必选参数？说明rateint是范围从-100度到+100。rate指定的是电机最大功率的百分比。例如当rate=50时，电机以50%最大功率转动。当rate>0时，电机正转；当rate<0时，电机反转。返回值：无stop() - 电机停转函数功能：电机停转函数原型：L298DC.stop()参数说明：无返回值：无enable() - 使能驱动函数功能：使能驱动。仅在指定en引脚时，该函数有效。函数原型：L298DC.enable()参数说明：无返回值：无disable() - 去使能驱动函数功能：去使能驱动。仅在指定en引脚时，该函数有效。函数原型：L298DC.disable()参数说明：无返回值：无四、接口案例此使用实例在board.json中定义了名为SERVO的PWM类型的对象。在Python脚本中执行正90度到负90度转动的动作并打印在日志中。案例代码{"name":"board-name","version":"1.0.0","io":{"in1":{"type":"PWM","port":16},"in2":{"type":"PWM","port":17},"ena":{"type":"PWM","port":5},"in3":{"type":"PWM","port":18},"in4":{"type":"PWM","port":19},"enb":{"type":"PWM","port":21}}}froml298importL298DCfromdriverimportPWM# 初始化左轮驱动in1=PWM()in1.open("in1")in2=PWM()in2.open("in2")ena=PWM()ena.open("ena")wheelLeft=L298DC(in1,in2,ena,100,"wheel_left")# 初始化右轮驱动in3=PWM()in3.open("in3")in4=PWM()in4.open("in4")enb=PWM()enb.open("enb")wheelRight=L298DC(in3,in4,enb,100,"wheel_right")# 全速前进wheelLeft.run(100)wheelRight.run(100)utime.sleep(10)# 右转wheelLeft.run(100)wheelRight.run(50)utime.sleep(10)# 后退wheelLeft.run(-50)wheelRight.run(-50)utime.sleep(10)# 原地旋转wheelLeft.run(-50)wheelRight.run(50)utime.sleep(10)# 停车wheelLeft.stop()wheelRight.stop()五、工作原理L298的控制信号ENAIN1IN2行为0xx电机关闭101电机正转100电机制动110电机反转111电机制动参考文献及购买链接[1]商品链接