0 前言
?? 這兩年開(kāi)始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。
為了大家能夠順利以及最少的精力通過(guò)畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是
?? 基于stm32的智能電子秤系統(tǒng)
??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點(diǎn):3分
1 簡(jiǎn)介
基于stm32的智能電子秤設(shè)計(jì),有很多功能,稱重,報(bào)警,藍(lán)牙app連接,語(yǔ)音播報(bào),去皮等。
2 主要器件
- STM32F103C8T6
- HX711壓力傳感器
- 矩陣鍵盤(pán)
- 藍(lán)牙模塊
- 電子秤
3 實(shí)現(xiàn)效果
4 設(shè)計(jì)原理
4.1 STM32F103C8T6
簡(jiǎn)介
STM32F103C8T6是一款基于ARM Cortex-M3內(nèi)核(ARM公司在ARM11以后改用Cortex命名,并分成A、R和M三類,M系列有M0、M0+、M3、M4、M7)的32位的微控制器,采用LQFP48封裝,由意法半導(dǎo)體公司(ST)推出,屬于STM32系列(ST公司還有SPC5X系列微控制器)。其程序存儲(chǔ)器FLASH容量是64KB (64K x 8bit),RAM容量是20KB(20K x 8bit),2個(gè)12bit ADC合計(jì)12路通道(外部通道只有PA0到PA7、PB0到PB1,并不是18通道),37個(gè)通用I/O口(PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1),4個(gè)16bit定時(shí)器(TIM1(高級(jí)控制定時(shí)器,帶死區(qū)插入,常用于產(chǎn)生PWM控制電機(jī))、TIM2、TIM3、TIM4),2IIC,2SPI,3USART,1CAN,工作電壓2V~3.6V,工作溫度為-40°C ~ 85°C,系統(tǒng)時(shí)鐘最高可到72MHz(一般是由8MHz的外部時(shí)鐘經(jīng)鎖相環(huán)9倍頻到72MHz)。
相關(guān)引腳分布
本項(xiàng)目中STM32主要通過(guò)ADC采集MQ-3模塊的值轉(zhuǎn)換為酒精濃度值顯示在LCD屏幕上。同時(shí),驅(qū)動(dòng)語(yǔ)音播報(bào)模塊、風(fēng)扇和蜂鳴器。
4.2 HX711壓力傳感器
簡(jiǎn)介
HX711稱重傳感器專用模擬/數(shù)字(A/D)轉(zhuǎn)換器芯片,是一款專為高精度稱重傳感器而設(shè)計(jì)的24位A/D轉(zhuǎn)換器芯片。與同類型其它芯片相比,該芯片集成了包括穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)。降低了電子秤的整機(jī)成本,提高了整機(jī)的性能和可靠性。該芯片與后端MCU芯片的接口和編程非常簡(jiǎn)單,所有控制信號(hào)由管腳驅(qū)動(dòng),無(wú)需對(duì)芯片內(nèi)部的寄存器編程。輸入選擇開(kāi)關(guān)可任意選取通道A或通道B,與其內(nèi)部的低噪聲可編程放大器相連。通道A的可編程增益為128或64,對(duì)應(yīng)的滿額度差分輸入信號(hào)幅值分別為±20mV或±40mV。通道B則為固定的32增益,用于系統(tǒng)參數(shù)檢測(cè)。芯片內(nèi)提供的穩(wěn)壓電源可以直接向外部傳感器和芯片內(nèi)的A/D轉(zhuǎn)換器提供電源,系統(tǒng)板上無(wú)需另外的模擬電源。芯片內(nèi)的時(shí)鐘振蕩器不需要任何外接器件。上電自動(dòng)復(fù)位功能簡(jiǎn)化了開(kāi)機(jī)的初始化過(guò)程。
特點(diǎn)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-738975.html
- 兩路可選擇差分輸入
- 片內(nèi)低噪聲可編程放大器,可選增益為64 和128
- 片內(nèi)穩(wěn)壓電路可直接向外部傳感器和芯片內(nèi)A/D 轉(zhuǎn)換器提供電源
- 片內(nèi)時(shí)鐘振蕩器無(wú)需任何外接器件,必要時(shí)也可使用外接晶振或時(shí)鐘
- 上電自動(dòng)復(fù)位電路
- 簡(jiǎn)單的數(shù)字控制和串口通訊:所有控制由管腳輸入,芯片內(nèi)寄存器無(wú)需編程
- 可選擇10Hz 或80Hz 的輸出數(shù)據(jù)速率
- 同步抑制50Hz 和60Hz 的電源干擾
- 耗電量(含穩(wěn)壓電源電路):典型工作電流:<1.7mA, 斷電電流:<1μA
- 工作電壓范圍:2.6 ~ 5.5V
- 工作溫度范圍:-20 ~ +85℃
- 16 管腳的SOP-16 封裝
原理圖文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-738975.html
5 部分核心代碼
void Hx711_init(void)
{
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_5;//時(shí)鐘端口配置為輸出
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_6;//數(shù)據(jù)引腳配置輸入模式
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
}
//****************************************************
//讀取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned long val = 0;
unsigned char i = 0;
//判斷模塊是否準(zhǔn)備好
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));
delay_us(1);
//sck 拉低
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
//再次判斷是否準(zhǔn)備好
while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));
for(i=0;i<24;i++)
{
delay_us(100);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
val=val<<1;
delay_us(1);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1))
val++;
delay_us(1);
}
GPIO_SetBits(GPIOB,GPIO_Pin_0);
val = val^0x800000;
delay_us(1);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_us(1);
return val;
}
void Delay_ms(uint8_t time)
{
uint8_t i;
while(time--){
for(i=0;i<113;i++);
}
}
//****************************************************
//讀取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned long data=0;
unsigned char i;
HAL_GPIO_WritePin(HX711_SCK_GPIO_Port ,HX711_SCK_Pin,GPIO_PIN_RESET);
Delay_ms(1);
while(HAL_GPIO_ReadPin(HX711_Dout_GPIO_Port ,HX711_Dout_Pin)==GPIO_PIN_SET);
for(i=0;i<24;i++)
{
HAL_GPIO_WritePin(HX711_SCK_GPIO_Port ,HX711_SCK_Pin,GPIO_PIN_SET);
Delay_ms(1);
data=data<<1;
HAL_GPIO_WritePin(HX711_SCK_GPIO_Port ,HX711_SCK_Pin,GPIO_PIN_RESET);
if(HAL_GPIO_ReadPin(HX711_Dout_GPIO_Port ,HX711_Dout_Pin)== GPIO_PIN_SET)
data++;
}
HAL_GPIO_WritePin(HX711_SCK_GPIO_Port ,HX711_SCK_Pin,GPIO_PIN_SET);
data=data^0x800000;//第25個(gè)脈沖下降沿來(lái)時(shí),轉(zhuǎn)換數(shù)據(jù)
Delay_ms(1);
HAL_GPIO_WritePin(HX711_SCK_GPIO_Port ,HX711_SCK_Pin,GPIO_PIN_RESET);
return (data);
}
//****************************************************
//獲取毛皮重量
//****************************************************
void Get_Maopi(void)
{
Weight_Maopi = HX711_Read()/SCALE;
}
//****************************************************
//稱重
//****************************************************
void Get_Weight(void)
{
Weight_Shiwu =HX711_Read()/SCALE;
if(Weight_Shiwu>=Weight_Maopi)
{
Weight_Shiwu=Weight_Shiwu-Weight_Maopi;
Weight_Shiwu -= 18305;
if(Weight_Shiwu < 0 )
Weight_Shiwu = 0;
}
else
Weight_Shiwu=0;
}
6 最后
到了這里,關(guān)于單片機(jī)畢業(yè)設(shè)計(jì) stm32智能電子秤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) - 物聯(lián)網(wǎng) 嵌入式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!