Pages: [1]   Go Down
Author Topic: Project 001 Solari flip clock  (Read 1548 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is my first project:


I own this Solari flip clock but it is a secondary clock, not a stand alone. So it needs a signal to drive the electric motor.
This motor drive the minute dot, all the remaining flip number and text is driven by gear and mechanic.





Each 2 minutes, a position sensor is on, so I drive the motor for the first minute (about 400ms) and wait for the sensor information for the other minute.

I have an Uno and a shield with a relay to drive the 220V motor.




Code:
/*
Horloge "suiveuse" à palettes type Solari, un fin de course passe
à 1 toutes les 2 secondes, son information sert à recaler
le pilotage du moteur.

Pilotage d'un relais 5V pour le moteur, avec transistor NPN 2N2222
voie 2 puis résistance de 10k sur Base,
bobine entre + et Collecteur
Emetteur au 0V
diode 1N4001 anti retour en parallèle sur bobine relais
Moteur de l'horloge 220V sur le contact NO du relais
*/

int relais = 2;// pilotage du moteur de l'horloge
int fdc = 3; //fin de course toutes les 2 minutes
int long valeur;
unsigned long tempsactuel;
int long decalage;
int long correction = 0;

void setup(){
  pinMode(relais, OUTPUT);// voie 2 en sortie
  pinMode(fdc, INPUT);// voie 3 en entrée
// test  Serial.begin(9600);
    }

void loop() {
  // première minute
   tempsactuel=millis();
    digitalWrite(relais, HIGH);  // relais piloté
  delay(400); // temps nécessaire pour faire un demi tour
  digitalWrite(relais, LOW); // relais au repos
  delay(59600 + correction); // attente pour faire une minute
 // test     Serial.println("une minute");
 
  // deuxième minute avec utilisation du fin de course
 
   digitalWrite(relais, HIGH);  // relais piloté
   valeur=0;  // attente du fin de course
     while(valeur==0){
     valeur = digitalRead (fdc);
     Serial.println(valeur);
     }
   digitalWrite(relais, LOW); // relais au repos
   
   // recalage sur l'horologe "millis"
   decalage = millis()-tempsactuel;
 
   if (decalage<120000){  //si il ne s'est pas écoulé 2 minutes
   delay(120000 - decalage); // attente pour complèter
   correction = 0; // pas de correction sur la première minute
   }
   else{  // si il s'est écoulé plus de 2 minutes
   correction = 120000 -decalage; //correction nécessaire sur la première minute
   if (correction <-59600 ){ // ne peut dépasser cette valeur
     correction =-59600; // pour éviter un "delay" négatif
   }
   }
 // test   Serial.println(millis() % 60000);
 // test   Serial.println(decalage);
 
  // test  Serial.println(correction);
 
}
 
 

As it is only for demo purpose, I don't care about the "49 days limit" for the millis.

Logged

Stone age was not finished due to a lack of stones

paris
Offline Offline
Newbie
*
Karma: 0
Posts: 2
je parle francais
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j have a 5 cifra slave, you sell the implusion minutes?
Logged

paris
Offline Offline
Newbie
*
Karma: 0
Posts: 2
je parle francais
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Traduction
j have a clock solari model udine 5 cifra slave, you sell the implusion to run it without the master clock?
Logged

Pages: [1]   Go Up
Jump to: