-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

CRO géré par ARDUINO

4 participants

Aller en bas

CRO géré par ARDUINO Empty CRO géré par ARDUINO

Message par jch Ven 22 Juil 2016 - 16:11

Bonjour à tous,

Mon TCU est HS et Renault refuse de donner le moindre €uro pour sa remise en service. Le désagrément pour moi ce sont les charges programmées et différées qui ne sont plus dispo.
Je souhaiterai créer une interface qui se chargera de créer un équivalent. Ayant de l'Arduino en stock, je voudrai gérer la charge par ce biais.

J'ai quelques bonnes notions, loin d'être bon en programmation, mais je me débrouille.
Mon idée est donc de faire une horloge avec un relais conséquent pour déclencher la charge. Je souhaiterai pouvoir déclencher la charge à partir du début des heures de nuit donc 22h dans mon cas. Avec un bouton poussoir, chaque appui repousserait de 15 minutes le début de la charge.

Habitant en montagne et commençant mes parcours par une descente, Zoe préserve la batteries et ne fournit que très peu de frein moteur l'hiver. Je souhaiterais donc via un autre bouton poussoir définir pour chaque impulsion 15 minutes de temps de charge. Ainsi conçu, le CRO se lancerait à l'heure souhaitée et pour une durée définie. L'hiver je ne charge pas plus que 75% pour avoir du frein moteur dans la descente (7 km à 12%) et ne pas faire chauffer les disques/plaquettes.
Je sais qu'à 16A, la charge s'élève de 16 % environ par heure. Un rapide calcul mental et je sais combien de temps je dois la charger.

On  peut aussi envisager de rentrer le % affiché lorsqu'on sort de la Zoe et donner le % souhaité pour le départ suivant. C'est une autre possibilité.

Seul problème, il y a des parties que je ne sais pas comment faire. Ça semble simple pourtant. Connaissez vous l'Arduino ? Et pouvez vous m'aider pour la base du sketch ?
Merci de votre aide.

_________________
Zoe Intens ZE22 84 000 km SOH : 86 %, zoe ZE40. 64 000 km SOH : 93 %  Zoe Intens ZE50 violet option CCS 93 000 km

jch
Modérateur

Messages : 5205
Date d'inscription : 16/03/2013
Age : 52
Localisation : Le Touvet 38660

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Ven 22 Juil 2016 - 17:42

Oui, je peux t'aider si besoin ! Smile

C'est très simple et ne nécessite que des briques standards  Basketball

