Aller au contenu

Messages recommandés

Posté
il y a 4 minutes, JMDSomme a dit :

Le voltage typique des servo est 6V je crois... avec 5 ça doit tourner ?

Pas de souci : le moteur de son côté n'aura pas de difficultés 

Et le potar... bin pareil

 

En fait le module va même permettre d'alimenter l'arduino avec sa régul

Ça évitera de pomper sur l'usb si on veut.

Posté
Posté
Il y a 3 heures, JMDSomme a dit :

Ca a l air cool, pas se gourer en programmant un court circuit. Mettre un petit delay avant inversion ?

Hein ?

Posté
il y a 23 minutes, gehelem a dit :

Hein ?

vu que ça peut commander deux moteurs CC (ou 1 stepper), je suppose que tu utilises un canal pour chaque sens de rotation ? du coup j'imagine qu'on doit pouvoir mettre le bidule en court jus? Ou j'ai rien compris au principe .... +/-  -/+ pfffft ?

Posté
il y a 8 minutes, JMDSomme a dit :

vu que ça peut commander deux moteurs CC (ou 1 stepper), je suppose que tu utilises un canal pour chaque sens de rotation ? du coup j'imagine qu'on doit pouvoir mettre le bidule en court jus? Ou j'ai rien compris au principe .... +/-  -/+ pfffft ?

Un signal pour le sens  (genre 0v = CW 5v =CCW)

Un signal pwm pour la vitesse.

Je ne vois pas trop de risque de se gourer

Posté

j'ai pas du piger bien, j'en suis toujours aux concepts "électro mécanique"... 

Donc:  tu utilises les deux sorties moteurs ou une seule?

Posté
Le 01/05/2019 à 10:36, JMDSomme a dit :

j'ai pas du piger bien, j'en suis toujours aux concepts "électro mécanique"... 

Donc:  tu utilises les deux sorties moteurs ou une seule?

Une pour le moteur

Et une pour le panneau EL

C'est justement ce que je trouve intéressant 😁

Mais pour le panneau EL je pense mettre une petite diode, histoire de ne pas risquer de l'alimenter à l'envers 

 

Allez zou 

20190501_113057.thumb.jpg.d8aec957dac7ec55e844c6dfa1b3ace6.jpg20190501_113224.thumb.jpg.9753bc4d70e02f4bae1be257ff77a173.jpg

  • J'aime 1
Posté

Je vois que tu protèges la table du salon.

C'est bien!  ;) la mienne a des traces de fer à souder....

 

Ok, je comprends l'intérêt du double régulateur.

  • Comme je me gausse! 1
Posté

contrôle du moteur en PWM via pont = OK

 

bon, ça y est j'ai tout coté montage :

- le moteur en pwm

- le retour du potentiomètre

- le panneau EL qui marche en dimm

Tout fonctionne en test unitaire,

Petite réserve sur le dimm du panneau, dont l'intensité monte par moments par paliers

Mais ça me parait acceptable (je pense que le pwm doit induire des trucs bizarres avec la régul HT du machin)

 

Reste "plus qu'à" coder l'arduino comme il faut

 

Edit = test d'alim du panneau à 5v = OK 😉

 

  • Merci / Quelle qualité! 1
Posté
il y a 3 minutes, JMDSomme a dit :

le "dimm" du panneau: c'est utilisable avec de simples leds ?

Ah voui

  • Merci / Quelle qualité! 1
Posté

Trop cool!

Que la luminosité monte en paliers ne me semble pas trop grave.

Le flat wizard lui aussi procède par paliers et s'adapte à la luminosité, tant qu'elle n'est pas trop violente.

 

Posté

Oui, on verra bien

Il me tarde d'essayer en vrai parceque la tambouille ça va bien 5mn

Et pi va falloir repasser à freecad, je vais encore suer...

Posté

 

 

Le 30/4/2019 à 08:36, JMDSomme a dit :

J'ai pas encore pigé, sur SGP, comment automatiser la calibration des flat

 

As tu essayé de refaire tes flats avec la méthode que je t'ai indiqué hier matin ?

Posté

@Discret68

Salut, désolé je vois que je n'ai pas réagi à ce message et... j'avais mal exprimé ma question...

En fait, pas de soucis, j'utilise correctement le flat calibration wizard.

 

Ce que je ne sais pas faire c'est demander à SGP de dérouler cette calibration en automatique dans une séquence... 

Ca ne m'est nécessaire que pour une cause stupide: mon écran flat est doté d'un dimmer, réglable par un petit potar, il est donc impossible d'une fois à l'autre de retrouver la même luminosité, du coup calibration à chaque fois....

