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 - Benoit92

Pages: [1]
1
Composants / Teensy 3.1, 3.2 - Sonorisation locomotive
« le: décembre 23, 2017, 01:38:31 am »
Bonjour,
Je ne sais pas si c'est le bon forum qui semble être dédié à l'Arduino.
Pour les applications gestion moteur et accessoires, l'Arduino Nano fonctionne très bien.
Par contre, pour la gestion de son (données "son" intégrés au code), la capacité mémoire est insuffisante pour générer des sons de qualité.
J'ai donc installé le logiciel de chez PJRC "Teensyduino" qui me permet d'utiliser le même IDE que l'Arduino.

1) Pour coder le son,   il semble qu'il faille passer par "wav2sketch" (au lieu de "EncodeAudio" pour l'Arduino).

Type de fichier son (par exemple) : AudioSampleCashregister.h
// Audio data converted from WAV file by wav2sketch
#include "AudioSampleCashregister.h"

// Converted from cashregister.wav, using 22050 Hz, u-law encoding
const unsigned int AudioSampleCashregister[5809] = {
0x02005AB4,0x82060707,0x03010301,0x08038287,0x81820200,0x09120407,0x15091108,0x02080611,
0x0D050D11,0x8008150C,0x93810480,0x000D8890,0x0A060406,0x06000681,0x80828702,0x89928405,
0x04820983,0x8C860D05,0x880D0004,0x84000B0B,0x8C8D8C8F,0x84829181,0x14860600,0x0A0C080C,
0x84878006,0x908B8B8D,0x0000858D,0x82800710, ....................................
};

2) Ce Header sera intégré dans un fichier *.ino :
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
#include <Bounce.h>

// WAV files converted to code by wav2sketch
#include "AudioSampleSnare.h"        // http://www.freesound.org/people/KEVOY/sounds/82583/
#include "AudioSampleTomtom.h"       // http://www.freesound.org/people/zgump/sounds/86334/
#include "AudioSampleHihat.h"        // http://www.freesound.org/people/mhc/sounds/102790/
#include "AudioSampleKick.h"         // http://www.freesound.org/people/DWSD/sounds/171104/
#include "AudioSampleGong.h"         // http://www.freesound.org/people/juskiddink/sounds/86773/
#include "AudioSampleCashregister.h" // http://www.freesound.org/people/kiddpark/sounds/201159/

// Create the Audio components.  These should be created in the
// order data flows, inputs/sources -> processing -> outputs
//
AudioPlayMemory    sound0;
AudioPlayMemory    sound1;  // six memory players, so we can play
AudioPlayMemory    sound2;  // all six sounds simultaneously
AudioPlayMemory    sound3;
AudioPlayMemory    sound4;
AudioPlayMemory    sound5;
AudioMixer4        mix1;    // two 4-channel mixers are needed in
AudioMixer4        mix2;    // tandem to combine 6 audio sources
AudioOutputI2S     headphones;
AudioOutputAnalog  dac;     // play to both I2S audio board and on-chip DAC

// Create Audio connections between the components
//
AudioConnection c1(sound0, 0, mix1, 0);
AudioConnection c2(sound1, 0, mix1, 1);
AudioConnection c3(sound2, 0, mix1, 2);
AudioConnection c4(sound3, 0, mix1, 3);
AudioConnection c5(mix1, 0, mix2, 0);   // output of mix1 into 1st input on mix2
AudioConnection c6(sound4, 0, mix2, 1);
AudioConnection c7(sound5, 0, mix2, 2);
AudioConnection c8(mix2, 0, headphones, 0);
AudioConnection c9(mix2, 0, headphones, 1);
AudioConnection c10(mix2, 0, dac, 0);

// Create an object to control the audio shield.
//
AudioControlSGTL5000 audioShield;

// Bounce objects to read six pushbuttons (pins 0-5)
//
Bounce button0 = Bounce(0, 5);
Bounce button1 = Bounce(1, 5);  // 5 ms debounce time
Bounce button2 = Bounce(2, 5);
Bounce button3 = Bounce(3, 5);
Bounce button4 = Bounce(4, 5);
Bounce button5 = Bounce(5, 5);


