test.ino 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #include <SPI.h>
  2. #include <Wire.h>
  3. #define MCP3428_ADDRESS 0x68 // Adresse I2C du MCP3428
  4. #define VREFMCP 0.0000625// Tension de référence en volt
  5. // Définir les broches
  6. const int CS_PIN = 53;
  7. const float VREF = 1.36; // Référence de tension
  8. //0.253
  9. //ref1 = 0.507
  10. //Vref=0.589
  11. // Initialisation
  12. void setup() {
  13. Serial.begin(9600);
  14. SPI.begin();
  15. pinMode(CS_PIN, OUTPUT);
  16. digitalWrite(CS_PIN, HIGH); // Désactive le CS au démarrage
  17. Serial.println(" initialisé et prêt à tester.");
  18. }
  19. byte getChannelConfigByte(int channel) {
  20. byte configByte = 0x88; // Configuration par défaut pour le canal 1
  21. if (channel == 1) {
  22. configByte = 0xA8;
  23. } else if (channel == 2) {
  24. configByte = 0xC8;
  25. } else if (channel == 3) {
  26. configByte = 0xE8;
  27. }
  28. return configByte;
  29. }
  30. float MCP3428_Read(uint8_t channel) {
  31. Wire.beginTransmission(MCP3428_ADDRESS);
  32. Wire.write(getChannelConfigByte(channel));
  33. Wire.endTransmission();
  34. delay(200);
  35. byte config,byte1,byte2;
  36. while(1){
  37. Wire.requestFrom(MCP3428_ADDRESS, 3);
  38. byte2 = Wire.read();
  39. byte1 = Wire.read();
  40. config = Wire.read();
  41. if(config>>8==0) //tant qu'il a pas fini
  42. break;
  43. }
  44. int value = ((byte2) << 8) | byte1;
  45. Serial.print(value);
  46. return ((float)value * 62.5)/1000000;
  47. }
  48. float lireADS8345(uint8_t channel) {
  49. // Préparer les données pour la commande de lecture
  50. uint8_t commandHigh = 0xC0 | ((channel & 0x07) << 3);
  51. digitalWrite(CS_PIN, LOW); // Activer le CS
  52. switch(channel){
  53. case 0:
  54. SPI.transfer(0b10000111); // Envoyer la première partie de la commande
  55. break;
  56. case 1:
  57. SPI.transfer(0b11000111); // Envoyer la première partie de la commande
  58. break;
  59. case 2:
  60. SPI.transfer(0b10010111); // Envoyer la première partie de la commande
  61. break;
  62. case 3:
  63. SPI.transfer(0b11010111); // Envoyer la première partie de la commande
  64. break;
  65. case 4:
  66. SPI.transfer(0b10100111); // Envoyer la première partie de la commande
  67. break;
  68. case 5:
  69. SPI.transfer(0b11100111); // Envoyer la première partie de la commande
  70. break;
  71. case 6:
  72. SPI.transfer(0b10110111); // Envoyer la première partie de la commande
  73. break;
  74. case 7:
  75. SPI.transfer(0b11110111); // Envoyer la première partie de la commande
  76. break;
  77. }
  78. delay(10); // Attendre un peu pour la stabilisation du signal
  79. uint8_t resultHigh = SPI.transfer(0x00); // Lire la première partie du résultat
  80. uint8_t resultLow = SPI.transfer(0x00); // Lire la seconde partie du résultat
  81. digitalWrite(CS_PIN, HIGH); // Désactiver le CS
  82. // Combiner les parties haute et basse du résultat
  83. uint16_t valeur = (resultHigh << 8) | resultLow;
  84. float tension = ((valeur&0x3FFF)/16384.0)*VREF;
  85. return tension;
  86. }
  87. void loop() {
  88. int i = 0;
  89. //for (i =0; i<4;i++){
  90. /*float tension = lireADS8345(i);
  91. //Serial.print(i);
  92. Serial.print(" Tension: ");
  93. Serial.print(tension, 3); // Affiche la tension avec 3 décimales
  94. Serial.print(" V ");
  95. */
  96. float tension = lecture(i);
  97. Serial.print(" ");
  98. Serial.print(i);
  99. Serial.print(" Tension: ");
  100. Serial.print(tension, 10); // Affiche la tension avec 3 décimales
  101. Serial.println(" V");
  102. delay(1000); // Attendre 1 seconde avant la prochaine lecture
  103. //}
  104. }
  105. /*
  106. salé 9760
  107. */
  108. /*
  109. OUT1
  110. REF1 FIX
  111. OUT2 FIX
  112. V+
  113. V-
  114. OUT3
  115. V+_OUT
  116. V-_OUT
  117. 0 Tension: 0.438 V
  118. 1 Tension: 0.506 V
  119. 2 Tension: 0.291 V
  120. 3 Tension: 0.329 V
  121. 4 Tension: 0.343 V
  122. 5 Tension: 0.348 V
  123. 6 Tension: 0.296 V
  124. 7 Tension: 0.164 V
  125. */