version 0.0
... 23/01/2020
rev 30 Mai 2020.
Le Projet
Horloges 2020 (Global)
Janvier 2020
Synoptique
Afficheurs
Geants
Led
RGB WS2812 / SK6812
Partie #2 :
Horloge Esclave 4 Afficheurs 7seg
Géants + Ruban 60 leds RGB (18F26K22 #2)
Schema part#2 ( 28/05/2020)
Bilan
des tensions partie segment Afficheur
Circuit Imprime
Part#2
Explications
Programme Part #2
( 27/05/2020)
Sofwtare
Part #2 ( 30/05/2020)
HORLOGE 6 Afficheurs 7 seg Version
autonome avec RTC
Schema part#3 ( 24/05/2020)
Circuit
Imprime Part#3
( 20/05/2020)
Sofwtare Part #3
Annexes :
Tests #1 et #2
PWM pour Luminosité (Alim) Afficheurs 7seg
Test
avec Ruban 32 Leds RGB
Cde sur 2fils
Ruban 60 Leds
RGB Cde sur 1 seul fil
programme
simple de test Ruban
Mode TEST des
afficheurs Geants 7 seg , en STATIQUE
Partie Leds
separation (schema et C.I.)
lien sur Partie #1
Projet Horloge Afficheur Geants 8 "
et ruban de 60 leds RGB
Usage d'un PIC et du Pickit3 Microchip pour charger l'executable
Environnemen t: Mikro C V 7.60
MCU : FOSC interne 16x4=64MHz
Synoptique
Rev 0304
Utilisation de 2 MCU (18F26K22)
Part#1 : Horloge avec Affichage Defilant sur 12
matrices , avec RTC (MCU#1=
Part#2 : Horloge avec 6 Afficheurs 7seg géants 8 "
, MC#2, synchronisée par MCU#1
Plusieurs type de liaison à mettre en oeuvre :
Liaison serie SPI 1 specifique pour les 2 affichage
temperatures constitués chacun de 3 modules MAX7219 +
Mtrice8x8 type H
Liaison Serie SPI 2 specifique pour les 60 leds RGB WS218B
Laison I2C pour la RTC DS3231..sur laquelle on recupere
le 1HZ = Synchro de tout l'ensemble
Liaison UART1 -> module BlueTooth HC05
Liaison OWS : 1 entree OWS commune aux 2 mesures DS18B20
( ou 2 entrees OWS si possible)
8 Sorties MCU pour piloter les 7 seg+DP des afficheurs (en
multiplexage) via un ULN (canal N)
4 sorties MCU pour piloter les ANODES des afficheurs via
un UDN canal P , en 24V
L'oscillateur interne sera utilisé pour liberer RA6 et
RA7 si le MCU est en PDIP28
Une entree 1Hz sur RB0 en mode interrupt pour la synchro
du programme.
MCLR entree RESET avec un Bouton Poussoir.
1 sortie led de signalisation sur RA4
Apres avoir étudié le cas d'usage d'un seul PIC
18F46K22 en DIP40,
il s'avere que les timings necessaire au defilement des
12 matrices
du ruban 60 leds , et de l'affichage dynamique des 6
afficheurs 7 segments
et la possibiliter de dialoguer en RS232 , allait devenir
trop comlexe à gerer
d'où l'usage de 2 MCU pour repartir les taches et avec
un timming bien plus souple à gérer..
* compter ~80 pour 4 afficheurs 8 "
par SEGMENT :
Forward voltage =1,8 à 2V pour une diode led rouge
une branche de 10 leds en serie => => 18 à 20V aux
bornes
=> il faut 24V minimum d'alim ( avec les pertes aux
bornes des ULN et Mosfet évaluées à 3 ou 4V)
I moyen=18mA par branche de 10leds ou pour l'ensemble des
4 branches du segmen ?
valeur typique Inconnue ,pas
d'info sur datasheet
Par afficheur :
1 afficheur = 7 segm => 7x18mA => 126mA
Pour 4 afficheurs geant => 504mA
mais avec le multiplexage, on affiche 1 afficheur à la
fois (soit 25% du temps)
donc une Alim 24V 1A serait suffisante
pour la commande de lafficheur
coté 7segments :
1 ULN NPN driver ULN2803A TTL, 5.0 V CMOS 50 V/500 mA
coté Anode commune
driver UDN2981 PNP 50V 500mA 65°C par watt
Usat=2V at 350mA
350mA at 40% dutycycle pour 8 sorties actives en meme
temps
on aura quune sortie active sur 8 , à la fois , +
multiplexage soit à 25% du temps..
devrait etre OK
Phase de test intensive à prevoir,
avant conception du circuit imprimé definitif.
sinon il faut un MOSFET canal P individuel par afficheur
ex: AO3401_MOSFET_CanalP_Low_VGS.pdf en CMS .. TRES PETIT,jamais
testé ?
+ 1 transistror 2N2222 et 3 Resitances pour inverser le
sens de la pulse sortie PIC
IRF9Z24 TO_220 AB , VGS direct un peu juste 4,5V mais OK
avec cde reverse via 2N2222
voir Cde_Anode_Afficheur_via_Mosfet_Canal_N.jpg
video : Horloge_2020_4x7seg_8pouces_Geamel_2020_0601.webm
Ensemble ruban de 60 leds RGB
datasheet WS2812
Intelligent control LED integrated light source
La lecture de cette datasheet est INDISPENSABLE pour
comprendre le fonctionnement ASYNCHRONE de
la liaison pour commander ce composant.
( Traduction partielle)
le circuit de controle RGB (Rouge Vert Bleu) est
intégré dansle boitier et formme un controle comple de
pixell.
Un circuit interne de remise en forme apres chaque
element permet de ne pas accumuler les erreurs.
Un circuit interne de RESET et perte d'alimentation est
inclus .
Chaque pixel des 3 couleurs elementaires RGB peunet avoir
256 niveaux d'amplitude , pouvant ainsi definir 6777216
couleurs
La frequence de rafraichissement doit etre > 400KHz.
Une sortie permet de monter les elements (aneaux) en
cascade , pour une transmission unifilaire ... jusqu'à L=5M
On peut avoir un rafraichissement jusqu'à 30Frame/sec
jusqu'à 512 leds en cascade.
Les data sont envoyée à 800 Kbps.
Dimensions et connectique :
Caracteristique LED :
nM |
mCd |
mA |
volt |
|
Rouge |
620-630 |
550-700 |
20 |
1.8-2.2 |
Vert |
515-530 |
1100-1400 |
20 |
3.0-3.2 |
Bleu |
465-475 |
200-400 |
20 |
3.0-3.4 |
WS2812
Operation frequency Fosc2 800
KHz
transmission data rate mini 400Kbps
Data transfer time( TH+TL=1.25µs±600ns)
T0H 0 code ,high voltage time 0.35us ±150ns
T1H 1 code ,high voltage time 0.7us ±150ns
T0L 0 code , low voltage time 0.8us ±150ns
T1L 1 code ,low voltage time 0.6us ±150ns
RES low voltage time Above 50µs
1 bit de commande => necessite 1 byte
3 bytes pour GRB valeur
donc 3 x 8 = 24 bits de commande
60 leds * 3 bytes couleur GRB => 180 bytes
180 x 8 bits de commandes => 1440 bytes pour
piloter 60 leds RGB
MCU à 64 MHz ==> 62.5nS par cycle = 1 NOP
un bit de commande doit avoir une periode comprise entre
1,2µS +- 600nS
soit de 600nS à 1800 ns ( en therorie)
recommandé 1,2 à 1,4µS maxi
avec ajustage du nombre de NOP dans ZEROS et ONES
Zero = 380ns ON + 860nS OFF soit T= 1260 nS
UN= 620ns ON + 640nS OFF soit T= 1260 nS
voir Anneau_60_leds_RGB_SPI_Hardw_Test_190408.c
sequence de test :
SQA=1;
ZEROS();ZEROS();ZEROS();ZEROS();ONES();ONES();ONES();ONES();
// VERT
SQA=0;
ZEROS();ZEROS(); ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();ZEROS()
; // ROUGE
SQA=1;
ZEROS();ZEROS(); ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();ZEROS()
; // BLEU
SQA=0;
allume la 1ere led en VERT !
le timing doit etre respecté ..( precision du NOP =62.5nS
avec réglage fin de +-3% possible avec valeur du
registre OSCTUNE )
L'extinction de l'anneau se fait en envoyant 1440 bytes
à ZERO
L'index pointeur de led est remis à zero si Dout à
zéro pendant > 50µS
Partie # 2 :
Horloge 7 segment + Ruban 60 Leds RGB (MCU #2)
la meme base que L'horloge 7seg ULN,UDN avec 60 leds version 2019
mais avec un ruban leds RGB au lieu de 60 leds individuelles, et des plus gros afficheurs de 8 pouces
SANS RTC
SANS la partie HARDWARE 8 x CD4015 !
SANS Mesures de temperatures OWS
AVEC commande ruban 60 leds, en SPI software
AVEC reception d'infos du MCU#1 via RX UART , pour synchro HEUR
ou traitement autre commande Telle que PLM
Schema Part # 2:
rev3 : 28/05/2020
SANS RTC !
schema en version pdf : Horloge_2020_Esclave_4digits_Geants_18F26K22_ruban_60ledsRGB_M948_2020_05_28.pdf
schema crée avec WinSchem : Horloge_2020_Esclave_4digits_Geants_18F26K22_ruban_60ledsRGB_M948_2020_05_28.wh5
Circuit Imprimé Part # 2:
Fichier Layout6 : NOUVELLE HORLOGE PIC GEANTE_Geamel_200403_rev1.lay6
version Horloge esclave !
Test #1 modulation PWM avec Alim 12V
En entree Alim = bloc alim 230V/ 12V DC 0,75A
Usage de MSSP1 Hardware avec sortie sur RC2 => PWM1_Init(7000);
en mode 8 bits , reglage de 000 à 255 pour 0 à100%
Le schema de cette partie :
en sortie de l'interface MOSFET canal P IRF9Z24 (boitier TO220)
un transistror NPN 2N2222 sert à faire une commande HIGH SIDE du MOSFET situé sur le + Alim 12V
il reçoit sur sa base la sortie PWM RC2 du PIC
la commande VGS du MOSFET est suffisament élévée pour assurer une conduction optimale
mais la consommation partie Afficheurs Anodes communes (afficheurs de 18mm de haut seulement ) est insuffisante
ce qui oblige à rajouter 110 ohms de charge ( 2x220 0,5W en parralele)
Essais prealables fait avec une charge de 15 ohms 2W + 15 Ohms 2W + Ampoule 3,6V 0,3A
... because,je n'avais pas d'ampoule 12V 5W sous la main
permettant de BIEN VOIR VISUELLEMENT la commande progressive possible en PWM de 0 à100%
Partie Software :
CPrint(" Test PWM1 output on RC2\r\n");
PWM1_Init(7000);
Delay_ms(100);
PWM1_Start();
Delay_ms(100);
// PretTest avec ampoule et R serie 30 ohms
for (i=1;i<255;i++)
{
PWM1_Set_Duty(i);
Delay_ms(50);
WordToStr(i,CRam1);
Print(CRam1);
CRLF1();
}
Test de la fonction PLM
PLM=21:06 => Plage Luminosité Reduite entre 21H00 et 06H du matin
Mesures Tension moyenne DC et courant moyen , sur Alim Anodes afficheurs ,
(Avec les 110 ohms en charge supplementaire non inclus dans la mesure de courant) :
* En DEHORS de la PLM :
Synchro Time : HEUR=17:00:00
MaxH=: 21 MinH=: 6 Mn= 0 Sec= 0 Time is : 17:00:00;Lum.Maxi;Melod.ON ;
11,54V.. consommation uniquement des 6 afficheurs 90 à 110mA
*Dans la PLM
Synchro Time : HEUR=22:59:00
MaxH=: 21 MinH=: 6 Mn= 59 Sec= 0 Time is : 22:59:00;Melod.OFF;Lum.Mini;
4.45V consommation uniquement des6 afficheurs = < 8mA
Nota:
je ne constate pas d'interference avec les 7000Hz du PWM et les 1000/4=250Hz du multiplexage des afficheurs
La Melodie est aussi Inhibée à l'interieur de la PLM
26/05/2020
2em TEST avec Alim 18V
il s'avere que le rajout de C6=1000µF fait que la progressivité sortie MOSFET f (PWM) n'est pas lineaire
et reste prêt du Maxi 100%, car le condo n'a pas le temps de se dégongler .. à 4KHz !
Sans C6 ! ..test OK
. seul le 100nF arrondi un peu les angles ..
PIC18F26K22 avec liaison ICSP, liaison UART1 , Liaison PWM sortie RC2 -> base 2N2222
Le Pickit3 alimente le montage via VDD ( 2,7 à 5V)
Une alim 18V DC 2,5A alimente l'entrée MOSFET --> 2 Lampes de 12V 5W en serie sur la sortie
0V alim 18V relié au 0V alim PIC
Deroulement programme:
Test avec 18F26k22_UART1_RX_IT_ADC0_PWM_8bits_2020_0526.hex
Test valeurs 25,128,255 ...OK
Test Rampe montee et descente OK
le MOSFET ne chauffe pas trop (35°C), SANS C6 !
Etapes de Tests:
MCU : 18F26K22
Power supply: 2.7 à 5V
Directory : C:\_MikroC\_MesProjets_MikroC\_18F26K22_PWM_8b_10b_2020
Projet : 18F26k22_UART1_RX_IT_ADC0_PWM_8bits_2020_05.mcppi
Source : _18F26K22_16Mhz_Uart1_ADC_PWM_8b_2020_0526.c
FOSC : 16MHzx4(PLL) => 64MHz
ABCTest Reglage OSCTUNE, avec Freq meter sur RA6
Clock initiale in Khz = 64000
Int PWM1 8bits at 4000Hz on RC2
PWM1=25=10%
Attente appui touche clavier S
s
PWM1=128=50%
Attente appui touche clavier S
s
PWM1=255=100%
Attente appui touche clavier S
s
PWM1 rampe montée Lente
Attente appui touche clavier S
s
PWM1 rampe Descente Lente
s
Attente appui touche clavier S
s
PWM1 rampe montée Rapide
Attente appui touche clavier S
s
PWM1 rampe Descente Rapide
Attente appui touche clavier S
.. en boucle
Test suivant avec l'appli HORLOGE 7seg
chargée dans le PIC (toujour sur breadboard)
Execution du Test Rampe PWM en debut du programme => OK
Test en modifiant l'Heure HEU=22:00:00 pour un PLM de 21:06
La valeur de PWM commute bien de 255 à 25 .. constaté sur niveau éclairage ampoules => OK
MaxH= 21;MinH= 6;Time= 20: 20: 0: 5; PWM=255 Lum.Maxi; Melod.OFF; <- lampe allumée 100%
MaxH= 21;MinH= 6;Time= 20: 20: 0: 6; PWM=255 Lum.Maxi; Melod.OFF;
HEUR=22:00:00
Synchro Time : HEUR=22:00:00
RAZ anneau 60 leds
MaxH= 21;MinH= 6;Time= 22: 22: 0: 0; PWM=255; Melod.OFF; Lum.Mini;
RAZ anneau 60 leds
MaxH= 21;MinH= 6;Time= 22: 22: 0: 0; PWM= 25; Melod.OFF; Lum.Mini; <- lampe allumée 10%
MaxH= 21;MinH= 6;Time= 22: 22: 0: 1; PWM= 25; Melod.OFF; Lum.Mini;
Programme pour ce test :
projet : _18F26K22_PWM_8b_10b_2020.zip
source mikroC : _18F26K22_16Mhz_Uart1_ADC_PWM_8b_2020_0526.c
chargeur : 18F26k22_UART1_RX_IT_ADC0_PWM_8bits_2020_0526.hex
Test PMW (distant) sur Horloge Geamel et alim 24V
PWM=0 => 0V
PWM=25 => soit 10% => 8.3V sur les lampes en sortie MOSFET (2 lampes de 12V 5W en serie)
PWM=255 => soit 100% => 22.5V sur les lampes en sortie MOSFET
Test avec Afficheurs Geants 7seg et R=330 ohms en parallele sur la sortie
Memes mesures !
Nota:
Avec R serie =100 ohms sur les sortie ULN Segments, le courant par segment est tres bas : 0.6mA seulement
soit reduire notablement Rserie, soit augmenter la tension d'alim de 1 à 2V..
R serie segment passée de 100 à 56 Ohms .
Test Melodie :
Aucune action , reaction ..pas de sortie Melodie (accoustique) suite commande PIN RA6
Test avec PIC enlevé du support, strap Pin10 et 0V => inoperant => PB Hardware
il s'avere que R=100 et R=10K sont inversées au niveau d ela ciommande Gate du MOSFET canal N IRLZ14
le niveau logique de commande est alors ECRABOUILLE par la 100 ohms ..=> à Modifier et retester
Nota:
Test sur breadboard PIC
Alim +3,3V pin 4 M948-2 -> pin pin 3 M948-2 Pin 10= RA6 pin1 du M948-2 220K entre pin 5 et 6 Buzzer piezo entre pin 9 et 10 Melodie=RING=0
Melodie=STOP=64
test OK apres retablissement du niveau logic correct
Video :
Test2_PWM_Mosfet.webm
Rajout Test sur Ruban 32 leds RGB WS2801 (je n'ai pas (encore) de ruban 60 leds !)
déja testé ICI :
rappel :
WS2801 RGB Wiring
-gros Fil Rouge +5V
-gros Fil Noir 0V
- connector fil Noir ------+5V
- connector fil vert <------ SPI RC0 Clock
- connector fil Rouge<---- SPI RC5 Dout (config provisoire en attendant le Circuit imprimé final)
- connector fil Bleu ------0V MCU
nota:
pour le Ruban Flexible RGB de 1m , avec 60 leds adressables 2529 (Gotronics)
Leds SK6812 (compatible avec WS2812B).
les gros fils : noir et rouge = alim 5V
Petits fils : Noir= Gnd , Vert= entree SPI sur sortie RC0 MOSI (SPI software)
*sortie RC1 inutilisée.
Rajout d'un mode BAVARD via Cde BAV=1 ou BAV=0
( BAV=1 par défaut , au lancement programme.)
en mode Bavard (BAV=1) envoi sur terminal MCU#2 de la sequence complete chaque seconde ,
sinon minima (BAV=0) toute les minutes pleines:
Presentation :
Directory :C:\_MikroC\_MesProjets_MikroC\_Horloge_2020_Aff_Geant_Matrices8x8_RGB_leds
MikroC pro 7.6.0 Beta
Projet :Horloge_2020_6x7seg_Geants_ruban_60leds_RGB_18F26K22_2020_04.mcppi
Special Bluetooth *.apk
Horloge 6 Afficheurs 7seg Geants avec ruban 60 Leds RGB Leds
Config bit : P18F26K22_FOSC_interne_8xPLL_32Mhz.cfgsch FOSC:32.0 MHz
Eeprom: Horloge_2020_6x7seg_Geants_ruban_32leds_RGB_18F26K22_Eeprom_2020_04.ihex
Source : Horloge_2020_6digits_Geants_18F26K22_ULN_UDN_Melodie_Ruban_RGB_32leds_2020_0405.c
MCU#2 18F26K22, SPI software,UART1 115200 bds
Ruban 32 Leds RGB WS2801 RC5=Dout RC0=Clock
Le MCU#1 genere la synchro avec sa RTC DS3231, via l'UART vers MCU#2
Duree Melodie en eeprom : 4
Plage Horaire Luminosite et Melodie en eeprom : 6 21
PLM <Max H= 21 Min H= 6 >
Init data pour Ruban 32 LEDs RGB
Connecteur: Noir=+5V Bleu=0V Vert=Clck Rouge=Din
Init SPI software : RC0=Clock , RC5=Dout
Test Ruban 32 leds
MaxH=: 21 MinH=: 6 Mn= 12 Sec= 12 Time=00:00:10 Lum.Maxi; Melod.OFF;
MaxH=: 21 MinH=: 6 Mn= 12 Sec= 12 Time=12:12:12 Lum.Maxi; Melod.OFF;
MaxH=: 21 MinH=: 6 Mn= 12 Sec= 13 Time=12:12:13 Lum.Maxi; Melod.OFF;
BAV=0
Reception BAVard cde : BAV=0
Time=12:16:00
Time=12:17:00
Time=12:18:00
BAV=1
Reception BAVard cde : BAV=1
MaxH=: 21 MinH=: 6 Mn= 18 Sec= 5 Time=12:18:05 Lum.Maxi; Melod.OFF;
MaxH=: 21 MinH=: 6 Mn= 18 Sec= 6 Time=12:18:06 Lum.Maxi; Melod.OFF;
MaxH=: 21 MinH=: 6 Mn= 18 Sec= 7 Time=12:18:07 Lum.Maxi; Melod.OFF;
Pre_test du Ruban 32 leds , en debut de programme
void Send_RBG(unsigned char R, unsigned char B, unsigned char V)
{
Soft_SPI_Write(R);
Soft_SPI_Write(B);
Soft_SPI_Write(V);
}
...........etc ..Rouge=255;
Vert=255;
Bleu=255;
Mode=0;
LEDs=32; // ENTER Total LEDs
CPrint(" Init SPI software : RC0=Clock , RC5=Dout\r\n");
Soft_SPI_Init();
// parcours des 32 leds ruban en mode POINT
CPrint(" Test Ruban 32 leds\r\n");
Delay_ms(100);
Raz_Ruban();
for (k=0;k<32;k++)
{
StartTransfer();
for (i=0;i<k;i++)
{
for(j=0;j<k;j++) Send_RBG(0,0,0);
if (j==k) Send_RBG(Rouge,Bleu,0);
for(j=k+1;j<32;j++) Send_RBG(0,0,0);
Delay_ms(50);
}
EndTransfer();
Delay_ms(50);
}
Tests permanents liés à la ZONE PLM :
concernant la validation de la Melodie jouée à chaque Heure pleine, à la luminosité Afficheurs (PWM)
et à la luminosité du Ruban Leds RGB
if ( ((Hour < MinHour) || (Hour >MaxHour)))
{
Melodie=STOP;
if(Bavard==1)
{
CPrint("; Melod.OFF;");
CPrint(" Lum.Mini;");
}
Rouge=10;
Bleu=10;
Vert=10;
PWM1_Set_Duty(25);
}
else
{
if(Bavard==1) CPrint(" Lum.Maxi;");
Rouge=255;
Bleu=255;
Vert=255;
PWM1_Set_Duty(255);
if( ( ((Mn==0) && (Sec < Duree_Melodie))) )
{
Melodie=RING;
if(Bavard==1)CPrint(" Melod.ON ;");
}
else
{
Melodie=STOP;
if(Bavard==1) CPrint(" Melod.OFF;");
}
}
Le programme HORLOGE 2020 , application #2
Cette horloge , avec MCU #2 (18F26K22), peut tourner en mode Roue Libre (autonome),
puisque l'heure est élaborée via Timer4 sur 4mS => 250 interrupt par sec.
Nota : pourquoi 4mS et non pas 1sec ( possible avec Timer0 !) ?
Because usage du multiplexage des 6 afficheurs.. en 6x4=24mS
MAIS , du fait de l'usage de FOSC Interne 64MHz , pour ce MCU #2 et qu'il n'y a pas de RTC DS3231,
j'ai pu constaté une dérive de l'ordre de 22sec en 3Heures , soit -0,2%
* avec le terminal YAT et option "Time Stamp" , envoi sur terminal de l'Heure PIC#2 modulo 1minute.
Depart du test
(14:56:03.482) Time=14:56:00 -3
(15:25:07.212) Time=15:25:00 -7
(15:50:10.019) Time=15:50:00 -10
(17:31:21.910) Time=17:31:00 -21
(17:56:25.189) Time=17:56:00 -25
Fin du Test
Decalage : -25 - -3 => -22 secondes en 3 Heures
- 22/ (3600*3) => soit 0.2%
avec OSCTUNE=0 et Alim VCC=3,9V
nota : l'action de OSCTUNE peut aller de -3 à +3 % du nominal
Ce qui est en soi INACCEPTABLE !
MAIS, en usage final, elle sera synchronisée par l'application MCU #1
qui est dotée d'une RTC DS3231 , via une laison UART MCU#1 -> MCU#2
Synchro toute les minutes pleines, par l'envoi de HEUR=HH:MM:SS.
pris en charge quasi-immediate par le MCU#2 ( UART1 à 115200 bds) qui reactualisera les registres: Sec,Min,Hour
Ruban 60leds prévu :
pour la suite ( en remplacement du 32 leds pour les pré-test)
https://www.gotronic.fr/art-ruban-rgb-1m-60-leds-adressables-2529-31152.htm
Ruban RGB 1m 60 leds adressables 2529
Ruban flexible à LED RGB d'un mètre équipé de 60 leds SK6812 (compatible avec WS2812B).
Ces 60 leds sont raccordées en série et communiquent avec un microcontrôleur type Arduino ou
compatible via une sortie série 1 broche.
Caractéristiques:
Alimentation: 5 Vcc
Consommation: 40 mA par led (3 couleurs au maxi)
Nombre de leds: 60
Led + CI: SK6812
Longueur: 1 mètres
Largeur: 12 mm
Couleur du ruban : noire
Livré avec 5 attaches de fixation
Norme IP: IP65
Poids: 45 g
Pilotage du Ruban, comme sur mon horloge "Anneaux 60 leds" (Ws2812):
en mode RUBAN .
2 modes de fonctionnement via commande M=1 ou M=2
.Mode=1 => Couleur de base alternée chaque seconde : ex Bleu,Vert,Blanc,Jaune,Violet avec LED ROUGE modulo 5 sec.
Mode=2 => Couleur change chaque minute
voir l'horoge ANNEAU 60 Leds avec WS2812
Le timming differe legerment avec les SK6812
generation des "simili bits" ZERO et UN en ASM
Test avec Anneau_60_leds_RGB_Bit_bang_Hardw_Test_190408.c
et Analyser Logique Ikalogic SQA50
do
{
LD1=0;
UART1_Write_CText(" Phase de Test avec SQA analyser \r\n" );
SQA=1;
ZEROS(); ZEROS(); ZEROS(); ZEROS(); ZEROS(); ZEROS(); ZEROS(); ZEROS();
SQA=0;
ONES(); ONES();ONES();ONES();ONES();ONES();ONES();ONES();
SQA=1;
_asm NOP
SQA=0;
LD1=1;
Delay_1sec();
Delay_1sec();
Delay_1sec();
}
while(1);
Software : _Ruban_60_leds_RGB_Bit_bang_Hardw_Test_2020_0516.zip
source mikroC : Ruban_60_leds_RGB_Bit_bang_Hardw_Test_2020_0516.c
Programme de test ruban en Mikrobasic
Test_ASM_into_Basic_cde_Led_RGB_via_RC0.mbas
Test_ASM_into_Basic_to_drive_RGB_WS81212b_via_RC0.hex
Ensemble de leds piloté via la sortie RB0 du PIC , via un ULN2083
Sortie 1Hz
Programme HORLOGE (Esclave) 2020 part#2
Codage Afficheurs 7 segments
Codage_Afficheur_Geants_Horloge2020.xls
ATTENTION : codage segments Horloge 2020 différent de Horloge 2019 sur PORTA
Nouveau codage :
0 126 =sA+sB+sC+sD+sE+sF
1 12 =sB+sC
2 182 =sA+sB+sG+sE+sD
3 158 =sA+sB+sC+sD+sG
4 204 =sB+sC+sF+sG
5 218 =sA+sF+sG+sC+sD
6 250 =sA+sD+sE+sF+sG+sC
7 14 =sA+sB+sC
8 254 =sA+sB+sC+sD+sE+sF+sG
9 222 =sA+sB+sC+sD+sG+sF
const code unsigned char Segments[]={126,12,182,158,204,218,250,14,254,222,0};
pour memoire :
ex codage pour horloge 2019
const code unsigned char Segments[]={63,6,91,79,102,109,125,7,127,111,0};
Déroulement programme sur terminal :
Presentation :
Directory :C:\_MikroC\_MesProjets_MikroC\_Horloge_2020_Aff_Geant_Ruban_RGB_SK6812_60_leds
MikroC pro 7.6.0 Beta
Projet Part#2 :Horloge_2020_6x7seg_Geants_ruban_60leds_SK6812_RGB_18F26K22_2020_05.mcppi
Special Bluetooth *.apk
Horloge 2020 6 Afficheurs 7seg Geants avec ruban 60 Leds RGB Leds
Config bit : P18F26K22_FOSC_interne_16xPLL_64Mhz.cfgsch FOSC:16MHz x 4 (PLL) MHz
Eeprom: Horloge_2020_6x7seg_Geants_ruban_32leds_RGB_18F26K22_Eeprom_2020_05.ihex
Source : Horloge_2020_6digits_Geants_18F26K22_ULN_UDN_Melodie_Ruban_60leds_RGB_SK6812_2020_0521.c
MCU#2 18F26K22, SPI Bit Bang,UART1 115200 bds
RC0=MOSI Dout -> DIN Ruban 60 Leds RGB SK6812
ce MCU#2 recoit sa synchro du MCU#1 incluant une RTC, via l'UART et cde HEUR=HH:MM:SS
Duree Melodie en eeprom : 4
Plage Horaire Luminosite et Melodie en eeprom : 21 6
PLM <Max H= 21 Min H= 6 >
Test Led RC5 output ......
Test RA6 cde melodie .
Init data pour Ruban 60 LEDs RGB
Connecteur: Noir=+5V Bleu=0V Vert=Din
Test Ruban 60 leds
Pre_Test Parcours des 60 leds
Position Led : 0
Position Led : 1
Position Led : 2
..etc..
Position Led : 58
Position Led : 59
Init cde PWM1 lum.Afficheur geants on RC2
Test PWM1 output on RC2
1
2
3
4
5
... etc ...
253
254
MaxH= 21;MinH= 6;Time= 12: 12: 12: 12; PWM=128 Lum.Maxi; Melod.OFF;
MaxH= 21;MinH= 6;Time= 12: 12: 12: 12; PWM=255 Lum.Maxi; Melod.OFF;
Mode TEST partie HARDWARE connections afficheurs 7 seg
Entrée dans ce mode Test via la commande clavier : T=1
fichier config terminal : Terminal_Horloge2020_Tests_Afficheurs.yat
exemples :
Digit1 passe la commande A=4 => digit des Minutes
Digit2 passe la commande A=8=> digit des Minutes*10
etc..
Seg A passe la commande B=2 => segment A du digit précédement selectionné
Seg B passe la commande B=4 => segment B ....
etc ..
Leds separation passe la commande B=1
B=0 => Aucun segment selectionné
A=0 Aucun digit selectionné
Sortie du mode test via commande : T=0
Mesures réelles sur afficheur Geant KDS-80011-7
en mode Test Afficheurs 7seg T=1
avec A=0 => 4 afficheurs allumés en meme Temps si Seg A allumé => Problemo
avec B=0 => aucun allumés (normal => ULN segment OK!)
Mesure de la consommation via tension sur R100 = 1,5V => 1500/100 => 15mA ..pour 4 segments allumés!
conclusion : UDN 2091 HS => remplacement de L'UDN 2981=> tests OK
* Attention :
à revoir car version 4 digits Geants seulement, pas de digits secondes installés
Mesure sur le digit Heur , segment A :
cde A=4 et B=2
Usegment = 20.3V
Mesure sur R=100=> 0.06V => 60/100 => 0.6mA pour 1 seul segment .. c'est PEU , meme insuffisant !
car chute de tension 20,3V sur le segment ...c'est BEAUCOUP pour des leds rouges
il faudra : soir diminuer R100 , soit augmenter U alim de 1 ou 2V pour plus de luminosité
Luminosité qui sera encore plus faible en mode DYNAMIQUE !
à suivre..
R100 => passée à 56 Ohms
Melodie Horaire :
Via circuit Specifique M948-2 piloté par Pin 10 =RA6
Inversion du niveau logique de commande pour avoir un ZERO => Melodie et UN=ARRET
Variable RING=64 et STOP=0
La pin PORTA RA6 doit etre commandée à part , les autres Pins du PORTA commandes les DIGITS des 4 (ou 6) Afficheurs
A chaque commande de DIGIT , la commande Melodie doit etre Mixée
Exemple:
switch (Index_Digit)
{
case 2:
LATA.B5=0;
Temp = Mn %10 ;
LATB=E878_Segments[Temp] | Clignote_Sec;
*(Time+4)=Temp+48;
LATA=0x04 | Melodie;
break;
A noter que la Melodie est INACTIVEE à l'interieur de la zone PLM=21:06 par defaut.
il en est de meme pour l'etat des LEDS SEPARATRICES sur le PORTB RB0
correspondant à Clignote_Sec
SOFTWARE:
rev 30/05/2020
Projet complet : Horloge_2020_4digits_Geants_18F26K22_ULN_UDN_Melodie_Ruban_60leds_RGB_SK6812_2020_0530.zip
Source MikroC :Horloge_2020_4digits_Geants_18F26K22_ULN_UDN_Melodie_Ruban_60leds_RGB_SK6812_2020_0530.c
PIC Eeprom : Horloge_2020_4x7seg_Geants_ruban_60leds_RGB_18F26K22_Eeprom_2020_05.ihex
Chargeur : Horloge_2020_4x7seg_Geants_ruban_60leds_SK6812_RGB_18F26K22_2020_0530.hex
Video :
Horlog_7seg_Geants_et_cordon_leds_RGB_Geamel_2020_0530.webm
lien sur Partie #1
Version HORLOGE 6x 7seg AUTONOME avec RTC
11/04/2020
La meme Horloge que PART#2 , mais cette fois AUTONOME, car avec sa propre RTC
donc tres Precise , s'affranchit des decalages temporels .
Se differe uniquement par le rajout de cette RTC DS31231 , reliée sur le BUS I2C1 RC3,RC4
La sortie 1Hz RTC rentre sur l'entrée RB0 pour assurer la synchro et
et va aussi sur la separation des DP digits, clignote à 1Hz
Schema Part # 3: (Horloge Autonome avec RTC)
rev 24/05/2020
AVEC RTC
schema en pdf : Horloge_2020_Autonome_6digits_18F26K22_ruban_60ledsRGB_M948_RTC_2020_05_24.pdf
schema crée avec WinSchem : Horloge_2020_Autonome_6digits_18F26K22_ruban_60ledsRGB_M948_RTC_2020_05_24.wh5
Ciruit Imprimé :
Horloge avec RTCfichier Sprintlayout 6.0 : HORLOGE GEANTE avec RTC_rev_PF_200520.lay6
fichier Cuivre : HORLOGE GEANTE avec RTC_rev_PF_200520_CI_Lay6.pdf
Software :
Differences avec l'horloge Esclave :
RB0 qui etait une sortie 1Hz , devient maintenant , une entree recevant l'info 1Hz de la RTC
info servant à synchroniser les variables HH,MM,SS issues de la RTC , et aussi de l'envoi du 1Hz aux leds de separation via l'ULN..
Rajout du traitement des commandes MAJ RTC , PLM , (etait assuré préalablementg par l'Horloge Maitre défilante 12 matrices.)
Plus besoin de la liaision UART Horloge Defilante Maitre, L'UART est maintenat reliée soit directement à un Terminal, soit via BlueTooth .