V.O.   15/03/2025
rev 02/04/2025

Base PIC 18F27K42
Test PWM1,PWM2,PWM3,PWM4
Test Module IBT 2 pont en H Mosfet avec BTS7960 ( 02/04/2025)





Test PWM1,PWM2,PWM3,PWM4

Hardware :

Base 18F27K42

HARDWARE

Alimentation VCC= 5V
Carte BASE 18F27K42
Led sur RA4 pour signaler l'IT IOC
UART1 TX sur RC6

LCD 4x20 en I2C via interface PCF8574
Liaison terminal PC YAT via cordon Prolific USB/TTL 115200bds
FOSC PIC 64Mhz
4 entrees analogique sur RA0,1,2,3
4 sortie PWM pour commande d'un pont de commande Moteur DC avec 4 MOSFET
Options à rajouter :
* 1 MC¨23017 pour rajout de 8E/8S via le bus I2C*
* 2 circuits INA226 pour mesures de courant des 2 moteur DC

Test pour verification de configuration pour cette Application ..commande de moteur DC 24V


Schéma : by H.T.
Carte_Portail_2_Vantaux_24v_H-en-MOSFET_INA226-HIP4082_FQP30N06L_V5.0.3.pdf
partie PIC18 :

images1/t_PIC18F_detail_Portail_schema.gif images1/t_PIC18F27K42_MCC_Pin_manager.gif images1/t_PIC18F27K42_MCC_usage.gif
extrait du schema affectation des pins via MCC affectation des ressources et peripheriques






affectation PPS entre Pins et Fonctions

pour PWM1,2,3,4 :
RB0 Open 2
RB5 Close 2
RC1 2 Close 1
RC2 1 Open 1

RC2PPS = 0x09; //RC2->CCP1:CCP1;
RC1PPS = 0x0A; //RC1->CCP2:CCP2;
RB5PPS = 0x0B; //RB5->CCP3:CCP3;
RB0PPS = 0x0C; //RB0->CCP4:CCP4;

affectation bus I2C1 pour LCD, MCP23017 et INA219
I2C1SDAPPS = 0x14; //RC4->I2C1:SDA1;
I2C1SCLPPS = 0x13; //RC3->I2C1:SCL1;
RC3PPS = 0x21; //RC3->I2C1:SCL1;
RC4PPS = 0x22; //RC4->I2C1:SDA1;

Affecxtaion UART1
RC6PPS = 0x13; //RC6->UART1:TX1;
U1RXPPS = 0x17; //RC7->UART1:RX1;


affichage sur terminal

au lancement du programme, phase préalable indispensable ; Clignotement d'une led ..
permet de verifier que le MCU a bien démarré .. à la bonne Fréquence

#ifdef With Led_Rouge
i=0;
do
{
Led_Rouge=1;// OFF
__delay_ms(200);
Led_Rouge=0; // ON
__delay_ms(200);
i++;
}
while(i<8);
Led_Rouge=1; // eteinte
#endif



Presentation :
BASE 18F27K42 + LCD4X20+ PWM1,2,3,4 Analog RA0,1,2,3
Directory :C:\MPLABX_Projects\18F27K42_PMW_CCP1234_2025
Project : 18F27K42_PMW_CCP1234_2025
Source : main.c , rev :_250317
Config Internal Fosc 64MHz
Autres :
LCD_4bits_I2C_2024-01, UART1_Functions.h , mcc.h,
A inclure:
Dialogue_Operateur_PC_via_UART_2023-0905

LCD_chars_Speciaux_2024.h, Eeprom : Eeprom...........
Hardware : BASE 18F27K42 + I2C LCD4x20 + RTC DS3231 + UART1 115200
Schema: Schéma_Portail_V5-0-1 du 10-03.pdf by H.T.

Compiled Mar 17 2025 at 10:40:01 UTC version XC8 :2360

version Prototype : LCD Bleu a l'adresse 0x27 !
Init_I2C() 100Khz;
Test presence devices sur Bus I2C1
@ decimal # 78 soit @Device 7bits = 0X27 PCF8754 for LCD 2x16cars

adresse LCD= 39 soit 0X27

Sequence d'Init LCD 4x20 via I2C1 PCF8574
.123456789A
Chargement caracteres Speciaux en CGRAM
Initialisation PWM1,2,3,4 avec FReq 3,9KHz (Timer2,Timer4)

* PWM1 sur RC2 (TMR2)=20%
* PWM2 sur RC1 (TMR2)=40%
* PWM3 sur RB0 (TMR4)=60%
* PWM4 sur RB5 (TMR4)=80%

Test differentes valeurs de Duty-cycle via le clavier terminal YAT
Entrer une valeur PWM=xxxx puis <enter> au clavier
PWM2=0333
Entrer une valeur PWM=xxxx puis <enter> au clavier
Entrer une valeur PWM=xxxx puis <enter> au clavier
PWM2=0333
Recu :PWM2=0333
PMW2-RC1 333 32.6%
Entrer une valeur PWM=xxxx puis <enter> au clavier
Entrer une valeur PWM=xxxx puis <enter> au clavier
PWM3=0666
Recu :PWM3=0666
PWM3-RB5 666 65.3%
Entrer une valeur PWM=xxxx puis <enter> au clavier




Usage de SQA50 :
Analyser logique 4 voies


images1/t_SQA_capture_init_PW1-PWM2-PWM3.gif


last update : 17/03/2025
projet MPLABX IDE 6.00 avec XC8
Projet : 18F27K42_PMW_CCP1234_2025-0317.X.zip
main : main_PWM1234_2025-0317.X.c
Chargeur :
18F27K42_PMW_CCP1234_2025-0317.X.hex




