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 :
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
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
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
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
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 !