V.O. 08/06/2020
rev 21/02/2025
j'avais ce module dans mes tiroirs , depuis 3 ans ! car je suis
plutot orienté PIC !
je me suis quand meme décidé à le tester , bien que la
phylosophie ARDUINO = tout Pré-mâché , ne m'emballe pas du
tout.
comme quoi, le proverbe "fontaine, je ne boirai pas de ton
eau" s'applique ici.
ARDUINO :
Hardware
: Module Arduino mini
Cordon
Prolific de liaison
Pinout
et schema
---------------------------------------
Software
#1 : Le Classique Test clignotement Led
Software #2 : Test
sur module 4 matrices 8x8 H avec MAX7219
............Modification source
original
............Video
............Version PIC 18F26K22 (Microchip)
Software #3 : Detection de
code DTMF
Software
#4 Test moteur
NEMA
............1)
commande simple moteur PAP NEMA23 avec TB6550
............2)
version avec librairie AccelStepper +
video
Software #5 Test
Module INA226
............1) Mesure U
et I coté High End shunt interne 0.1 ohms Max=0.819Amps
............2)..à
suivre ..Mesure U et I shunt Externe 0.01 ohms Max=15Amps +
Alarme
HARDWARE
Module Arduino Pro Mini ATMega328 5V 16MHz , "the Simple"
Cordon
Prolific
apparait comme port virtuel COM23 ou COM25 (sur mon PC)
Pinout et
schema :
ATTENTION connectique differente suivant les modeles ...
mon modèle :
SOFTWARE #1 :
mon tout 1er test : led clignotante
Affichage resultat sur Terminal via le COM virtuel USB (9600bds)
(14:28:11.438) Arduino
pro mini Simple 16MHz 5V
(14:28:11.479) 1er Test 04 juin 2020
(14:28:11.518) Debut=0
(14:28:16.435) Valeur de a :18205
(14:28:16.459) Compteur =0
(14:28:16.499) Led High
(14:28:17.436) Led Low
(14:28:18.430) .
(14:28:18.474) Compteur =1
(14:28:18.474) Led High
(14:28:19.429) Led Low
(14:28:20.429) .
(14:28:20.459) Compteur =2
(14:28:20.459) Led High
(14:28:21.429) Led Low
Software:
sketch_2020_jun_04a.ino
Résultat de compilation :
ArduinoSimple_compilation_1er_Skecht_cligote_Led.log
nota :
LED_BUILTIN = Led implantée sur le module , connectée à pin 13
SOFTWARE #2 :
Dot Matrix 8x8 avec MAX7219
Prototype Hardware:
Le montage est entierment alimenté via le cordon USB Prolific
Rose 6pins
à noter que le reglage de luminosité est au minima !
L'arduino mini Pro ne necessite pas de programmateur externe .
La liaison USB sert aussi de terminal liaison COM virtuelle
nota : la chose noire sur les fils = pince de maintien des fils
!
SOFTWARE :
issu de la version originale :
* Dot matrix control Scrolling
* Tutorial: https://www.electronoobs.com/eng_arduino_tut56.php
* Schematic: https://www.electronoobs.com/eng_arduino_tut56_sch1.php
* LedControl library: https://www.electronoobs.com/eng_arduino_ledcontrol.php
* 1er test avec
version originale : -> BAD => modif ordre inverse des
digits => OK
* REVISION : 07-06-2020
* usage de bloc de 4 matrices _x8 H avec connecteur d'entrée à
GAUCHE !
* modif pour sens de deplacement
* modif pour Font 8x8 thin
* avec caractere special °C (code 39 elide => code 134 degré)
* Font: THIN_SS_2019.pf
* 2em test Arduino Pro mini 5V 16Mhz "The Simple"
* MODULE Arduino Por Min SIMPLE ->OK
Modifs:
// rev 19/03/2020
// Font: THIN_SS_2019.pf
// rev PF 10-12-2019 caract degré C en 134 (0x86)
const unsigned char font_8x8_H [] PROGMEM = // Font: My_8X8_FONT.pf
{
/* 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Char 000
(.)
0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, // Char 001 (.)
.... etc
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Char 255 (.)
};
Symbole ° au lieu de élidé
// Scroll Message
void scrollMessage(const unsigned char * messageString) {
int counter = 0;
int myChar=0;
do {
// read back a char
myChar = pgm_read_byte_near(messageString + counter);
if (myChar != 0){
if (myChar==39) myChar=134;
loadBufferLong(myChar);
}
counter++;
}
while (myChar != 0);
}
// Load character into scroll buffer
void loadBufferLong(int ascii){
if ((ascii >= 0x20 && ascii <=0x7f) || (ascii==134))
{ for (int a=0;a<8;a++){
..etc ..
Inversion sens digits
// Display Buffer on LED matrix
void printBufferLong(){
for (int a=0;a<8;a++) // Loop
8 times for a 8x8 font
{
unsigned long x = bufferLong [a*2+1]; // Get high buffer entry
byte y = x; // Mask off first character
lc.setRow(0,a,y); // Send row to relevent MAX7219 chip
x = bufferLong [a*2]; // Get low buffer entry
y = (x>>24); // Mask off second character
lc.setRow(1,a,y); // Send row
to relevent MAX7219 chip
y = (x>>16); // Mask off third character
lc.setRow(2,a,y); // Send row
to relevent MAX7219 chip
y = (x>>8); // Mask off forth character
lc.setRow(3,a,y); // Send row
to relevent MAX7219 chip
}
}
MAJ source :
Dot_matrix_MAX7219_scrol_2020_0607.ino
Fonte : THIN_SS_2020.h
Video :
Arduino_mini_Pro_Simple_Defil_4_Matrices_8x8H_2020_0606.webm
Ma conclusion :
librairies Arduino Efficaces, mais trop simple !
quelle plus-value de formation apportent-elles ?
Open discussion ..
Version PIC18F !:
Base_18F26K22_test_defilement_1_bloc_de_4_Matrice8x8_H_2020_06_08.c
SOFTWARE #3 :
Decodage signal Touche DTMF
voir aussi coté PIC18F Generateur de codes DTMF (versions: MikroC et MPALBXC8)
L'amplitude de sortie de ce générateur (0,5V cr cr )
nécessiterait une amplification de 5 à 10x ,
à cause du filtrage passe bas (4,7K + 47nF) qui elimine les
harmoniques du PWM ,
et reduit fortement l'amplitude initiale.( 0 à 5V !) . Il ne
peut donc pas etre utilisée directement.
De ce fait, usage de l'application web : VENEA.NET générateur DTMF
Sortie signal de la carte >SON du PC , direct sur entree
analogique Arduino Simple. : niveau > 3V cr Cr.
Hardware :
uniquement 1 entree Analogique .
le module est alimenté via la liaison USB via cordon Prolific 6
pins
Qui set à la programmation et aussi comme terminal :
liaison port viruel COM 36 pour terminal PC YAT
Le terminal affiche le code DTMF reconnu ..
Le signal DTMF doit avoir une
duree de 500mS et doit etre au standard DTMF
rappel :
uint16_t Frow_value[4]={ 697, 770, 852, 941}; // Hz
uint16_t Fcol_value[4]={ 1209,1336,1477,1633}; //Hz
// 1 2 3 A .....697
// 4 5 6 B .....770
// 7 8 9 C ....1477
// * 0 # D.... 1633
Attention : le Terminal PC YAT doit etre désactivé pour pouvoir
faire un upload du programme dans l'Arduino.
Software :
Je n'ai pas ré-inventé la roue : usage de la librairie Goertzel..
voir les details sur le Gitub de la librairie.
Nota : attention à
Detect.h ... ne pas melanger avec
l'appli utilisant Goertzel.c ou h
Apres quelques modifs mineures,le programme est opérationnel ..
Il faut quand meme un niveau de signal elevé sur l'entree Ana :
> 3,0V cr cr
----------------------------------------------------------------------------
*
Il me semble qu'il y a une incoherence ici :
//const float threshold
= 2000; //minimum tone amplitude to be considered we can change
it for more senstivity
// ???? avec ADC 10 bits -> maxi=1023 !!!
modifié : par
const float threshold = 300; // nettement reduit, en fonction des
valeurs lues dans le test préalable de l'ADC
modif aussi du Nb de sample -> 100 -> passé à 200 ,
pour ameliorer la fiabilité de détection .
un éclairage externe la dessus serait le bienvenu ..
----------------------------------------------------------------------------
Le logiciel Venea.Net permet d'envoyer automatiquement une
séquence DTMF des touches : 123456789*0#ABCD
de duree 500mS avec un interval de 1 sec
...ou séparément via le clavier 4x4 DTMF .
affichage sur PC , seulement si detection OK pour les 2
frequences !
F1 et F2 Frequences detectée et touche correspondante
exemple si le programme est OK , et avec la seqence envoyée par
Vena.Net :
123456789*0#ABCD
1209.00<LF>697.00<LF>
Touch=1<LF>.
1336.00<LF>697.00<LF> Touch=2<LF>.
1477.00<LF>697.00<LF> Touch=3<LF>.
1209.00<LF>770.00<LF> Touch=4<LF>.
1336.00<LF>770.00<LF> Touch=5<LF>.
1477.00<LF>770.00<LF> Touch=6<LF>.
1209.00<LF>852.00<LF> Touch=7<LF>.
1336.00<LF>852.00<LF> Touch=8<LF>.
1477.00<LF>852.00<LF> Touch=9<LF>.
1209.00<LF>941.00<LF> Touch=*<LF>.
1336.00<LF>941.00<LF> Touch=0<LF>.
1477.00<LF>941.00<LF> Touch=#<LF>.
1633.00<LF>697.00<LF> Touch=A<LF>.
1633.00<LF>770.00<LF> Touch=B<LF>.
1633.00<LF>852.00<LF> Touch=C<LF>.
1633.00<LF>941.00<LF> Touch=D<LF>.
Si on ne detecte
pas ..on ne voit rien .. d'ou le
minimum d' affichage entête du programme
sur le terminal et aussi le clignotement led au démarrage. (led
sur le module Arduino !)
Un test préalable sur l'ADC est réalisé ! edition de mini,moyenne,max
valeur lue.
la connection d'un module HT9170B en parrallele sur l'entree
analogique , permet de voir
sur ses 4 leds de sortie, le code DTMF présenté ..
c'est le "multimetre software" et juge de paix!
Nota :
ce programme utilise toutes les ressources MCU lorsqu'il est en
attente de decodage
avec 2 boucles while infinies ..une pour chaque
Frequence du code DTMF.
Software :
arduino_code_dtmf_decoder_2022.zip
arduino_code_dtmf_decoder_2022.ino
une suite ?
Transposition sur PIC18F XC8 ? ..utilité lorsqu'on a sous la
main un décoder Hardware HT9170B ?
pas la peine de se triturer les neurones !
SOFT
#4
Test d'un moteur PAP NEMA23 avec
driver TB6550
01/09/2024
Schema et Hardware:
Prototype de test
SOFTWARES
1) Version simple RedOHM ( revu paulfjujo)
Ne
marchait pas ..car En_Pin reverse status !
modifié -> OK
Arduino_Pro_Mini_TB6600_V2_24.zip
(15:37:37.270) Version 01/09/2024 Arduino Pro mini, by RedOhm ,
rev paulfjujo
(15:37:37.317) Test à © OK avec valeur de 110 à 10000
(15:37:37.333)
(15:37:37.333) set ENPin High
(15:37:37.349) Saisir une nouvelle commande
(15:37:37.364)
(15:37:42.442) A100
(15:37:42.567) La chaine saisie est : A100............... Blocage , moteur vibre
sans tourner
(15:37:42.567) Demande de marche avant & valeur de vitesse =>
100
(15:37:42.567) Saisir une nouvelle commande :
(15:37:51.929) A110
(15:37:52.070) La chaine saisie est : A110............ tourne rapidement
(15:37:52.070) Demande de marche avant & valeur de vitesse =>
110
(15:37:52.070) Saisir une nouvelle commande :
(15:37:59.745) A5000
(15:37:59.886) La chaine saisie est : A5000... 1 tour en ~8sec
(15:37:59.886) Demande de marche avant & valeur de vitesse =>
5000
(15:37:59.886) Saisir une nouvelle commande :
(15:38:08.181) A120
(15:38:08.306) La chaine saisie est : A120
(15:38:08.306) Demande de marche avant & valeur de vitesse =>
120
(15:38:08.306) Saisir une nouvelle commande :
(15:38:22.135) A10000
(15:38:22.260) La chaine saisie est : A10000... 1 tour en ~16sec
(15:38:22.260) Demande de marche avant & valeur de vitesse =>
10000
(15:38:22.260) Saisir une nouvelle commande :
-------------------------------------------------------------------------------------------
2) Software
utilisant la librairie AccelStepper
issus de l'exemple ..https://www.makerguides.com/
https://www.makerguides.com/wp-content/uploads/2019/02/AccelStepper-1.59.zip
recopie de l'exemple ... ne
MARCHE PAS !
...Because il faut que EnPin soit à 1 pour que le moteur
tourne ..
Modifié en consequence et rajout d'un peu de dialogue : infos
pour l'opérateur..sur terminal
Le moteur demarre lentement: Rampe sur 250 pulses
jusqu'à obtention de 8000 pulses,
marque une pause de 1sec
puis inverse la direction
pour tourne en sens inverse via Rame
décomptage du nombre d'impulsion jusqu'à zero .
..marque une pause de 1sec
etc ..en boucle
Arduino_Pro_Mini_Accelsetpper_Nema23.zip
Video :
Test_driver_TB6550_Nema23_12V_2024-0901.webm
SOFT
#5
Test#1 Module Mesure de Courant INA226 (I2C)
avec shunt 0,1 ohm
21/02/2025
![]() |
![]() |
le module INA 226 | schema |
Schema et Hardware:
Le module Arduino Pro Mini Simple est connecté au port USB /COM33
qui assume la programmation avec Arduino IDE 1.8.19
OU l'affichage sur terminal YAT 115200bds
Le module INA226 dialogue via un bus I2C @0x40
Le shunt integré au module fait R100 => 0,1 Ohm
La capacité de mesure maxi : 819.2mA
La mesure de courant se fait du coté HIGH END. (coté + alim)
La mesure VBUS est effectué sur la sortie shunt, d'où le strap
entre les pins Vin- et Vbus sur l'INA226.
La sortie Alerte est connecté sur la pin 2 Arduino
Les Zero volts, Alim externe 12V, INA226 et Arduino doivent etre
reliées !
Documentation:
https://wolles-elektronikkiste.de/en/ina226-current-and-power-sensor
INA226_User_Guide_Tutorial.pdf
Texas Instrument :
Monitoring Bus Voltage and Power Measurement INA226.pdf
INA226-Q1 AEC-Q100, 36V, 16-Bit, Ultra-Precise, I2C Output
Current_sbos743b.pdf
SOFTWARE :
installation librairie Arduino : INA226-WE de
wolfgang Ewald vers 1.2.12 .. install
Les differents registres du module INA226 :
![]() |
Ordre de Configuration des registre de l' INA226
|
||||||||||||||||||||||||||||||||||||||||||
Ordre d'adresse | Ordre de configuration |
Ordre de Configuration des registre de l' INA226 :
Shunt voltage / tension aux bornes du shunt , image du courant !
Bus Voltage : tension sur la charge ( entre sortie shunt et 0V )
La calibration sert à etablir la gamme de mesure en fonction du
shunt untilisé (valeur en ohms )
Le MASK pezrmet de definir quelles seront les alarmes affectée
à la sortie ALERT , ou d'autres flags d'etats
L'Alert limit etant le seuil de la mesure à surveiller (courant
ou tension)
#define INA226_ADDRESS 0x40 // Default I2C
address for INA226
6.2.5 Configuring the Alert Pin
The Alert pin from the INA226 allows the
user to set limits that monitor the registers and trigger a flag when they are exceeded. The register that is being monitored can be changed by selecting the desired alert configuration as shown in Figure 6-8. The value that is being considered is compared to the Alert Limit box. This Alert Limit box modifies its functionality based on the selected configuration. It is important to note that by default, the INA226 Alert pin is set to active low. |
La Pin de sortie ALE (alerte) de l'INA226
permet à l'utilisateur de définir des limites qui surveillent les registres et déclencher un drapeau lorsqu'elles sont dépassées. Le registre surveillé peut être modifié en sélectionnant la configuration d'alerte souhaitée, comme illustré à la Figure 6-8. La valeur que est pris en compte est comparé au registre Limite d'alerte. Cette limite d'alerte modifie ses fonctionnalités en fonction de la configuration sélectionnée. Il est important de noter que, par défaut, la broche d'alerte INA226 est définie sur active low. |
Bit 15 Mettre ce bit à 1, permet de configurer la pin ALErte à
1 , si le tension sur le shunt , apres conversion,
depasse la valeur programme dans le regsitre de limit Alarme
Alert Limit Register.
AFF: Alert Function Flag (bit4)
Puisqu'une seule Fonction d'Alerte peut etre suivie/monitorée
à la fois sur la Pin ALERTE ,
le flage Conversion Ready peut etre aussi utilisé pour valider
la pin ALErte
lire le flag AFF Alerte Fonction est remis à zero, seulement
lorsque le registe (06h) Mask/Enable est lu.
Quand le flag LEN (Lacth Enable)est mis à zero (sur mode
Transparent) ,le flag AFF est mis à zero
apres la conversion suivante.
Le registre Alert Limit Register contient la valeur utilisée à
comparer avec le registre selectionné comme source
dans le registre Mask.Enable( 06h) pour determiner si une limite
a été franchie .
init limite
Wire.beginTransmission(INA226_ADDRESS);
Wire.write(0x07);
Wire.write(0x4E); // Configuration MSB 20000 soit environ 500 mA
Wire.write(0x20); // Configuration LSB
Wire.endTransmission();
exemple execution alarme:
Programme :
point
de départ utilisé.
et docu. Texas instruments
source Arduino: _INA226_Test_2025-0221.ino
La led sur le module Arduino signale le dépassement via la
lecture du bit AFF.
Je n'ai pas reussi à faire
fonctionner l'interrupt sur entree 4 recevant l'info ALErte du
INA226,
mais ce n'est pas ma priorité !
J'ai doncverifié / testé la sortie ALE INA226 , en mettant une
LED tirée au +Vcc via R=2,2K .. OK ..
la led est ON si depassement seuil ( ALE=0 si depassement
!)
Le basculement LED sur ALE est quasi immediat, tandis que la led
(sortie 13) sur Arduino n'est rafraichie qu'à chaque tour de
cycle (ici 1sec)
sur terminal YAT :
clignote LED sur Arduino board
Test Buzzer sur pin 13
_INA226_Test_2025 rev 21/02
Configuration (00h)
Calibration (05h)
Conf Alarme Shunt Over Limit and No Lacth (06h)
Init Value 20000 pour Alarme limit (07h) si > 500mA
Shunt Voltage: (01H) 18410 Amps:
0.46 A
Bus Voltage (2h): 3384 Volts : 4.26 V
Current Register (04H) : 467 mA
Power Register: 79 POWER : 1.98 W
Read Alarm status ALARME : 0x8009 , Etat AFF : 0
Shunt Voltage: (01H) 22294
Amps: 0.56 A
Bus Voltage (2h): 5195 Volts : 6.55 V
Current Register (04H) : 566 mA
Power Register: 147 POWER : 3.68 W
Read Alarm status ALARME : 0x8019 , Etat AFF : 1
Alarm limit occured
Shunt Voltage: (01H) 18989
Amps: 0.47 A
Bus Voltage (2h): 3624 Volts : 4.57 V
Current Register (04H) : 480 mA
Power Register: 87 POWER : 2.18 W
Read Alarm status ALARME : 0x8009 , Etat AFF : 0
.... à suivre :
version 18F27K42 XC8
Version avec shunt 15A 150mV externe à l'INA226 ( et R100
supprimée)
Module Mesure de Courant 15Amps , avec INA226 (I2C)
et shunt 0,01 ohm