Nouvelles:

Le Forum est maintenant chiffré (préambule https). Bien sûr, des liens externes insérés dans les sujets vont demeurer inchangés. Mais la composition des pages du Forum est désormais sécurisée. Si des problèmes d'affichage surviennent, veillez à vider votre cache pour ce site.

Menu principal

Puce sans reference ou solution alternative

Démarré par cathodic, Février 23, 2025, 11:07:54 AM

« précédent - suivant »

cathodic

Citation de: philchamp51 le Mars 21, 2025, 06:30:08 PMPar contre, l'ATTiny85 n'est pas compatible broche à broche avec le circuit grillé.

Le circuit grillé a son VCC en pin1 et son GND en pin8, alors que l'ATTiny85 a son VCC en pin8 et son GND en pin4.

Il faudra que tu adaptes l'ATTiny85 sur le circuit imprimé avec des tous petits fils par exemple.

Le câblage se fera ainsi:

Circuit grillé      ATTiny85
Pin1                Pin8
Pin2                Pin2
Pin3                Pin3
Pin4                Pin1
Pin5                Pin5
Pin6                Pin6
Pin7                Pin7
Pin8                Pin4

Fais un essai et s'il y a un problème, dis-le moi (si ça fonctionne, dis-le moi aussi)
Philippe.
Bonsoir Phil,  Merci beaucoup. Oui les numéros des pins ne sont pas identiques. Je ferai un test et reviendrai aux nouvelles.

Bonne soirée.

cathodic

Bonjour Philippe,

Je suis parvenu à téléverser ton programme sur L'ATtiny85.

Pour l'essai j'ai branché le moteur en direct. J'ai retiré le poussoir de mise en service du moteur.

Dès que je branche le connecteur d'alimentation, une diode s'allume.

La pression sur un poussoir fait tourner le moteur. La pression sur le 2éme bouton le moteur s'arrête.

Ce fonctionne est-il dû au fait que le poussoir de mise en service du moteur a été Shunté?

Je ne connais pas C++ mais VBA. Dans ton code, j'ai bien compris au début tu déclares les variables.

Je pense que tu as fais une erreur en écrivant les lignes ci-dessous:

#define Motor1 4  // (Pin 6 du L9110 sur PB4 soit Pin 3 de l'ATTiny85) *ici c'est la Pin 7 de l'ATTiny85
#define Motor2 3  // (Pin 7 du L9110 sur PB3 soit Pin 2 de l'ATTiny85) *ici c'est la Pin 8 de l'ATTiny85

Le Vcc se trouve à droite donc pour qu'il soit sur la Pin 8, on doit le retourner par rapport au microcontrôleur original.

Normalement, les diodes ne s'allument à la mise sous tension mais à la pression sur leur bouton.
Sauf erreur de ma part.

pour téléverser le programme j'ai branché:
La Pin 8 de l'ATTiny85 à la Pin +5v de l'arduino
La Pin 7 de l'ATTiny85 à la Pin D13 de l'arduino
La Pin 6 de l'ATTiny85 à la Pin D12 de l'arduino
La Pin 5 de l'ATTiny85 à la Pin D11 de l'arduino
La Pin 4 de l'ATTiny85 à la Pin GND de l'arduino
La Pin 1 de l'ATTiny85 à la Pin D10 de l'arduino

Pour info, c'est la première fois que j'utilise un Arduino.

En attendant ton retour.

Bon week-end

philchamp51

Bonjour X (je ne connais pas ton prénom)

Tu as bien retiré les 2 straps que je t'avais dit de mettre sur l'emplacement du circuit grillé entre 2 & 7 et entre 3 & 6 ?

D'après ton schéma, le circuit grillé a son VCC en pin 1 et le GND en pin 8 donc l'ATTiny85 ayant son VCC en pin 8 et son GND en pin 4, on doit relier 1 à 8 et 8 à 4.

Sur l'ATTiny85, PB4 est en pin 3 et PB3 est en pin 2 (voir schéma joint)

Je viens de regarder de plus près le fonctionnement du L9110 et il fonctionne avec des commandes en PWM. Là est mon erreur. Je corrige le code et je reviens vers toi.

Philippe.


philchamp51

Alors, l'ATTiny85 ne possède que 2 pins en sortie PWM. Ce sont les pins 5 (PB0) et 6 (PB1).

Le code a été changé pour envoyer les infos PWM au L9110.

