Go Down

Topic: porte poulailler (selon luminosité panneau solaire et manuel) (Read 4512 times) previous topic - next topic

hbachetti

L'erreur doit être ailleurs.
Le sketch en #133 compile sans problème.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

en effet le code seul fonctionne en me donnant cela :

Code: [Select]
15:38:28.014 -> VCC=3.51
15:38:29.001 -> A0=0.28
15:38:29.001 -> VCC=3.47
15:38:30.018 -> A0=0.28
15:38:30.018 -> VCC=3.49
15:38:31.013 -> A0=0.28
15:38:31.013 -> VCC=3.50
15:38:32.033 -> A0=0.29
15:38:32.033 -> VCC=3.50
15:38:33.024 -> A0=0.28
15:38:33.024 -> VCC=3.53
15:38:34.049 -> A0=0.28
15:38:34.049 -> VCC=3.50
15:38:35.037 -> A0=0.28
15:38:35.037 -> VCC=3.50
15:38:36.054 -> A0=0.28
15:38:36.054 -> VCC=3.50
15:38:37.077 -> A0=0.28
15:38:37.077 -> VCC=3.50
15:38:38.057 -> A0=0.28
15:38:38.057 -> VCC=3.50
15:38:39.059 -> A0=0.28
15:38:39.092 -> VCC=3.53



hbachetti

Tu n'as plus qu'à comparer avec la valeur donnée par un multimètre.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

#138
Jul 19, 2020, 05:13 pm Last Edit: Jul 19, 2020, 05:14 pm by mick85
Sa à l'air de fonctionner a présent
(mais je n'arrive plus a téléverser le programme sans passer par l'alimentation usb)
ce qui me donnerais VREF 1.125

le noms de la pin VCC dans le programme est bien VCC ?


Code: [Select]
Arduino : 1.8.12 (Mac OS X), Carte : "Arduino Pro or Pro Mini, ATmega328P (3.3V, 8 MHz)"

In file included from sketch/solar.h:5:0,
                 from sketch/solar.cpp:6:
sketch/solar.cpp: In member function 'float SolarPowerSupply::getBatteryVoltage(bool)':
options.h:76:27: error: 'VCC' was not declared in this scope
 #define BATT_PIN          VCC
                           ^
sketch/solar.cpp:113:14: note: in expansion of macro 'BATT_PIN'
   analogRead(BATT_PIN);
              ^~~~~~~~
exit status 1
'VCC' was not declared in this scope

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

hbachetti

Il n'y a pas de pin VCC dans le code.

Dans le cas de la mesure par cette méthode BATT_PIN est inutile.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

récap des éléments à ce jour, le tous soudé sur plaque à pastille avec fil dupont ou fil électrique :

- pro mini 3.3v 8mhz
- panneau solaire 6v (7,6V max) ==> pont diviseur 330K/47K = 0,95V de sortie à 7,6v
- batterie 18650
- TP 4056
- FP 6293
- servomoteur MG996R
- bouton poussoir (switchs momentané)  open et close

tous semble fonctionner, juste un doute sur la fin de course si le signal est bien reçu




je n'arrive vraiment pas a m'y retrouver aussi bien dans le cablage que dans le code,
en partant de ce schémà, nous sommes d'accord qu'il faut juste un pond diviseur sur le panneau solaire,
et pour la batterie, l'alimentation et sa mesure doivent se faire sur VCC (et pas RAW) sans pont diviseur car max 4,2V ?

hbachetti

Oui absolument.
Cela doit bien afficher des valeurs ?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

#142
Aug 01, 2020, 04:31 pm Last Edit: Aug 01, 2020, 05:00 pm by mick85
oui mais rien de satisfaisant
j'utilise le code du paragraphe 7.1, tension batterie = tension d'alimentation
mais la tension batterie n'est pas lu

