rev 0 27/10/2019
rev 21/04/2020

Description Carte à but universel, pour TESTS divers sur PIC18F,
Correctif Circuit imprimé rev 1
Test sur BASE PIC18F (en PDIP 28 pins)
Test PWM 10 Bits sortie sur RC2
Test 2 commandes Servo Moteurs (21/04/2020)




Carte à but universel, pour TESTS divers pour serie PIC18F en PDIP28,
validation de bout de codes ou fonctions ...
Validée pour PIC18F26K22, et pour le PIC18F 27K42 ..


Version Originale (Rev.0):

images/t_Base_pour_PIC18F_PDIP28_1903.gif images/t_Base_18F26K22_vue_photo_190303.gif
Photo prototype V.O. BASE 18F26K22 Layout 6.0 photo V.O. 03/03/2019


Presque toutes les PINS sont sur des Picots males ( sauf RA6 RA7 pour le quartz)
Picots males dispos sur POWER +Vcc et Gnd .
4 pins pour bus I2C1 SCL et 4 pins pour bus I2C1 SDA, avec leur R de pull up=2,7K
1 Led + pull up connectée sur RA4
2 leds à disposition : 1 jaune et 1 verte avec pull up.
Entree RA0 pour capteur Analogique LM35DZ ou OWS tel que DS18B20 via 3 pins 0V,+V,signal
Entree RA1pour capteur Analogique LM35DZ ou OWS tel que DS18B20 via 3 pins 0V,+V,signal
RA5 I/O disposur pin male.
Le PIC peut etre utilisé, soit avec le Quartz installé ou en mode FOSC interne
Port B disponible ( enlever les strap ICSP Data et Clck) ou utiliser un double swicth
RC0, RC1,RC2,RC5 I/O dispos sur pins males (Ex pour liaison SPI MAX7219 ou LCD touch screen)
3 modes d'alimentation possible :
* par une alim Externe 3.6 à 5V , reliée au bornier (+ sur borne du bas !)
* par le 5V USB , si on connecte un cordon TTL/USB Prolific sur les 4 pins UART1 (dont le 0V et +5V)
* par le VDD du Pickit 2 ( ou 3) , si pas de perippheriques connectés par ailleurs (2 pins pres du connecteur ICSP, remplacé par un strap permanent)

* Partlist from file: Base_18F26K22_191026.lay6" / 27/10/2019 09:08:30
Schemas :

images/t_Base_18F26K22_1903_seule.gif images/t_Base_18F26K22_Peripherie_schem_190314.gif
schema de la BASE PIC18F quelques Peripheriques pouvant etre associés

Base pour 18FxxKxx..... rev 27/10/2019



Correctifs Circuit Imprimé :
Mise à jour , après modifications mineures :
circuit imprimé rev1 : Base_18F26K22_191026.lay6
correctifs sur alignements de certains éléments sur la grille de 2.54mm)
Pins Reset remplacées par BP, Pins cavaliers ICSP remplacé par microswitch....etc

images/t_Base_18F2xKx2_populated_191027.gif images/t_Base_18F26K22_vue_photo_191026.gif images/t_Base_18F26K22_Board_190626.gif
Base pour 18FxxKxx.....27/10/2019 Layout 6.0 Photo rev 1 du 26/10/2019 Layout 6.0 rev 26/10/2019







TESTs sur BASE 18F

images/t_Base_18F26K22_EN _TEST_190313.gif



Projet mikroC: 18F26K22_Test_lib_LCD_I2C1_Uart1_PCF8754_Inp_1903.zip
Source : PIC18F26K22_Test_Lib_LCD_PCF8574_I2C1_et_PCF8754_Input_190312.c

PIC18F26K22_Test_Lib_LCD_PCF8574_I2C1_et_PCF8754_Input_190312.c
utilise le Q=8MHz x PLL => 32MHz
LCD 4x20 I2C + test 2em PCF8574 si present sur le bus I2C !
Init UART1 19200,8,N,1
Init I2C1 Hardware 400KHz
Init LCD 4x20 avec interface PCF8574-1
detection des 2 PCF8574
usage en lecture, du PCF8574-2 , si present sur le bus I2C.
Affichage sur LCD