C'est pour ça d'ailleurs que j'insiste auprès de Gehelem pour qu'il nous sorte un truc avec genre deux positions (réglables une fois pour toutes) de luminosité, de sorte qu'ensuite on ait juste à inclure les flats dans la séquence en connaissant déjà le temps de pause nécessaire pour chaque filtre.

Cela suppose entre autres qu'on ait un voltage bien stable à l'entrée du panneau.

Posté (modifié)

Hello tous,

 

Je confirme, un variateur continue ça complique la vie.

deux positions, une forte, une faible, c’est bien plus effficace.

 

j en profite pour faire un compte rendu des tests fait hier avec un écran à flat vendu tout fait

il s’agit de la référence suivante :

 

https://www.telescopes-et-accessoires.fr/fr/autres-accessoires-pour-l-imagerie/832-feuille-a-flat-gerd-neumann-aurora-avec-alimentation.html#/tensionentree-12v/gnaurora-d160

 

j ai démonté le truc pour voir comment c’est fait, il y a à l’intérieur une bête feuille électro luminescente.

il est fourni avec un transfo, il rentre du 12v et sort du 130v pour alimenter l’écran.

il y a deux positions dessus, la première allume l’écran de manière fixe la deuxième le fait clignoter... je ne vois pas bien l’intérêt 🤔

 

globalement je trouve que c’est  assez cher pour ce que c’est... 

 

Les tests :

 

En LRVB à la tension native c’est trop fort.

je dois descendre à 0,026 secondes pour être aux 2/3 de l histo.

Avec ma cam (zwo1600) pas de pbm à descendre aussi bas car je n’ai pas d’obturateur mécanique. 

Avec un APN par contre je ne pense pas que ce soit possible.

par contre j’ai ça comme résultat 😬

 

2A7313B5-04AA-44A1-A2DD-92F73A5B296D.thumb.jpeg.f68cde81e19c048a93973dfacb72f7f6.jpeg

 

apparement ca vient de la feuille EL qui ne donne pas un vrai flux de lumière continu...  

 

ayant un step down opérationnel, j’ai tenté de dimmer l’écran. Ça fonctionne jusqu’à 5v, en dessous ça clignote.

Et a 5v j obtient de bons flat avec 0.11s de pose en L.

 

En Narrowband c’est une autre histoire, à la tension native (12v et je présume le maxi je ne tenterais de lui envoyer plus...)

je dois faire des poses de 22 seconde en SII et 13 secondes en Ha 😐

C’est clairement pas assez fort, bon faut aussi savoir que mes filtre SHO sont en 3nm...

 

En l’état, je ne vais donc pas échapper aux   darks de flat...

 

Bilan :

 

- les feuilles EL ça marche bien et ça a l’air d’être facilement dimmable.

Avantages : flux lumineux homogène, facile à mettre en œuvre

Inconvénients : trop faible pour les narrowband, et faire attention à ne pas devoir descendre trop bas sur les temps de poses LRVB, sinon flats pourri

 

- Les LED c’est plus performant, car on peut en mettre autant qu’on veut et baisser la luminosité en dimmant. C’est plus pratique pour les setup SHO. L’inconvénient principal, pour avoir essayé, est que c’est compliqué à mettre en œuvre. Obtenir un flux uniforme sur tout l’écran est plus difficile qu’on le pense. La soluce a laquelle j’avais pensé (pas essayé) est d’orienter les led vers un panneaux réfléchissant, genre feuille blanche matte, et qui revient vers l’instrument. En gros ne pas mettre les led en direct face à l’instrument, ni sur les côtés de manière perpendiculaire (c est ce que j’ai testé).

 

- chaque setup étant différent, APN, Cam, filtres plus ou moins étroits. Il faudra que chacun adapte la soluce à sa sauce... un peu comme pour tout en Astro 😬😬😬

 

Voilavoila

M

Modifié par Malik
Posté

@Malik tes bandes ne partiront pas avec des darks, il te faudrait des flats de flats....

