Forum Électro-Bidouilleur

Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session
Recherche avancée  

Nouvelles:

Bienvenue au nouveau Forum Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions! L'inscription est automatisée.

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Sujets - bubblecat

Pages: [1]
1
Salut à tous,

En regardant une video de jipihorn sur un traceur de courbe "du pauvre" ( https://www.youtube.com/watch?v=Bv5mPc9fVIU ) J'ai eu l'idée de reproduire l'opération avec un arduino et excel. Le but n'étant pas de faire quelque chose d'abouti mais juste de voir si en partant d'une idée, j'arrive à obtenir quelque chose qui fonctionne. Etant débutant avec l'arduino et les microcontrolleurs actuels en général et ayant pratiquement tout oublié de ce que j'ai appris à l'école il y a ...euh... longtemps ^^ Je voulais juste "essayer un p'tit truc" ;)

Le principe est simple, on injecte un courant via une tension et une resistance dans la base d'un transistor, on applique une tension variable de 0 à 5v au collecteur du transistor et on recupere la tension emetteur. Ensuite on passe à un autre palier de tension de base (8 paliers de 5v/8) et on recommence. Les données de la tension emetteur sont envoyées dans une feuille excel et ensuite il suffit faire un graphique. Dans la video, Jipi utilise 2 générateurs de fonctions et une oscillo. Ici je vais générer les différentes tensions avec la pwm et récupérer la tension émetteur à l'aide de l'arduino.

Premier problème : avoir une tension dc constante et lisse à partir de la pwm. Solution : video du bidouilleur sur le projet de charge fictive ^^ N'ayant que des condensateurs de 1µ, j'ai cependant doublé le filtre afin d'avoir quelque chose de lisse (l'arduino de base à un pwm à 500Hz je crois).

Second problème, envoyer le tout dans excel : J'ai trouvé une feuille avec tout de pret pour lire le port série, tout le mérite reviens au créateur Roberto Valgolio qui a fait un outil bien utile je trouve, la feuille est dispo ici : http://www.robertovalgolio.com/sistemi-programmi/arduino-excel

Troisième probleme :  les filtres de la pwm ne sont pas efficaces pour peu qu'on leur demande un courant et augmenter la taille des condensateurs ralentirait tout le systeme. Je passe donc par des ampli-op montés en buffer et là tout va bien. Je n'avais que des lm324 et donc je me mange 0.5v de rail, ce qui fait qu'en fait je ne balaye que de 0.5 à 4.5v environ. Et augmenter la tension d'alimentation de lm324 n'est pas une bonne idée, l'arduino etant sensible à tout ce qui dépasse les 5v, il vaut mieux ne pas prendre de risques inutiles en cas de défaillances.

au final ça donne ceci dans excel :



le tracé brun est celui d'un bd139, le vert celui d'un bc547 et le bleu un bc 337. Les valeurs en abscisse et ordonnée ne sont pas significative, c'est excel qui les a mis par défaut. (Je connais pas trop ce systeme de chart dans excel).

le circuit est relativement simple :



le transistor est celui qui est testé. les filtres R20k +C1µ en série arrivent à lisser correctement la pwm émise par les pin 9 et 10  de l'arduino, le signal résultant est envoyé dans l'ampli op via une R de 100k (histoire de ne vraiment pas déranger le lissage de la pwm). les ampli op sont montés en buffer donc VS = VE (aux tensions de rail pres). Les diverses tensions sont récupérées par A0, A1 et A2. Les ampli op sont alimentés par le +5v de l'arduino.

le code :


//Traceur de courbe du tres pauvre

// initialisation des variables
int i;
int j;
int VCC;
int VRB;
int VEG;
int RB;
int RE;
int   idx = 0;
int VRBpin = 9;
int VCCpin = 10;
int VEGpin = A0;
int VCCinpin = A2;
int VRBinpin = A1;
float VCCf;
String eCol="ABCDEFGHIJKLMNO"; //chaine servant à déterminer quelle colone on utilise dans excel
char cCol;
String tempCol="X";
String commandCol="";
int countStr = 0;
float VRBf;                             
float VEGf;                             
float VCEf;