APPLICATION : Test sur module IBT 2 driver MOsfet et moteur DC

Le module driver

Driver de moteur Haute Puissance IBT-2 BTS7960 43A
Reference: IBT-2 16,80 €
Pin Nom Fonction
1 RPMW Forward Level, PWM signal actif à l'état haut
2 LPWM Reverse Level, PWM signal actif à l'état haut
3 R_EN Forward Enable, signal actif à l'état haut
4 L_EN Reverse Enable, signal actif à l'état haut
5 R_IS Forward Drive, sortie Alarme consommation
6 L_IS Reverse Drive, sortie Alarme consommation
7 VCC Alimentation +5V
8 GND Masse

7 R_IS Right current sense output
8 L_IS Left current sense output

images1/t_BTS 7960_Pont_MOSFET.gif images1/t_IBT2_Driver_Mosfet_pour_moteur_RC.gif

lien sur le module

Erreur POLARITE alim...



SKU: DRV-1012
Resumé:
- Tesnion d'alimentation 6 ~ 27V continu.
- Driver: 2 x BTS7960 Pont en H.
- Pic Maxima en courant : 43-Amp.
- PWM jusqu'à 25 kHz.
- Niveau d' Entree de controle : 3.3~5V.
- Mode de control : PWM ou niveau 1
- Gamme de controle (Duty Cycle): 0 ~100%.
- Verrouillage si sur-tension .
- Arret si sous-tension .
- Taille du module : (Long x Larg x Hauteur): 50mm x 50mm x 43mm.

ATTENTION : la doc BTS7960-motor-driver.pdf comporte des erreurs !
Inversion de polarité de l'alim sur le bornier vert
De plus les commandes individuelle Enable Sens de rotation ne sont pas operationelles
Il faut les 2 info Enable Sens Horaire et Enable sens Trigo pour pouvoir faire tourrner le moteur dans un sens (RA4)
dependant du PWM actif (Horaire ou Trigo)

donc pour mon test j'ai mis les 2 Enable au niveau 1 .. car 1 seul niveau bas inhibe la rotation !!
PMW1 sur RC2
PWM2 sur RC1
Frq PWMx à 3.9Khz

images1/t_Prototype_test_modulee_IBT2_avec_18F27K42_PWM1_PWM2_2025-03.gif
l'aimant positionné sur le moteur n'est là que
pour le caler en position.
A vide , il ne consomme pas grand chose..
La valeur PWM1 ou PMW2 est saisie au
clavier terminal YAT .
RA4=1 en permanence.

prototype de test

schema de principe


Connectique :

Dans un premier temps, je n'ai pas utilisé les pin 5 et 6 ..info overload (mesure de courant)
il faut un état 1 sur RA4 (reliée aux pins 5 et 6 du module) pour faire tourner le moteur
si une commande PWM1 en Pin 1 ou PWM2 en pin 2 est > à 0%
test avec PWM2=0000= 0% et PWM1=0500= 50% -> le moteur tourne sens Trigo
test avec PWM2=0500 = 50% et PWM1=0000=0%->..moteur tourne sens Horaire
test avec PWM2=0500 = 50% et PWM1=0250=25% -> soit delta +0250 =>moteur tourne sens Horaire,mais moins vite
test avec PWM2=0500 =50% et PWM1=0750 =75% -> soit delta -0250 =>moteur tourne sens Trigo,mais moins vite
Attention, si les 2 sorties PWMx sont egales :
test avec PWM2=0500 =50% et PWM1=0500=50% -> soit delta 0%..
moteur arreté

Mesures de vitesse avec Digital Tachometer
outil DT-2234C
avec visée laser
Un Ruban élément réflechissant * ( fournit avec l'appareil est collé sur l'arbre de sortie

images1/t_Usage_Tachometer_laser.gif

Mesures f(PWM) sur moteur à vide!:
PWM1=0000=>20% PWM2=0200=>40% ..........522Tr/mn Horaire
PWM1=0200=>20% PWM2=0000=>0% ............520Tr/mn trigo
PWM1=0000=> 0% PWM2=0250=>25% ..........698Tr/mn Horaire
PWM1=0250=>25% PWM2=0000=>0% ............698Tr/mn trigo
PWM1=0000 => 0% PWM2=0400 =>40% .......1125 Tr/mn Horaire
PWM1=0400=> 40% PWM2=1000=>0% .........1122 TrMn Trigo
PWM1=0000 => 0% PWM2=1000=>98% .......2995 TrMn Horaire
PWM1=1000 => 0% PWM2=0000 =>0% ........3002 Tr/mn Trigo

* collage( élément reflecteur ) trop faible, mettre un point de glue !

Mesures de courant
signaux de sortie (en courant sur R=10K) sur Pins 5 et 6

voir tableau sur la vidéo :
https://www.youtube.com/watch?v=JaOuOL1J4-E
Scary IBT-2 Current Measurement (Video#105)
R 1K 0.117V/Amp 5Amp=>0.59V
R 10K 1,17V/Amp 5Amps =>5.88V


test avec R=5K (R5 103 et R6 103 internes en //)
à 0% ..pas de courant ..j'ai déja 1.952V
et ensuite n'évolue quasiment pas jusqu'à PWM=100% de cde : mesure=2.00V

Conclusion : NE MARCHE PAS ou module defectueux
R_IS et L_IS
INEXPLOITABLES !


paulfjujo@free.fr


../common/mylogo_CI.jpg



Retour à l'index general