en fait il suffit de modifier un peu ton réglage de luminosité pour que le temps de prise de vue soit plus long que la vitesse de clignotement qui est due au hachage du courant (plus économique en énergie qu'une résistance mais casse burne...).

Je partage ton point de vue sur le prix de ces trucs... le mien (je crois Lacerta) c'est un (trop gros) tambour dont l'intérieur est blanc et le fond tapissé de ruban led, avec un variateur très con .

Je pense récupérer le plexi blanc qui est de très bonne qualité et épais et, réduisant le diamètre, concentrer au max les leds et faire une double diffusion (en tirant deux ronds de plexi dans la surface de celui d'origine...), je pense qu'ainsi j'aurais un truc homogène. 

Ensuite faut être capable de lui donner deux valeurs de luminosité bien stables et reproductibles d'une session à l'autre.

Posté (modifié)

Tu n’as pas tout lu, ou je n’ai pas été clair 😘

 

Pour les LRVB jai réussi à obtenir des flats  sans ces bandes. En dimmant à 5v et donc   en baissant la luminosité. 

 

Cest pour les SHO que j’aurais besoin de darks, car je ne peut pas augmenter la luminosité, je n’ai pas le choix de faire des poses de plus de 20sec. Ce qui va générer du bruit capteur sur les flats. Faudra donc des darks à température et temps dexpo équivalent aux flats pour retirer tout ça.

Modifié par Malik
  • Snif, c'est trop triste 1
Posté
il y a 3 minutes, gehelem a dit :

et en mettant ton gain au taquet ??

 

pas essayé et pas forcement envi sur les ZWO1600 ya un reglage optimisé unity gain a 139,

je suis calé la dessus c'est clairement pas un truc auquel j'ai envi de toucher, car aucune idée des consequences sur le bruit la profondeur de bit etc...

Posté

J'ai repris le schéma en partant sur l’utilisation d'un double pont en H.

J'ai pris un L293D que j'avais sous la main.

essayé en vrai mais pas pris de photo donc voilà le schéma.

Par comme j'ai du led 12V j'ai pris une alim externe en 12V.

Si on veut rester sur du 5V il suffit de remplacer l'alim externe par un fil du +5V et de la mettre sur le pin alim 2 du L293D (celui en bas à droite sur l'image).

 

Pour le code, très peu de modif par rapport à l'initial.

Révélation

 

/*
What: LEDLightBoxAlnitak - PC controlled lightbox implmented using the
    Alnitak (Flip-Flat/Flat-Man) command set found here:
  http://www.optecinc.com/astronomy/pdf/Alnitak Astrosystems GenericCommandsR3.pdf

Who:
    Created By: Jared Wellman - jared@mainsequencesoftware.com

When:
    Last modified:  2013/May/05


Typical usage on the command prompt:
Send     : >S000\n      //request state
Recieve  : *S19000\n    //returned state

Send     : >B128\n      //set brightness 128
Recieve  : *B19128\n    //confirming brightness set to 128

Send     : >J000\n      //get brightness
Recieve  : *B19128\n    //brightness value of 128 (assuming as set from above)

Send     : >L000\n      //turn light on (uses set brightness value)
Recieve  : *L19000\n    //confirms light turned on

Send     : >D000\n      //turn light off (brightness value should not be changed)
Recieve  : *D19000\n    //confirms light turned off.
*/

#include <Servo.h>
Servo myservo;

#include <EEPROM.h>
int position_cap;

volatile int ledPin   = 11;      // the pin that the LED is attached to, needs to be a PWM pin.
volatile int servoPin = 9;      // the pin that the servo signal is attached to, needs to be a PWM pin.
int brightness = 255;
const int closeAngle=0;        // Angle of the servo when the cap is close
const int openAngle=180;        // Angle of the servo when the cap is open
const int slowAngle=30;         // Angle of the servo for approach to close/open
int relais=7;

enum devices
{
    FLAT_MAN_L = 10,
    FLAT_MAN_XL = 15,
    FLAT_MAN = 19,
    FLIP_FLAT = 99
};

enum motorStatuses
{
    STOPPED = 0,
    RUNNING
};

enum lightStatuses
{
    OFF = 0,
    ON
};

enum shutterStatuses
{
    UNKNOWN = 0, // ie not open or closed...could be moving
    CLOSED,
    OPEN
};


int deviceId = FLIP_FLAT;
int motorStatus = STOPPED;
int lightStatus = OFF;
int coverStatus = EEPROM.get(position_cap,coverStatus);

void setup()
{
  // initialize the serial communication:
  Serial.begin(9600);
  // initialize the ledPin as an output:
  digitalWrite(10, HIGH);
  pinMode(ledPin, OUTPUT);
  pinMode(servoPin, OUTPUT);
  pinMode(relais, OUTPUT);
  digitalWrite(relais, LOW);
  analogWrite(ledPin, 0);
  myservo.write(closeAngle);
  myservo.attach(servoPin,450,2500);  
}

void loop()
{
  handleSerial();
}


void handleSerial()
{
  delay(100);
  if( Serial.available() >= 5 )  // all incoming communications are fixed length at 6 bytes including the \n
  {
    char* cmd;
    char* data;
    char temp[10];
    
    int len = 0;

    char str[20];
    memset(str, 0, 20);
    
    // I don't personally like using the \n as a command character for reading.  
    // but that's how the command set is.
  //  Serial.readBytesUntil('\n', str, 20);
  Serial.readBytes( str, 5);

    cmd = str + 1;
    data = str + 2;
    
    // useful for debugging to make sure your commands came through and are parsed correctly.
    if( false )
    {
      sprintf( temp, "cmd = >%s%s;", cmd, data);
      Serial.println(temp);
    }
    


    switch( *cmd )
    {
      /*
        Ping device
            Request: >P000\n
            Return : *Pii000\n
                id = deviceId
      */
      case 'P':
          sprintf(temp, "*P%d000\n", deviceId);
          Serial.print(temp);
          break;

      /*
        Open shutter
            Request: >O000\n
            Return : *Oii000\n
                id = deviceId

            This command is only supported on the Flip-Flat!
      */
      case 'O':
          sprintf(temp, "*O%d000\n", deviceId);
          SetShutter(OPEN);
          EEPROM.put(position_cap,OPEN);
          Serial.print(temp);
          break;


      /*
        Close shutter
            Request: >C000\n
            Return : *Cii000\n
                id = deviceId

            This command is only supported on the Flip-Flat!
      */
      case 'C':
          sprintf(temp, "*C%d000\n", deviceId);
          SetShutter(CLOSED);
          EEPROM.put(position_cap,CLOSED);
          Serial.print(temp);
          break;

      /*
        Turn light on
            Request: >L000\n
            Return : *Lii000\n
                id = deviceId
      */
      case 'L':
          sprintf(temp, "*L%d000\n", deviceId);
          Serial.print(temp);
          lightStatus = ON;
          analogWrite(ledPin, brightness);
          break;

      /*
        Turn light off
            Request: >D000\n
            Return : *Dii000\n
                id = deviceId
      */
      case 'D':
          sprintf(temp, "*D%d000\n", deviceId);
          Serial.print(temp);
          lightStatus = OFF;
          analogWrite(ledPin, 0);
          break;

      /*
        Set brightness
            Request: >Bxxx\n
                xxx = brightness value from 000-255
            Return : *Biiyyy\n
                id = deviceId
                yyy = value that brightness was set from 000-255
      */
      case 'B':
          brightness = atoi(data);    
          if( lightStatus == ON )
              analogWrite(ledPin, brightness);   
          sprintf( temp, "*B%d%03d\n", deviceId, brightness );
          Serial.print(temp);
        break;

      /*
        Get brightness
            Request: >J000\n
            Return : *Jiiyyy\n
                id = deviceId
                yyy = current brightness value from 000-255
      */
      case 'J':
        sprintf( temp, "*J%d%03d\n", deviceId, brightness);
        Serial.print(temp);
        break;
      
      /*
        Get device status:
            Request: >S000\n
            Return : *SidMLC\n
                id = deviceId
                M  = motor status( 0 stopped, 1 running)
                L  = light status( 0 off, 1 on)
                C  = Cover Status( 0 moving, 1 closed, 2 open)
      */
      case 'S':
        sprintf( temp, "*S%d%d%d%d\n",deviceId, motorStatus, lightStatus, EEPROM.get(position_cap,coverStatus));
        Serial.print(temp);
        break;

      /*
        Get firmware version
            Request: >V000\n
            Return : *Vii001\n
                id = deviceId
      */
      case 'V': // get firmware version
          sprintf(temp, "*V%d001\n", deviceId);
          Serial.print(temp);
          break;
    }    

    while( Serial.available() > 0 )
        Serial.read();
            

  }
}

void SetShutter(int val)
{
  if( val == OPEN && coverStatus != OPEN )
  {
    digitalWrite(relais, HIGH);
    for (int angle = closeAngle; angle <= closeAngle + slowAngle; angle+=1) 
    {
      myservo.write (angle);
      delay (70);
    } 
    myservo.write (openAngle - slowAngle);
    for (int angle = openAngle - slowAngle; angle <= openAngle; angle+=1) 
    {
      myservo.write (angle);
      delay (70);
    } 
    coverStatus = OPEN;
    digitalWrite(relais, LOW);
    // TODO: Implement code to OPEN the shutter.
  }
  else if( val == CLOSED && coverStatus != CLOSED )
  {
    digitalWrite(relais, HIGH);
    for (int angle = openAngle; angle > openAngle - slowAngle; angle-=1) 
    {
      myservo.write (angle);
      delay (70);
    }   
    myservo.write (closeAngle + slowAngle);  
    for (int angle = closeAngle + slowAngle; angle > closeAngle; angle-=1) 
    {
      myservo.write (angle);
      delay (70);
    } 
    coverStatus = CLOSED;
    digitalWrite(relais, LOW);
    // TODO: Implement code to CLOSE the shutter
  }
  else
  {
    // TODO: Actually handle this case
    coverStatus = val;
  }
  
}

 

 

Olivier

flip flat L290D 12V servo.jpg

  • Merci / Quelle qualité! 2
Posté
Le 2/5/2019 à 08:38, JMDSomme a dit :

Ce que je ne sais pas faire c'est demander à SGP de dérouler cette calibration en automatique dans une séquence... 

Ca ne m'est nécessaire que pour une cause stupide: mon écran flat est doté d'un dimmer, réglable par un petit potar, il est donc impossible d'une fois à l'autre de retrouver la même luminosité, du coup calibration à chaque fois....

 

Si j'ai bien compris, il faut que tu tournes le potentiomètre pour mettre en route le panneau flat ? Ou c'est quand tu changes de filtre (LRVB ou SHO) que tu es obligé de changer la luminosité ?

De toute façon, dans les 2 cas, tu n'as pas de "mémorisation" de position, donc flats à chaque modification.

 

As-tu accès au potentiomètre ? L'idée est de le remplacer par des ponts de résistances avec un inverseur manuel ou un relais commandé (par l'Arduino par exemple) pour sélectionner le pont de résistances.