Une horloge (certains modèles sont moins fiables que d'autres) : celle-ci de mémoire est précise
1€00
http://fr.aliexpress.com/item/A25-hot-sale-DS3231-AT24C32-IIC-Precision-RTC-Real-Time-Clock-Memory-Module-For-Arduino-Free/2054399502.html
CRO géré par ARDUINO A25-hot-vente-DS3231-AT24C32-IIC-pr%C3%A9cision-RTC-Real-Time-Clock-Memory-Module-pour-Arduino-livraison.jpg_50x50

Je te suggèrerai d'ajouter un écran LCD pour lire la valeur obtenue par les appuis successifs.
Certains modèles ont aussi des boutons : tout en un ! Wink
2€10
http://fr.aliexpress.com/item/LCD-Keypad-Shield-LCD1602-LCD-1602-Module-Display-For-Arduino-ATMEGA328-ATMEGA2560-raspberry-pi-UNO-blue/32334900048.html
CRO géré par ARDUINO 1-PCS-Clavier-LCD-Bouclier-LCD1602-LCD-1602-Module-D-affichage-Pour-Arduino-ATMEGA328-ATMEGA2560-framboise.jpg_50x50

en le couplant à un encodeur rotatif, tu peux faire varier la valeur (y compris en diminuant, ce que ne permettent les appuis sur un bouton)
0,50€
http://fr.aliexpress.com/item/Rotary-Encoder-Module-Brick-Sensor-Development-for-arduino-Dropshipping-KY-040/32598943217.html
CRO géré par ARDUINO Livraison-gratuite-1-pcs-Rotary-Encoder-Module-brique-de-d%C3%A9veloppement-de-capteur-pour-arduino-ky-.jpg_50x50

Il existe aussi des pads numériques
0,70€
http://fr.aliexpress.com/item/4-x-4-Matrix-Keypad-Membrane-Switch-8-pins-connector-SCM-Outside-enlarge-Keypad-For-Arduino/1968204049.html
CRO géré par ARDUINO Haute-Qualit%C3%A9-2-Pcs-lot-4x3-Matrice-12-Key-Tableau-Membrane-Commutateur-Clavier-Clavier-Pour-Arduino.jpg_50x50

5$
http://fr.aliexpress.com/store/product/TTP226-8-Way-8-Channel-Capacitive-Touch-Sensor-Switch-PAD-Detector-Module-for-Arduino/1199788_32222287299.html
CRO géré par ARDUINO TTP226-8-Way-8-Channel-Capacitif-Tactile-Capteur-Commutateur-PAD-D%C3%A9tecteur-Module-pour-Arduino.jpg_50x50
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par jch Ven 22 Juil 2016 - 17:51

À part les claviers que je n'ai pas, j'ai pas mal de matériel et capteurs dont 1 afficheur 16/2 avec 6 poussoirs qui pourraient aussi faire du + et du - pour modifier les valeurs horaires par exemple.

Avec un DS1370 pour l'horloge, c'est simple de récupérer l'heure et de l'afficher. Je ne sais pas dire à l'Arduino d'agir quand il lit 22:00:00.

_________________
Zoe Intens ZE22 84 000 km SOH : 86 %, zoe ZE40. 64 000 km SOH : 93 %  Zoe Intens ZE50 violet option CCS 93 000 km

jch
Modérateur

Messages : 5205
Date d'inscription : 16/03/2013
Age : 52
Localisation : Le Touvet 38660

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Ven 22 Juil 2016 - 17:57

Tu utilises quelle librairie pour le DS1370 ?

Le point pas évident en standard, c'est le relais : on ne trouve que du 10A 250V et pas du 16A ou 20A
http://fr.aliexpress.com/item/KY-019-5V-One-1-Channel-Relay-Module-Board-Shield-For-PIC-AVR-DSP-ARM-for/32358134833.html
0,86€
tu as déjà le relais ?

Il te faut une boucle principale qui
- gère ton compteur "heure de départ",
- gère ton compteur "temps de charge"
- lit l'heure,
- la compare avec "heure de départ" : si heure fournie par l'horloge supérieure ou égale à heure de départ, alors passe la broche de sortie à 5V pour déclencher le relais
digitalWrite(relayPin, HIGH);
et si supérieure à "heure de départ" + "temps de charge" alors passe la broche à 0V pour arrêter le relais.
digitalWrite(relayPin, LOW);

Pour le code, tu as écrit quoi pour le moment ?
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par Flo01 Sam 23 Juil 2016 - 5:03

Tu souhaites peut être fabriquer et programmer toi-même sinon tu as le sujet ou je proposais des alternatives: ICI
Dans ton cas l'horloge Finder 12.51 pourrais correspondre à ton besoin: tu programmes tes horaires sur ton smartphone que tu passes ensuite devant l'horloge et elle est programmée, c'est peut être plus simple que d'appuyer x fois sur un bouton.
Flo01
Flo01

Messages : 3004
Date d'inscription : 01/03/2015
Localisation : Ain

http://www.acoze.fr

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Sam 23 Juil 2016 - 6:17

Intéressant le finder 12.51
à seulement 48€ avec ton lien Smile http://www.materielelectrique.com/interrupteur-horaire-jourhebdo-digital-inverseur-230ac-ecran-info-analogique-ecran-retro-eclaire-reserve-marche-pile-accessible-125182300000-p-293603.html
à 59€ chez Conrad

pour éviter les boutons, on peut aussi envisager simplement un potentiomètre linéaire : 0 à 100% de gauche à droite par exemple
CRO géré par ARDUINO 1688409-40
http://fr.farnell.com/bourns/pta4543-2015dpb103/potentiometre-slide-10k-45mm/dp/1688415
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par jch Dim 24 Juil 2016 - 7:59

Bien sympa ce module. Seul point que je trouve pénalisant, c'est qu'il y a seulement 90 minutes de départ différé possible. Souvent je charge vers 1h du matin quand l'activité du réseau électrique est au plus bas.

Je garde ton idée comme solution de repli au cas où je n'arrive pas faire ce programme. J'ai une nette préférence pour le réaliser moi même, c'est l'occasion pour moi d'apprendre l'Arduino et j'ai d'autres idées en tête dont le système de minuterie pourrait être partiellement réutilisé (sans lien avec Zoe). Merci pour l'info.

J'ai la partie compte à rebours qui est écrite et fonctionnelle. La partie durée d'éclairage n'est pas encore au point notamment sur la bascule de minuit.
L'idée du potentiomètre à glissière m'apparaît encombrante, un modèle rotatif pourrait être une possibilité.

CRO géré par ARDUINO Shield-afficheur-lcd-boutons-pour-arduino

J'ai ceci en stock et j'aimerais pouvoir le réutiliser.

_________________
Zoe Intens ZE22 84 000 km SOH : 86 %, zoe ZE40. 64 000 km SOH : 93 %  Zoe Intens ZE50 violet option CCS 93 000 km

jch
Modérateur

Messages : 5205
Date d'inscription : 16/03/2013
Age : 52
Localisation : Le Touvet 38660

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Dim 24 Juil 2016 - 9:29

Le LCD est en effet indispensable pour connaître les valeurs : si tu l'as déjà c'est parfait ! Smile

Je ne connais pas tes contraintes d'encombrement mais le potentiomètre linéaire trouve tout son intérêt pour la valeur en % que tu souhaites commander : 0% à gauche, 100% à droite et une échelle graduée dessous

Pour le code, je n'ai pas compris la "durée d'éclairage" ? tu veux parler de la durée de charge ?!
Si tu postes le code dans les balises CODE, je pourrai regarder si tu veux.
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par jch Lun 25 Juil 2016 - 5:17

Oui, c'est bien de la durée de charge bien sûr. Pour le potentiomètre à glissière, je n'ai pas de contrainte de place, il pourrait être collé sur le flanc du coffret électrique.

Je te poste le code cet après-midi, je vais me remettre dessus.
Il affiche la date et l'heure, un grand classique. Dessous, j'affiche un compte à rebours d'une valeur prédéfinie qui se déclenche par l'appui sur un bouton poussoir.
Je vais devoir créer un système de menu pour accéder aux valeurs de début et de fin. À moins de mettre un LCD 4x20, auquel cas je pourrai tout afficher d'un coup. J'ai aussi ce LCD en stock.

_________________
Zoe Intens ZE22 84 000 km SOH : 86 %, zoe ZE40. 64 000 km SOH : 93 %  Zoe Intens ZE50 violet option CCS 93 000 km

jch
Modérateur

Messages : 5205
Date d'inscription : 16/03/2013
Age : 52
Localisation : Le Touvet 38660

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par jch Lun 25 Juil 2016 - 15:06

un test sur lcd 4x20 avec bouton poussoir externe

Code:
#include <Wire.h> // librairie 1 wire
#include <LiquidCrystal_I2C.h> // librairie pour afficheur LCD
#include "RTClib.h" // librairie pour le DS1307


RTC_DS1307 RTC;  // initialisation DS1307


const int led_rouge = 12;   //définition de la broche 2 de la carte en tant que variable    
const int BP = 7;
int BPstate = 0;
int heure;
int time;
int minute;
int seconde; // variable de comptage des secondes ?coul?es
long milliref; // variable de memorisation de la derniere valeur de milli utilis?e

LiquidCrystal_I2C lcd(0x26, 20, 4);// Cr?ation d'un objet LiquidCrystal = initialisation LCD en mode 4 bits
// les broches de lignes sont automatiquement configur?es en ENTREE avec pullup interne activ?
// les broches de colonnes sont automatiquement configur?es en SORTIE
//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est ex?cut?e en premier et 1 seule fois, au d?marrage du programme
//--------------------------------------------------------------------------------------------------------

void setup(){ // debut de la fonction setup()

Wire.begin();
Wire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
Wire.endTransmission();
 RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    
    pinMode(led_rouge, OUTPUT); //initialisation de la broche 2 comme étant une sortie
        
    // --- ici instructions ? ex?cuter au d?marrage ---
    pinMode(BP, INPUT);
    
    lcd.begin(); // Initialise le LCD avec 20 colonnes x 4 ligne
    lcd.print("Bonjour les SIT"); // affiche la cha?ne texte - message de test
    delay(2000); // pause de 2 secondes
    lcd.clear(); // // efface ?cran et met le curseur en haut ? gauche
    delay(10); // pour laisser temps effacer ?cran
    heure = 0;
    minute = 5;
    seconde = 0;
    time = (seconde + (60 * minute) + (3600 * heure));
}
}
void loop ()    {        
   DateTime now = RTC.now();
   lcd.setCursor(0, 0);
   lcd.print(now.hour(), DEC);
   lcd.print(":");
   lcd.print(now.minute(), DEC);
   lcd.print(":");
   lcd.print(now.second(), DEC);
   lcd.print(" ");
    
   lcd.setCursor(10, 0);
   lcd.print(now.day(), DEC);
   lcd.print("/");
   lcd.print(now.month(), DEC);
   lcd.print("/");
   lcd.print(now.year(), DEC);
   lcd.print("");
  
   delay(1000);
  
  if (now.hour ==23)
  digitalWrite(led_rouge, LOW); // écriture en sortie (broche 2) d'un état BAS
    }
    else {
   digitalWrite(led_rouge, HIGH); // écriture en sortie (broche 2) d'un état BAS
  
  
    BPstate = digitalRead(BP); // Lecture du Statut du BP
    lcd.setCursor(5, 2);
    lcd.print("En Attente");
   // lcd.setCursor(4, 3);
    //lcd.print("D'Activation");
    if (BPstate == LOW) {    // Activation Timer par le BP
        lcd.clear(); // Efface LCD
        milliref = millis(); // m?morisation de la valeur de millis() courante
        while (time > 1) { // Boucle continue tant que le Temps total n'est pas ?gal ? 0
            if (millis() > (milliref + 1000)) { // si une seconde s'est ?coul?e
                seconde = seconde - 1; // D?cr?mente le comptage des secondes
                time = time - 1; // D?cr?mente Temps total secondes
                milliref = milliref + 1000;  // incr?mente la valeur de r?f?rence milliseconde
            }
            if (minute > 0) {
                if (seconde < 0) {
                    minute--; // D?cr?mente une minute si le comptage des secondes arrivent ? z?ro et si les minutes sont sup?rieurs ? 0
                    seconde = 59; // reset seconde ? 60
                }
            }
            if (heure > 0) {
                if (minute <= 0) {
                    if (time == 3600 * heure - 1) {
                        heure--; // D?cr?mente une heure si le comptage des minutes arrivent ? z?ro et si les heures sont sup?rieurs ? 0 et si le temps total est un multiple de 3600 seconde (1 heure)
                        minute = 59; // reset minutes ? 60
                        seconde = 59;
                    }
                }    
            }
            Display(); // Lance affichage
            delay(980); // D?lais de rafraichisement LCD
        }
    }
}
void Display() {
    lcd.setCursor(1, 0);
    lcd.print("Temps Restant:");
    lcd.setCursor(4, 2);                                
    lcd.print("00:00:00");  // Affiche Template Compte ? rebours
    
    // Imprime les minutes sur la collone 4 si seconde sup?rieur ? 10, et sur la colonne 5 si inf?rieur ? 10:
    if (heure >= 10) {
        lcd.setCursor(4, 2);
    }
    else{
        lcd.setCursor(5, 2);
    }
        lcd.print(heure);
    
    // Imprime les minutes sur la collone 4 si seconde sup?rieur ? 10, et sur la colonne 5 si inf?rieur ? 10:
    if (minute >= 10){
            lcd.setCursor(7, 2);
    }
    else {
        lcd.setCursor(8, 2);
    }
    lcd.print(minute);
    
    // Imprime les seconde sur la collone 7 si seconde sup?rieur ? 10, et sur la colonne 8 si inf?rieur ? 10:
    if (seconde >= 10){
        lcd.setCursor(10, 2);
    }
    else {
        lcd.setCursor(11, 2);
    }
    lcd.print(seconde);
    if (time <= 0){ // Si le temps arrive ? 0
       lcd.print("Charge en cours"); // Affiche BOOM
    }
    }