void setup() {
  // Configure the pushbutton pins for pullups.
  // Each button should connect from the pin to GND.
  pinMode(0, INPUT_PULLUP);
  pinMode(1, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);

  // Audio connections require memory to work.  For more
  // detailed information, see the MemoryAndCpuUsage example
  AudioMemory(10);

  // turn on the output
  audioShield.enable();
  audioShield.volume(0.5);

  // by default the Teensy 3.1 DAC uses 3.3Vp-p output
  // if your 3.3V power has noise, switching to the
  // internal 1.2V reference can give you a clean signal
  //dac.analogReference(INTERNAL);

  // reduce the gain on mixer channels, so more than 1
  // sound can play simultaneously without clipping
  mix1.gain(0, 0.4);
  mix1.gain(1, 0.4);
  mix1.gain(2, 0.4);
  mix1.gain(3, 0.4);
  mix2.gain(1, 0.4);
  mix2.gain(2, 0.4);
}

void loop() {
  // Update all the button objects
  button0.update();
  button1.update();
  button2.update();
  button3.update();
  button4.update();
  button5.update();

  // When the buttons are pressed, just start a sound playing.
  // The audio library will play each sound through the mixers
  // so any combination can play simultaneously.
  //
  if (button0.fallingEdge()) {
    sound0.play(AudioSampleSnare);
  }
  if (button1.fallingEdge()) {
    sound1.play(AudioSampleTomtom);
  }
  if (button2.fallingEdge()) {
    sound2.play(AudioSampleHihat);
  }
  if (button3.fallingEdge()) {
    sound3.play(AudioSampleKick);
  }
  if (button4.fallingEdge()) {
    // comment this line to work with Teensy 3.0.
    // the Gong sound is very long, too much for 3.0's memory
    sound4.play(AudioSampleGong);
  }
  if (button5.fallingEdge()) {
    sound5.play(AudioSampleCashregister);
  }

}


3) wav2sketch
Tout est expliqué sur le site ci-dessous ainsi que le lien pour le téléchargement de "wav2sketch.exe"
https://www.pjrc.com/teensy/td_libs_AudioPlayMemory.html


2
Shields et Modules / Moification Timer 2 / PWM sur Arduino Nano
« le: décembre 01, 2017, 12:37:13 pm »
Bonjour,
J'ai monté un "Banc roulant" à partir d'une BR 80 (030) Märklin Echelle 1 et d'un arduino Nano et d'un shield L298 (pont en H).

J'ai changé le stator d'origine (qui est bobiné) par un stator- aimant de chez ESU et donc également supprimé l'inverseur de sens.

Normalement, cette locomotive (qui a le même moteur que la crocodile Märklin échelle HO) fonctionne en 16 V - 50 Hz.
Je voudrai pouvoir essayer plusieurs fréquences de récurrence PWM afin de vérifier : le bruit, l'échauffement (moteur et L298) et le comportement global du moteur.

1) La locomotive ne démarre que lorsque que le bouton de la Mobile Station 2 est supérieure au 3/4 ?

2) J'essaye de modifier la fréquence de récurrence du PWM sur la pin 3 à partir du Timer 2, mais je ne sais pas si le Nano fonctionne comme le Uno ?

3) Pour la modification du timer 2, j'utilise les instructions suivantes :
//    int divisor;
//    int mode = 0x5;
//    switch (divisor) {
//      case 1: mode = 0x01; break; // 31 kHz
//      case 8: mode = 0x02; break; // 4 kHz
//      case 32: mode = 0x03; break; // 1 kHz
//      case 64: mode = 0x04; break; // 500 Hz
//      case 128: mode = 0x05; break; // 250 Hz
//      case 256: mode = 0x06; break; // 125 Hz
//      case 1024: mode = 0x07; break; // 30 Hz
//      default: return;
//    }
//    TCCR2B = TCCR2B & 0b11111000 | mode;

Normalement, si je modifie la valeur :
int mode = 0x5;
Je devrai pouvoir changer la fréquence de récurrence du timer 2  sur l'arduino Nano ?




3
Shields et Modules / Jumper Carte L298
« le: novembre 22, 2017, 12:18:29 am »
Bonjour,
Pour piloter mes moteurs, je vais utiliser une carte L298.
En plus du circuit L298, cette carte intègre un régulateur 7805 qui permet d'alimenter la logique du pont en H.
Et .......... qui permet également d'alimenter la sortie 5V de la carte (pour d'autres applications).

Mais, le 7805 intégré à cette carte ne supporte qu'une tension entre 5V et 12 V maximum en entrée et le signal redressé DCC doit être aux alentours de 20V.
Il existe un jumper sur cette carte qui permet de découpler la tension 5V de la logique du pont H de la tension destinée aux moteurs (20V DCC).

Dans ce cas, je dois :
1) enlever le jumper (pour les tensions moteurs > 12V)
2) fournir un 5V à la logique du pont en H (entrée +5V de la carte L298) à partir d'un redressement simple alternance du signal DCC (20V -> 10V) soit une diode + 7805 + Condo

 Est-ce le bon raisonnement ?

4
Shields et Modules / Génération Bruits locomotive
« le: novembre 13, 2017, 05:37:01 pm »
Bonjour,
Afin de sonoriser ma "future" locomotive à l'échelle 1 (1/32), j'ai fait des essais avec une carte SerialMP3Player de Catalex.
Configuration 1: UNO + carte son
Arduino UNO (qui gére toute la loco) + Carte SerialMP3Player de Catalex.
-> la gestion du son prend trop de temps pour assurer une gestion correcte de la loco (problème de lag)
-> "blanc" entre deux bruits (morceaux)

Configuration 2 : UNO + NANO + carte son[
Arduino UNO (qui gère la loco à l'exception du son) + Arduino NANO relié à l'UNO avec une liaison série (Rx/Dx). Le NANO gère le son et est relié à la Carte SerialMP3Player de Catalex.
-> "blanc" entre deux bruits (morceaux)

Configuration 3 (non essayé) : UNO + NANO + Carte SD + Ampli
Arduino UNO (qui gère la loco à l'exception du son) + Arduino NANO relié à l'UNO avec une liaison série (Rx/Dx).
Le NANO gère le son et est relié à la Carte Mémoire SD.
Les fichiers son "wav"  de la carte SD sont lus par le NANO et renvoyer (après adaptation) sur une sortie PWM ou Analogique.
La sortie son (PWM ou Analogique) est alors amplifiée et envoyée vers le haut-parleur.

Cette dernière configuration est-elle faisable ?

Merci






5
Bibliothèques / Fast PWM et phase correct PWM
« le: octobre 27, 2017, 08:40:33 pm »
J'ai vu que l'on pouvait modifier la fréquence de récurrence  du PWM.
Par exemple, le Timer 2 peut modifier  la fréquence de récurrence  du PWM sur les broches 3 et 11.
//TCCR2B = TCCR2B & B11111000 | B00000001;    // set timer 2 divisor to     1 for PWM frequency of 31372.55 Hz
//TCCR2B = TCCR2B & B11111000 | B00000010;    // set timer 2 divisor to     8 for PWM frequency of  3921.16 Hz
//TCCR2B = TCCR2B & B11111000 | B00000011;    // set timer 2 divisor to    32 for PWM frequency of   980.39 Hz
  TCCR2B = TCCR2B & B11111000 | B00000100;    // set timer 2 divisor to    64 for PWM frequency of   490.20 Hz
//TCCR2B = TCCR2B & B11111000 | B00000101;    // set timer 2 divisor to   128 for PWM frequency of   245.10 Hz
//TCCR2B = TCCR2B & B11111000 | B00000110;    // set timer 2 divisor to   256 for PWM frequency of   122.55 Hz
//TCCR2B = TCCR2B & B11111000 | B00000111;    // set timer 2 divisor to  1024 for PWM frequency of    30.64 Hz
Question :
Ces fréquences correspondent t-il à un :
 - mode « Fast PWM Mode »
ou à un
 - mode « Phase Correct PWM Mode »
?????????

6
Débuter / Acheter des composants en Chine
« le: octobre 25, 2017, 01:08:56 pm »
Ok, ça tombe bien car j'ai déjà les moteurs 12V et en plus, j'économise des pins sur l'arduino.
Le site lextronic est intéressant.
J'ai tendance en général à commander sur Aliexpress : les délais ont beaucoup diminué 17-22 jours pour certains articles).
1) Cela peut être plus rapide qu'avec certains sites français qui en fait, achète en Chine (jusqu'à 4 mois d'attente pour des pièces moto sur un site français: c'est du (mal)vécu).
2) Les prix sont beaucoup moins chers
3) le suivi de commande et le contact vendeur est très rapide
3) Cela évite de favoriser les bouches inutiles (le type qui marge comme un chancre et qui n'y connait rien, d'ailleurs, il est en général injoignable (téléphone, SMS, Email), et si, par hasard on arrive à le contacter, il a toutes les excuses : le nouvel an chinois, un ouragan. . . )
4) De toute façon, la majorité des composants est réalisée en Chine
5) Je n'ai jamais eu de litiges avec eux

