Compare commits
4 Commits
master
...
cave_à_àmo
Author | SHA1 | Date | |
---|---|---|---|
|
dad40f7095 | ||
|
e1a59efa8d | ||
|
0fa780b36e | ||
|
167057089c |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
*.fcstd1
|
||||
.directory
|
||||
*.FCBak
|
||||
|
42718
3D/boitier_electronique-corps.obj
Normal file
42718
3D/boitier_electronique-corps.obj
Normal file
File diff suppressed because it is too large
Load Diff
101856
3D/boitier_electronique-couvercle.obj
Normal file
101856
3D/boitier_electronique-couvercle.obj
Normal file
File diff suppressed because it is too large
Load Diff
BIN
3D/boitier_electronique.FCStd
Normal file
BIN
3D/boitier_electronique.FCStd
Normal file
Binary file not shown.
33
README.md
33
README.md
@ -1,32 +1,24 @@
|
||||
# Projet d'éclairage sur batterie 12V avec ampoules LED :
|
||||
# Projet d'éclairage sur batterie Lithium-ION 3 cellules avec ampoules LED :
|
||||
|
||||
* gestion électronique de la batterie 12V pour éviter une décharge complète (Arduino)
|
||||
* suivi du niveau de la batterie via une led RGB type "Neopixel"
|
||||
* utilisateur de la cave pévenu d'un niveau bas par clignotement de l'éclairage principale en plus du changement de couleur
|
||||
* gestion électronique de la batterie Li-Ion pour éviter une décharge complète (Arduino UNO R3)
|
||||
* suivi du niveau de la batterie via une led RGB classique (anode commune)
|
||||
* utilisateur de la cave prévenu d'un niveau bas par clignotement de l'éclairage principale en plus du changement de couleur
|
||||
* support d'ampoule imprimable (impression 3D) avec fixation magnétique (le plafonde de la cave en question est tenu par des poutrelles en acier)
|
||||
* jusqu'à une dizaine d'ampoules LED 4 Watts
|
||||
* 2 ampoules LED 4 Watts
|
||||
|
||||
## Liste des composants électroniques et électriques
|
||||
* 1 Microcontrôleur ATMEL ATtiny85 avec son support
|
||||
* 1 régulateur linéaire LM7805
|
||||
* 1 LED RGB "Neopixel" 5mm
|
||||
* 1 carte Arduino UNO R3 originale + breadboard shield
|
||||
* 1 LED RGB à anode commune sur une petite carte (résitances intégrées)
|
||||
* Relais 'prêt à l'emploi' sur breakout board (exemple : http://www.microbot.it/product/135/Relay-Module.html )
|
||||
* résistances 1/4W
|
||||
* 1x 1 komh
|
||||
* résistances 1/4W pour le pont diviseur (mesure de la tension batterie)
|
||||
* 1x 10 kohm
|
||||
* 1x 47 kohm
|
||||
* Condensateur :
|
||||
* 2x 10µF 50V électrolytique
|
||||
* 1x 0.1µF céramique
|
||||
* 1 plaque de prototypage pour souder le tout (exemple : perma-proto board hlaf-size d'Adafruit, en optimisant un peu, la quarter size devrait suffir)
|
||||
* 1 bornier à souder 2 bornes (optionnel : c'est possible de souder directement les fils à la place du bornier)
|
||||
* fils 22AWG de différentes couleurs (au moins noir, rouge et une troisième) pour l'électronique
|
||||
* cable 2x0.75mm2 type cable hifi : plusieurs mètres (section 0.75mm2 minimum, ça dépend du nombres et de la puissante totales des spots)
|
||||
* gaine thermorétractable de différentes sectin et couleur
|
||||
* 1 barette de 3 dominos 4 mm2
|
||||
* 1 interrupteur à bascule acceptant plusieurs Ampères en 12V (10A c'est pas mal)
|
||||
* 1 batterie acide-plomb 12V (type batterie de moto) avec les cosses adaptées si besoin
|
||||
* 1 boite plastique suffisamment grande pour acceuillir la batterie choisie et les composants. IMPORTANT : PAS de boîte étanche, la batterie produit des gaz qui doivent pouvoir s'évacuer !
|
||||
* 1 batterie Lithium-Ion 3S (3 cellules) : 12.5V chargé à fond, 11.1V nominale, 9V mini
|
||||
* 1 boitier imprimer en 3D
|
||||
* visserie M2.5 et M3 : vis, rondelles, écrous, entretoises... pour fixer l'électronique
|
||||
|
||||
### Outillage
|
||||
@ -75,12 +67,11 @@ Montage de l'ensemble est aussi présenté en photo dans le répertoire : photo/
|
||||
|
||||
### Montage final
|
||||
|
||||
Attention aux court-circuits !!! une batterie 12V peut fournir une grosse puissance (la mienne, petite 6Ah => 100A soit ~1200W). Il n'y a pas de risque d'électrocution mais risque de brûlures sévères!
|
||||
Attention !!! les batteries acide/plomb sont remplies d'acide sulfurique concentré : risque de brûlure chimique en cas de fuite de batterie.
|
||||
Attention aux court-circuits !!! la batterie 12V peut fournir une grosse puissance (la mienne, petite 1.4Ah 45C => 63A soit ~700W ! ). Il n'y a pas de risque d'électrocution mais risque de brûlures sévères et un risque d'explosion de la batterie au lithium.
|
||||
|
||||
* connecter l'ensemble des spot LED entre eux en parallèle en faisant bien attention à ne pas faire de court circuit (utiliser le marquage coloré sur un des brins pour s'en assurer). Les lampes GU5.3 ne sont pas polarisés, pas de crainte de ce côté là.
|
||||
* connecter le premier spots au domino dans la boîte : normalement un fil avec la sortie du relais (dont le COM est connecté au (+) de la batterie via l'interrupteur général) et un fils avec le (-) de la batterie.
|
||||
* vérifier que l'interrupteur est sur "OFF" (circuit ouvert)
|
||||
* connecter la batterie (masse (-) en premier).
|
||||
* connecter la batterie.
|
||||
* fermer la boîte avec la batterie dedans
|
||||
* allumer pour vérifier que tout va bien (lumière verte si la batterie est chargée + lumière allumée)
|
||||
|
@ -16,29 +16,30 @@ along with this program.
|
||||
If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
#ifdef __AVR__
|
||||
#include <avr/power.h>
|
||||
#endif
|
||||
|
||||
#define LED_PIN 0
|
||||
#define RELAY_PIN 1
|
||||
#define BAT_PIN 1 // Analog Input 1 = digital PIN 2
|
||||
#define VMAX 486 // = ~13.5V avec des résistances de 47k et 10k
|
||||
#define V_GREEN 431 // = ~12V tension pour vert pur
|
||||
#define VMIN 395 // = ~11 V
|
||||
#define V_ALERTE 413 // = ~11.5V provoque clignotement 3 fois rapide
|
||||
#define V_OFF 388 // = ~10.8V provoque clignotement pendant 15s puis OFF
|
||||
#define OFF_DELAY 15 // delais de clignotement (en secondes) avant extinction à l'atteinte de V_OFF
|
||||
#define LED_R_PIN 11
|
||||
#define LED_V_PIN 10
|
||||
#define LED_B_PIN 9
|
||||
#define RELAY_PIN 2
|
||||
#define BAT_PIN A1 // Analog Input 0 = digital PIN 2
|
||||
#define VMAX 1250
|
||||
#define V_GREEN 1170 // tension pour vert pur
|
||||
#define VMIN 950
|
||||
#define V_ALERTE 970 // provoque clignotement 3 fois rapide
|
||||
#define V_OFF 920 // provoque clignotement pendant 15s puis OFF
|
||||
#define OFF_DELAY 10 // delais de clignotement (en secondes) avant extinction à l'atteinte de V_OFF
|
||||
#define INIT_BLINK 100
|
||||
|
||||
Adafruit_NeoPixel neopix = Adafruit_NeoPixel(1, LED_PIN, NEO_RGB + NEO_KHZ800);
|
||||
|
||||
byte timer = 100;
|
||||
byte low_bat_counter = 0;
|
||||
int vbat = 0;
|
||||
int abat = 0;
|
||||
int analog = 0;
|
||||
int red = 0;
|
||||
int green = 0;
|
||||
float vbat = 0;
|
||||
bool warned = 0;
|
||||
|
||||
void blink(int n=3, int t=500) {
|
||||
@ -51,48 +52,70 @@ void blink(int n=3, int t=500) {
|
||||
}
|
||||
|
||||
void setup() {
|
||||
// This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
|
||||
#if defined (__AVR_ATtiny85__)
|
||||
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
|
||||
#endif
|
||||
// End of trinket special code
|
||||
|
||||
analogReference(DEFAULT);
|
||||
|
||||
Serial.begin(9600);
|
||||
|
||||
pinMode(RELAY_PIN, OUTPUT);
|
||||
pinMode(LED_R_PIN, OUTPUT);
|
||||
pinMode(LED_V_PIN, OUTPUT);
|
||||
pinMode(LED_B_PIN, OUTPUT);
|
||||
analogWrite(LED_R_PIN, 0);
|
||||
analogWrite(LED_V_PIN, 0);
|
||||
analogWrite(LED_B_PIN, 0);
|
||||
//pinMode(BAT_PIN, INPUT);
|
||||
|
||||
neopix.begin();
|
||||
neopix.show(); // Initialize all pixels to 'off'
|
||||
Serial.print("Démarrage...");
|
||||
|
||||
for (int i=0; i<4;i++) {
|
||||
neopix.setPixelColor(0, 0, 0, 255);
|
||||
neopix.show();
|
||||
analogWrite(LED_B_PIN, 255);
|
||||
delay(INIT_BLINK);
|
||||
neopix.setPixelColor(0, 0, 0, 0);
|
||||
neopix.show();
|
||||
analogWrite(LED_B_PIN, 0);
|
||||
delay(INIT_BLINK);
|
||||
}
|
||||
|
||||
digitalWrite(RELAY_PIN, HIGH);
|
||||
|
||||
Serial.println("OK!");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
//Mesure de VBAT : moyenne de 10 mesures à 20ms d'intervale
|
||||
vbat =0;
|
||||
abat = 0;
|
||||
for(int i=0;i<10;i++) {
|
||||
vbat += analogRead(BAT_PIN);
|
||||
delay(20);
|
||||
analog = analogRead(BAT_PIN);
|
||||
abat += analog;
|
||||
/* Serial.print(i);
|
||||
Serial.print(" : ");
|
||||
Serial.println(analog);
|
||||
*/
|
||||
delay(10);
|
||||
}
|
||||
vbat /= 10;
|
||||
abat /= 10;
|
||||
vbat = (0.8+(5.7*abat*5.0/1024))*100;
|
||||
|
||||
// Serial.print("Brut: ");
|
||||
// Serial.println(abat);
|
||||
Serial.print("Tension:");
|
||||
Serial.print(vbat/100);
|
||||
Serial.println(" V");
|
||||
|
||||
// Calcul de la couleur et affichage sur la neopixel
|
||||
red = map(constrain(vbat, VMIN, V_GREEN), VMIN, V_GREEN, 255, 0);
|
||||
green = map(constrain(vbat, VMIN, V_GREEN), VMIN, V_GREEN, 0, 255);
|
||||
neopix.setPixelColor(0, red, green, 0);
|
||||
neopix.show();
|
||||
analogWrite(LED_R_PIN, red);
|
||||
analogWrite(LED_V_PIN, green);
|
||||
analogWrite(LED_B_PIN, 0);
|
||||
|
||||
Serial.print("Rouge: ");
|
||||
Serial.println(red);
|
||||
Serial.print("Vert: ");
|
||||
Serial.println(green);
|
||||
|
||||
if(vbat<V_ALERTE && !warned) {
|
||||
Serial.println("Alerte! batterie faible !");
|
||||
blink();
|
||||
warned = 1;
|
||||
}
|
||||
@ -102,10 +125,20 @@ void loop() {
|
||||
|
||||
// Si le compteur atteint la limite, la faible tension est validée : procédure d'extinction
|
||||
if(vbat<VMIN && low_bat_counter>10) {
|
||||
Serial.println("Extinction : batterie trop faible");
|
||||
blink(OFF_DELAY, 500);
|
||||
digitalWrite(RELAY_PIN, LOW);
|
||||
while(1);
|
||||
while(1) {
|
||||
for(int i=0;i<50;i++) {
|
||||
analogWrite(LED_R_PIN, i);
|
||||
delay(15);
|
||||
}
|
||||
for(int i=50;i>0;i--) {
|
||||
analogWrite(LED_R_PIN, i);
|
||||
delay(15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delay(1000);
|
||||
delay(2000);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user