voir aussi , Applications utilisant cette base :
Test_LCD_I2C_PIC18F26k22.htm#Lecture_PCF8574
Horloge_4Matrice8x8_Anneau60leds_18F26K22.htm#Horloge_Anneau
Test_Nokia5510_6x14car_PIC18F26k22.htm#Version_MikroC




Test PWM 10 bits

sortie sur pin C2 , pour commander la gate d'un MOSFET CANAL N IRLZ14 ( faible VGS)
avec en serie une R de 100 ohms
La charge est constituee d'une Ampoule voiture 12V 25W.
L'alimentation 12V provient d'une batterie 12V 7AH.
Le PIC est alimenté par la liaison USB pour l'UART ( Cordon Prolific)
Le programme lit l'entre anan RA1 ... future mesure de courant
et envoye une consigne PWM issue du clavier terminal
Option de compilation : Cde via terminal ou via ADC value.
Commande clavier Cxxxx avec xxxx pouvant varier de 0 à 1023 ( commande en 10 bits !) definie la valeur de IRatio ( PWM value)
Une commande annexe "RAMPE" emet une rampe de 0 à 1023 par pas de 64 ,puis retour à zero,
et retour à la precedente valeur IRatio.
IRatio de 0 à1023 pour 0 à 100%.

Nota : Le MOSFET est monté sur un radiateur en U de ~20 cm2 !

MCU : 18F26K22
Power supply: 5V
Directory : C:\_MikroC\_MesProjets_MikroC\_18F26K22_PWM_10b_8b
Projet : 18F26k22_UART1_RX_IT_ADC0_PWM1_10bits_Base_1903.mcppi
Source : _18F26K22_16Mhz_Uart1_ADC_PWM_10b_190314.c
CONFIG : P18F26K22_FOSC_interne_16Mhz.cfgsch
FOSC : 16MHz
Clock initiale in Khz = 16000
Init PWM1 10bits at 1000Hz on RC2


Mesure # 0 => ADC RA1 = 1023 soit 03FF
Mesure # 1 => ADC RA1 = 1023 soit 03FF

Mesure # 15 => ADC RA1 = 1023 soit 03FF
Mesure # 16 => ADC RA1 = 1023 soit 03FF
Recept UART1= RAMPE
Mesure # 17 => ADC RA1 = 1023 soit 03FF


Mesure # 900 => ADC RA1 = 1023 soit 03FFM
Mesure # 901 => ADC RA1 = 1023 soit 03FF
Recept UART1= C800
New IRatio= 800

Mesure # 4 => ADC RA1 = 1023 soit 03FF

Mesure # 24 => ADC RA1 = 1023 soit 03FF
Recept UART1= C1023
New IRatio= 1023

Mesure # 5 => ADC RA1 = 1023 soit 03FF

J'attends un INA921 pour rajouter la mesure de courant ...
car l'ACS712 gamme 5A n'est pas assez precis ...

Projet MikroC : _18F26K22_PWM_10b_2019.zip
Source : _18F26K22_16Mhz_Uart1_ADC_PWM_10b_190314.c




Test Commandes de 2 servo-moteurs via 3 timers

Scenario :
1) un 1er timer pour gerer le timming  necessaire de 20mS correspondant à la repetition des commandes (20mS) 
Ce premier timer gere les departs de 2 autres timers , pour 2 servomoteurs
donc tout est quasiment fait dans cette interruption
le choix premier avec Timer2 ne convient pas avec FOSC=16MHz , vu que Timer2 est sur 8 bits et je ne voulais pas
rajouter un compteur de 1 à 2 avec 10ms pour Timer2.. d'ou le choix de Timer0 16 bits , calé sur 20mS
sur ce top depart,
On active la Sortie Servo1 =1 et on Arme let Départ du Timer1 avec une consigne de temps =Consigne1 =1000 à 2000µS
et de meme pour la sortie Servo2=1 , Armement et Depart du Timer3 avec une consigne de temps = Consigne2 = 1000 à 2000µS
Ensuite chaque Timer s'occupe de sa consigne, sur interruption temps écoulé
2) sur IT TIMER1 TMR1IF ==1   => sortie servo1=0 et arret TMR1ON=0
3) sur IT TIMER3 TMR3IF==1   => sortie servo2=0 et arret TMR3ON=0

