RASPBERRYPIによる温度測定
私たちが住んでいる環境の主な特徴の1つは温度であるため、その測定は非常に重要です。
それを測定する最も簡単な方法は、マキシム・インテグレーテッド1-Wireセンサーを使用することです。
このようにして、最大10個のセンサーを1つのDS24821-WireからI2Cへのコンバーターに接続できます。
この方法で実行させることができます:
このようにして、最大10個のセンサーを1つのDS24821-WireからI2Cへのコンバーターに接続できます。
この方法で実行させることができます:
1.ファイルを変更します「arch / arm / mach-bcm2708 /bcm2708.c」 カーネルソースから以下を含む:
static struct platform_device bcm2708_bsc1_device ={
.name ="bcm2708_i2c"、。id =1、.num_resources =ARRAY_SIZE(bcm2708_bsc1_resources)、. resource =bcm2708_bsc1_resources、};
static struct i2c_board_info __initdata pi_i2c_devs [] ={{I2C_BOARD_INFO( "ds1307"、0x68)、 I2C_BOARD_INFO( "ds2482"、0x18)、 }、}; ...... bcm_register_device(&bcm2835_thermal_device);
i2c_register_board_info(1、pi_i2c_devs、ARRAY_SIZE(pi_i2c_devs));
3.関数 static void w1_post_write(struct w1_master * dev)を変更します ファイル drivers / w1 / w1_io.c から したがって、次のものが含まれます:
static void w1_post_write(struct w1_master * dev){
if(dev-> pullup_duration){if(dev-> enable_pullup &&dev-> bus_master-> set_pullup){
dev-> bus_master-> set_pullup(dev-> bus_master-> data、0); msleep(dev-> pullup_duration); else {msleep(dev-> pullup_duration); } dev-> pullup_duration =0; }}
4.関数 static u8 ds2482_w1_set_pullup(void * data、int delay)を追加します ファイル drivers / w1 / masters / ds2842.c
static u8 ds2482_w1_set_pullup(void * data、int delay){
struct ds2482_w1_chan * pchan =data; struct ds2482_data * pdev =pchan-> pdev; u8 retval =1; u8 cfg; / *遅延がゼロ以外の場合、プルアップをアクティブにします。*強力なプルアップはマスターによって自動的に非アクティブになります。*明示的に非アクティブにしないでください。* / if(delay){/ *両方の待機が重要です。そうしないと、デバイスが無効になる可能性があります。 *十分な長さの電力が供給され、たとえばw1_thermセンサーから
*間違った変換結果を提供します* / ds2482_wait_1wire_idle(pdev); / *注:SPUとAPUの両方を設定する必要があるようです! * / retval =ds2482_send_cmd_data(pdev、DS2482_CMD_WRITE_CONFIG、
ds2482_calculate_config(DS2482_REG_CFG_SPU | DS2482_REG_CFG_APU)); ds2482_wait_1wire_idle(pdev); } return retval;}
詳細:RASPBERRYPIによる温度測定 現在のプロジェクト/投稿は次を使用して見つけることもできます:
- ПодключениедатчиковчерезмикросхемуDS2482
製造プロセス