查看: 1877|回复: 1

Micropython教程之TPYBoard开发板DIY智能温控小风扇(萝卜学科...

[复制链接]
  • TA的每日心情
    慵懒
    2018-1-6 09:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-12-24 13:48:04 | 显示全部楼层 |阅读模式
    分享到:
        1.实验目的

        1.?学习在PC机系统中扩展简单I/O?接口的方法。
        2.?进一步学习编制数据输出程序的设计方法。??
        3.?学习DS18B20的接线方法,并利用DS18B20检测当前温度。
        4.学习三极管9014的用法。
        5.通过18B20智能控制直流电机驱动小风扇。(萝卜学科编程教育tpyboard。com)

        2.所需元器件

        TPYBoard板子一块
        直流电机一个
        面包板一块
        数据线一条
        18b20温度传感器
        三极管9014(NPN)一个
        杜邦线若干(萝卜学科编程教育tpyboard。com)

        3.学习DS18B20的接线方法,检测当前温度

    1.png

        先看一下DS18B20针脚含义,如上图:

        TPYBoard的针脚与DS18B20的针脚对应关系如下:

    TPYBoard       DS18B20   
       ————————————————     
        # 3V3   or any Pin  => VDD      
       # any   Pin        =>   DO
       #   GND           => GND

       还是看不明白的话,直接上针脚编号
       TPYBoard       DS18B20   
       ————————————————————————————
       3.3v        =>   VDD      
       GND        =>   GND
       Y10         =>   DO         


        接线ok后,在MicroPython的源码目录中,进入drivers\onewire\目录,然后将目录下的文件ds18x20.py和onewire.py复制到PYBFLASH磁盘的根目录。复制文件后要安全退出磁盘,然后重新接入,不然找不到文件,即可运行main.py文件了,打印温度,即可用Putty看到当前的温度。(萝卜学科编程教育tpyboard。com)

        main.py源代码:

    1. #main.py
    2. import pyb
    3. from pyb import Pin
    4. from ds18x20 import DS18X20

    5. Pin("Y11",Pin.OUT_PP).low()#GND
    6. Pin("Y9",Pin.OUT_PP).high()#VCC
    7. pyb.delay(100)
    8. DQ=DS18X20(Pin('Y10'))#DQ
    9. while True:
    10.         tem = DQ.read_temp()
    11.         print(tem)
    12.         pyb.delay(1000)
    复制代码


        4.三极管的原理

    2.png

        在这里我们用到三极管的开关与放大功能,给基极不同电平控制直流电机电流的通断,以达到控制电机转动的目的,根据三极管特性我们将集电极连接TPYBoard的3.3v,发射极连接电机一极,电机另一极接TPYboard的GND,通过温度传感器18B20检测温度,当温度到达指定温度时,通过TPYBoard控制三极管基极的电平,驱动直流电机转动。(萝卜学科编程教育tpyboard。com)

        5.源代码

    3.png

        我们按照上面的步骤做完以后,然后通电,编写main.py文件,即可通过温度控制风扇的转动,具体代码如下:
    1. #main.py
    2. import pyb
    3. from pyb import Pin
    4. from ds18x20 import DS18X20

    5. Pin("Y9",Pin.OUT_PP).high()#VCC
    6. Pin("Y11",Pin.OUT_PP).low()#GND
    7. x1 = Pin('X1', Pin.OUT_PP)
    8. pyb.delay(100)
    9. DQ=DS18X20(Pin('Y10'))#DQ
    10. while 1:
    11.     tem = DQ.read_temp()
    12.     if tem > 18:
    13.         x1.value(1)
    14.     else:
    15.         x1.value(0)
    复制代码


    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2019-1-21 12:04:05 | 显示全部楼层
    看来可以学套装
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-29 18:22 , Processed in 0.126867 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.