L'ordre des pins a changé:

#define Bouton1 5  // (Bouton poussoir 1 sur PB5 soit Pin 1 de l'ATTiny85)
#define Bouton2 3  // (Bouton poussoir 2 sur PB3 soit Pin 2 de l'ATTiny85)
#define Led1    4  // (Led 1 sur PB4 soit Pin 3 de l'ATTiny85)
#define Led2    2  // (Led 2 sur PB2 soit Pin 7 de l'ATTiny85)
#define Motor1  0   // (Commande moteur 1 sur PB0 soit Pin 5 de l'ATTiny85)
#define Motor2  1   // (Commande moteur 2 sur PB1 soit Pin 6 de l'ATTiny85)

Le câblage se fera ainsi:

Circuit grillé      ATTiny85
Pin1                Pin8
Pin2                Pin5
Pin3                Pin6
Pin4                Pin2
Pin5                Pin3
Pin6                Pin7
Pin7                Pin1
Pin8                Pin4

Fais un essai avec cela.
Philippe.

cathodic

#94
Rebonjour, je te remercie.

Cependant, n'y a-t-il pas un problème de valeur de tension Vcc pour l'attiny85.

Sur la puce initiale,la vcc était à droite sur la pin 1.

Maintenant, je dois souder l'attiny85 en le retournant de 180° mais à ce moment la tension sur la pin8 n'est plus vraiment la tension Vcc.
Elle est plus faible car il y a une résistance de 4.7k.
Penses-tu que cette tension est suffisante pour faire fonctionner correctement l'Attiny85.

Je vais peut-être devoir couper des pistes et faire de petits pontages.
sur le circuit une diode est reliée à pb5, la seconde à pb3,
un bouton à pb4, l'autre est relié à la pin8 (vcc de l'attiny85) ici peut-être couper la piste.

Bon un dessin vaut mieux qu'un discours. tu comprendras beaucoup mieux (ci-joint)

Je préfère faire les modifications nécessaires avant de refaire un test. J'ai eu du mal à souder la nouvelle puce.

Merci.

Elias

Edit: J'ai refait un schéma ci-joint. J'ai reporté le modification à faire pour adapter les pins par rapport au circuit imprimer de l'ancienne puce. Est-bon?

philchamp51

L'ATTiny85 fonctionne de 2,7V à 5,5V mais tu peux retirer la résistance de 4,7K, qui servait, à mon avis, à faire un pullup sur une entrée. Je les ai fait logiciellement sur les deux entrées de bouton.

Les deux diodes sont là pour protéger d'une inversion de polarité de l'alimentation. Laisse-les, cela va baisser la tension de 0,3V (diodes schottky), ce qui ne sera pas gênant.

Je t'ai déjà donné les connexions à effectuer:

Circuit grillé      ATTiny85
Pin1      vers      Pin8
Pin2      vers      Pin5
Pin3      vers      Pin6
Pin4      vers      Pin2
Pin5      vers      Pin3
Pin6      vers      Pin7
Pin7      vers      Pin1
Pin8      vers      Pin4

Oui, tu vas avoir à faire pas mal de changements sur le circuit imprimé, bon courage.

cathodic

Merci beaucoup, pour ton aide. Pour me faciliter la tâche, ci-joint ce que je vais faire sans casse.
J'ai aussi modifié dans ton programme le numéro des pins.
Stp, dis-moi si c'est bon.

philchamp51

Non, tu n'as pas bien lu mon message:

L'ATTiny85 ne possède que 2 pins en sortie PWM. Ce sont les pins 5 (PB0) et 6 (PB1).

Ce sont elles qui doivent être reliées au L9110, pas PB1 et PB2.

philchamp51

#98
Et supprimes la 4K7

cathodic

#99
Bonjour Philippe,

Désolé pour mon manquante d'attention. En effet, je n'avais pas bien lu.
Je n'ai pas un grand habitude de ces puces électroniques.
D'où mon incompréhension des abréviations utilisées pour les fonctions des pins.

Tu m'as indiqué que l'ATtiny85 possède 2 pins (5 et 6) en sortie PWM.
Qu'en est-il des autres pins?

Je joins un nouveau schéma, merci de me dire s'il est adéquat.
Car si je dois respecter à la lettre la correspondance des pins que tu m'avais donné précédemment.
Je serai obligé de faire un autre circuit imprimé.
Et, je ne suis pas équipé pour une telle réalisation.

