Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)



  1. #1
    sylvainmahe

    Smile Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)


    ------

    Bonjour

    Pour que vous compreniez le sujet et mon intervention, je fait un bref récapitulatif de ma modeste expérience de l'électronique:

    J'ai donc débuté l'électronique amateur il y a 1 an, au départ je ne savais pas à quoi servait un condensateur, je suis donc parti de zéro.
    J'ai été comme un peu tout les amateurs qui ne savent pas par ou commencer au départ, j'ai téléchargé Arduino, puis au bout d'une semaine j'ai voulu savoir ce qu'il y avait derrière digitalWrite, et 2 ou 3 fonctions que j'avais utilisé au courant de cette semaine découverte. J'ai été voir la source et j'ai compris qu'il suffisait d'appliquer mes connaissances en programmation C++, de lire les 650 pages du datasheet du 328P, pour créer ma propre bibliothèque et me passer finalement d'Arduino. Voila en gros le résumé.


    Ceci étant dit, la bibliothèque étant maintenant terminée, je la met à disposition des internautes dans le but qu'ils puissent créer tout comme moi des projets assez complexes très facilement
    Voici donc ma bibliothèque (qui n'a pas encore de nom): https://archive.org/details/atmega32...y-sylvain-mahe

    Coté performances, ma bibliothèque est plus proche d'avr que d'arduino, par exemple, 1 million de pin toggling donne:
    AVR: 651ms
    ma bibliothèque: 753ms
    Arduino: 4550ms


    L'idée de ce topic est de comprendre qu'avec cette bibliothèque on peut en quelques lignes de programmation créer des choses.

    Vous devez déjà savoir programmer et linker une bibliothèque, avoir une petite idée de pourquoi se passer d'Arduino et qu'il faut AVR, mais dans l'idéal, le processus est:
    -télécharger la bibliothèque, décompresser les fichiers
    -avoir une carte arduino uno ou équivalent
    -avoir un programmateur (vous pouvez utiliser l'usbasp avec mes batchs windows ou linux inclus dans l'archive de la bibliothèque pour compiler)
    -avoir avr c d'installé sur votre ordinateur
    -avoir un servo-moteur et un potentiomètre sous la main

    J'ai créé une vidéo qui vous montre très exactement la procédure:



    Je recopie mon exemple ici (main.cpp):
    Code:
    #include "../library/Potentiometer.h"
    #include "../library/Servo.h"
    
    using namespace std;
    
    int main()
    {
    	Servo myServo = Servo (1, 1100, 1900);
    	Potentiometer myPotentiometer = Potentiometer (15);
    	
    	Servo::start (250);
    	
    	while (true)
    	{
    		myPotentiometer.state();
    		
    		myServo.pulse (myPotentiometer.curve (0, 1023, 1100, 1900, 0));
    	}
    	
    	return 0;
    }
    En premier, remplacer "library" par le dossier dans l'archive qui contient la bibliothèque, encore une fois je ne suis pas encore sûr du nom que je vais lui donner.

    A la déclaration de l'objet Servo, le premier paramètre est le numéro de la pin sur la carte (voir ma carte 328P en bas de ce sujet pour connaître la distribution des pins sur votre carte Arduino UNO par rapport à la mienne).
    On indique également 1100, c'est le débattement min du servo, et 1900 le max, voyez le datasheet de votre servo-moteur pour connaître ces débattements, ou faites des tests.

    A la déclaration de l'objet Potentiometer, on indique juste le numéro de la pin, ici la 15 c'est à dire PC0.

    Ensuite on démarre le servo-moteur avec Servo::start et on indique en paramètre la fréquence du servo en Hz. Ici c'est un savox qui va jusqu'à 250Hz.

    Dans la boucle principale on récupère l'état du potentiomètre avec state, sa correspond à connaître la tension en valeur 10 bit sur la pin PC0.

    Ensuite on indique une position de palonnier de servo-moteur avec pulse, on lui injecte avec la fonction curve du potentiomètre la tension sous la forme d'une valeur de 10 bit (0 à 1023) interpolé de 1100 à 1900 (les débattements en us de notre servo-moteur) tout cela avec une courbe linéaire (le 0 à la fin).


    Ensuite compilation avec le compilateur AVR et upload dans l'Atmega 328P avec le programmateur de votre choix, moi j'utilise l'usbasp, voir ici:
    http://www.fischl.de/usbasp/

    Et normalement ça fonctionne


    Photo pour comprendre la distribution des pins sur ma carte 328P faite maison en relation avec la distribution des pins de ma bibliothèque:
    DSC01789resized.jpg
    DSC01744resized.jpg
    DSC01771resized.jpg

    Question, avez-vous besoin du plan kicad de cette petite carte? Merci de me dire.



    Voila n'hésitez pas si vous avez des interrogations, d'autres sujets seront en relation avec celui la sur d'autres projets réalisés avec ma bibliothèque.


    -----

  2. #2
    sylvainmahe

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    .zip de ma carte 328P demandé par la modération en pièce jointe
    Fichiers attachés Fichiers attachés

  3. #3
    sylvainmahe

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    Photos de quelques projets en électronique que j'ai réalisé durant l'année
    http://sylvainmahe.xyz/forum/

  4. #4
    invite3a1051d7

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    bonjour,
    je debute en arduino je trouve ton approche super interessante et j'aime bien comprendre .
    peux tu nous dire comment tu construis une commande par un exemple (ici ou vers un lien )
    cordialement
    Alain

  5. A voir en vidéo sur Futura
  6. #5
    sylvainmahe

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    Oui effectivement je me suis dit que mon travail pouvait intéresser des gens, donc je me suis dit pourquoi pas le partager et en faire profiter...

    Tu aimerais un exemple de commande de quelle type, le plus simple, allumage d'une led par exemple? Et en Arduino ou avec ma bibliothèque?

  7. #6
    invite3a1051d7

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    ton travail est remarquable et je suis sur qu'il va faciliter la programmation de pas mal de programmeur (debutant ou pas ) mais parallelement ce qui m’intéresse c'est de comprendre comment creer une bilioteque
    par exemple comment as tu crée la commande servo de ta bilbliotheque

  8. #7
    sylvainmahe

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    Oui, je pense que le mieux serait de décortiquer ma classe servo (qui est liée à la classe private, donc également regarder dans private).

    Le but est de générer un signal pwm via un timer, et le mieux avec le timer 16 bits pour avoir assez de précision (pour un train rentrant d'avion on peut utiliser par contre un timer 8 bits si on veut...)

    Il faut regarder quelques exemples sinon sur internet tout en aillant en permanence en vue la lecture du datasheet du 328p partie timer/pwm.

  9. #8
    antek

    Re : Exemple/Tuto - Potar + Servo avec ma bibliothèque (sans Arduino)

    Le C++ me fait bailler, mais j'encourage ce genre de publication !

Discussions similaires

  1. Arduino + servo
    Par invitee053941d dans le forum Électronique
    Réponses: 11
    Dernier message: 27/07/2015, 20h09
  2. Servo moteur arduino
    Par invite1eb2a065 dans le forum Électronique
    Réponses: 5
    Dernier message: 17/02/2015, 16h47
  3. Gyroscope Gy-521 sur servo (arduino)
    Par invite736e85ea dans le forum Électronique
    Réponses: 1
    Dernier message: 18/01/2015, 20h59
  4. arduino dmx et servo moteur
    Par invitef3a0752e dans le forum Électronique
    Réponses: 1
    Dernier message: 25/09/2014, 17h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...