Code: [Select]
15:28:14.004 -> Automated Gate
15:28:14.004 -> power off
15:28:14.004 -> checkLuminosity
15:28:14.004 -> gate state: LOW
15:28:14.074 -> vpanel ADC: 243
15:28:14.074 -> panel: 2.14
15:28:14.074 -> power off
15:28:14.178 -> vpanel ADC: 546
15:28:14.178 -> panel V: 4.80
15:28:14.211 -> panel I: 0.00
15:28:14.281 -> Batt ADC: 1023
15:28:14.281 -> Batt VCC: 1.125
15:28:14.281 -> 0 : 4.20 | 100
15:28:14.281 -> 1 : 4.10 | 96
15:28:14.281 -> 2 : 4.00 | 92
15:28:14.281 -> 3 : 3.96 | 89
15:28:14.281 -> 4 : 3.92 | 85
15:28:14.281 -> 5 : 3.89 | 81
15:28:14.314 -> 6 : 3.86 | 77
15:28:14.314 -> 7 : 3.83 | 73
15:28:14.314 -> 8 : 3.80 | 69
15:28:14.314 -> 9 : 3.77 | 65
15:28:14.314 -> 10 : 3.75 | 62
15:28:14.314 -> 11 : 3.72 | 58
15:28:14.314 -> 12 : 3.70 | 55
15:28:14.314 -> 13 : 3.66 | 51
15:28:14.314 -> 14 : 3.62 | 47
15:28:14.314 -> 15 : 3.58 | 43
15:28:14.314 -> 16 : 3.55 | 40
15:28:14.314 -> 17 : 3.51 | 35
15:28:14.314 -> 18 : 3.48 | 32
15:28:14.314 -> 19 : 3.44 | 26
15:28:14.314 -> 20 : 3.40 | 24
15:28:14.314 -> 21 : 3.37 | 20
15:28:14.314 -> 22 : 3.35 | 17
15:28:14.314 -> 23 : 3.27 | 13
15:28:14.314 -> 24 : 3.20 | 9
15:28:14.314 -> 25 : 3.10 | 6
15:28:14.351 -> 26 : 3.00 | 3
15:28:14.351 -> battery: 1.12
15:28:14.351 -> battery %: 0
15:28:14.351 -> SLEEP 30
15:28:44.775 -> uptime: 30
15:28:44.775 -> manualStartTime: 0
15:28:44.808 -> checkLuminosity
15:28:44.808 -> gate state: LOW
15:28:44.911 -> vpanel ADC: 243
15:28:44.911 -> panel: 2.14
15:28:44.911 -> power off
15:28:44.980 -> vpanel ADC: 251
15:28:44.980 -> panel V: 2.21
15:28:44.980 -> panel I: 0.00
15:28:45.086 -> Batt ADC: 1023
15:28:45.086 -> Batt VCC: 1.125
15:28:45.086 -> 0 : 4.20 | 100
15:28:45.086 -> 1 : 4.10 | 96
15:28:45.124 -> 2 : 4.00 | 92
15:28:45.124 -> 3 : 3.96 | 89
15:28:45.124 -> 4 : 3.92 | 85
15:28:45.124 -> 5 : 3.89 | 81
15:28:45.124 -> 6 : 3.86 | 77
15:28:45.124 -> 7 : 3.83 | 73
15:28:45.124 -> 8 : 3.80 | 69
15:28:45.124 -> 9 : 3.77 | 65
15:28:45.124 -> 10 : 3.75 | 62
15:28:45.124 -> 11 : 3.72 | 58
15:28:45.124 -> 12 : 3.70 | 55
15:28:45.124 -> 13 : 3.66 | 51
15:28:45.124 -> 14 : 3.62 | 47
15:28:45.124 -> 15 : 3.58 | 43
15:28:45.124 -> 16 : 3.55 | 40
15:28:45.124 -> 17 : 3.51 | 35
15:28:45.124 -> 18 : 3.48 | 32
15:28:45.124 -> 19 : 3.44 | 26
15:28:45.124 -> 20 : 3.40 | 24
15:28:45.124 -> 21 : 3.37 | 20
15:28:45.124 -> 22 : 3.35 | 17
15:28:45.124 -> 23 : 3.27 | 13
15:28:45.124 -> 24 : 3.20 | 9
15:28:45.124 -> 25 : 3.10 | 6
15:28:45.157 -> 26 : 3.00 | 3
15:28:45.157 -> battery: 1.12
15:28:45.157 -> battery %: 0
15:28:45.157 -> SLEEP 30
15:29:15.603 -> uptime: 60
15:29:15.603 -> manualStartTime: 0
15:29:15.603 -> checkLuminosity
15:29:15.603 -> gate state: LOW
15:29:15.708 -> vpanel ADC: 288
15:29:15.708 -> panel: 2.53
15:29:15.708 -> power off
15:29:15.812 -> vpanel ADC: 288
15:29:15.812 -> panel V: 2.53
15:29:15.812 -> panel I: 0.00
15:29:15.915 -> Batt ADC: 1023
15:29:15.915 -> Batt VCC: 1.125
15:29:15.915 -> 0 : 4.20 | 100
15:29:15.915 -> 1 : 4.10 | 96
15:29:15.915 -> 2 : 4.00 | 92
15:29:15.915 -> 3 : 3.96 | 89
15:29:15.915 -> 4 : 3.92 | 85
15:29:15.915 -> 5 : 3.89 | 81
15:29:15.915 -> 6 : 3.86 | 77
15:29:15.915 -> 7 : 3.83 | 73
15:29:15.915 -> 8 : 3.80 | 69
15:29:15.915 -> 9 : 3.77 | 65
15:29:15.915 -> 10 : 3.75 | 62
15:29:15.915 -> 11 : 3.72 | 58
15:29:15.915 -> 12 : 3.70 | 55
15:29:15.915 -> 13 : 3.66 | 51
15:29:15.915 -> 14 : 3.62 | 47
15:29:15.915 -> 15 : 3.58 | 43
15:29:15.915 -> 16 : 3.55 | 40
15:29:15.915 -> 17 : 3.51 | 35
15:29:15.915 -> 18 : 3.48 | 32
15:29:15.915 -> 19 : 3.44 | 26
15:29:15.915 -> 20 : 3.40 | 24
15:29:15.915 -> 21 : 3.37 | 20
15:29:15.915 -> 22 : 3.35 | 17
15:29:15.948 -> 23 : 3.27 | 13
15:29:15.948 -> 24 : 3.20 | 9
15:29:15.948 -> 25 : 3.10 | 6
15:29:15.948 -> 26 : 3.00 | 3
15:29:15.948 -> battery: 1.12
15:29:15.948 -> battery %: 0
15:29:15.948 -> SLEEP 30
15:29:46.389 -> uptime: 90
15:29:46.389 -> manualStartTime: 0
15:29:46.389 -> checkLuminosity
15:29:46.389 -> gate state: LOW
15:29:46.526 -> vpanel ADC: 220
15:29:46.526 -> panel: 1.94
15:29:46.526 -> power off
15:29:46.593 -> vpanel ADC: 226
15:29:46.593 -> panel V: 1.99
15:29:46.593 -> panel I: 0.00
15:29:46.699 -> Batt ADC: 1023
15:29:46.699 -> Batt VCC: 1.125
15:29:46.699 -> 0 : 4.20 | 100
15:29:46.699 -> 1 : 4.10 | 96
15:29:46.699 -> 2 : 4.00 | 92
15:29:46.699 -> 3 : 3.96 | 89
15:29:46.699 -> 4 : 3.92 | 85
15:29:46.699 -> 5 : 3.89 | 81
15:29:46.699 -> 6 : 3.86 | 77
15:29:46.699 -> 7 : 3.83 | 73
15:29:46.734 -> 8 : 3.80 | 69
15:29:46.734 -> 9 : 3.77 | 65
15:29:46.734 -> 10 : 3.75 | 62
15:29:46.734 -> 11 : 3.72 | 58
15:29:46.734 -> 12 : 3.70 | 55
15:29:46.734 -> 13 : 3.66 | 51
15:29:46.734 -> 14 : 3.62 | 47
15:29:46.734 -> 15 : 3.58 | 43
15:29:46.734 -> 16 : 3.55 | 40
15:29:46.734 -> 17 : 3.51 | 35
15:29:46.734 -> 18 : 3.48 | 32
15:29:46.734 -> 19 : 3.44 | 26
15:29:46.734 -> 20 : 3.40 | 24
15:29:46.734 -> 21 : 3.37 | 20
15:29:46.734 -> 22 : 3.35 | 17
15:29:46.734 -> 23 : 3.27 | 13
15:29:46.734 -> 24 : 3.20 | 9
15:29:46.734 -> 25 : 3.10 | 6
15:29:46.734 -> 26 : 3.00 | 3
15:29:46.767 -> battery: 1.12
15:29:46.767 -> battery %: 0
15:29:46.767 -> SLEEP 30
15:30:17.212 -> uptime: 120
15:30:17.212 -> manualStartTime: 0
15:30:17.212 -> checkLuminosity
15:30:17.212 -> gate state: LOW
15:30:17.316 -> vpanel ADC: 216
15:30:17.316 -> panel: 1.90
15:30:17.316 -> power off
15:30:17.418 -> vpanel ADC: 219
15:30:17.418 -> panel V: 1.93
15:30:17.418 -> panel I: 0.00
15:30:17.523 -> Batt ADC: 1023
15:30:17.523 -> Batt VCC: 1.125
15:30:17.523 -> 0 : 4.20 | 100
15:30:17.523 -> 1 : 4.10 | 96
15:30:17.523 -> 2 : 4.00 | 92
15:30:17.523 -> 3 : 3.96 | 89
15:30:17.523 -> 4 : 3.92 | 85
15:30:17.523 -> 5 : 3.89 | 81
15:30:17.523 -> 6 : 3.86 | 77
15:30:17.523 -> 7 : 3.83 | 73
15:30:17.523 -> 8 : 3.80 | 69
15:30:17.523 -> 9 : 3.77 | 65
15:30:17.523 -> 10 : 3.75 | 62
15:30:17.523 -> 11 : 3.72 | 58
15:30:17.523 -> 12 : 3.70 | 55
15:30:17.523 -> 13 : 3.66 | 51
15:30:17.557 -> 14 : 3.62 | 47
15:30:17.557 -> 15 : 3.58 | 43
15:30:17.557 -> 16 : 3.55 | 40
15:30:17.557 -> 17 : 3.51 | 35
15:30:17.557 -> 18 : 3.48 | 32
15:30:17.557 -> 19 : 3.44 | 26
15:30:17.557 -> 20 : 3.40 | 24
15:30:17.557 -> 21 : 3.37 | 20
15:30:17.557 -> 22 : 3.35 | 17
15:30:17.557 -> 23 : 3.27 | 13
15:30:17.557 -> 24 : 3.20 | 9
15:30:17.557 -> 25 : 3.10 | 6
15:30:17.557 -> 26 : 3.00 | 3
15:30:17.557 -> battery: 1.12
15:30:17.557 -> battery %: 0
15:30:17.557 -> SLEEP 30

