Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Mesure de température sur Raspberry Pi avec capteurs 1‑Wire Maxim et pont I2C DS2482

Mesure de température sur Raspberry Pi avec capteurs 1‑Wire Maxim et pont I2C DS2482

Vue d'ensemble matérielle

Prérequis logiciels

Ces instructions supposent une installation Raspbian standard avec les sources du noyau disponibles. Vous devrez reconstruire le noyau après les modifications suivantes.

Étape 1 – Activer le DS2482 sur le bus I2C

Modifiez arch/arm/mach-bcm2708/bcm2708.c dans les sources du noyau pour enregistrer le DS2482 comme périphérique I2C. Ajoutez la définition de périphérique platform et le tableau d'informations board :

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);

Après l'ajout du périphérique, recompilez et installez le noyau.

Étape 2 – Gérer les pull-ups 1‑Wire dans le noyau

Modifiez drivers/w1/w1_io.c pour permettre au DS2482 de contrôler la résistance de pull-up pendant les conversions. Remplacez la fonction w1_post_write par :

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;
    }
}

Étape 3 – Ajouter le contrôle de pull-up au driver DS2482

Dans drivers/w1/masters/ds2842.c, ajoutez un helper qui active le pull-up fort du DS2482 quand un délai est demandé :

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) {
        /* S'assurer que le bus est inactif avant de changer la config */
        ds2482_wait_1wire_idle(pdev);
        /* Activer SPU et APU pour un pull-up fort */
        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;
}

Étapes finales

Avec ces modifications du noyau en place, le Raspberry Pi peut lire fiablement jusqu'à dix capteurs de température 1‑Wire via un seul pont DS2482, le rendant idéal pour les projets de surveillance multi-capteurs.

Ressources supplémentaires

Processus de fabrication

  1. Système de contrôle d'accès intégré QR, RFID et vérification de température
  2. Construire un enregistreur de température Raspberry Pi avec capteur I2C à 5 $
  3. Profilage température Raspberry Pi précis avec Python, SQLite et LabVIEW
  4. Connecter plusieurs capteurs DS18B20 1-Wire à un Raspberry Pi pour une surveillance température précise
  5. Moniteur réseau température et humidité Raspberry Pi — Guide de configuration DIY
  6. Comment lire la température avec un DS18B20 sur Raspberry Pi 2
  7. Surveillance de température professionnelle sur Raspberry Pi avec DS18B20
  8. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  9. Surveillance transparente température et humidité sur Raspberry Pi avec EzTemp