Capteur SGP30 avec Flowcode 4.
Moderator: Benj
-
- Posts: 10
- Joined: Mon Jan 13, 2020 4:00 pm
- Been thanked: 1 time
- Contact:
Capteur SGP30 avec Flowcode 4.
Je cherche utiliser le capteur TVOC/eCO2 SGP30 en programmant sur flowcode 4 avec les routines I2C.
Quelqu'un aurait-il déjà travaillé sur ce sujet ?
J'ai réalisé un programme en essayant d'utiliser les routines I2C mais en info de retour, je n'ai que 255.
Je joints une copie de mon programme ainsi que la doc du capteur, si quelqu'un peut m'aider.
Cordialement.
Olivier.
- Attachments
-
- Flowcode1.fcf
- (10.5 KiB) Downloaded 108 times
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Capteur SGP30 avec Flowcode 4.
Bonjour Olivier,
Il semble que l'adresse 0x58 puisse être l'adresse 7 bits et donc pour vos opérations d'écriture, vous devez utiliser (0x58 << 1) = 0xB0 et pour votre opération de lecture au lieu de 0x59, utilisez 0xB1.
Votre lecture n'est pas tout à fait correcte. Vous avez actuellement ceci.
Hello Olivier,
It looks like the address 0x58 might be the 7-bit address and so for your write operations you should use (0x58 << 1) = 0xB0 and for your read operation instead of 0x59 use 0xB1.
Your read isn't quite correct. You currently have this.
Start
Transmit_Byte (0x58)
Trasnmit_Byte (Register Address MSB)
Trasnmit_Byte (Register Address LSB)
Stop
Restart
Transmit_Byte (0x59)
Receive_Byte(0)
Receive_Byte(0)
...
Receive_Byte(0)
Receive_Byte(0)
Stop
Il devrait plutôt ressembler à quelque chose de plus comme ça.
It should instead look something more like this.
Start
Transmit_Byte (0xB0)
Trasnmit_Byte (Register Address MSB)
Trasnmit_Byte (Register Address LSB)
Restart
Transmit_Byte (0xB1)
Receive_Byte(0)
Receive_Byte(0)
...
Receive_Byte(0)
Receive_Byte(1)
Stop
Votre boucle est While 10 mais cela va actuellement boucler pour toujours car 10 sera toujours vrai. Cela devrait être changé pour boucler 10 fois dans les propriétés de l'icône de boucle.
Your loop is While 10 but this will currently loop forever because 10 will always be true. This should be changed to loop 10 times in the loop icon properties.
Assurez-vous également d'avoir des résistances de rappel externes à 1,8 V entre 1K et 10K sur les lignes SDA/SCL. Le 1,8 V de la tension de votre microcontrôleur PIC peut être un problème. Avez-vous un circuit de décalage de niveau pour vous aider ?
J'espère que cela t'aides.
Also make sure you have external pull up resistors to 1.8V between 1K and 10K on the SDA/SCL lines. The 1.8V to your PIC microcontroller voltage might be a problem do you have a level shifter circuit present to help with this?
Hope this helps.
Il semble que l'adresse 0x58 puisse être l'adresse 7 bits et donc pour vos opérations d'écriture, vous devez utiliser (0x58 << 1) = 0xB0 et pour votre opération de lecture au lieu de 0x59, utilisez 0xB1.
Votre lecture n'est pas tout à fait correcte. Vous avez actuellement ceci.
Hello Olivier,
It looks like the address 0x58 might be the 7-bit address and so for your write operations you should use (0x58 << 1) = 0xB0 and for your read operation instead of 0x59 use 0xB1.
Your read isn't quite correct. You currently have this.
Start
Transmit_Byte (0x58)
Trasnmit_Byte (Register Address MSB)
Trasnmit_Byte (Register Address LSB)
Stop
Restart
Transmit_Byte (0x59)
Receive_Byte(0)
Receive_Byte(0)
...
Receive_Byte(0)
Receive_Byte(0)
Stop
Il devrait plutôt ressembler à quelque chose de plus comme ça.
It should instead look something more like this.
Start
Transmit_Byte (0xB0)
Trasnmit_Byte (Register Address MSB)
Trasnmit_Byte (Register Address LSB)
Restart
Transmit_Byte (0xB1)
Receive_Byte(0)
Receive_Byte(0)
...
Receive_Byte(0)
Receive_Byte(1)
Stop
Votre boucle est While 10 mais cela va actuellement boucler pour toujours car 10 sera toujours vrai. Cela devrait être changé pour boucler 10 fois dans les propriétés de l'icône de boucle.
Your loop is While 10 but this will currently loop forever because 10 will always be true. This should be changed to loop 10 times in the loop icon properties.
Assurez-vous également d'avoir des résistances de rappel externes à 1,8 V entre 1K et 10K sur les lignes SDA/SCL. Le 1,8 V de la tension de votre microcontrôleur PIC peut être un problème. Avez-vous un circuit de décalage de niveau pour vous aider ?
J'espère que cela t'aides.
Also make sure you have external pull up resistors to 1.8V between 1K and 10K on the SDA/SCL lines. The 1.8V to your PIC microcontroller voltage might be a problem do you have a level shifter circuit present to help with this?
Hope this helps.
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
-
- Posts: 10
- Joined: Mon Jan 13, 2020 4:00 pm
- Been thanked: 1 time
- Contact:
Re: Capteur SGP30 avec Flowcode 4.
Bonjour Ben,
Merci pour votre réponse rapide.
Je n'avais pas remarqué le décalage pour l'adresse... J'ai cherché pendant des heures...
J'ai fait les modifications et cela fonctionne parfaitement.
Je vous envoie mon programme.
Encore merci pour votre aide précieuse.
Cordialement.
Olivier.
Merci pour votre réponse rapide.
Je n'avais pas remarqué le décalage pour l'adresse... J'ai cherché pendant des heures...
J'ai fait les modifications et cela fonctionne parfaitement.
Je vous envoie mon programme.
Encore merci pour votre aide précieuse.
Cordialement.
Olivier.
- Attachments
-
- Flowcode1.fcf
- (14.67 KiB) Downloaded 109 times