完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include #include #include /* * HX711和单片机连线是: PA6接SCK PA7接DT 单片机3.3接模块的VCC 单片机GND接模块的GND * 电机电机的三根线 PB5 PB6 P7 */ #define MotorIN1 PBout( 5 ) #define MotorIN2 PBout( 6 ) #define MotorEN PBout( 7 ) void InitIOMotor( void ) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); /* 电机 B5 B6 B7 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* 推挽输出 */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* IO口速度为50MHz */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_Init( GPIOB, &GPIO_InitStructure ); /* 推挽输出 ,IO口速度为50MHz */ MotorIN1 = 1; MotorIN2 = 1; MotorEN = 1; } /* 这个值需要修正 根据实际 */ #define GapValue 0.38755 #define HX711DT GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_7 ) #define HX711SCK PAout( 6 ) unsigned long Weight_Maopi; unsigned long HX711_Buffer; unsigned long Weight_Shiwu; u8 Flag_Error = 0; void InitioHX711( void ) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE ); /* 使能PB,PE端口时钟 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* 推挽输出 */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* IO口速度为50MHz */ /* hx711 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /* 设置成上拉输入 */ GPIO_Init( GPIOA, &GPIO_InitStructure ); /* 初始化GPIOE7 */ /* HX711 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; /* LED1-->PE.6 端口配置, 推挽输出 */ GPIO_Init( GPIOA, &GPIO_InitStructure ); /* 推挽输出 ,IO口速度为50MHz */ GPIO_ResetBits( GPIOA, GPIO_Pin_6 ); /* PE.2 输出低 */ } /* 3.3V供电 2.2接SCK 2.3接DT */ unsigned long HX711_Read( void ) { unsigned long Count; unsigned char i; HX711SCK = 0; /* SCL=0;使能AD(PD_SCL 置低) */ Count = 0; while ( HX711DT ) ; /* AD转换未结束则等待,否则开始读取 */ for ( i = 0; i < 24; i++ ) { HX711SCK = 1; /* SCL = 1; PD_SCL 置高(发送脉冲) */ Count = Count << 1; /*下降沿来时变量Count左移一位,右侧补零 */ delay_us( 1 ); HX711SCK = 0; /* SCL=0; PD_SCL 置低 */ if ( HX711DT ) Count++; /* if(SDA) Count++; */ delay_us( 1 ); } HX711SCK = 1; /* SCL=1; */ Count = Count ^ 0x800000; /* 第25个脉冲下降沿来时,转换数据 */ delay_us( 1 ); HX711SCK = 0; /* SCL=0; */ return(Count); } /* * **************************************************** * 获取毛皮重量 * **************************************************** */ void Get_Maopi( void ) { Weight_Maopi = HX711_Read(); } /* * **************************************************** * 称重 * **************************************************** */ void Get_Weight( void ) { HX711_Buffer = HX711_Read(); if ( HX711_Buffer > Weight_Maopi ) { Weight_Shiwu = HX711_Buffer; Weight_Shiwu = Weight_Shiwu - Weight_Maopi; /* 获取实物的AD采样数值。 */ Weight_Shiwu = (unsigned long) ( (float) Weight_Shiwu / GapValue); /* 计算实物的实际重量 */ /* * 因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的GapValue这个除数。 * 当发现测试出来的重量偏大时,增加该数值。 * 如果测试出来的重量偏小时,减小改数值。 * 该数值一般在4.0-5.0之间。因传感器不同而定。 * +0.05是为了四舍五入百分位 */ } } int main( void ) { u8 t = 0; unsigned long shiwu = 0; NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); /* 设置NVIC中断分组2:2位抢占优先级,2位响应优先级 */ delay_init(); /* 延时函数初始化 */ LED_Init(); /* LED RELAY 初始化 */ uart_init( 115200 ); InitIOMotor(); /* 初始化电机端口 */ InitioHX711(); /* 初始化IO */ Get_Maopi(); /* 获取皮重 */ delay_ms( 500 ); /* 延时等待确定稳定后再次获取皮重 */ Get_Maopi(); /* 获取皮重 */ while ( 1 ) { delay_ms( 10 ); if ( t++ > 10 ) { t = 0; /* 刷新重量的显示 */ Get_Weight(); if ( Flag_Error == 0 ) { shiwu = Weight_Shiwu / 1000; /* 单位是g */ }else{ shiwu=0;//读取异常 ,一般不会异常 } if ( shiwu < 160 ) { /* 打开电机 */ MotorIN1 = 0; MotorIN2 = 1; MotorEN = 0; LED0=0;//电机转的时候打开板子上的灯 }else if ( shiwu > 180 ) { /* 关闭电机 */ MotorIN1 = 1; MotorIN2 = 1; MotorEN = 1; LED0=1;//电机不转的时候关闭板子上的灯 } } } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
557浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:35 , Processed in 0.628307 second(s), Total 74, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号