Les Timer 1 et 3 sont initialisé à 1mS at 16MHz , ce qui correspond à une valeur initiale de timer de 61536
il faut donc 4000 cycles pour ecouler 1000µS, d'ou ce raport de 4 à conserver pour la suite

Le programme :

Gestion interruption des 3 timers , TMR0,TMR1,TMR2 + gestion interruption RX UART
pour permettre la saisie directe d'une consigne via le clavier terminal (sur UART1)
via la commande CONS1=xxxx<CR> ou CONS2=xxxx<CR> avec xxxx pouvant varier entre 1000 à 2000 (µS)
Deux Potars , alimentés par Vcc, connectées sur RA0 (EA0) et RA1(EA1) peuvent etre utilisés, en envoyant
une commande clavier POTAR=1<CR> ou inhibe via POTAR=0<CR>
La mise à l'echelle des mesures analogique 10 bits 0 à1023 est traitée comme suit :
* limitation à 1000 (au lieu de 1023 naturel)
* rajout offset de 1000 , pour parcourir 1000 à 2000
* multiplié par 4 ( mise à l"echelle pour timer)
* envoi du complement à 65535
Ex: Consigne1= 65535- ((EA0+1000)<<2)
nota : ConsigneX avec unsigned integer (16bits)


HARDWARE :

Utilisation de ma carte de BASE 18F PDIP ...
Sortie pour Servo1 = RB1
Sortie pour Servo2 = RB2
sortie RB3 utilisée pour declencher / synchroniser la capture des signaux sur mon analyser IKALOGIC SQA50
RA0 = EA0 potar 1
RA1 = EA1 potar 2
et RC6 ,RC7 pour UART1 <--> cordon >Prolific <-> Terminal PC YAT
nota: pas de quartz utilisé ici pour FOSC, interne=16MHz

Mesures sur Analyser Ikalogic SQA50 :

images/t_Cde_2_servo_2_potars_au_mini.gif images/t_Cde_2_servo_2_potars_au_milieu.gif images/t_Cde_2_servo_2_potars_au_maxi.gif  
2 potars au mini 2 potars au milieu 2 potars au maxi  


Bien sur , les 2 commandes sont independantes, tout mixage de valeurs est possible

images/t_Cde_2_servo_2_potars_1_au_min_2_au_maxi.gif
potar 1 au mini, potar 2 au maxi



Resultat sur terminal :

Directory: C:_MikroC_MesProjets_MikroC\_18F26K22_Cde_2_Servo_Moteurs
Projet : Base_18F26K22_UART1_2_Servo_Moteur_2020_04_21.mcppi
Alim. = 5V
Config : P18F26K22_FOSC_interne_16Mhz.cfgsch
FOSC interne 16MHz
Port Hard UART1 19200,N,8,1 (RC6=TX RC7=RX)
Init RA0,1 as Analog Input
Source : Base_18F26K22_UART1_2xADC_2xServo_moteur_Timer_1_2_3_2020_04_21.c


Consignes initialisée au demarrage Consigne1=1mS, Consigne2 = 1,5mS
j= 00000 EA0= 00008 Consigne1=61535 EA1= 01000 Consigne2=59535




Software :

Projet MikroC : _18F26K22_Cde_2_Servo_Moteurs_20200421.zip
Chargeur : Base_18F26K22_UART1_2_Servo_Moteur_2020_04_21.hex
source : Base_18F26K22_UART1_2xADC_2xServo_moteur_Timer_1_2_3_2020_04_21.c

paulfjujo@free.fr


../common/GIF/LTC1286p.jpg



Retour à l'index general