Merci Beaucoup pour le partage de tes connaissances.

Bon dimanche.

edit: pour info, je vais souder l'Attiny85 dans le sens inverse à celui de la puce originale. ci-joint un pdf, dans lequel j'ai essayé de montrer ce que j'ai compris de l'ordre des pins.

philchamp51

Les autres pins (PB2, PB3, PB4 et PB5) sont des I/O (Input/Output), soit des entrées/sorties digitales ou analogiques. Les PB0 et PB1 sont aussi des I/O mais elles peuvent être aussi configurées en PWM (pulse wave modulation) qui sont des générateurs d'impulsions réglables en fréquence et en largeur d'impulsion.
Ce sont ces deux dernières qu'il faut pour contrôler le L9110 et c'est pourquoi on ne peut pas en prendre d'autres.

Pourquoi veux-tu absolument souder l'ATTiny85 sur le circuit imprimé ? Alors que 8 petits fils soudés sur le circuit imprimé d'un côté et de l'autre côté, les 8 fils soudés sur l'ATTiny85 t'éviterait de couper des pistes.

Le programme est défini comme ça:

#define Bouton1 5  // (Bouton poussoir 1 sur PB5 soit Pin 1 de l'ATTiny85)
#define Bouton2 3  // (Bouton poussoir 2 sur PB3 soit Pin 2 de l'ATTiny85)
#define Led1    4  // (Led 1 sur PB4 soit Pin 3 de l'ATTiny85)
#define Led2    2  // (Led 2 sur PB2 soit Pin 7 de l'ATTiny85)
#define Motor1  0  // (Commande moteur 1 sur PB0 soit Pin 5 de l'ATTiny85)
#define Motor2  1  // (Commande moteur 2 sur PB1 soit Pin 6 de l'ATTiny85)

