Reprap Low-cost, Moteurs et co, Chapitre 7

Me revoici sur le chemin de la low-cost.

J'ai toujours un problème de précision, donc il me faut trouver un controleur de microsteping correct.

Et magique, je vois un ouverture: les pololu et les moteurs unipolaires passé en bipolaire passent plutôt pas mal.
Je pensais que cela ne donnerait pas assez de jus mais finalement c'est plutot pas mal du tout.


Donc ca veut dire que les chips Allegro peuvent fonctionner avec les moteurs pas cher.
Pour j'ai dit ca? Simplement car sur les sites dédiés on peut trouver des drivers Alegro (faible courant) dans les 4€ pièces soit avec les composants autour, peut être un driver pas trop cher au final.

Cela veut dire aussi souder des chips en boitier genre MSOP ci qui n'est pas un problème avec une plaque chauffante ou un four électrique.

Ouverture de parenthèse <
Je n'ai pas trop de temps mais ceci dit, j'aurais bien essayé de faire (ou réutiliser du code) de microstepping sous FPGA (pour ceux qui connaissent pas il y a toujours wikipedia ) ou CPLD. J'ai vu sur RS que les circuits FPGA et CPLD sont pas si cher que ca. Enfin bon, pour le moment on va se cantonner à du simple. Mais a mon avis il y a surement énormément à gagner à programmer sois-même son contrôleur.
> fermeture de parenthèse

Donc les moteurs ont l'air utilisable, c'est la conclusion de ce soir. Ya plus qu'a désiner des pièces adaptables tout-moteur, ce qui n'est pas si simple que ca.


Commentaires

  1. ah ouais, je viens de voir, t'es chaud! ^^
    ouais, moi je vais contrôler du PAP en analogique! la classe!

    RépondreSupprimer
  2. Toujours motivé!
    (faut juste avoir le temps ;) )
    En analogique? C'est à dire? En sinusoïde?

    RépondreSupprimer
  3. sur la photo de ton montage sur la bread board, tes connexions entre l'arduino et le pololu sont visiblement sur le circuit analogique de l'arduino, non?
    je connais mal les pins de la rev3, je vais regarder à quoi ils correspondent et je reviens.

    RépondreSupprimer
  4. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  5. dans le cas de ton montage, tu envoies au pololu ( http://wiki.shapercube.com/wagn/Pololu_A4983_Stepper_Driver_on_Breadboard ) la direction du moteur par la pins A3 et les pas par l'A4 de l'arduino UNO, c'est bien ça?

    RépondreSupprimer
  6. Attends attend, confondons pas tout. Les E/S AN..(1-X) sont pour des entrées analogiques, il me semble pas qu'il y ai de "sortie analogique" a proprement parlé.
    Non je les ai calé sur ces E/S par feignantise, j'ai récupéré du code.

    #define stepPin 26
    #define dirPin 28
    #define enablePin 24
    void setup()
    {
    // We set the enable pin to be an output
    pinMode(enablePin, OUTPUT);
    // then we set it HIGH so that the board is disabled until we
    // get into a known state.
    digitalWrite(enablePin, HIGH);
    Serial.begin(9600);
    Serial.println("Starting stepper exerciser.");
    pinMode(stepPin, OUTPUT);
    pinMode(dirPin, OUTPUT);
    }
    void loop()
    {
    int j;
    // set the enablePin low so that we can now use our stepper driver.
    digitalWrite(enablePin, LOW);
    // wait a few microseconds for the enable to take effect
    // (That isn't in the spec sheet I just added it for sanity.)
    delayMicroseconds(2);
    // we set the direction pin in an arbitrary direction.
    digitalWrite(dirPin, HIGH);
    for(j=0; j<=1000; j++) {
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2);
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    }

    digitalWrite(enablePin, HIGH);
    delay(1000);
    }

    Je crois que c'etait sur ce forum:
    http://forum.pololu.com/viewtopic.php?f=15&t=4453&start=75

    RépondreSupprimer
  7. Avec les pins changés: (je ne sais plus l'ordre, je ne suis pas la chez moi pour vérifier ;)

    #define stepPin 2
    #define dirPin 3
    #define enablePin 4

    RépondreSupprimer
  8. effectivement y a peut etre des choses que j'ai pas encore bien comprit sur l'arduino. Pour moi un arduino (disons le UNO) est composé de 14 E/S numériques et de 6 E/S analogiques. Mais je n'ai jamais tenté de faire sortir du courant par l'analogique mais ça me paraissait faisable. Il est fort possible que j'ai tors.

    RépondreSupprimer
  9. Non non, tu ne t'es pas trompé!!
    En fait pour ce genre de sortie, tu utilises (du moins a ma connaissance) du PWM et tu lisses à base de condo et de bobine.
    Donc non tu n'as pas tors rassure toi, c'est possible mais c'est pas direct ;)

    RépondreSupprimer
  10. j'ai pas encore trouvé d'infos sur des montages qui exploitaient la partie analogie en sortie, la plupart des cas l'utilisent en entrée pour mesurer des resistances. Et quand ils ont besoin de générer une tension de sortie différente du 5V, effectivement ils exploitent la fonction PWM des sorties DIgitales.

    du coup pour attaquer le pololu, tu exploites quelles pins de l'arduino?

    parce que je suis tombé là dessus il y a un moment et je me questionne quand au capacité des Analog IN
    http://www.youtube.com/watch?v=30rPt802n1k
    http://hlt.media.mit.edu/?p=1229

    RépondreSupprimer
  11. En fait on s'en fout un peu de quel pin on utilise au final. J'utilise juste une sortie logique standard sans option particulière.

    Il est vachement bien ton petit lien, je viens de decouvrir que l'attiny45 avait 2 sorties PWM, ce qui est bon a savoir.

    Par exemple c'est un circuit super simple pour une appli robotique pour enfant du genre 2 moteurs et une entrée analogique comme un capteur de lumière, etc...
    Décidement les pic sont vraiment pas terrible face aux atmel ;)

    Le pololu marche par impulsion logique, dans un dernier post sur l'emulation d'un pololu par un pic tu trouveras le schema qui montre le fonctionnement d'entrée.
    Ensuite il suffit d'envoyer le bon signal en entrée.

    Je sais pas ou tu en ai de l'arduino, tu as l'air de gérer mais dans le cas ou tu serais pas a l'aise avec les entrées analogiques:

    Si tu veux t'entrainer, je te conseille de tester in situ les librairies arduino: http://arduino.cc/en/Tutorial/AnalogInput par exemple.
    Mais le mieux serait que tu jetes un coup d'oeil à un montage interne (bloc diagram) d'un microcontroleur. Par exemple pour l'Attiny45:
    http://embeddedsystemnews.com/images/embedded/2009/05/attiny87-blockdiagram.jpg

    Regarde le bloc ADC (Convertisseur analogique digital), c'est lui qui te traduit l'analogique (souvent sur 10bits) en digital, en gros tu coupe en 2^10=1024 valeurs to signal de reference (sans ajustement de 0 à 5V) et la valeur s'actualise dans un registre de stockage (tu as les timers qui cadensent le rafraichissement il me semble - a verifier- ).
    Donc deux facons de recuperer les valeurs:
    - si tu es bourrin: tu checkes les valeurs dans ton loop() sous arduino
    - si tu es filou tu utilises des interruptions (ce sont des déclencheurs très utiles -suivant des timers, modification logique d'entrées, front montant, reactualisation de certains registres, etc... ), qui dans notre cas se déclanche à chaque réactualisation de l'ADC.

    Voilou, j'espere que ca t'aide out te donne au moins assez de mots clefs pour t'instruire sur le net.

    RépondreSupprimer
  12. Ok, merci, en effet ça me donne plein de choses à donner à manger à google.

    c'est sûr que dans ton cas, les deux sorties PWM d'un ATTiny45 ou 85 sont intéressantes. Et je comprends parfaitement l'utilité de ce type de puce pour des petits montages. Par contre visiblement il est difficile à trouver, plein de sites sont en rupture...

    concernant mon niveau en arduino, j'apprends... et non, je gère pas tant que ça, (je comprends mal voire pas du tout le diagramme de l'Attiny87 par ex.)
    pour l'instant je suis capable de lire un code simple et je comprends quelques fonctions de base. Je vais d'ici peu attaquer la rédaction de mon programme qui gèrera complètement la machine et pour ça, je vais demander de l'aide à un pote développeur. Il me manque beaucoup de notions de gestion du programme et de ces différentes fonctions. j'ai testé gentiment en faisant du copier coller grossier des codes que j'ai trouvé sur le net appliqués aux modules que j'aurais à gérer.

    j'avais lu effectivement des choses sur les interruption, mais c'est un poil trop abstrait pour moi pour l'instant, je capte que ça peut avoir un intérêt (et j'en aurais très certainement besoin) mais concrètement j'ai du mal à voir comment le mettre en application.
    Dans mon cas, il me semble que c'est ce que j'aurais à faire pour "écouter" l'état de mes boutons qui me serviront à définir le type de process à effectuer.

    RépondreSupprimer
  13. Il y a un site avec des frais de ports pa cher http://www.myavr.fr/fr/microcontroleurs/63-attiny45-dip.html ou tu trouveras une partie de ton bonheur pour les attiny et les atmega644 si tu en cherches.

    Du copié collé? Ben c'est clair que c'est le meilleur moyen de comprendre au début.

    Les interruptions c'est pas si terrible, et oui tu as raison de penser à ca pour "écouter" l'état de tes boutons.
    En fait pour être honnête, tu verras l'utilitée quand tu commenceras a te dire: mince, en fait mon microcontroleur est vachement lent, qu'est-ce que je peux faire pour améliorer la rapidité de mes executions.
    Avant ce point la, tu peux toujours t'en sortir en faisant des trucs bourrin dans ton main ( ou loop() chez arduino)

    Hesite pas à m'envoyer des mails si tu as des soucis, ca sera avec plaisir.

    RépondreSupprimer

Enregistrer un commentaire

Posts les plus consultés de ce blog

L'art de la récup

Huxley Techzone: la fin et l'enterrement du projet...

[Tuto] : ISP d'un atmega 644 avec un UNO