• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
HX711压力传感器+树莓派python驱动程序
 
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
#VCC接1号针脚,GND接6号针脚,SCK接11号针脚,DT接13号针脚
class Hx711():
    def setup(self):
        self.SCK = 11    # 物理引脚第11号,时钟
        self.DT = 13     #物理引脚第13号,数据
        self.flag=1      #用于首次读数校准
        self.initweight=0	#毛皮
        self.weight=0		#测重
        self.delay=0.09		#延迟时间
        GPIO.setwarnings(False)
        GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
        GPIO.setup(self.SCK, GPIO.OUT)      # Set pin's mode is output
        GPIO.setup(self.DT, GPIO.IN)
        GPIO.setup(self.DT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
            
    def start(self):
        GPIO.output(self.SCK,0)
        if GPIO.input(self.SCK):
            time.sleep(self.delay)
        value=0
        while GPIO.input(self.DT):
            time.sleep(self.delay)
        #循环24次读取数据
        for i in range(24):
            GPIO.output(self.SCK,1)
            if(0==GPIO.input(self.SCK)):
                time.sleep(self.delay)
            value=value<<1		#左移一位,相当于乘2,二进制转十进制
            GPIO.output(self.SCK,0)
            if GPIO.input(self.SCK):
                time.sleep(self.delay)
            if GPIO.input(self.DT)==1:
                value+=1
        GPIO.output(self.SCK,1)
        GPIO.output(self.SCK,0)
        value=int(value/1905)		#1905为我传感器的特性值,不同传感器值不同。可先注释此步骤,再去测一物体A得到一个值X,而后用X除以A的真实值即可确定特性值
        if self.flag==1:			#第一次读数为毛皮
            self.flag=0
            self.initweight=value        #初始值
        else:
            self.weight=abs(value-self.initweight)	#当前值减毛皮得测量到的重量
            print(self.weight)


if __name__=='__main__':
    send=Hx711()
    send.setup()
    while True:
        send.start()

  

 

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time

#进程测试
from multiprocessing import Process,Manager


#VCC接1号针脚,GND接6号针脚,SCK接11号针脚,DT接13号针脚
class Hx711():
    def setup(self):
        self.SCK = 11    # 物理引脚第11号,时钟
        self.DT = 13     #物理引脚第13号,数据
        self.flag=1      #用于首次读数校准
        self.initweight=0	#毛皮
        self.weight=0		#测重
        self.delay=0.09		#延迟时间
        GPIO.setwarnings(False)
        GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
        GPIO.setup(self.SCK, GPIO.OUT)      # Set pin's mode is output
        GPIO.setup(self.DT, GPIO.IN)
        GPIO.setup(self.DT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        
            
    def GetData(self,share_data):
        while 1:
            
            if share_data[9]==1:
                print("weight break!")
                break
        
            GPIO.output(self.SCK,0)
            if GPIO.input(self.SCK):
                time.sleep(self.delay)
            value=0
            while GPIO.input(self.DT):
                time.sleep(self.delay)
            #循环24次读取数据
            for i in range(24):
                GPIO.output(self.SCK,1)
                if(0==GPIO.input(self.SCK)):
                    time.sleep(self.delay)
                value=value<<1		#左移一位,相当于乘2,二进制转十进制
                GPIO.output(self.SCK,0)
                if GPIO.input(self.SCK):
                    time.sleep(self.delay)
                if GPIO.input(self.DT)==1:
                    value+=1
            GPIO.output(self.SCK,1)
            GPIO.output(self.SCK,0)
            value=int(value/1905)		#1905为我传感器的特性值,不同传感器值不同。可先注释此步骤,再去测一物体A得到一个值X,而后用X除以A的真实值即可确定特性值
            if self.flag==1:			#第一次读数为毛皮
                self.flag=0
                self.initweight=value        #初始值
            else:
                self.weight=abs(value-self.initweight)	#当前值减毛皮得测量到的重量
                #print(self.weight)
                time.sleep(0.2)
                share_data[1]=self.weight


if __name__=='__main__':
    
    managerdata=Manager().dict()
    sharelock=Manager().Lock()
    managerdata[0]=0# flag
    managerdata[1]=0# weight data
    
    managerdata[9]=0# 结果图像
    
        
    send=Hx711()
    send.setup()
    
    #1采集图像进程    
    t1=Process(target=send.GetData,args=(managerdata,))
    t1.deamon=True  #伴随主进程关闭而关闭
    t1.start()
   

    while True:
        print('wegth',managerdata[1])
        time.sleep(1)

  

posted on 2024-04-12 23:45  MKT-porter  阅读(792)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3