最新情報
ナウいマイコン PSoC4200 でHX711を試してみた
秋月電子さんの「AE-HX711」をPSoC4200につなげてみました。
タニタさんのキッチンスケール「KF-100」の制御部を全部捨てちゃって
ケースとロードセルだけ残し、「AE-HX711」とつなげてテストしてみます。
こんな感じに、ロードセルからの4本線だけ引き出しています。
「AE-HX711」 PSoC4200M
1番ピン VDD(5V)
2番ピン DAT ———- PSoC4200 [P20]
3番ピン CLK ———- PSoC4200 [P21]
4番ピン 未接続
5番ピン 未接続
6番ピン GND
につなげています。
ピン配置、設定、コンポーネントはこんな感じです。
基準の重さが欲しいので、他のキッチンスケールで、プラズマ乳酸菌飲料を計測してみました。
550g のようです。
PSoC4200 + HX711 で計測してみました、ピッタリです。
ソフトは、秋月電子さんのHPにサンプルがあったので、それを移植しました、移植といっても「ほぼ」そのままです。
#include 	"project.h"
#include	<stdio.h>
#include	<stdlib.h>
#include	"I2CLCDDRV.h"
char	lcd_str[32];
#define OUT_VOL   0.000592f		//定格出力 [V] (最後には現物合わせ)
#define LOAD      1000.0f		//定格容量 [g]
float	offset;					// 
//--------------------------------------------------------------------
void AE_HX711_Init(void);
void AE_HX711_Reset(void);
long AE_HX711_Read(void);
long AE_HX711_Averaging(char num);
float AE_HX711_getGram(char num);
//--------------------------------------------------------------------
int main(void)
{
	
    CyGlobalIntEnable; /* Enable global interrupts. */
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    I2CM_Start();		// I2C 開始
	I2C_LCD_Init();		// I2C LCD 初期化
	AE_HX711_Init();	// HX711 リセット
	
	offset = AE_HX711_getGram(10); 
	
 
	I2C_LCD_position(1,2);
	I2C_LCD_Char_PrintString("Weight = ");			// LCDで確認
	
    for(;;)
    {
        /* Place your application code here. */
		float data;
		
		data = AE_HX711_getGram(8);		// ()回平均
		
		int16_t	w_data;
		w_data = (int16_t)((data - offset));
		I2C_LCD_position(10,2);
		sprintf(lcd_str,"%5d",w_data);
		I2C_LCD_Char_PrintString(lcd_str);
		I2C_LCD_Char_PrintString(" g");
	}
}
//--------------------------------------------------------------------
//------------------------------------//
// HX711 初期化
//------------------------------------//
void AE_HX711_Init(void)
{
	AE_HX711_Reset();
}
//------------------------------------//
// HX711 Reset
//------------------------------------//
void AE_HX711_Reset(void)
{
	pin_slk_Write(1u);
	CyDelayUs(100);	
	pin_slk_Write(0u);
	CyDelayUs(100);	
}
//------------------------------------//
// HX711 読込み
//------------------------------------//
long AE_HX711_Read(void)
{
	long data=0;
	while(pin_dout_Read()!=0);
	CyDelayUs(10);	
	
	for(int i=0;i<24;i++)
	{
		pin_slk_Write(1);
		CyDelayUs(5);
		pin_slk_Write(0);
		CyDelayUs(5);
		
		data = (data<<1)|(pin_dout_Read());
	}
	pin_slk_Write(1);
	CyDelayUs(5);
	pin_slk_Write(0);
	CyDelayUs(5);
		
	return data^0x800000;	// データ 2の補数なので変換
}
//------------------------------------//
// HX711 平均化 (num数の平均)
//------------------------------------//
long AE_HX711_Averaging(char num)
{
	long sum = 0;
	for (int i = 0; i < num; i++) {
		sum += AE_HX711_Read();
	}
	return sum / num;
}
//------------------------------------//
// HX711 グラム換算
//------------------------------------//
float AE_HX711_getGram(char num)
{
	#define HX711_R1		20000.0f		// R1抵抗 2K
	#define HX711_R2		8200.0f			// R2抵抗 8.2K
	#define HX711_VBG		1.25f
	#define HX711_AVDD		4.2987f					//(HX711_VBG*((HX711_R1+HX711_R2)/HX711_R2))
	#define HX711_ADC1bit	HX711_AVDD/16777216 	//16777216=(2^24)
	#define HX711_PGA		128
	#define HX711_SCALE		(OUT_VOL * HX711_AVDD / LOAD *HX711_PGA)
	 
	float data;
 
	data = AE_HX711_Averaging(num)*HX711_ADC1bit; 
	data = data / HX711_SCALE;
 
	return data;
}
ナウいマイコン PSoC4 に 秋月さんの AE-HX711をつなげてみた – YouTube
キッチンスケールレベルの計測でよいなら、HX711、結構よいかも!というのが正直な感想です。
加納 大裕 (かのう だいゆう)
- 
- 2025.10.29
 - 薪ストーブ実演展示 東栄フェスティバル
 
 - 
- 2025.10.29
 - 薪ストーブ実演展示、売木村秋色感謝祭
 
 - 
- 2025.09.26
 - 薪ストーブ、新城軽トラ市に出店します。
 
 - 
- 2025.09.05
 - 薪ストーブ出展 GP CAMP.Fes2025
 
 - 
- 2025.08.29
 - なぜ加納製作所の薪ストーブは薪を炭にしてから燃焼させるのか?
 
 

