Pour faciliter les réglages, une des résistances supérieures (R1 ou R3) de chaque pont peut être remplacée par une résistance fixe et une résistance ajustable, ce qui permet de régler la luminosité sans être obligé de remplacer les résistances par d'autres pour arriver à la bonne valeur.

 

Il faut simplement relever (ou mesurer) la valeur du potentiomètre et mettre, pour chaque pont, des résistances dont la somme (ex R1 + R2) équivaut au mieux à la valeur du potentiomètre.

Par exemple, si ton potentiomètre se trouve à 1/3 de rotation, et qu'il fait 10 Kohms, il faut mettre une résistance R1 de 3,3 Kohms et une R2 de 6,8 Kohms.

56131911_Schmapotentiomtreetrsistances.jpg.08e7c6bb18a53fec878ce9c87833bca5.jpg

Posté

@Discret68 c'est exactement ça, y compris la solution

ce qui serait parfait serait de pouvoir contrôler ça de puis sgp dans le même bidouillage que le contrôle du flip flat !

l'ardu qui contrôle la mise sous tension de l'un ou l'autre circuit et e scrip sgp qui va bien pour lui dire quand il faut l'un ou l'autre réglage selon les filtres...

je sais, je suis exigeant !  :cry:

Posté

Avec SGPro, il est possible de lancer un script VBS avant et après la réalisation d'un événement dans une séquence.