hbachetti

#143
Aug 01, 2020, 05:20 pm Last Edit: Aug 01, 2020, 05:23 pm by hbachetti
La fonction analogReadReference() est bien dans le sketch, mais la loop() continue d'appeler power.getBatteryCapacity() qui fait toujours une mesure sur A0.

Il faut déménager la fonction analogReadReference() dans solar.cpp.

Code: [Select]

unsigned int analogReadReference(void)
{
  /* Elimine toutes charges résiduelles */
  ADMUX = 0x4F;
  delayMicroseconds(5);
  /* Sélectionne la référence interne à 1.1 volts comme point de mesure */
  ADMUX = 0x4E;
  delayMicroseconds(200);
  /* Active le convertisseur analogique -> numérique */
  ADCSRA |= (1 << ADEN);
  /* Lance une conversion analogique -> numérique */
  ADCSRA |= (1 << ADSC);
  /* Attend la fin de la conversion */
  while (ADCSRA & (1 << ADSC));
  /* Récupère le résultat de la conversion */
  return ADCL | (ADCH << 8);
}

float SolarPowerSupply::getBatteryVoltage(bool waitDelay)
{
  return (1023 * VREF) / analogReadReference();
}

Bien entendu le code de getBatteryVoltage() remplace le précédent.

Et il faut supprimer l'appel à analogReadReference() dans la loop().
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

vraiment merci pour toute cette aide précieuse :)

cela me donne sa (valeur réelle batterie : 3,63V et panneau solaire 4,5V)
il faut que je règle mieux pour le panneau

Code: [Select]
17:47:25.754 -> uptime: 240
17:47:25.754 -> manualStartTime: 0
17:47:25.754 -> checkLuminosity
17:47:25.754 -> gate state: HIGH
17:47:25.863 -> vpanel ADC: 677
17:47:25.863 -> panel: 5.96
17:47:25.863 -> power off
17:47:25.965 -> vpanel ADC: 389
17:47:25.965 -> panel V: 3.42
17:47:25.965 -> panel I: 0.00
17:47:25.965 -> Batt VCC: 3.642
17:47:25.965 -> 0 : 4.20 | 100
17:47:25.965 -> 1 : 4.10 | 96
17:47:25.965 -> 2 : 4.00 | 92
17:47:25.965 -> 3 : 3.96 | 89
17:47:25.965 -> 4 : 3.92 | 85
17:47:25.965 -> 5 : 3.89 | 81
17:47:25.965 -> 6 : 3.86 | 77
17:47:25.965 -> 7 : 3.83 | 73
17:47:25.965 -> 8 : 3.80 | 69
17:47:25.965 -> 9 : 3.77 | 65
17:47:25.965 -> 10 : 3.75 | 62
17:47:25.965 -> 11 : 3.72 | 58
17:47:25.965 -> 12 : 3.70 | 55
17:47:25.999 -> 13 : 3.66 | 51
17:47:25.999 -> 14 : 3.62 | 47
17:47:25.999 -> battery: 3.64
17:47:25.999 -> battery %: 47
17:47:25.999 -> SLEEP 30