Si tu veux intervertir des pins (sauf pour le moteur en 5 & 6 et l'alimentation en 4 & 8), tu dois modifier le programme en conséquence.
Dans ton Adaptation Schéma, tu as interverti Led1 & Led2 donc il faut modifier le programme comme ça:

#define Bouton1 5  // (Bouton poussoir 1 sur PB5 soit Pin 1 de l'ATTiny85)
#define Bouton2 3  // (Bouton poussoir 2 sur PB3 soit Pin 2 de l'ATTiny85)
#define Led1    2  // (Led 1 sur PB2 soit Pin 7 de l'ATTiny85)
#define Led2    4  // (Led 2 sur PB4 soit Pin 3 de l'ATTiny85)
#define Motor1  0  // (Commande moteur 1 sur PB0 soit Pin 5 de l'ATTiny85)
#define Motor2  1  // (Commande moteur 2 sur PB1 soit Pin 6 de l'ATTiny85)

cathodic

#101
Je te remercie pour tes explications.

En effet,8 petits fils feraient l'affaire. Mais je n'ai pas tous le nécessaire d'un électronicien.
De plus avec l'âge, la vue et la dextérité ont fortement baissées.
Réaliser des soudures sur une puce de surface, ça être dur pour moi.

Merci, je reviendrai aux nouvelles.

edit: Donc je peux utiliser les pins 1, 2, 3 et 7 comme je veux.
 c'est à dire soit pour les diodes ou pour les boutons poussoirs.
Et, adapter les numéros au sein du programme.

philchamp51

#102
De rien.

C'est sûr que la micro-électronique demande du matériel adapté.

Oui, tu peux utiliser 1, 2, 3, 7 comme tu veux en entrée ou sortie, à condition de les définir dans la partie setup du programme. Les boutons doivent être définis en INPUT_PULLUP et les leds en OUTPUT.

Le PULLUP met une résistance au VCC de la pin concernée, à l'intérieur du micro-contrôleur, puisqu'en appuyant sur un bouton on met cette pin au GND, ainsi on a bien deux niveaux distnctifs sur la pin concernée: Bouton relaché, pin = +5V, Bouton appuyé, pin = 0V.

Au tout début du programme, on donne des noms au pins:

#define Bouton1 5  // (Bouton poussoir 1 sur PB5 soit Pin 1 de l'ATTiny85)
#define Bouton2 3  // (Bouton poussoir 2 sur PB3 soit Pin 2 de l'ATTiny85)
#define Led1    4  // (Led 1 sur PB4 soit Pin 3 de l'ATTiny85)
#define Led2    2  // (Led 2 sur PB2 soit Pin 7 de l'ATTiny85)
#define Motor1  0   // (Commande moteur 1 sur PB0 soit Pin 5 de l'ATTiny85)
#define Motor2  1   // (Commande moteur 2 sur PB1 soit Pin 6 de l'ATTiny85)

puis dans le setup, on donne le type:

void setup() {
  pinMode(Bouton1, INPUT_PULLUP);
  pinMode(Bouton2, INPUT_PULLUP);
  pinMode(Led1, OUTPUT);
  pinMode(Led2, OUTPUT);
  pinMode(Motor1, OUTPUT);
  pinMode(Motor2, OUTPUT);
  digitalWrite(Led1, LOW);
  digitalWrite(Led2, LOW);
  digitalWrite(Motor1, LOW);
  digitalWrite(Motor2, LOW);
}

Tiens-moi au courant stp.
A+

cathodic

Promis pour un retour. En fait, c'est grâce à toi que je suis arrivé à ce stade.
Par reconnaissance, je te dois bien ça.

Dès que j'aurai plus de temps. J'envisage de souder l'ATtiny85 à l'emplacement de la puce grillée.
Je couperai des pistes et ferai les pontages nécessaires.

Dans le fichier ci-joint, j'ai adapté les pins. J'espère ne pas avoir fait de bêtises.

Bonne soirée.

cathodic

#104
Bonjour Philippe,

Comme promis je reviens aux nouvelles.Je suis déçu du résultat.
J'ai soudé l'ATtiny85 à l'emplacement de la puce grillée.
J'ai coupé 3 pistes et mis 3 pontages (schéma ci-joint).
Maintenant, je ne sais plus où se situe mon erreur.
Dans le code code ou dans le câblage?

Ci-dessous le code utilisé:
#include <arduino.h>

// Définition des pins du microcontrôleur (A voir selon la conficguration du PCB)
#define Bouton1 4  // (Bouton poussoir 1 sur PB4 soit Pin 3 de l'ATTiny85)
#define Bouton2 3  // (Bouton poussoir 2 sur PB2 soit Pin 7 de l'ATTiny85)
#define Led1    5  // (Led 1 sur PB5 soit Pin 1 de l'ATTiny85)
#define Led2    4  // (Led 2 sur PB3 soit Pin 2 de l'ATTiny85)
#define Motor1  0   // (Commande moteur 1 sur PB0 soit Pin 5 de l'ATTiny85)
#define Motor2  1   // (Commande moteur 2 sur PB1 soit Pin 6 de l'ATTiny85)

void setup() {
  pinMode(Bouton1, INPUT_PULLUP);
  pinMode(Bouton2, INPUT_PULLUP);
  pinMode(Led1, OUTPUT);
  pinMode(Led2, OUTPUT);
  pinMode(Motor1, OUTPUT);
  pinMode(Motor2, OUTPUT);
  digitalWrite(Led1, LOW);
  digitalWrite(Led2, LOW);
  digitalWrite(Motor1, LOW);
  digitalWrite(Motor2, LOW);
}

void loop() {
  // Si on appuie sur le bouton 1, le moteur tourne dans un sens
  if (digitalRead(Bouton1 == LOW)) {
    analogWrite(Motor1, 255);
    analogWrite(Motor2, 0);
    digitalWrite(Led1, HIGH);
    digitalWrite(Led2, LOW);
    // Si on appuie sur le bouton 2, le moteur tourne dans l'autre sens
  } else if (digitalRead(Bouton2 == LOW)) {
    analogWrite(Motor1, 0);
    analogWrite(Motor2, 255);
    digitalWrite(Led1, LOW);
    digitalWrite(Led2, HIGH);
    // Si aucun bouton n'est appuyé ou si on appuie sur les deux en même temps, le moteur ne tourne pas
  } else if ((digitalRead(Bouton1 == HIGH) && digitalRead(Bouton2 == HIGH)) || (digitalRead(Bouton1 == LOW) && digitalRead(Bouton2 == LOW))) {
    analogWrite(Motor1, 0);
    analogWrite(Motor2, 0);
    digitalWrite(Led1, LOW);
    digitalWrite(Led2, LOW);
  }
}

Au branchement de la batterie une led s'allume.
La pression sur les boutons n'a aucun effet sur le moteur.
Il ne tourne pas. Peine perdue!

Merci beaucoup pour tout ce que tu as fait.

Bonne journée.