void setup() {
 
  //Initialisation des pins
  pinMode(VRBpin,OUTPUT);
  pinMode(VCCpin,OUTPUT);
  pinMode(VEGpin,INPUT);
 
  Serial.begin(9600);
 
  idx = 0 ;
 
  }

void loop() {
 
countStr = 0;
 for (i=0;i<256;i=i+(256/8)){ // Ici on incrémente la tension de base de 0 à 5 v par pas de 5v/8
                             
   
   
   analogWrite(VRBpin,i);
   delay(40);
   cCol = eCol.charAt(countStr);//opération servant à déterminer quelle colone utiliser dans excel
   tempCol.setCharAt(0,cCol);
   
   for (j=0;j<256;j++){   // Ici on incrémente la tesion du collecteur de 0 à 5v pour chaque "pas" de la tension de base
 
    analogWrite(VCCpin,j);
   
   
    delay(20);
 
   VEG = analogRead(VEGpin);  // on récupère la tension émetteur
   VCC = analogRead(VCCinpin);// on récupère la tension appliquée au collecteur
   VRB = analogRead(VRBinpin);// on récupère la tension appliquée à la base
   VEGf = (float)VEG/1023*5.0;// on convertit la valeur en échelle 5V
   VCCf = (float)VCC/1023*5.0;// on convertit la valeur en échelle 5V
   VRBf = (float)VRB/1023*5.0;// on convertit la valeur en échelle 5V
   
 
   commandCol = ("XLS,write,Sheet2," +tempCol); //on commence l'envoi des données dans excel
   
   Serial.print(commandCol);
   
   
    Serial.print(idx + 1);
    Serial.print(",");
    Serial.print(VEGf);
    Serial.print("\n");
   
   
   
   
   idx++;;
  }
 
   
    analogWrite(VCCpin,0);
    idx++;;
    delay(300); // delai servant à decharger les condensateurs de filtrage
    countStr++;
    idx = 0 ;
  }

   
    idx++;;
    analogWrite(VRBpin,0);
    analogWrite(VCCpin,0);
    delay(20000);
}


Dans le montage et le code, je récupère via A1 et A2 les tensions appliquées à la résistance de base et au collecteur mais je ne les récupère pas dans excel. J'ai du chipotter un peu avec la façon dont les données sont inscrites dans la feuille excel (la string eCol). Au final j'obtient 8 colonnes (les 8 paliers de la tension de RB) de 256 valeurs (les valeurs de la tension émetteur en fonction de la tension collecteur).

La feuille dans laquelle sont envoyée les données se nomme "Sheet2", vous pouvez changer le nom dans cette ligne : commandCol = ("XLS,write,Sheet2," +tempCol);  ;) (cette feuille ne se trouve pas dans le fichier excel original) ;)

Voilà, c'est pas tres génial mais bon, ça fonctionne. Faudrait que j'améliore le coté "chart" de la feuille histoire d'avoir quelque chose d'un peu plus parlant. Pas évident de réaliser tout ça sans oscillo (je me suis débrouillé avec l'entree de la carte son et un oscillo-carte son freeware pour analyser le filtrage de la pwm ^^ ).

merci d'avoir lu :)

Bubblecat

2
Trucs et Astuces d'Électronique / Liens pour des schémas et circuits
« le: avril 08, 2016, 07:15:20 am »
Salut à tous,

Tout d'abord merci au bidouilleur pour ses videos :)

En recherchant des schémas je suis tombé sur ce site : http://www.freeinfosociety.com/electronics/schemcat.php qui contient tout un tas d'archive de circuits (et autres...). On y trouve par exemple dans la partie audio, tout les circuits des pédales BOSS chères aux guitaristes des années 80-90  :D (turbo distortion <3 )

Je me suis dis que ça pourrait etre utile de le partager ici :)




Pages: [1]