hbachetti

Il faut plutôt régler au mieux VREF en comparant la valeur de tension batterie affichée et la tension réelle mesurée par un multimètre.
Ensuite la tension panneau affichée est moins critique.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

pour le moment VREF 1.125 me semble le plus juste
j'arrive à 0,15V de marge ce n'est pas suffisant ?

réel multimètre 3,63
affiché 3,642


hbachetti

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

Quote
il faut que je règle mieux pour le panneau
La tension du panneau n'est intéressante que si le système est connecté (DOMOTICZ).
Dans mon cas je mesure également le courant du panneau.
Cela m'a permis de visualiser la puissance et le temps de charge nécessaires le matin.

Dans ton cas la tension du panneau a peu d'intérêt, sauf pendant la phase d'essais, car à part l'afficher sur la console, tu ne peux pas en faire grand chose.

La tension batterie est par contre mesurée pendant que le servomoteur tourne. Si elle descend trop bas, la LED de l'ARDUINO clignote 5 fois après l'ouverture ou la fermeture de la porte.

Bien évidemment j'imagine que le propriétaire du poulailler n'est pas présent à l'heure d'ouverture et fermeture de la porte pour vérifier si la LED clignote.
Il convient donc d'utiliser les boutons ouverture et fermeture manuels une ou deux fois par an pour vérifier l'état de la batterie. Une vieille batterie (surtout si elle est bas de gamme) aura tendance à voir sa tension chuter plus profondément qu'une batterie de marque en bon état pendant que le moteur tourne, surtout l'hiver.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

mick85

#149
Aug 03, 2020, 12:35 pm Last Edit: Aug 03, 2020, 12:36 pm by mick85
ah ok,
pour la batterie je pense que je testerais de temps en temps au multimètre pour vérifier

je continue dans mes tests et j'ai un souci lors de l'ouverture manuel,
le servomoteur fait : open, close, open


Code: [Select]
12:29:40.295 -> battery: 3.65
12:29:40.295 -> battery %: 47
12:29:40.295 -> SLEEP 30
12:29:43.442 -> OPEN pressed
12:29:43.485 -> MANUAL OPEN
12:29:43.485 -> power on 5
12:29:43.645 -> pos: 180
12:29:47.355 -> power on 5
12:29:47.852 -> pos: 0
12:29:52.066 -> pos: 180
12:29:55.771 -> min voltage 10.78
12:29:55.771 -> STOP
12:29:55.771 -> power off
12:29:55.771 -> uptime: 1890
12:29:55.771 -> manualStartTime: 1890
12:29:55.805 -> manual mode, remain: 300
12:29:55.873 -> vpanel ADC: 451
12:29:55.873 -> panel V: 3.97
12:29:55.873 -> panel I: 0.00
12:29:55.873 -> Batt VCC: 3.631
12:29:55.873 -> 0 : 4.20 | 100
12:29:55.873 -> 1 : 4.10 | 96
12:29:55.873 -> 2 : 4.00 | 92
12:29:55.873 -> 3 : 3.96 | 89
12:29:55.912 -> 4 : 3.92 | 85
12:29:55.912 -> 5 : 3.89 | 81
12:29:55.912 -> 6 : 3.86 | 77
12:29:55.912 -> 7 : 3.83 | 73
12:29:55.912 -> 8 : 3.80 | 69
12:29:55.912 -> 9 : 3.77 | 65
12:29:55.912 -> 10 : 3.75 | 62
12:29:55.912 -> 11 : 3.72 | 58
12:29:55.912 -> 12 : 3.70 | 55
12:29:55.912 -> 13 : 3.66 | 51
12:29:55.912 -> 14 : 3.62 | 47
12:29:55.912 -> battery: 3.63
12:29:55.912 -> battery %: 47
12:29:55.912 -> SLEEP 30
12:30:26.313 -> uptime: 1920
12:30:26.313 -> manualStartTime: 1890
12:30:26.313 -> manual mode, remain: 270
12:30:26.415 -> vpanel ADC: 429
12:30:26.415 -> panel V: 3.77
12:30:26.415 -> panel I: 0.00
12:30:26.415 -> Batt VCC: 3.642
12:30:26.415 -> 0 : 4.20 | 100
12:30:26.415 -> 1 : 4.10 | 96
12:30:26.415 -> 2 : 4.00 | 92
12:30:26.415 -> 3 : 3.96 | 89
12:30:26.415 -> 4 : 3.92 | 85
12:30:26.415 -> 5 : 3.89 | 81
12:30:26.415 -> 6 : 3.86 | 77
12:30:26.415 -> 7 : 3.83 | 73
12:30:26.415 -> 8 : 3.80 | 69
12:30:26.415 -> 9 : 3.77 | 65
12:30:26.415 -> 10 : 3.75 | 62
12:30:26.415 -> 11 : 3.72 | 58
12:30:26.415 -> 12 : 3.70 | 55
12:30:26.448 -> 13 : 3.66 | 51
12:30:26.448 -> 14 : 3.62 | 47
12:30:26.448 -> battery: 3.64
12:30:26.448 -> battery %: 47
12:30:26.448 -> SLEEP 30

Go Up