_________________
Zoe Intens ZE22 84 000 km SOH : 86 %, zoe ZE40. 64 000 km SOH : 93 %  Zoe Intens ZE50 violet option CCS 93 000 km

jch
Modérateur

Messages : 5205
Date d'inscription : 16/03/2013
Age : 52
Localisation : Le Touvet 38660

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par Pixel Lun 25 Juil 2016 - 15:35

Sinon, il y a ça ...

CRO géré par ARDUINO 359_001

_________________
Producteurs de pétrole, je n'ai plus que ma tondeuse à gazon qui roule pour vous.
Pixel
Pixel
Administrateur

Messages : 33914
Date d'inscription : 23/01/2015
Age : 76
Localisation : Marolles en Hurepoix (Essonne)

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Lun 25 Juil 2016 - 15:42

D'acc ! ça commence à prendre forme

Justes quelques remarques
Like a Star @ heaven sur le fond :
setup :
pourquoi mettre le test de Real Time Clock (RTC) is running juste après le RTC begin ?
il sera certainement faux si ça prend du temps à l'initialisation sauf si la lib garde la main ?...

mais les exemples sur internet sont tous comme ça... donc ça doit aller

Like a Star @ heaven sur la forme
Loop :
dans cette boucle, pour plus de lisibilité, il ne te faut qu'appeler des fonctions
-> crées-toi une fonction AffichageHeure avec le code
Code:
  DateTime now = RTC.now();
   lcd.setCursor(0, 0);
   lcd.print(now.hour(), DEC);
   lcd.print(":");
   lcd.print(now.minute(), DEC);
   lcd.print(":");
   lcd.print(now.second(), DEC);
   lcd.print(" ");
    
   lcd.setCursor(10, 0);
   lcd.print(now.day(), DEC);
   lcd.print("/");
   lcd.print(now.month(), DEC);
   lcd.print("/");
   lcd.print(now.year(), DEC);
   lcd.print("");
  
   delay(1000);