7
Débuter / Fréquence de récurrence PWM
« le: octobre 24, 2017, 12:27:48 am »
Bonjour,
Suivant le type de moteur utilisé, la fréquence de pilotage est différente.
Cette fréquence varie en fonction en particulier des épaisseurs de tôle, de la technologie du moteur . . .
Pour cela, j'ai besoin de faire varier la fréquence de récurrence du PWM en fonction du type de moteur.
Et éventuellement pour optimiser cette fréquence(éviter les bruits moteur trop important)
Je m'aperçois que cela n'est pas possible dans le cadre de l'instruction AnalogWrite.
Il parait que d'origine, l'Arduino Uno donne une fréquence de récurrence de 890 Hz : c'est beaucoup trop pour un moteur surtout par exemple pour un moteur Märklin avec inducteur bobiné (ou moteur universelle ou moteur à CC Série) qui doit être limité au environ de 50-60 Hz.
Cette capacité à gérer les fréquences de récurrence est gérée par le protocole DCC (CV 9 Période PWM 0...255 (0))

Quelle serait la méthode pour pouvoir changer cette fréquence de récurrence sur les PWM Arduino?

8
Bus DCC / Märklin Mobile Station 2
« le: octobre 12, 2017, 12:01:56 am »
J'ai réussi à récupérer une Mobile Station 2 d'occasion.
Je me demande s'il faut installer la fonction "Ack" sur le décodeur pour pouvoir programmer les CV à partir de la Mobile Station 2.

9
Bibliothèques / Bibliothèque Nmra.Dcc.h
« le: octobre 01, 2017, 04:43:38 pm »
Bonjour,
Quelqu'un a-t-il déjà utilisé cette bibliothèque ?
Qu'en pensez-vous ?
C'est pour réaliser un décodeur de locomotive (échelle 1/32).

10
Vos projets / 2D2 Echelle 1/32
« le: juin 13, 2017, 09:52:47 am »
Bonjour,
Je souhaiterais de réaliser une 2D2 5500 à l'échelle 1 (1/32) et l'équiper d'un décodeur à base d'Arduino (j'ai de la place avec cette échelle).
Il existe le décodeur ESU LOKSOUND 4.0 XL, mais, il est un peu cher et j'aimerai en fait réaliser moi-même ce décodeur.
Je souhaiterais également fabriquer moi-même les 2 moteurs électriques (globalement inspirés du moteur 5 pôles Märklin à aimant permanent), les trains d'engrenage (module 1), la caisse et le châssis.
Je pense utiliser un pont en H (et sa commande) séparé du décodeur (à base d'Arduino).
J'aimerai avoir des conseils pour réaliser ce décodeur (librairy, codage, choix des composants, . . .).
Merci à tous
Cordialement
Benoit

11
Présentez vous ! / Benoit 2D2 5500 1:32
« le: juin 12, 2017, 11:33:24 pm »
Bonjour,
J'ai toujours été passionné par le modélisme ferroviaire et j'ai débuté il y a près de 50 ans avec un train Märklin.
J'ai décidé de réaliser une 2D2 5500 à l'échelle 1 (1/32). Je souhaiterai l'équiper d'un décodeur à base d'Arduino (j'ai de la place avec cette échelle).
Il existe le décodeur ESU LOKSOUND 4.0 XL, mais, il est un peu cher et j'aimerai en fait réaliser moi-même ce décodeur.
J'ai également décider de fabriquer moi-même les 2 moteurs électriques (globalement inspirés du moteur 5 pôles Märklin à aimant permanent),les trains d'engrenage (module 1), la caisse et le châssis.
Je pense utiliser un pont en H (et sa commande) séparé du décodeur à base d'Arduino.
J'aimerai avoir des conseils pour réaliser ce décodeur (librairy, codage, choix des composants, . . .).
Merci à tous
Cordialement
Benoit

Pages: [1]