Dans mon système, j'ai créé des scripts VBS qui me permettent d'activer et de désactiver les relais (au choix) de l'IPX800. Il est possible de créer un événement "Flat" dans la séquence d'acquisition, et de lancer en amont de la réalisation (pre-event), le script VBS qui allume le panneau flat. Le script VBS que j'utilise me permet également de positionner la monture avec le tube horizontalement en vis-à-vis du panneau flat puisque chez moi, il est accroché au mur de l'abri. C'est un panneau qui fait 60cm de coté ! A la fin des flats, on lance un script VBS (post-event) qui éteint le panneau flat et qui peut mettre si besoin la monture dans une autre position.

 

N'utilisant pas d'Arduino pour le moment, je ne sais pas comment on pilote l'activation/désactivation d'un relais connecté sur l'Arduino via un script VBS lancé par SGP. Néanmoins, je suppose que ça doit être faisable. Il "suffit" de créer un script par niveau de lumière du flat (c'est simplement le numéro de la sortie à activer/désactiver qui est différent). Et chaque script est dupliqué pour l'arrêt du panneau flat en désactivant le relais correspondant.

 

A titre d'exemple, voici un script VBS qui me permet d'activer un relais de l'IPX800 :

 

Dim aXMLHTTP, aURL
aURL = "http://192.168.1.32/preset.htm?led5=1"
Set aXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Call aXMLHTTP.Open("GET", aURL, False)
Call aXMLHTTP.send
Set aXMLHTTP = Nothing

 

C'est la ligne aURL = "http://192.168.1.32/preset.htm?led5=1" qui permet d'activer un relais. Il faudrait trouver la commande (ou les commandes) qui permet de faire la même chose mais avec un relais connecté sur l'Arduino.

Posté

Yes.... sauf que là moi j'ai décroché depuis des lustres !

Il y a un tuto sur les scripts de sgp ? un truc pour piger le langage et tenter des choses ?

 

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.