ainsi qu'une fonction ActivationTimer
Code:
BPstate = digitalRead(BP); // Lecture du Statut du BP
    lcd.setCursor(5, 2);
    lcd.print("En Attente");
   // lcd.setCursor(4, 3);
    //lcd.print("D'Activation");
    if (BPstate == LOW) {    // Activation Timer par le BP
        lcd.clear(); // Efface LCD
        milliref = millis(); // m?morisation de la valeur de millis() courante
        while (time > 1) { // Boucle continue tant que le Temps total n'est pas ?gal ? 0
            if (millis() > (milliref + 1000)) { // si une seconde s'est ?coul?e
                seconde = seconde - 1; // D?cr?mente le comptage des secondes
                time = time - 1; // D?cr?mente Temps total secondes
                milliref = milliref + 1000;  // incr?mente la valeur de r?f?rence milliseconde
            }
            if (minute > 0) {
                if (seconde < 0) {
                    minute--; // D?cr?mente une minute si le comptage des secondes arrivent ? z?ro et si les minutes sont sup?rieurs ? 0
                    seconde = 59; // reset seconde ? 60
                }
            }
            if (heure > 0) {
                if (minute <= 0) {
                    if (time == 3600 * heure - 1) {
                        heure--; // D?cr?mente une heure si le comptage des minutes arrivent ? z?ro et si les heures sont sup?rieurs ? 0 et si le temps total est un multiple de 3600 seconde (1 heure)
                        minute = 59; // reset minutes ? 60
                        seconde = 59;
                    }
                }    
            }
            Display(); // Lance affichage
            delay(980); // D?lais de rafraichisement LCD
        }

et une autre fonction AffichageTempsRestant
(appelée Display dans ton code)

ensuite ce sera plus clair dans ta boucle Loop

Ensuite je n'ai pas bien compris ta gestion du bouton ? il devrait y en avoir plusieurs pour faire ce que tu veux faire...
Tu veux garder le bouton appuyé et que cela décrémente une valeur ?

bonne suite à toi Smile
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Lun 25 Juil 2016 - 15:43

Pixel a écrit:Sinon, il y a ça ...
ou ça
CRO géré par ARDUINO Can-stock-photo_csp8470958
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par MatElec Ven 29 Juil 2016 - 18:55

Où en es-tu @jch ?
MatElec
MatElec

Messages : 1321
Date d'inscription : 13/06/2016
Age : 50
Localisation : Bouches-du-Rhône

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par jch Ven 29 Juil 2016 - 19:02

Je me suis pas repenché sur le sujet ces derniers jours. Peu de chances que je m'en occupe au week-end. Ce sera pour la semaine prochaine.

Pas facile quand on ne connaît presque rien mais j'y arriverai !

_________________
Zoe Intens ZE22 84 000 km SOH : 86 %, zoe ZE40. 64 000 km SOH : 93 %  Zoe Intens ZE50 violet option CCS 93 000 km

jch
Modérateur

Messages : 5205
Date d'inscription : 16/03/2013
Age : 52
Localisation : Le Touvet 38660

Revenir en haut Aller en bas

CRO géré par ARDUINO Empty Re: CRO géré par ARDUINO

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum