Bonjour,
J'aimerai pouvoir controller un servo moteur 360° avec un Attiny85.
J'ai testé mon montage avec Arduino uno, tout fonctionne correctement en utilisant la librairie servo.h.
Je suis donc passé sur l'attiny, j'ai du changer de librairie car servo.h n'était pas compatible avec l'attiny85. J'ai donc utiliser: Servo8Bit.
J'ai également repéré les sorties PWM j'en utilise ici 2 sur les 3 dispos (j'ai deux servos a commander) la 1 et la 0.
J'ai vérifié que j'arrivai à programmer l'attiny 85 avec mon arduino Uno, j'en ai profité pour vérifier la correspondance des pins avec leur numéro dans l'ide.
J'ai ensuite charger le code suivant:
#include "Servo8Bit.h"
Servo8Bit servo1;
Servo8Bit servo2;
// the setup function runs once when you press reset or power the board
void setup() {
servo1.attach(0);
servo2.attach(1);
}
// the loop function runs over and over again forever
void loop() {
servo1.write(180); //Spin in one direction
delay(2000);
servo1.write(90); //stop
delay(2000);
servo1.write(0); //Spin in one direction
delay(2000);
}
...mais ca ne fonctionne pas .... je ne comprends pas...
Il faudrait regarder avec un analyseur logique (clone de Saleae, moins de 10 € sur Ali, outil indispensable) ou un oscillo (bien plus cher) si les signaux sont bien envoyés.
Refaire entièrement le câblage est plus efficace que rechercher une erreur dans le câblage
Ok merci mais apriori ce n’est pas un problème dans le code?
Au niveau du câble je n’ai rien changé par rapport à l’arduino uno je vais quand même le refaire pour être sûre.
Ou la librairie qui n'aime pas recevoir des angles supérieurs à la limite habituelle des servos plus classiques ? Essaye avec de plus petites valeurs...
Oui, mais c'est pour un vrai servo.
Là, on a affaire à un moteur à courant continu qui se pilote avec des commandes copiées sur celles des servo mais qui font des actions totalement différentes.
Ce "simili" servo répond t-il à la norme "officielle" 1ms--2ms ou à la norme "pratique" 0,5ms--2,5 ms ?
@orelbot
D'où provient ton Attiny ?
Est-il neuf, vierge de toute configuration ?
Les fuses sont-ils bien positionnés ?
J’ai acheté les attiny chez Otronic (Shop hollandais), concernant les servos ils viennent d’Aliexpress donc aucune idée. Mais en même temps que l’attiny j’avais acheté deux servo 360 sur le site hollandais je vais tester avec ceux la.
Sinon oui les attiny sont neufs, mais je les ai testé pour allumer des led et vérifier les sorties, elles sont correctement positionnées. J’ai également testé les sorties pwm avec des led ( on fait avec les moyens disponibles).
Je vais commander un oscilloscope ou un analyseur logique, vous en auriez à conseiller plutôt sur Amazon pcq sur AliExpress j’en ai pour 1 mois d’attente…
J’ai trouvé celui ci à un prix raisonnable: [Kit osci](Kit D'oscilloscope Numérique, Oscilloscope Numérique, Kit D'oscilloscope Portable Portable à écran LCD 150 0200 KHz avec Test, Oscilloscopes de Laboratoire Scientifique https://amzn.eu/d/9OtR47C)
Et celui ci
[Analyseur](AZDelivery Logic Analyzer 8 CH 24 MHz avec câble USB compatible Arduino avec eBook inclus https://amzn.eu/d/4O7GO6D)
Un servo 360° donc à rotation "continue" se commande comme un servo normal, sauf que la largeur d'impulsion du signal PWM, qui dans le cas d'un servo normal définit sa position, dans le cas d'un servo 360° définit sa vitesse de rotation.
Donc, par analogie,
est aussi valable.
Oui, si l'on substitue un servo normal à un servo 360°, si le manche de la télécommande est au milieu, le moteur 360° sera arrêté.
Bonsoir orelbot
Pour ce qui est de l'oscillo, je n'utilise quasiment que celui-ci, mai je ne fais presque que de l'Arduino.
Pour l'analyseur logique, c'est aussi un excellent outil et suffisant.
Là, on a affaire à un moteur à courant continu qui se pilote avec des commandes copiées sur celles des servo mais qui font des actions totalement différentes.
Ce que je dis c'est qu'il y a deux normes pour l'amplitude de la durée de l'impulsion :
la norme historique 1 ms à 2 ms
la norme "qu'on trouve sur Aliexpress" qui est plus étendue tout en conservant le point milieu à 1,5 ms.
Tant que le "servo" ne remue pas, c'est secondaire, j'en conviens, mais quand il tournera il sera préférable de le savoir............
Les temps min et max retenus par la bibliothèque se trouvent dans les fichiers de la bibliothèque, qu'il faut donc ouvrir. L'usage des angles est à déconseiller, car il n'est valable QUE pour les servos 180°.
Oui, mais en CI nu ou en module prêt à l'emploi ?
As-tu lu l'article que j'ai indiqué ?
Dans cet article ils rappellent qu'un micro qui sort des usines Microchip est positionné (par le réglage des fuses) pour fonctionner sur son oscillateur interne (8 MHz) et avec le diviseur d'horloge par 8 en service. Ce qui fait que le micro tourne réellement à 1 MHz.
J'ai parcouru vite fait l'article, ils écrivent qu'à 1 MHz la bibliothèque servo ne fonctionne pas, ce qui n'est pas surprenant.
Donne tous les renseignements sur ton matériel.
Lien vers le site marchand : indispensable pour mieux comprendre de quoi on parle.
As tu été obligé de graver un bootloader ou le module était prêt à l'emploi ?
Si tu peux charger le "blink.ino", c'est que tu as bien un bootloader.
Si dans le blink tu mets un délai d'une seconde et qu'en réalité cela fait 8 ou 16 seconde, c'est que le micro est resté sur Fh= 1 MHz.
Si delay(1000) fait réellement 1 s, c'est que le problème est ailleurs.
C'est simple à vérifier.